示例#1
0
  protected void setUp() throws Exception {
    SailsProject sailsProject = new SailsProject("TestProject");
    sailsProject.setRootPackage("test.project");
    sailsProject.setApplicationName("TestProject");
    project = sailsProject.create();

    sailsNature = ShipyardPlugin.getDefault().getSailsModel().getSailsNature(project);
    controller = sailsNature.createController("TestController", true, true);
    controller
        .getTemplateFolder()
        .getFile("index.vto")
        .create(new ByteArrayInputStream("".getBytes()), true, null);

    controllersPackage = sailsNature.getControllersPackage();
    controllersPackage.createCompilationUnit(
        "NotAController.java",
        "package test.project.controllers;\r\n\r\npublic class NotAController {\r\n}",
        true,
        null);
    controllersPackage.createCompilationUnit(
        "AbstractController.java",
        "package test.project.controllers;\r\n\r\nimport org.opensails.sails.oem.BaseController;\r\n\r\npublic abstract class AbstractController extends BaseController {\r\n}",
        true,
        null);
  }
示例#2
0
  // bug 424172
  public void testImportTypeInMethodReference() throws Exception {
    StringBuffer buf = new StringBuffer();
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test.one", false, null);
    buf = new StringBuffer();
    buf.append("package test.one;\n");
    buf.append("\n");
    buf.append("public class X {\n");
    buf.append("    public static F2 staticMethod() {\n");
    buf.append("        return null;\n");
    buf.append("    }\n");
    buf.append("}\n");
    pack1.createCompilationUnit("X.java", buf.toString(), false, null);
    buf = new StringBuffer();
    buf.append("package test.one;\n");
    buf.append("\n");
    buf.append("@FunctionalInterface\n");
    buf.append("public interface F2 {\n");
    buf.append("    void foo();\n");
    buf.append("}\n");
    pack1.createCompilationUnit("F2.java", buf.toString(), false, null);

    IPackageFragment pack2 = fSourceFolder.createPackageFragment("test.two", false, null);
    buf = new StringBuffer();
    buf.append("package test.two;\n");
    buf.append("\n");
    buf.append("import test.one.F2;\n");
    buf.append("\n");
    buf.append("public class C1 {\n");
    buf.append("    public void fun1() {\n");
    buf.append("        F2 f = X::staticMethod;\n");
    buf.append("    }\n");
    buf.append("}\n");
    ICompilationUnit cu = pack2.createCompilationUnit("C1.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 1);
    assertNumberOfProposals(proposals, 9);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(0);

    buf = new StringBuffer();
    buf.append("package test.two;\n");
    buf.append("\n");
    buf.append("import test.one.F2;\n");
    buf.append("import test.one.X;\n");
    buf.append("\n");
    buf.append("public class C1 {\n");
    buf.append("    public void fun1() {\n");
    buf.append("        F2 f = X::staticMethod;\n");
    buf.append("    }\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});
  }
示例#3
0
  public void testUnimplementedMethods1() throws Exception {
    IPackageFragment pack2 = fSourceFolder.createPackageFragment("test2", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package test2;\n");
    buf.append("import java.io.IOException;\n");
    buf.append("public interface Inter {\n");
    buf.append("    int getCount(Object[] o) throws IOException;\n");
    buf.append("    static int staticMethod(Object[] o) throws IOException{return 10;}\n");
    buf.append("    default int defaultMethod(Object[] o) throws IOException{return 20;}\n");
    buf.append("}\n");
    pack2.createCompilationUnit("Inter.java", buf.toString(), false, null);

    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import test2.Inter;\n");
    buf.append("public class E implements Inter{\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot);
    assertNumberOfProposals(proposals, 2);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(1);
    String preview1 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import test2.Inter;\n");
    buf.append("public abstract class E implements Inter{\n");
    buf.append("}\n");
    String expected1 = buf.toString();

    proposal = (CUCorrectionProposal) proposals.get(0);
    String preview2 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.io.IOException;\n");
    buf.append("\n");
    buf.append("import test2.Inter;\n");
    buf.append("public class E implements Inter{\n");
    buf.append("\n");
    buf.append("    @Override\n");
    buf.append("    public int getCount(Object[] o) throws IOException {\n");
    buf.append("        return 0;\n");
    buf.append("    }\n");
    buf.append("}\n");
    String expected2 = buf.toString();

    assertEqualStringsIgnoreOrder(
        new String[] {preview1, preview2}, new String[] {expected1, expected2});
  }
示例#4
0
  public void testChangeModifierToStatic2() throws Exception {
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("interface Test {\n");
    buf.append("    int i= foo();\n");
    buf.append("    abstract int foo() {\n");
    buf.append("        return 100;\n");
    buf.append("    }\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("Test.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);

    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 2, 0);
    assertNumberOfProposals(proposals, 1);
    assertCorrectLabels(proposals);
    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(0);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("interface Test {\n");
    buf.append("    int i= foo();\n");
    buf.append("    static int foo() {\n");
    buf.append("        return 100;\n");
    buf.append("    }\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});
  }
示例#5
0
  //  bug 410170
  public void testInvalidInterfaceMethodModifier2() throws Exception {
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.io.IOException;\n");
    buf.append("public interface Inter {\n");
    buf.append(
        "    protected default int defaultMethod(Object[] o) throws IOException{return 10;}\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("Inter.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot);
    assertNumberOfProposals(proposals, 1);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(0);
    String preview1 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.io.IOException;\n");
    buf.append("public interface Inter {\n");
    buf.append("    default int defaultMethod(Object[] o) throws IOException{return 10;}\n");
    buf.append("}\n");
    String expected1 = buf.toString();

    assertEqualStringsIgnoreOrder(new String[] {preview1}, new String[] {expected1});
  }
 public static ICompilationUnit createCU(IPackageFragment pack, String name, String contents)
     throws Exception {
   assertTrue(!pack.getCompilationUnit(name).exists());
   ICompilationUnit cu = pack.createCompilationUnit(name, contents, true, null);
   cu.save(null, true);
   return cu;
 }
示例#7
0
  // bug 434173
  public void testAbstractInterfaceMethodWithBody3() throws Exception {
    StringBuffer buf = new StringBuffer();
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("interface I {\n");
    buf.append("    public strictfp native void foo() {}\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("I.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<ICompletionProposal> proposals = collectAllCorrections(cu, astRoot, 3);
    assertNumberOfProposals(proposals, 4);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(3);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("interface I {\n");
    buf.append("    public void foo() {}\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});

    proposal = (CUCorrectionProposal) proposals.get(0);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("interface I {\n");
    buf.append("    public void foo();\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});
  }
  public void testAddSafeVarargs1() throws Exception {
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("p", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package p;\n");
    buf.append("import java.util.List;\n");
    buf.append("public class E {\n");
    buf.append("    public static <T> List<T> asList(T ... a) {\n");
    buf.append("        return null;\n");
    buf.append("    }\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot);

    assertCorrectLabels(proposals);
    assertNumberOfProposals(proposals, 4);

    String[] expected = new String[1];
    buf = new StringBuffer();
    buf.append("package p;\n");
    buf.append("import java.util.List;\n");
    buf.append("public class E {\n");
    buf.append("    @SafeVarargs\n");
    buf.append("    public static <T> List<T> asList(T ... a) {\n");
    buf.append("        return null;\n");
    buf.append("    }\n");
    buf.append("}\n");
    expected[0] = buf.toString();

    assertExpectedExistInProposals(proposals, expected);
  }
  public void testAddSafeVarargsToDeclaration5() throws Exception {
    JavaProjectHelper.set15CompilerOptions(fJProject1);
    try {
      IPackageFragment pack1 = fSourceFolder.createPackageFragment("p", false, null);
      StringBuffer buf = new StringBuffer();
      buf.append("package p;\n");
      buf.append("import java.util.List;\n");
      buf.append("public class E {\n");
      buf.append("    void foo() {\n");
      buf.append("        Y.asList(Y.asList(\"Hello\", \" World\"));\n");
      buf.append("    }\n");
      buf.append("}\n");
      buf.append("class Y {\n");
      buf.append("    public static <T> List<T> asList(T... a) {\n");
      buf.append("        return null;\n");
      buf.append("    }\n");
      buf.append("}\n");
      ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);

      CompilationUnit astRoot = getASTRoot(cu);
      ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot);
      assertNumberOfProposals(proposals, 2);

      assertProposalDoesNotExist(proposals, "Add @SafeVarargs to 'asList(..)'");
    } finally {
      JavaProjectHelper.set17CompilerOptions(fJProject1);
    }
  }
示例#10
0
  // bug 424616
  public void testInferredExceptionType() throws Exception {
    StringBuffer buf = new StringBuffer();
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public class AddThrows {\n");
    buf.append("  interface Getter2<T, E extends Exception> { T get() throws E; }\n");
    buf.append("  \n");
    buf.append("  public static Long main2(Getter2<Long, ?> getter) {\n");
    buf.append("    Long value = getter == null ? 0l : 1l;\n");
    buf.append("    value = getter.get();\n");
    buf.append("    return value;\n");
    buf.append("  }\n");
    buf.append("}\n");
    ICompilationUnit cu =
        pack1.createCompilationUnit("AddThrows.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 1);
    assertNumberOfProposals(proposals, 2);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(0);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public class AddThrows {\n");
    buf.append("  interface Getter2<T, E extends Exception> { T get() throws E; }\n");
    buf.append("  \n");
    buf.append("  public static Long main2(Getter2<Long, ?> getter) {\n");
    buf.append("    Long value = getter == null ? 0l : 1l;\n");
    buf.append("    try {\n");
    buf.append("        value = getter.get();\n");
    buf.append("    } catch (Exception e) {\n");
    buf.append("        // TODO Auto-generated catch block\n");
    buf.append("        e.printStackTrace();\n");
    buf.append("    }\n");
    buf.append("    return value;\n");
    buf.append("  }\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});

    proposal = (CUCorrectionProposal) proposals.get(1);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public class AddThrows {\n");
    buf.append("  interface Getter2<T, E extends Exception> { T get() throws E; }\n");
    buf.append("  \n");
    buf.append("  public static Long main2(Getter2<Long, ?> getter) throws Exception {\n");
    buf.append("    Long value = getter == null ? 0l : 1l;\n");
    buf.append("    value = getter.get();\n");
    buf.append("    return value;\n");
    buf.append("  }\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});
  }
示例#11
0
 public IType createType(IPackageFragment pack, String cuName, String source)
     throws JavaModelException {
   StringBuffer buf = new StringBuffer();
   buf.append("package " + pack.getElementName() + ";\n");
   buf.append("\n");
   buf.append(source);
   ICompilationUnit cu = pack.createCompilationUnit(cuName, buf.toString(), false, null);
   return cu.getTypes()[0];
 }
示例#12
0
  // bug 414084
  public void testAbstractInterfaceMethodWithBody2() throws Exception {
    StringBuffer buf = new StringBuffer();
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public interface Snippet{\n");
    buf.append("\n");
    buf.append("    public abstract char m1(int arg0) {\n");
    buf.append("    }\n\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("Snippet.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 1);
    assertNumberOfProposals(proposals, 3);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(0);
    String preview1 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public interface Snippet{\n");
    buf.append("\n");
    buf.append("    public abstract char m1(int arg0);\n\n");
    buf.append("}\n");
    String expected1 = buf.toString();

    proposal = (CUCorrectionProposal) proposals.get(1);
    String preview2 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public interface Snippet{\n");
    buf.append("\n");
    buf.append("    public static char m1(int arg0) {\n");
    buf.append("    }\n\n");
    buf.append("}\n");
    String expected2 = buf.toString();

    proposal = (CUCorrectionProposal) proposals.get(2);
    String preview3 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public interface Snippet{\n");
    buf.append("\n");
    buf.append("    public default char m1(int arg0) {\n");
    buf.append("    }\n\n");
    buf.append("}\n");
    String expected3 = buf.toString();

    assertEqualStringsIgnoreOrder(
        new String[] {preview1, preview2, preview3},
        new String[] {expected1, expected2, expected3});
  }
示例#13
0
  public void testPartialCU1() throws Exception {
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.util.Vector;\n");
    buf.append("public class E {\n");
    buf.append("    private int fField1;\n");
    buf.append("    private int fField2;\n");
    buf.append("    public void foo1() {\n");
    buf.append("        fField1 = fField2;\n");
    buf.append("    }\n");
    buf.append("    public int foo1(int i) {\n");
    buf.append("        return i;\n");
    buf.append("    }\n");
    buf.append("}");
    String existing = buf.toString();
    ICompilationUnit cu = pack1.createCompilationUnit("E.java", existing, false, null);

    String statement = "fField1 = fField2;";
    int offset = existing.indexOf(statement);

    CompilationUnit astRoot = getPartialCompilationUnit(cu, offset);
    String string = ASTNodes.asFormattedString(astRoot, 0, String.valueOf('\n'), null);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.util.Vector;\n");
    buf.append("public class E {\n");
    buf.append("    private int fField1;\n");
    buf.append("    private int fField2;\n");
    buf.append("    public void foo1() {\n");
    buf.append("        fField1 = fField2;\n");
    buf.append("    }\n");
    buf.append("    public int foo1(int i) {\n");
    buf.append("    }\n");
    buf.append("}");
    String expected = buf.toString();

    assertEqualString(string, expected);

    offset = expected.indexOf(statement);

    ASTNode node = NodeFinder.perform(astRoot, offset, statement.length());
    Assignment assignment = (Assignment) ((ExpressionStatement) node).getExpression();
    Expression e1 = assignment.getLeftHandSide();
    Expression e2 = assignment.getRightHandSide();
    assertNotNull(e1.resolveTypeBinding());
    assertNotNull(e2.resolveTypeBinding());

    assertTrue(((SimpleName) e1).resolveBinding() instanceof IVariableBinding);
    assertTrue(((SimpleName) e2).resolveBinding() instanceof IVariableBinding);

    assertAllBindings(astRoot);
  }
示例#14
0
  public void testLambdaReturnType3() throws Exception {
    StringBuffer buf = new StringBuffer();
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("@FunctionalInterface\n");
    buf.append("interface I {\n");
    buf.append("     int foo(int x);    \n");
    buf.append("}\n");
    buf.append("\n");
    buf.append("public class A {    \n");
    buf.append("    void fun2() {\n");
    // Inferred parameter type
    buf.append("        I i= (x) -> {\n");
    buf.append("            x++;\n");
    buf.append("            System.out.println(x);\n");
    buf.append("        };\n");
    buf.append("        i.foo(10);\n");
    buf.append("    }\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("A.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 1);
    assertNumberOfProposals(proposals, 1);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(0);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("@FunctionalInterface\n");
    buf.append("interface I {\n");
    buf.append("     int foo(int x);    \n");
    buf.append("}\n");
    buf.append("\n");
    buf.append("public class A {    \n");
    buf.append("    void fun2() {\n");
    buf.append("        I i= (x) -> {\n");
    buf.append("            x++;\n");
    buf.append("            System.out.println(x);\n");
    buf.append("            return x;\n");
    buf.append("        };\n");
    buf.append("        i.foo(10);\n");
    buf.append("    }\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});
  }
示例#15
0
  public void testLambdaReturnType5() throws Exception {
    StringBuffer buf = new StringBuffer();
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.math.BigInteger;\n");
    buf.append("\n");
    buf.append("interface A { Object m(Class c); }\n");
    buf.append("interface B<S extends Number> { Object m(Class<S> c); }\n");
    buf.append("interface C<T extends BigInteger> { Object m(Class<T> c); }\n");
    buf.append("@FunctionalInterface\n");
    buf.append("interface D<S,T> extends A, B<BigInteger>, C<BigInteger> {}\n");
    buf.append("\n");
    buf.append("class E {\n");
    buf.append("    private void foo() {\n");
    buf.append("         D<BigInteger,BigInteger> d1= (x) -> {\n");
    buf.append("            };\n");
    buf.append("    }\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 1);
    assertNumberOfProposals(proposals, 1);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(0);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.math.BigInteger;\n");
    buf.append("\n");
    buf.append("interface A { Object m(Class c); }\n");
    buf.append("interface B<S extends Number> { Object m(Class<S> c); }\n");
    buf.append("interface C<T extends BigInteger> { Object m(Class<T> c); }\n");
    buf.append("@FunctionalInterface\n");
    buf.append("interface D<S,T> extends A, B<BigInteger>, C<BigInteger> {}\n");
    buf.append("\n");
    buf.append("class E {\n");
    buf.append("    private void foo() {\n");
    buf.append("         D<BigInteger,BigInteger> d1= (x) -> {\n");
    buf.append("            return x;\n");
    buf.append("            };\n");
    buf.append("    }\n");
    buf.append("}\n");
    assertEqualStringsIgnoreOrder(
        new String[] {getPreviewContent(proposal)}, new String[] {buf.toString()});
  }
示例#16
0
  public void testUnimplementedMethods2() throws Exception {
    StringBuffer buf = new StringBuffer();
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public class MyString implements CharSequence{\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("MyString.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 3);
    assertNumberOfProposals(proposals, 2);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(1);
    String preview1 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public abstract class MyString implements CharSequence{\n");
    buf.append("}\n");
    String expected1 = buf.toString();

    proposal = (CUCorrectionProposal) proposals.get(0);
    String preview2 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("public class MyString implements CharSequence{\n");
    buf.append("\n");
    buf.append("    @Override\n");
    buf.append("    public char charAt(int arg0) {\n");
    buf.append("        return 0;\n");
    buf.append("    }\n\n");
    buf.append("    @Override\n");
    buf.append("    public int length() {\n");
    buf.append("        return 0;\n");
    buf.append("    }\n\n");
    buf.append("    @Override\n");
    buf.append("    public CharSequence subSequence(int arg0, int arg1) {\n");
    buf.append("        return null;\n");
    buf.append("    }\n");
    buf.append("}\n");
    String expected2 = buf.toString();

    assertEqualStringsIgnoreOrder(
        new String[] {preview1, preview2}, new String[] {expected1, expected2});
  }
示例#17
0
  public MClassJDT(MPackageJDT mpkg, String name) {
    String fullname = "???." + name;
    ICompilationUnit workingCopy = null;
    try {
      IPackageFragment jdtPackage = (IPackageFragment) mpkg.getJdtPackageInfo().getParent();
      fullname = jdtPackage.getElementName() + "." + name;
      if (jdtPackage.getCompilationUnit(name + ".java").exists())
        throw new MyRuntimeException("Class with name '" + fullname + "' already exists.");
      IProgressMonitor monitor = MyMonitor.currentMonitor();

      String content = "public class " + name + " {}";
      ICompilationUnit cu = jdtPackage.createCompilationUnit(name + ".java", content, true, null);
      workingCopy = cu.getWorkingCopy(monitor);
      workingCopy.createPackageDeclaration(jdtPackage.getElementName(), monitor);

      String source = ((IOpenable) workingCopy).getBuffer().getContents();

      Map<?, ?> options = EclipseUtils.getJdtCorePreferences(jdtPackage);

      // instantiate the default code formatter with the given options
      final CodeFormatter codeFormatter =
          ToolFactory.createCodeFormatter(options, ToolFactory.M_FORMAT_NEW);

      TextEdit edit =
          codeFormatter.format(
              CodeFormatter.K_COMPILATION_UNIT, source, 0, source.length(), 0, null);

      if (edit == null) {
        throw new MyRuntimeException("Can't format the source: " + source);
      }

      workingCopy.applyTextEdit(edit, monitor);
      workingCopy.commitWorkingCopy(false, monitor);
      workingCopy.discardWorkingCopy();

      jdtCu = jdtPackage.getCompilationUnit(name + ".java");
    } catch (JavaModelException e) {
      throw new MyRuntimeException("Can not create '" + fullname + "' class.", e);
    } finally {
      if (workingCopy != null)
        try {
          workingCopy.discardWorkingCopy();
        } catch (JavaModelException e) {
          throw new MyRuntimeException(e);
        }
    }
  }
  public void testAddSafeVarargs5() throws Exception {
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("p", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package p;\n");
    buf.append("import java.util.List;\n");
    buf.append("public class E {\n");
    buf.append("    public <T> List<T> asList(T ... a) {\n");
    buf.append("        return null;\n");
    buf.append("    }\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot);

    assertCorrectLabels(proposals);
    assertNumberOfProposals(proposals, 3);

    assertProposalDoesNotExist(
        proposals, CorrectionMessages.VarargsWarningsSubProcessor_add_safevarargs_label);
  }
  public boolean performFinish() {
    try {

      if (customMediatorModel.getSelectedOption().equals("new.mediator")) {
        project = createNewProject();
        IFolder srcFolder = ProjectUtils.getWorkspaceFolder(project, "src", "main", "java");
        JavaUtils.addJavaSupportAndSourceFolder(project, srcFolder);

        /*create the new Java project*/
        String className = customMediatorModel.getMediatorClassName();
        String packageName = customMediatorModel.getMediatorClassPackageName();
        IJavaProject iJavaProject = JavaCore.create(project);
        IPackageFragmentRoot root = iJavaProject.getPackageFragmentRoot(srcFolder);
        IPackageFragment sourcePackage = root.createPackageFragment(packageName, false, null);

        /*get the Mediator class template*/
        String template = CustomMediatorClassTemplate.getClassTemplete(packageName, className);
        ICompilationUnit cu =
            sourcePackage.createCompilationUnit(className + ".java", template, false, null);

        project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
        try {
          IEditorPart javaEditor = JavaUI.openInEditor(cu);
          JavaUI.revealInEditor(javaEditor, (IJavaElement) cu);
        } catch (Exception e) {
          log.error(e);
        }
      } else {
        project = customMediatorModel.getMediatorProject();
        project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
      }
      File pomfile = project.getFile("pom.xml").getLocation().toFile();
      getModel().getMavenInfo().setPackageName("bundle");
      if (!pomfile.exists()) {
        createPOM(pomfile);
        addDependancies(project);
      }
      MavenProject mavenProject = MavenUtils.getMavenProject(pomfile);
      boolean pluginExists =
          MavenUtils.checkOldPluginEntry(
              mavenProject, "org.apache.felix", "maven-bundle-plugin", "2.3.4");
      if (!pluginExists) {
        Plugin plugin =
            MavenUtils.createPluginEntry(
                mavenProject, "org.apache.felix", "maven-bundle-plugin", "2.3.4", true);

        Xpp3Dom configurationNode = MavenUtils.createMainConfigurationNode(plugin);
        Xpp3Dom instructionNode = MavenUtils.createXpp3Node("instructions");
        Xpp3Dom bundleSymbolicNameNode =
            MavenUtils.createXpp3Node(instructionNode, "Bundle-SymbolicName");
        Xpp3Dom bundleNameNode = MavenUtils.createXpp3Node(instructionNode, "Bundle-Name");
        ;
        Xpp3Dom exportPackageNode = MavenUtils.createXpp3Node(instructionNode, "Export-Package");
        Xpp3Dom dynamicImportNode =
            MavenUtils.createXpp3Node(instructionNode, "DynamicImport-Package");
        bundleSymbolicNameNode.setValue(project.getName());
        bundleNameNode.setValue(project.getName());
        if (customMediatorModel.getMediatorClassPackageName() != null
            && !customMediatorModel.getMediatorClassPackageName().trim().isEmpty()) {
          exportPackageNode.setValue(customMediatorModel.getMediatorClassPackageName());
        } else {
          IJavaProject javaProject = JavaCore.create(project);
          if (null != javaProject) {
            StringBuffer sb = new StringBuffer();
            for (IPackageFragment pkg : javaProject.getPackageFragments()) {
              if (pkg.getKind() == IPackageFragmentRoot.K_SOURCE) {
                if (pkg.hasChildren()) {
                  sb.append(pkg.getElementName()).append(",");
                }
              }
            }
            exportPackageNode.setValue(sb.toString().replaceAll(",$", ""));
          }
        }
        dynamicImportNode.setValue("*");
        configurationNode.addChild(instructionNode);
        MavenUtils.saveMavenProject(mavenProject, pomfile);
      }

      project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
      ProjectUtils.addNatureToProject(project, false, MEDIATOR_PROJECT_NATURE);
      MavenUtils.updateWithMavenEclipsePlugin(
          pomfile,
          new String[] {JDT_BUILD_COMMAND},
          new String[] {MEDIATOR_PROJECT_NATURE, JDT_PROJECT_NATURE});
      customMediatorModel.addToWorkingSet(project);
      project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
      refreshDistProjects();
    } catch (CoreException e) {
      log.error(e);
    } catch (Exception e) {
      log.error(e);
    }
    return true;
  }
示例#20
0
  public void testPartialCUPositionNotInMethod2() throws Exception {
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.util.Vector;\n");
    buf.append("import java.io.IOException;\n");
    buf.append("import java.text.ParseException;\n");
    buf.append("public class E {\n");
    buf.append("    private class EInner {\n");
    buf.append("        {\n");
    buf.append("            System.out.println();\n");
    buf.append("        }\n");
    buf.append("    }\n");
    buf.append("    private int fField1;\n");
    buf.append("    private int fField2;\n");
    buf.append("    public void foo1() throws IOException, ParseException {\n");
    buf.append("        fField1 = fField2;\n");
    buf.append("        if (fField1 == 0) {\n");
    buf.append("            fField2++;\n");
    buf.append("        }\n");
    buf.append("        EInner inner = new EInner();\n");
    buf.append("    }\n");
    buf.append("    public int foo2(int i) {\n");
    buf.append("        private class Local {\n");
    buf.append("            private int fField3;\n");
    buf.append("            public int local(int i) {\n");
    buf.append("                return 1;\n");
    buf.append("            }\n");
    buf.append("        }\n");
    buf.append("        Local local = new Local();\n");
    buf.append("        return i;\n");
    buf.append("    }\n");
    buf.append("}");
    String existing = buf.toString();
    ICompilationUnit cu = pack1.createCompilationUnit("E.java", existing, false, null);

    int offset = existing.indexOf("private int fField3;");

    CompilationUnit astRoot = getPartialCompilationUnit(cu, offset);
    String string = ASTNodes.asFormattedString(astRoot, 0, String.valueOf('\n'), null);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.util.Vector;\n");
    buf.append("import java.io.IOException;\n");
    buf.append("import java.text.ParseException;\n");
    buf.append("public class E {\n");
    buf.append("    private class EInner {\n");
    buf.append("        {\n");
    buf.append("        }\n");
    buf.append("    }\n");
    buf.append("    private int fField1;\n");
    buf.append("    private int fField2;\n");
    buf.append("    public void foo1() throws IOException, ParseException {\n");
    buf.append("    }\n");
    buf.append("    public int foo2(int i) {\n");
    buf.append("        private class Local {\n");
    buf.append("            private int fField3;\n");
    buf.append("            public int local(int i) {\n");
    buf.append("                return 1;\n");
    buf.append("            }\n");
    buf.append("        }\n");
    buf.append("        Local local = new Local();\n");
    buf.append("        return i;\n");
    buf.append("    }\n");
    buf.append("}");
    String expected = buf.toString();

    assertEqualString(string, expected);
    assertAllBindings(astRoot);
  }
示例#21
0
  public void testUnimplementedMethods6() throws Exception {
    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    StringBuffer buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.math.BigInteger;\n");
    buf.append("interface IHasInt {\n");
    buf.append("    int getInt();\n");
    buf.append("}\n");
    buf.append("interface IHasIntAsBigInteger extends IHasInt {\n");
    buf.append("    default int getInt() {\n");
    buf.append("        return getIntAsBigInteger().intValue();\n");
    buf.append("    }\n");
    buf.append("    BigInteger getIntAsBigInteger();\n");
    buf.append("}\n");
    buf.append("class C implements IHasIntAsBigInteger {\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("IHasInt.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot);

    assertCorrectLabels(proposals);
    assertNumberOfProposals(proposals, 2);

    String[] expected = new String[2];
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.math.BigInteger;\n");
    buf.append("interface IHasInt {\n");
    buf.append("    int getInt();\n");
    buf.append("}\n");
    buf.append("interface IHasIntAsBigInteger extends IHasInt {\n");
    buf.append("    default int getInt() {\n");
    buf.append("        return getIntAsBigInteger().intValue();\n");
    buf.append("    }\n");
    buf.append("    BigInteger getIntAsBigInteger();\n");
    buf.append("}\n");
    buf.append("class C implements IHasIntAsBigInteger {\n");
    buf.append("\n");
    buf.append("    @Override\n");
    buf.append("    public BigInteger getIntAsBigInteger() {\n");
    buf.append("        return null;\n");
    buf.append("    }\n");
    buf.append("}\n");
    expected[0] = buf.toString();

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.math.BigInteger;\n");
    buf.append("interface IHasInt {\n");
    buf.append("    int getInt();\n");
    buf.append("}\n");
    buf.append("interface IHasIntAsBigInteger extends IHasInt {\n");
    buf.append("    default int getInt() {\n");
    buf.append("        return getIntAsBigInteger().intValue();\n");
    buf.append("    }\n");
    buf.append("    BigInteger getIntAsBigInteger();\n");
    buf.append("}\n");
    buf.append("abstract class C implements IHasIntAsBigInteger {\n");
    buf.append("}\n");
    expected[1] = buf.toString();

    assertExpectedExistInProposals(proposals, expected);
  }
  public boolean performFinish() {
    try {
      project = createNewProject();
      sourceFolder = ProjectUtils.getWorkspaceFolder(project, "src", "main", "java");
      javaProject = JavaCore.create(project);
      root = javaProject.getPackageFragmentRoot(sourceFolder);
      JavaUtils.addJavaSupportAndSourceFolder(project, sourceFolder);
      addDependancies(project);

      String className = filterModel.getFilterClass();
      String packageName = filterModel.getFilterClassPackage();

      IPackageFragment sourcePackage = root.createPackageFragment(packageName, false, null);

      ICompilationUnit cu =
          sourcePackage.createCompilationUnit(
              className + ".java", getFilterClassSource(packageName, className), false, null);
      project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());

      File pomfile = project.getFile("pom.xml").getLocation().toFile();
      getModel().getMavenInfo().setPackageName("bundle");
      if (!pomfile.exists()) {
        createPOM(pomfile);
      }

      MavenProject mavenProject = MavenUtils.getMavenProject(pomfile);

      mavenProject.getModel().getProperties().put("CApp.type", "lib/registry/filter");

      Plugin plugin =
          MavenUtils.createPluginEntry(
              mavenProject, "org.apache.felix", "maven-bundle-plugin", "2.3.4", true);

      Xpp3Dom configurationNode = MavenUtils.createMainConfigurationNode(plugin);
      Xpp3Dom instructionNode = MavenUtils.createXpp3Node(configurationNode, "instructions");
      Xpp3Dom symbolicNameNode = MavenUtils.createXpp3Node(instructionNode, "Bundle-SymbolicName");
      symbolicNameNode.setValue(mavenProject.getArtifactId());
      Xpp3Dom bundleNameNode = MavenUtils.createXpp3Node(instructionNode, "Bundle-Name");
      bundleNameNode.setValue(mavenProject.getArtifactId());
      Xpp3Dom exportPackageNode = MavenUtils.createXpp3Node(instructionNode, "Export-Package");
      exportPackageNode.setValue(packageName);
      Xpp3Dom dynamicImportNode =
          MavenUtils.createXpp3Node(instructionNode, "DynamicImport-Package");
      dynamicImportNode.setValue("*");

      Repository repo = new Repository();
      repo.setUrl("http://maven.wso2.org/nexus/content/groups/wso2-public/");
      repo.setId("wso2-maven2-repository-1");

      mavenProject.getModel().addRepository(repo);
      mavenProject.getModel().addPluginRepository(repo);

      List<Dependency> dependencyList = new ArrayList<Dependency>();

      Map<String, JavaLibraryBean> dependencyInfoMap =
          JavaLibraryUtil.getDependencyInfoMap(project);
      Map<String, String> map = ProjectDependencyConstants.DEPENDENCY_MAP;
      for (JavaLibraryBean bean : dependencyInfoMap.values()) {
        if (bean.getVersion().contains("${")) {
          for (String path : map.keySet()) {
            bean.setVersion(bean.getVersion().replace(path, map.get(path)));
          }
        }
        Dependency dependency = new Dependency();
        dependency.setArtifactId(bean.getArtifactId());
        dependency.setGroupId(bean.getGroupId());
        dependency.setVersion(bean.getVersion());
        dependencyList.add(dependency);
      }
      MavenUtils.addMavenDependency(mavenProject, dependencyList);
      MavenUtils.saveMavenProject(mavenProject, pomfile);
      ProjectUtils.addNatureToProject(project, false, Constants.REGISTRY_FILTER_PROJECT_NATURE);
      MavenUtils.updateWithMavenEclipsePlugin(
          pomfile,
          new String[] {JDT_BUILD_COMMAND},
          new String[] {Constants.REGISTRY_FILTER_PROJECT_NATURE, JDT_PROJECT_NATURE});
      project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());

      try {
        refreshDistProjects();
        IEditorPart javaEditor = JavaUI.openInEditor(cu);
        JavaUI.revealInEditor(javaEditor, (IJavaElement) cu);
      } catch (Exception e) {
        /* ignore */
      }

    } catch (Exception e) {
      e.printStackTrace();
    }

    return true;
  }
示例#23
0
  // bug 420116 : test for annotated varargs and return type
  public void testUnimplementedMethods4() throws Exception {
    JavaProjectHelper.addLibrary(
        fJProject1, new Path(Java18ProjectTestSetup.getJdtAnnotations20Path()));

    IPackageFragment pack2 = fSourceFolder.createPackageFragment("test1", false, null);

    StringBuffer buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.io.IOException;\n\n");
    buf.append("import org.eclipse.jdt.annotation.*;\n");
    buf.append("public interface Inter {\n");
    buf.append("    public int foo(@NonNull String @Nullable... s) throws IOException;\n");
    buf.append("    public int bar(@NonNull String... s) throws IOException;\n");
    buf.append("    static int staticMethod(Object[] o) throws IOException{return 10;}\n");
    buf.append("    default int defaultMethod(Object[] o) throws IOException{return 20;}\n");
    buf.append("}\n");
    buf.append("class E implements Inter{\n");
    buf.append("}\n");

    ICompilationUnit cu = pack2.createCompilationUnit("Inter.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 2);
    assertNumberOfProposals(proposals, 2);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(1);
    String preview1 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.io.IOException;\n\n");
    buf.append("import org.eclipse.jdt.annotation.*;\n");
    buf.append("public interface Inter {\n");
    buf.append("    public int foo(@NonNull String @Nullable... s) throws IOException;\n");
    buf.append("    public int bar(@NonNull String... s) throws IOException;\n");
    buf.append("    static int staticMethod(Object[] o) throws IOException{return 10;}\n");
    buf.append("    default int defaultMethod(Object[] o) throws IOException{return 20;}\n");
    buf.append("}\n");
    buf.append("abstract class E implements Inter{\n");
    buf.append("}\n");
    String expected1 = buf.toString();

    proposal = (CUCorrectionProposal) proposals.get(0);
    String preview2 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import java.io.IOException;\n\n");
    buf.append("import org.eclipse.jdt.annotation.*;\n");
    buf.append("public interface Inter {\n");
    buf.append("    public int foo(@NonNull String @Nullable... s) throws IOException;\n");
    buf.append("    public int bar(@NonNull String... s) throws IOException;\n");
    buf.append("    static int staticMethod(Object[] o) throws IOException{return 10;}\n");
    buf.append("    default int defaultMethod(Object[] o) throws IOException{return 20;}\n");
    buf.append("}\n");
    buf.append("class E implements Inter{\n");
    buf.append("\n");
    buf.append("    @Override\n");
    buf.append("    public int foo(@NonNull String @Nullable... s) throws IOException {\n");
    buf.append("        return 0;\n");
    buf.append("    }\n\n");
    buf.append("    @Override\n");
    buf.append("    public int bar(@NonNull String... s) throws IOException {\n");
    buf.append("        return 0;\n");
    buf.append("    }\n");
    buf.append("}\n");
    String expected2 = buf.toString();

    assertEqualStringsIgnoreOrder(
        new String[] {preview1, preview2}, new String[] {expected1, expected2});
  }
  public void testASTRewriteExample() throws Exception {
    // create a new project
    IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Test");
    project.create(null);
    project.open(null);
    try {
      // set the Java nature and Java build path
      IProjectDescription description = project.getDescription();
      description.setNatureIds(new String[] {JavaCore.NATURE_ID});
      project.setDescription(description, null);

      IJavaProject javaProject = JavaCore.create(project);

      // build path is: project as source folder and JRE container
      IClasspathEntry[] cpentry =
          new IClasspathEntry[] {
            JavaCore.newSourceEntry(javaProject.getPath()),
            JavaRuntime.getDefaultJREContainerEntry()
          };
      javaProject.setRawClasspath(cpentry, javaProject.getPath(), null);
      Map<String, String> options = new HashMap<>();
      options.put(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, JavaCore.SPACE);
      options.put(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, "4");
      javaProject.setOptions(options);

      // create a test file
      IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(project);
      IPackageFragment pack1 = root.createPackageFragment("test1", false, null);
      StringBuffer buf = new StringBuffer();
      buf.append("package test1;\n");
      buf.append("public class E {\n");
      buf.append("    public void foo(int i) {\n");
      buf.append("        while (--i > 0) {\n");
      buf.append("            System.beep();\n");
      buf.append("        }\n");
      buf.append("    }\n");
      buf.append("}\n");
      ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);

      // create an AST
      ASTParser parser = ASTParser.newParser(IASTSharedValues.SHARED_AST_LEVEL);
      parser.setSource(cu);
      parser.setResolveBindings(false);
      CompilationUnit astRoot = (CompilationUnit) parser.createAST(null);
      AST ast = astRoot.getAST();

      // create the descriptive ast rewriter
      ASTRewrite rewrite = ASTRewrite.create(ast);

      // get the block node that contains the statements in the method body
      TypeDeclaration typeDecl = (TypeDeclaration) astRoot.types().get(0);
      MethodDeclaration methodDecl = typeDecl.getMethods()[0];
      Block block = methodDecl.getBody();

      // create new statements to insert
      MethodInvocation newInv1 = ast.newMethodInvocation();
      newInv1.setName(ast.newSimpleName("bar1"));
      Statement newStatement1 = ast.newExpressionStatement(newInv1);

      MethodInvocation newInv2 = ast.newMethodInvocation();
      newInv2.setName(ast.newSimpleName("bar2"));
      Statement newStatement2 = ast.newExpressionStatement(newInv2);

      // describe that the first node is inserted as first statement in block, the other one as last
      // statement
      // note: AST is not modified by this
      ListRewrite listRewrite = rewrite.getListRewrite(block, Block.STATEMENTS_PROPERTY);
      listRewrite.insertFirst(newStatement1, null);
      listRewrite.insertLast(newStatement2, null);

      // evaluate the text edits corresponding to the described changes. AST and CU still
      // unmodified.
      TextEdit res = rewrite.rewriteAST();

      // apply the text edits to the compilation unit
      Document document = new Document(cu.getSource());
      res.apply(document);
      cu.getBuffer().setContents(document.get());

      // test result
      String preview = cu.getSource();

      buf = new StringBuffer();
      buf.append("package test1;\n");
      buf.append("public class E {\n");
      buf.append("    public void foo(int i) {\n");
      buf.append("        bar1();\n");
      buf.append("        while (--i > 0) {\n");
      buf.append("            System.beep();\n");
      buf.append("        }\n");
      buf.append("        bar2();\n");
      buf.append("    }\n");
      buf.append("}\n");
      assertEquals(preview, buf.toString());
    } finally {
      project.delete(true, null);
    }
  }
示例#25
0
  // bug 420116 : test for user defined annotation in varargs
  public void testUnimplementedMethods5() throws Exception {
    IPackageFragment pack2 = fSourceFolder.createPackageFragment("test2", false, null);

    StringBuffer buf = new StringBuffer();
    buf.append("package test2;\n");
    buf.append("public interface List {\n");
    buf.append("}\n");
    pack2.createCompilationUnit("List.java", buf.toString(), false, null);

    buf.append("package test2;\n");
    buf.append("import java.lang.annotation.ElementType;\n");
    buf.append("import java.lang.annotation.Target;\n");
    buf.append("\n");
    buf.append("@Target({ ElementType.TYPE_USE }) @interface N1 { }\n");
    buf.append("@Target({ ElementType.TYPE_USE }) @interface N2 { }\n");
    buf.append("@Target({ ElementType.TYPE_USE }) @interface N3 { }\n");
    buf.append("}\n");
    buf.append("\n");
    buf.append("public interface Inter {\n");
    buf.append(
        "    int foo2U(@N1 String @N2 [] s1 @N3 [], @N1 String @N2 [] @N3 [] @N4 ... s2);\n");
    buf.append("}\n");
    pack2.createCompilationUnit("Inter.java", buf.toString(), false, null);

    IPackageFragment pack1 = fSourceFolder.createPackageFragment("test1", false, null);
    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import test2.Inter;\n");
    buf.append("public class E implements Inter{\n");
    buf.append("}\n");
    ICompilationUnit cu = pack1.createCompilationUnit("E.java", buf.toString(), false, null);

    CompilationUnit astRoot = getASTRoot(cu);
    ArrayList<IJavaCompletionProposal> proposals = collectCorrections(cu, astRoot, 1);
    assertNumberOfProposals(proposals, 2);
    assertCorrectLabels(proposals);

    CUCorrectionProposal proposal = (CUCorrectionProposal) proposals.get(1);
    String preview1 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import test2.Inter;\n");
    buf.append("public abstract class E implements Inter{\n");
    buf.append("}\n");
    String expected1 = buf.toString();

    proposal = (CUCorrectionProposal) proposals.get(0);
    String preview2 = getPreviewContent(proposal);

    buf = new StringBuffer();
    buf.append("package test1;\n");
    buf.append("import test2.Inter;\n");
    buf.append("import test2.N1;\n");
    buf.append("import test2.N2;\n");
    buf.append("import test2.N3;\n");
    buf.append("import test2.N4;\n");
    buf.append("public class E implements Inter{\n");
    buf.append("\n");
    buf.append("    @Override\n");
    buf.append("    public int foo2U(@N1 String @N3 [] @N2 [] s1,\n");
    buf.append("            @N1 String @N2 [] @N3 [] @N4... s2) {\n");
    buf.append("        return 0;\n");
    buf.append("    }\n");
    buf.append("}\n");
    String expected2 = buf.toString();

    assertEqualStringsIgnoreOrder(
        new String[] {preview1, preview2}, new String[] {expected1, expected2});
  }