Example usage for org.eclipse.jdt.internal.core.util HashtableOfArrayToObject get

List of usage examples for org.eclipse.jdt.internal.core.util HashtableOfArrayToObject get

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core.util HashtableOfArrayToObject get.

Prototype

public Object get(Object[] key) 

Source Link

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.JarPackageFragmentRoot.java

License:Open Source License

private void initRawPackageInfo(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory,
        String compliance) {/*from ww w  .  j  a  v a  2  s  . c  om*/
    int lastSeparator = isDirectory ? entryName.length() - 1 : entryName.lastIndexOf('/');
    String[] pkgName = Util.splitOn('/', entryName, 0, lastSeparator);
    String[] existing = null;
    int length = pkgName.length;
    int existingLength = length;
    while (existingLength >= 0) {
        existing = (String[]) rawPackageInfo.getKey(pkgName, existingLength);
        if (existing != null)
            break;
        existingLength--;
    }
    //        JavaModelManager manager = JavaModelManager.getJavaModelManager();
    for (int i = existingLength; i < length; i++) {
        // sourceLevel must be null because we know nothing about it based on a jar file
        if (Util.isValidFolderNameForPackage(pkgName[i], null, compliance)) {
            System.arraycopy(existing, 0, existing = new String[i + 1], 0, i);
            existing[i] = manager.intern(pkgName[i]);
            rawPackageInfo.put(existing, new ArrayList[] { EMPTY_LIST, EMPTY_LIST });
        } else {
            // non-Java resource folder
            if (!isDirectory) {
                ArrayList[] children = (ArrayList[]) rawPackageInfo.get(existing);
                if (children[1/*NON_JAVA*/] == EMPTY_LIST)
                    children[1/*NON_JAVA*/] = new ArrayList();
                children[1/*NON_JAVA*/].add(entryName);
            }
            return;
        }
    }
    if (isDirectory)
        return;

    // add classfile info amongst children
    ArrayList[] children = (ArrayList[]) rawPackageInfo.get(pkgName);
    if (org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(entryName)) {
        if (children[0/*JAVA*/] == EMPTY_LIST)
            children[0/*JAVA*/] = new ArrayList();
        String nameWithoutExtension = entryName.substring(lastSeparator + 1, entryName.length() - 6);
        children[0/*JAVA*/].add(nameWithoutExtension);
    } else {
        if (children[1/*NON_JAVA*/] == EMPTY_LIST)
            children[1/*NON_JAVA*/] = new ArrayList();
        children[1/*NON_JAVA*/].add(entryName);
    }

}

From source file:com.codenvy.ide.ext.java.server.internal.core.JavaProjectElementInfo.java

License:Open Source License

NameLookup newNameLookup(JavaProject project, ICompilationUnit[] workingCopies) {
    ProjectCache cache = getProjectCache(project);
    HashtableOfArrayToObject allPkgFragmentsCache = cache.allPkgFragmentsCache;
    if (allPkgFragmentsCache == null) {
        //         HashMap rootInfos = project.manager.deltaState.roots;
        IPackageFragmentRoot[] allRoots = cache.allPkgFragmentRootsCache;
        int length = allRoots.length;
        allPkgFragmentsCache = new HashtableOfArrayToObject();
        for (int i = 0; i < length; i++) {
            IPackageFragmentRoot root = allRoots[i];
            DeltaProcessor.RootInfo rootInfo = null;//(DeltaProcessor.RootInfo) rootInfos.get(root.getPath());
            JavaProject rootProject = project;//rootInfo == null ? project : rootInfo.project;
            HashSetOfArray fragmentsCache;
            if (rootProject.equals(project)) {
                // retrieve package fragments cache from this project
                fragmentsCache = (HashSetOfArray) cache.pkgFragmentsCaches.get(root);
            } else {
                // retrieve package fragments  cache from the root's project
                ProjectCache rootProjectCache;
                try {
                    rootProjectCache = rootProject.getProjectCache();
                } catch (JavaModelException e) {
                    // project doesn't exit
                    continue;
                }//www. j  a va  2 s .co m
                fragmentsCache = (HashSetOfArray) rootProjectCache.pkgFragmentsCaches.get(root);
            }
            if (fragmentsCache == null) { // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=183833
                fragmentsCache = new HashSetOfArray();
                initializePackageNames(root, fragmentsCache);
            }
            Object[][] set = fragmentsCache.set;
            for (int j = 0, length2 = set.length; j < length2; j++) {
                String[] pkgName = (String[]) set[j];
                if (pkgName == null)
                    continue;
                Object existing = allPkgFragmentsCache.get(pkgName);
                if (existing == null || existing == NO_ROOTS) {
                    allPkgFragmentsCache.put(pkgName, root);
                    // ensure super packages (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=119161)
                    // are also in the map
                    addSuperPackageNames(pkgName, allPkgFragmentsCache);
                } else {
                    if (existing instanceof PackageFragmentRoot) {
                        allPkgFragmentsCache.put(pkgName,
                                new IPackageFragmentRoot[] { (PackageFragmentRoot) existing, root });
                    } else {
                        IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) existing;
                        int rootLength = roots.length;
                        System.arraycopy(roots, 0, roots = new IPackageFragmentRoot[rootLength + 1], 0,
                                rootLength);
                        roots[rootLength] = root;
                        allPkgFragmentsCache.put(pkgName, roots);
                    }
                }
            }
        }
        cache.allPkgFragmentsCache = allPkgFragmentsCache;
    }
    return new NameLookup(cache.allPkgFragmentRootsCache, cache.allPkgFragmentsCache, workingCopies,
            cache.rootToResolvedEntries, project.getJavaModelManager());
}