List of usage examples for org.eclipse.jdt.internal.compiler.parser ScannerHelper isLowerCase
public static boolean isLowerCase(char c)
From source file:com.codenvy.ide.ext.java.server.core.JavaConventions.java
License:Open Source License
/** * Validate the given Java type name, either simple or qualified, for the given source and compliance levels. * * <p>For example, <code>"java.lang.Object"</code>, or <code>"Object"</code>.</p> * * <p>The source level and compliance level values should be taken from the constant defined inside * {@link org.eclipse.jdt.core.JavaCore} class. The constants are named <code>JavaCore#VERSION_1_x</code>, x being set * between '1' and '8'.//from w ww.ja v a 2 s .c om * </p> * * @param name the name of a type * @param sourceLevel the source level * @param complianceLevel the compliance level * @return a status object with code <code>IStatus.OK</code> if * the given name is valid as a Java type name, * a status with code <code>IStatus.WARNING</code> * indicating why the given name is discouraged, * otherwise a status object indicating what is wrong with * the name * @since 3.3 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_1 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_2 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_3 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_4 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_5 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_6 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_7 * @see org.eclipse.jdt.core.JavaCore#VERSION_1_8 */ public static IStatus validateJavaTypeName(String name, String sourceLevel, String complianceLevel) { if (name == null) { return new Status(IStatus.ERROR, org.eclipse.jdt.core.JavaCore.PLUGIN_ID, -1, Messages.convention_type_nullName, null); } String trimmed = name.trim(); if (!name.equals(trimmed)) { return new Status(IStatus.ERROR, org.eclipse.jdt.core.JavaCore.PLUGIN_ID, -1, Messages.convention_type_nameWithBlanks, null); } int index = name.lastIndexOf('.'); char[] scannedID; if (index == -1) { // simple name scannedID = scannedIdentifier(name, sourceLevel, complianceLevel); } else { // qualified name String pkg = name.substring(0, index).trim(); IStatus status = validatePackageName(pkg, sourceLevel, complianceLevel); if (!status.isOK()) { return status; } String type = name.substring(index + 1).trim(); scannedID = scannedIdentifier(type, sourceLevel, complianceLevel); } if (scannedID != null) { // IStatus status = ResourcesPlugin.getWorkspace().validateName(new String(scannedID), IResource.FILE); // if (!status.isOK()) { // return status; // } if (CharOperation.contains('$', scannedID)) { return new Status(IStatus.WARNING, org.eclipse.jdt.core.JavaCore.PLUGIN_ID, -1, Messages.convention_type_dollarName, null); } if ((scannedID.length > 0 && ScannerHelper.isLowerCase(scannedID[0]))) { return new Status(IStatus.WARNING, org.eclipse.jdt.core.JavaCore.PLUGIN_ID, -1, Messages.convention_type_lowercaseName, null); } return JavaModelStatus.VERIFIED_OK; } else { return new Status(IStatus.ERROR, org.eclipse.jdt.core.JavaCore.PLUGIN_ID, -1, Messages.bind(Messages.convention_type_invalidName, name), null); } }
From source file:com.codenvy.ide.ext.java.server.internal.core.NameLookup.java
License:Open Source License
/** * Find type. Considering secondary types and waiting for indexes depends on given corresponding parameters. */// ww w . j av a 2 s. c o m public Answer findType(String typeName, String packageName, boolean partialMatch, int acceptFlags, boolean considerSecondaryTypes, boolean waitForIndexes, boolean checkRestrictions, IProgressMonitor monitor) { if (packageName == null || packageName.length() == 0) { packageName = IPackageFragment.DEFAULT_PACKAGE_NAME; } else if (typeName.length() > 0 && ScannerHelper.isLowerCase(typeName.charAt(0))) { // see if this is a known package and not a type if (findPackageFragments(packageName + "." + typeName, false) != null) //$NON-NLS-1$ return null; } // Look for concerned package fragments JavaElementRequestor elementRequestor = new JavaElementRequestor(); seekPackageFragments(packageName, false, elementRequestor); IPackageFragment[] packages = elementRequestor.getPackageFragments(); // Try to find type in package fragments list IType type = null; int length = packages.length; HashSet projects = null; IJavaProject javaProject = null; Answer suggestedAnswer = null; for (int i = 0; i < length; i++) { type = findType(typeName, packages[i], partialMatch, acceptFlags, waitForIndexes, considerSecondaryTypes); if (type != null) { AccessRestriction accessRestriction = null; if (checkRestrictions) { accessRestriction = getViolatedRestriction(typeName, packageName, type, accessRestriction); } Answer answer = new Answer(type, accessRestriction); if (!answer.ignoreIfBetter()) { if (answer.isBetter(suggestedAnswer)) return answer; } else if (answer.isBetter(suggestedAnswer)) // remember suggestion and keep looking suggestedAnswer = answer; } else if (suggestedAnswer == null && considerSecondaryTypes) { if (javaProject == null) { javaProject = packages[i].getJavaProject(); } else if (projects == null) { if (!javaProject.equals(packages[i].getJavaProject())) { projects = new HashSet(3); projects.add(javaProject); projects.add(packages[i].getJavaProject()); } } else { projects.add(packages[i].getJavaProject()); } } } if (suggestedAnswer != null) // no better answer was found return suggestedAnswer; // If type was not found, try to find it as secondary in source folders if (considerSecondaryTypes && javaProject != null) { if (projects == null) { type = findSecondaryType(packageName, typeName, javaProject, waitForIndexes, monitor); } else { Iterator allProjects = projects.iterator(); while (type == null && allProjects.hasNext()) { type = findSecondaryType(packageName, typeName, (IJavaProject) allProjects.next(), waitForIndexes, monitor); } } } if (type != null) { ICompilationUnit unit = type.getCompilationUnit(); if (unit != null && unit.isWorkingCopy()) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=421902 IType[] types = null; try { types = unit.getTypes(); } catch (JavaModelException e) { return null; } boolean typeFound = false; for (int i = 0, typesLength = types == null ? 0 : types.length; i < typesLength; i++) { if (types[i].getElementName().equals(typeName)) { typeFound = true; break; } } if (!typeFound) type = null; } } return type == null ? null : new Answer(type, null); }