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); }
// 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()}); }
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}); }
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()}); }
// 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; }
// 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); } }
// 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()}); }
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]; }
// 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}); }
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); }
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()}); }
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()}); }
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}); }
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; }
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); }
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; }
// 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); } }
// 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}); }