public IModule getModule() { return loader.getModule(); }
public Set<? extends CharSequence> getAllTypeNames() { TypeSystem.lock(); try { Set<CharSequence> names = new HashSet<CharSequence>(); names.addAll(getDefaultTypes().keySet()); // Walk the list backward so we resolve type dependencies in the correct order List<ITypeLoader> loaders = getAllTypeLoaders(); for (int i = loaders.size() - 1; i >= 0; i--) { names.addAll(loaders.get(i).getAllTypeNames()); } return names; } finally { TypeSystem.unlock(); } }
private boolean refreshFile(IFile file, String typeName, RefreshKind kind) { boolean processed = false; for (ITypeLoader typeLoader : _globalStack) { if (typeLoader.handlesFile(file)) { String[] types; if (typeName != null) { types = new String[] {typeName}; } else { types = typeLoader.getTypesForFile(file); } kind = typeLoader.refreshedFile(file, types, kind); if (types != null && types.length != 0) { RefreshRequest refreshRequest = new RefreshRequest(file, types, typeLoader, kind); TypeLoaderAccess.instance().refreshTypes(refreshRequest); } processed = true; } } return processed; }
@Override public String[] getTypesForFile(IModule module, IFile file) { if (module != null) { // Module for (ITypeLoader loader : module.getModuleTypeLoader().getTypeLoaderStack()) { final List<String> typeNames = new ArrayList<String>(); if (loader.handlesFile(file)) { typeNames.addAll(Arrays.asList(loader.getTypesForFile(file))); } if (!typeNames.isEmpty()) { return typeNames.toArray(new String[typeNames.size()]); } } } // Global final List<String> typeNames = new ArrayList<String>(); for (ITypeLoader loader : getGlobalModuleTypeLoader().getTypeLoaderStack()) { if (loader.handlesFile(file)) { typeNames.addAll(Arrays.asList(loader.getTypesForFile(file))); } } if (!typeNames.isEmpty()) { return typeNames.toArray(new String[typeNames.size()]); } // Default return new String[] {"default." + file.getBaseName()}; }
public static Set<TypeName> getTypeNames(String parentNamespace, ITypeLoader loader) { Set<TypeName> typeNames = new HashSet<TypeName>(); for (CharSequence typeNameCS : loader.getAllTypeNames()) { String typeName = typeNameCS.toString(); String packageName = GosuClassUtil.getPackage(typeName); if (packageName.equals(parentNamespace)) { typeNames.add(new TypeName(typeName, loader, TypeName.Kind.TYPE, TypeName.Visibility.PUBLIC)); } } for (CharSequence namespaceCs : loader.getAllNamespaces()) { String namespace = namespaceCs.toString(); String containingPackageName = GosuClassUtil.getPackage(namespace); if (containingPackageName.equals(parentNamespace)) { typeNames.add(new TypeName(GosuClassUtil.getNameNoPackage(namespace), loader, TypeName.Kind.NAMESPACE, TypeName.Visibility.PUBLIC)); } } return typeNames; }
private static ITypeLoader getLoader(IFile file, IModule module) { for (ITypeLoader loader : module.getModuleTypeLoader().getTypeLoaderStack()) { if (loader.handlesFile(file)) { return loader; } } throw new RuntimeException("No type loader for file: " + file); }
protected FeatureManagerTypeInfoBase( IType ownersType ) { _ownersType = TypeSystem.getOrCreateTypeReference( ownersType ); _fm = new FeatureManager<T>( this, _ownersType.getTypeLoader().isCaseSensitive() ); }
public ModuleTypeLoader( IModule module, List<ITypeLoader> loaderStack ) { _module = module; initMaps(); _globalStack.addAll(loaderStack); _typeRefFactory = module.getModuleTypeLoader().getTypeRefFactory(); for (ITypeLoader typeLoader : loaderStack) { List<String> handledPrefixes = typeLoader.getHandledPrefixes(); for( int i = 0; i < handledPrefixes.size(); i++ ) { String handledPrefix = handledPrefixes.get( i ); _loadersByPrefix.put( handledPrefix, typeLoader ); } } }
public static Set<TypeName> getTypeNames(String parentNamespace, ITypeLoader loader) { Set<TypeName> typeNames = new HashSet<TypeName>(); for (CharSequence typeNameCS : loader.getAllTypeNames()) { String typeName = typeNameCS.toString(); String packageName = GosuClassUtil.getPackage(typeName); if (packageName.equals(parentNamespace)) { typeNames.add(new TypeName(typeName, loader, TypeName.Kind.TYPE, TypeName.Visibility.PUBLIC)); } } for (CharSequence namespaceCs : loader.getAllNamespaces()) { String namespace = namespaceCs.toString(); String containingPackageName = GosuClassUtil.getPackage(namespace); if (containingPackageName.equals(parentNamespace)) { typeNames.add(new TypeName(GosuClassUtil.getNameNoPackage(namespace), loader, TypeName.Kind.NAMESPACE, TypeName.Visibility.PUBLIC)); } } return typeNames; }
@Override public String[] getTypesForFile(IModule module, IFile file) { if (module != null) { // Module for (ITypeLoader loader : module.getModuleTypeLoader().getTypeLoaderStack()) { final List<String> typeNames = new ArrayList<String>(); if (loader.handlesFile(file)) { typeNames.addAll(Arrays.asList(loader.getTypesForFile(file))); } if (!typeNames.isEmpty()) { return typeNames.toArray(new String[typeNames.size()]); } } } // Global final List<String> typeNames = new ArrayList<String>(); for (ITypeLoader loader : getGlobalModuleTypeLoader().getTypeLoaderStack()) { if (loader.handlesFile(file)) { typeNames.addAll(Arrays.asList(loader.getTypesForFile(file))); } } if (!typeNames.isEmpty()) { return typeNames.toArray(new String[typeNames.size()]); } // Default return new String[] {"default." + file.getBaseName()}; }
private static ITypeLoader getLoader(IFile file, IModule module) { for (ITypeLoader loader : module.getModuleTypeLoader().getTypeLoaderStack()) { if (loader.handlesFile(file)) { return loader; } } throw new RuntimeException("No type loader for file: " + file); }
protected FeatureManagerTypeInfoBase( IType ownersType ) { _ownersType = TypeSystem.getOrCreateTypeReference( ownersType ); _fm = new FeatureManager<T>( this, _ownersType.getTypeLoader().isCaseSensitive() ); }
public ModuleTypeLoader( IModule module, List<ITypeLoader> loaderStack ) { _module = module; initMaps(); _globalStack.addAll(loaderStack); _typeRefFactory = module.getModuleTypeLoader().getTypeRefFactory(); for (ITypeLoader typeLoader : loaderStack) { List<String> handledPrefixes = typeLoader.getHandledPrefixes(); for( int i = 0; i < handledPrefixes.size(); i++ ) { String handledPrefix = handledPrefixes.get( i ); _loadersByPrefix.put( handledPrefix, typeLoader ); } } }
public IModule getModule() { return loader.getModule(); }
public Set<? extends CharSequence> getAllTypeNames() { TypeSystem.lock(); try { Set<CharSequence> names = new HashSet<CharSequence>(); names.addAll(getDefaultTypes().keySet()); // Walk the list backward so we resolve type dependencies in the correct order List<ITypeLoader> loaders = getAllTypeLoaders(); for (int i = loaders.size() - 1; i >= 0; i--) { names.addAll(loaders.get(i).getAllTypeNames()); } return names; } finally { TypeSystem.unlock(); } }
private boolean refreshFile(IFile file, String typeName, RefreshKind kind) { boolean processed = false; for (ITypeLoader typeLoader : _globalStack) { if (typeLoader.handlesFile(file)) { String[] types; if (typeName != null) { types = new String[] {typeName}; } else { types = typeLoader.getTypesForFile(file); } kind = typeLoader.refreshedFile(file, types, kind); if (types != null && types.length != 0) { RefreshRequest refreshRequest = new RefreshRequest(file, types, typeLoader, kind); TypeLoaderAccess.instance().refreshTypes(refreshRequest); } processed = true; } } return processed; }
private boolean isTypeFile( FileTree fileTree ) { if( fileTree.isDirectory() ) { return false; } for( ITypeLoader tl: TypeSystem.getAllTypeLoaders() ) { if( tl.handlesFile( PathUtil.getIFile( fileTree.getFileOrDir() ) ) ) { return true; } } return false; }
/** * Adds the type to the cache. */ private IType cacheType(String name, Pair<IType, ITypeLoader> pair) { if( pair != null ) { IType type = pair.getFirst(); // We have to make sure we aren't replacing an existing type so we obey the return from the put. IType oldType = _typesByName.get(name); if( oldType != null && oldType != CACHE_MISS ) { return oldType; } _typesByName.add( name, type ); ITypeLoader typeLoader = pair.getSecond(); if( typeLoader != null && !typeLoader.isCaseSensitive() ) { _typesByCaseInsensitiveName.put( name, type); } } return pair != null ? pair.getFirst() : null; }
List<String> handledPrefixes = typeLoader.getHandledPrefixes(); for( int i = 0; i < handledPrefixes.size(); i++ )
private static IModule getModule(ITypeLoader typeLoader) { if (typeLoader == null) { throw new RuntimeException("A refresh request must have a valid typeloader"); } return typeLoader.getModule(); }