Example usage for org.eclipse.jdt.internal.compiler.parser ScannerHelper isLowerCase

List of usage examples for org.eclipse.jdt.internal.compiler.parser ScannerHelper isLowerCase

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.parser ScannerHelper isLowerCase.

Prototype

public static boolean isLowerCase(char c) 

Source Link

Usage

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);
}