List of usage examples for org.eclipse.jdt.internal.compiler.lookup ImportBinding ImportBinding
public ImportBinding(char[][] compoundName, boolean isOnDemand, Binding binding, ImportReference reference)
From source file:org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitScope.java
License:Open Source License
@Override protected ImportBinding[] getDefaultImports() { ImportBinding[] defaultImports = super.getDefaultImports(); // picks up 'java.lang' List<ImportBinding> importBindings = new ArrayList<ImportBinding>(); importBindings.add(defaultImports[0]); // augment with the groovy additional automatic imports Binding importBinding = environment.createPackage(javaIo); importBindings.add(new ImportBinding(javaIo, true, importBinding, null)); importBinding = environment.createPackage(javaNet); importBindings.add(new ImportBinding(javaNet, true, importBinding, null)); importBinding = environment.createPackage(javaUtil); importBindings.add(new ImportBinding(javaUtil, true, importBinding, null)); importBinding = environment.createPackage(groovyLang); importBindings.add(new ImportBinding(groovyLang, true, importBinding, null)); importBinding = environment.createPackage(groovyUtil); importBindings.add(new ImportBinding(groovyUtil, true, importBinding, null)); // And specific imports for BigDecimal and BigInteger Binding jmBigDecimal = environment.getType(javaMathBigDecimal); importBindings.add(new ImportBinding(javaMathBigDecimal, false, jmBigDecimal, null)); Binding jmBigInteger = environment.getType(javaMathBigInteger); importBindings.add(new ImportBinding(javaMathBigInteger, false, jmBigInteger, null)); CompilerOptions co = compilerOptions(); String extraImports = co.groovyExtraImports; // TODO support static imports // TODO need to refactor (code is copied in JDTResolver) if (extraImports != null) { try {//from w ww. ja v a 2 s . co m String filename = new String(this.referenceContext.getFileName()); // may be something to do StringTokenizer st = new StringTokenizer(extraImports, ";"); // Form would be 'com.foo.*,com.bar.MyType;.gradle=com.this.*,com.foo.Type" // If there is no qualifying suffix it applies to all types while (st.hasMoreTokens()) { String onesuffix = st.nextToken(); int equals = onesuffix.indexOf('='); boolean shouldApply = false; String imports = null; if (equals == -1) { // definetly applies shouldApply = true; imports = onesuffix; } else { // need to check the suffix String suffix = onesuffix.substring(0, equals); shouldApply = filename.endsWith(suffix); imports = onesuffix.substring(equals + 1); } StringTokenizer st2 = new StringTokenizer(imports, ","); while (st2.hasMoreTokens()) { String nextElement = st2.nextToken(); // One of two forms: a.b.c.* or a.b.c.Type if (nextElement.endsWith(".*")) { char[] withoutDotStar = nextElement.substring(0, nextElement.length() - 2) .toCharArray(); char[][] cs = CharOperation.splitOn('.', withoutDotStar); importBinding = environment.createPackage(cs); // TODO verify binding exists! importBindings.add(new ImportBinding(cs, true, importBinding, null)); } else { char[] type = nextElement.toCharArray(); char[][] cs = CharOperation.splitOn('.', type); Binding typeBinding = environment.getType(cs); importBindings.add(new ImportBinding(cs, false, typeBinding, null)); } } } } catch (Exception e) { new RuntimeException("Problem processing extraImports: " + extraImports, e).printStackTrace(); } } return importBindings.toArray(new ImportBinding[importBindings.size()]); }