Package ptolemy.backtrack.eclipse.ast

Examples of ptolemy.backtrack.eclipse.ast.LocalClassLoader


     *   it.
     *  @return The shortest possible class name.
     */
    private static String _getNonarrayClassName(String name,
            TypeAnalyzerState state, CompilationUnit root) {
        LocalClassLoader loader = state.getClassLoader();
        int lastDot = name.lastIndexOf('.');
        String packageName = (lastDot == -1) ? "" : name.substring(0, lastDot);
        String className = name.substring(lastDot + 1);
        String simpleName;
        int lastSeparator = lastIndexOf(name, new char[] { '.', '$' });

        if (lastSeparator == -1) {
            return name;
        } else {
            simpleName = name.substring(lastSeparator + 1);
        }

        String currentClassName = state.getCurrentClass().getName();

        if (name.equals(currentClassName)) {
            return simpleName;
        } else {
            int dollarPos = currentClassName.length();

            while (dollarPos >= 0) {
                String baseName = currentClassName.substring(0, dollarPos)
                        + "$";

                if (name.startsWith(baseName)) {
                    return name.substring(baseName.length());
                }

                dollarPos = currentClassName.lastIndexOf('$', dollarPos - 1);
            }
        }

        Iterator importedClasses = loader.getImportedClasses().iterator();

        while (importedClasses.hasNext()) {
            ClassImport importedClass = (ClassImport) importedClasses.next();

            if (importedClass.getPackageName().equals(packageName)
                    && importedClass.getClassName().equals(className)) {
                // Already imported.
                return simpleName;
            } else {
                String importedName = importedClass.getClassName();
                int lastDollar = importedName.lastIndexOf('$');

                if ((lastDollar == -1) && importedName.equals(simpleName)) {
                    return name;
                } else if ((lastDollar >= 0)
                        && importedName.substring(lastDollar + 1).equals(
                                simpleName)) {
                    return name;
                }
            }
        }

        Iterator importedPackages = loader.getImportedPackages().iterator();

        while (importedPackages.hasNext()) {
            String importedPackage = (String) importedPackages.next();

            if (importedPackage.equals(packageName)) { // Already imported.
                return simpleName;
            } else {
                try {
                    // Test if a class with the same name exists in the
                    // package.
                    loader.loadClass(importedPackage + "." + simpleName);

                    // If exists, conflict.
                    return name;
                } catch (ClassNotFoundException e) {
                }
            }
        }

        AST ast = root.getAST();
        ImportDeclaration declaration = ast.newImportDeclaration();
        declaration.setName(createName(ast, name));
        root.imports().add(declaration);
        loader.importClass(name);
        return simpleName;
    }
View Full Code Here

TOP

Related Classes of ptolemy.backtrack.eclipse.ast.LocalClassLoader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.