CompilationUnit cu = ast.newCompilationUnit();
AST ast = AST.newAST(AST.JLS4); CompilationUnit unit = ast.newCompilationUnit();
public static void createCompilationUnit(final Path rootPath, final String packageName, final String name, final Charset charset, final BiConsumer<AST, CompilationUnit> consumer) { final AST ast = AST.newAST(AST.JLS8); final CompilationUnit cu = ast.newCompilationUnit(); final PackageDeclaration pkg = ast.newPackageDeclaration(); pkg.setName(ast.newName(packageName)); cu.setPackage(pkg); final Path path = rootPath.resolve(packageName.replace(".", File.separator)).resolve(name + ".java"); consumer.accept(ast, cu); try { Files.createDirectories(path.getParent()); // format code final CodeFormatter formatter = ToolFactory.createCodeFormatter(null); final String s = cu.toString(); final TextEdit result = formatter.format(CodeFormatter.K_COMPILATION_UNIT, s, 0, s.length(), 0, null); final Document doc = new Document(s); result.apply(doc); // write out try (Writer writer = Files.newBufferedWriter(path, charset)) { writer.append(doc.get()); } } catch (final Exception e) { throw new RuntimeException(e); } }
/** * Constructor. * * @param ast AST * @param pack Package holder * @param name Name * @param imports Imports */ public SourceBuilder(AST ast, PackageHolder pack, String name, ImportsTracker imports) { // initialize basic parameters m_ast = ast; m_package = pack; m_name = name; m_importsTracker = imports; m_classes = new ArrayList(); // create file in appropriate package m_compilationUnit = ast.newCompilationUnit(); String pname = pack.getName(); if (pname.length() > 0) { PackageDeclaration packageDeclaration = ast.newPackageDeclaration(); packageDeclaration.setName(ast.newName(pname)); m_compilationUnit.setPackage(packageDeclaration); } }
/** * Generate general Exception. This will be called by Unchecked and Checked * Exception generation. * * @param clazz * UML class * @return JDT compilation unit */ private CompilationUnit generateException(Classifier clazz) { AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); generatePackage(clazz, ast, cu); TypeDeclaration td = generateClass(clazz, ast, cu); generateSerialVersionUID(clazz, ast, td); generateMethods(clazz, ast, td); generateConstructors(clazz, ast, td); logger.log(Level.INFO, "Compilation unit: \n\n" + cu.toString()); return cu; }
@Test public void testGenerateClassCheckedExceptionWithInheritance() { EList<Generalization> generalizations = new UniqueEList<Generalization>(); Generalization generalization = mock(Generalization.class); Class clazzGeneralization = mock(Class.class); generalizations.add(generalization); when(generalization.getGeneral()).thenReturn(clazzGeneralization); when(clazzGeneralization.getQualifiedName()).thenReturn( "de::test::SuperCompanyException"); when(clazz.getGeneralizations()).thenReturn(generalizations); AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); TypeDeclaration typeDeclaration = exceptionGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), "public class CompanyException extends de.test.SuperCompanyException {\n}\n"); }
/** * Generate the Class Interface. This is the main generation part for this * SimpleJavaTransformer. * * @param Class * clazz the UML class * @return CompilationUnit the complete class with its content as a String */ public CompilationUnit generateEnum(Classifier clazz, String sourceDirectoryPackageName) { this.sourceDirectoryPackageName = sourceDirectoryPackageName; AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); generatePackage(clazz, ast, cu); EnumDeclaration ed = generateEnum(clazz, ast, cu); generateAttributes(clazz, ast, ed); generateConstructor(clazz, ast, ed); generateConstants(clazz, ast, ed); generateGetterMethod(clazz, ast, ed); logger.log(Level.INFO, "Compilation unit: \n\n" + cu.toString()); return cu; }
@SuppressWarnings("unchecked") @Test public void testGenerateClassCheckedExceptionWithTemplate() { TemplateSignature templateSignature = mock(TemplateSignature.class); EList<TemplateParameter> templateParameters = mock(EList.class, Answers.RETURNS_DEEP_STUBS.get()); when(clazz.getOwnedTemplateSignature()).thenReturn(templateSignature); when(templateSignature.getParameters()).thenReturn(templateParameters); AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); TypeDeclaration typeDeclaration = exceptionGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), "public class CompanyException extends Exception {\n}\n"); }
@Test public void testGenerateClassUncheckedExceptionWithInheritance() { EList<Generalization> generalizations = new UniqueEList<Generalization>(); Generalization generalization = mock(Generalization.class); Class clazzGeneralization = mock(Class.class); generalizations.add(generalization); when(generalization.getGeneral()).thenReturn(clazzGeneralization); when(clazzGeneralization.getQualifiedName()).thenReturn( "de::test::SuperCompanyException"); when(clazz.getGeneralizations()).thenReturn(generalizations); AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); exceptionGenerator.setCheckedException(false); TypeDeclaration typeDeclaration = exceptionGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), "public class CompanyException extends de.test.SuperCompanyException {\n}\n"); }
@SuppressWarnings("unchecked") @Test public void testGenerateClassUncheckedExceptionWithTemplate() { TemplateSignature templateSignature = mock(TemplateSignature.class); EList<TemplateParameter> templateParameters = mock(EList.class, Answers.RETURNS_DEEP_STUBS.get()); when(clazz.getOwnedTemplateSignature()).thenReturn(templateSignature); when(templateSignature.getParameters()).thenReturn(templateParameters); AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); exceptionGenerator.setCheckedException(false); TypeDeclaration typeDeclaration = exceptionGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), "public class CompanyException extends RuntimeException {\n}\n"); }
@Test public void testGeneratePackage() { AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); enumGenerator.generatePackage(clazz, ast, cu); String onlyPackage = cu.toString(); String expectedResult = "package de.crowdcode.kissmda.testapp.components;\n"; boolean isInside = onlyPackage.contains(expectedResult); assertTrue(isInside); }
@Test public void testGeneratePackage() { AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); interfaceGenerator.generatePackage(clazz, ast, cu); String onlyPackage = cu.toString(); String expectedResult = "package de.crowdcode.kissmda.testapp.components;\n"; boolean isInside = onlyPackage.contains(expectedResult); assertTrue(isInside); }
@Test public void testGenerateEnum() { AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); enumGenerator.generateEnum(clazz, ast, cu); assertEquals("public enum Company {}\n", cu.toString()); }
@Test public void testGenerateClassCheckedExceptionWithNoInheritance() { AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); TypeDeclaration typeDeclaration = exceptionGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), "public class CompanyException extends Exception {\n}\n"); }
@SuppressWarnings("unchecked") @Test public void testGenerateClassWithTemplate() { TemplateSignature templateSignature = mock(TemplateSignature.class); EList<TemplateParameter> templateParameters = mock(EList.class, Answers.RETURNS_DEEP_STUBS.get()); when(clazz.getOwnedTemplateSignature()).thenReturn(templateSignature); when(templateSignature.getParameters()).thenReturn(templateParameters); AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); TypeDeclaration td = ast.newTypeDeclaration(); td.setInterface(true); Modifier modifier = ast .newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); td.modifiers().add(modifier); td.setName(ast.newSimpleName("Company")); TypeDeclaration typeDeclaration = interfaceGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), td.toString()); }
@Test public void testGenerateClassUncheckedExceptionWithNoInheritance() { AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); exceptionGenerator.setCheckedException(false); TypeDeclaration typeDeclaration = exceptionGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), "public class CompanyException extends RuntimeException {\n}\n"); }
@SuppressWarnings("unchecked") @Test public void testGenerateAssociationEndUpperCardinalityMultiplesIsUniqueAndIsOrdered() { AST ast = AST.newAST(AST.JLS3); ast.newCompilationUnit(); TypeDeclaration td = ast.newTypeDeclaration(); td.setInterface(true); Modifier modifier = ast .newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); td.modifiers().add(modifier); td.setName(ast.newSimpleName("Company")); Property property = mock(Property.class); MethodDeclaration mdGetter = ast.newMethodDeclaration(); mdGetter.setName(ast.newSimpleName("getCompanies")); String umlQualifiedTypeName = "test.de.Company"; String umlTypeName = "Company"; when(property.isOrdered()).thenReturn(true); when(property.isUnique()).thenReturn(true); interfaceGenerator.generateAssociationEndUpperCardinalityMultiples(ast, td, property, mdGetter, umlTypeName, umlQualifiedTypeName); assertEquals("java.util.SortedSet<test.de.Company>", mdGetter .getReturnType2().toString()); }
@SuppressWarnings("unchecked") @Test public void test_Existing_Static_Imports2() { AST ast = AST.newAST(AST.JLS4); CompilationUnit cu = ast.newCompilationUnit(); PackageDeclaration packageDeclaration = ast.newPackageDeclaration(); packageDeclaration.setName(ast.newName("org.kissmda.test.junit")); cu.setPackage(packageDeclaration); ImportDeclaration importDeclaration = ast.newImportDeclaration(); importDeclaration .setName(ast.newName("org.junit.Assert.assertNotNull")); importDeclaration.setStatic(true); cu.imports().add(importDeclaration); logger.info(cu.toString()); new ImportPacker(cu).pack(); logger.info(cu.toString()); assertEquals("package org.kissmda.test.junit;\n" // + "import static org.junit.Assert.assertNotNull;", cu .toString().trim()); }
@SuppressWarnings("unchecked") @Test public void testGenerateClass() { AST ast = AST.newAST(AST.JLS3); CompilationUnit cu = ast.newCompilationUnit(); TypeDeclaration td = ast.newTypeDeclaration(); td.setInterface(true); Modifier modifier = ast .newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); td.modifiers().add(modifier); td.setName(ast.newSimpleName("Company")); TypeDeclaration typeDeclaration = interfaceGenerator.generateClass( clazz, ast, cu); assertEquals(typeDeclaration.toString(), td.toString()); }
AST ast = AST.newAST(AST.JLS3); CompilationUnit unit = ast.newCompilationUnit(); PackageDeclaration packageDeclaration = ast.newPackageDeclaration(); packageDeclaration.setName(ast.newSimpleName("example")); unit.setPackage(packageDeclaration); ImportDeclaration importDeclaration = ast.newImportDeclaration(); QualifiedName name = ast.newQualifiedName( ast.newSimpleName("java"), ast.newSimpleName("util")); importDeclaration.setName(name); importDeclaration.setOnDemand(true); unit.imports().add(importDeclaration); TypeDeclaration type = ast.newTypeDeclaration(); type.setInterface(false); type.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); type.setName(ast.newSimpleName("HelloWorld")); // ....