List of usage examples for org.eclipse.jdt.core.dom Block statements
ASTNode.NodeList statements
To view the source code for org.eclipse.jdt.core.dom Block statements.
Click Source Link
From source file:org.evosuite.testcarver.codegen.CodeGenerator.java
License:Open Source License
@SuppressWarnings({ "rawtypes", "unchecked" }) private void createCallMethod(final TypeDeclaration td, final CompilationUnit cu, final AST ast) { // public static Object callMethod(final String clazzName, final String methodName, final Object receiver, final Object...args) throws Exception // {/*from ww w .j av a2 s . c o m*/ // final Class<?> clazz = Class.forName(clazzName); // final Method m = clazz.getDeclaredMethod(methodName); // m.setAccessible(true); // return m.invoke(receiver, args); // } //-- add necessary import statements List imports = cu.imports(); ImportDeclaration id = ast.newImportDeclaration(); id.setName(ast.newName(new String[] { "java", "lang", "reflect", "Method" })); imports.add(id); //-- create method frame: "public static Object callMethod(final String clazzName, final String methodName, final Object receiver, final Object[] args, Class[] paramTypes) throws Exception" final MethodDeclaration md = ast.newMethodDeclaration(); td.bodyDeclarations().add(md); md.setName(ast.newSimpleName("callMethod")); List modifiers = md.modifiers(); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.STATIC_KEYWORD)); md.thrownExceptions().add(ast.newSimpleName("Exception")); List parameters = md.parameters(); SingleVariableDeclaration svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("String"))); svd.setName(ast.newSimpleName("clazzName")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("String"))); svd.setName(ast.newSimpleName("methodName")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("Object"))); svd.setName(ast.newSimpleName("receiver")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newArrayType(ast.newSimpleType(ast.newSimpleName("Object")))); svd.setName(ast.newSimpleName("args")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newArrayType(ast.newSimpleType(ast.newSimpleName("Class")))); svd.setName(ast.newSimpleName("paramTypes")); parameters.add(svd); md.setReturnType2(ast.newSimpleType(ast.newSimpleName("Object"))); //-- create method body // final Class<?> clazz = Class.forName(clazzName); // final Method m = clazz.getDeclaredMethod(methodName, paramTypes); // m.setAccessible(true); // return m.invoke(receiver, args); final Block methodBlock = ast.newBlock(); md.setBody(methodBlock); final List methodStmts = methodBlock.statements(); // final Class clazz = Class.forName(clazzName); MethodInvocation init = ast.newMethodInvocation(); init.setName(ast.newSimpleName("forName")); init.setExpression(ast.newSimpleName("Class")); init.arguments().add(ast.newSimpleName("clazzName")); VariableDeclarationFragment varDeclFrag = ast.newVariableDeclarationFragment(); varDeclFrag.setName(ast.newSimpleName("clazz")); varDeclFrag.setInitializer(init); VariableDeclarationStatement varDeclStmt = ast.newVariableDeclarationStatement(varDeclFrag); varDeclStmt.setType(ast.newSimpleType(ast.newSimpleName("Class"))); methodStmts.add(varDeclStmt); // final Method m = clazz.getDeclaredMethod(methodName); init = ast.newMethodInvocation(); init.setName(ast.newSimpleName("getDeclaredMethod")); init.setExpression(ast.newSimpleName("clazz")); init.arguments().add(ast.newSimpleName("methodName")); init.arguments().add(ast.newSimpleName("paramTypes")); varDeclFrag = ast.newVariableDeclarationFragment(); varDeclFrag.setName(ast.newSimpleName("m")); varDeclFrag.setInitializer(init); varDeclStmt = ast.newVariableDeclarationStatement(varDeclFrag); varDeclStmt.setType(ast.newSimpleType(ast.newSimpleName("Method"))); methodStmts.add(varDeclStmt); // f.setAccessible(true); MethodInvocation minv = ast.newMethodInvocation(); minv.setName(ast.newSimpleName("setAccessible")); minv.setExpression(ast.newSimpleName("m")); minv.arguments().add(ast.newBooleanLiteral(true)); methodStmts.add(ast.newExpressionStatement(minv)); // return m.invoke(receiver, args); minv = ast.newMethodInvocation(); minv.setName(ast.newSimpleName("invoke")); minv.setExpression(ast.newSimpleName("m")); minv.arguments().add(ast.newSimpleName("receiver")); minv.arguments().add(ast.newSimpleName("args")); final ReturnStatement returnStmt = ast.newReturnStatement(); returnStmt.setExpression(minv); methodStmts.add(returnStmt); }
From source file:org.evosuite.testcarver.codegen.CodeGenerator.java
License:Open Source License
@SuppressWarnings({ "rawtypes", "unchecked" }) private void createNewInstanceMethod(final TypeDeclaration td, final CompilationUnit cu, final AST ast) { // public static Object newInstance(final String clazzName, final Object receiver, final Object[] args, final Class[] parameterTypes) throws Exception // {/*from w ww .ja va 2 s .c o m*/ // final Class<?> clazz = Class.forName(clazzName); // final Constructor c = clazz.getDeclaredConstructor(parameterTypes); // c.setAccessible(true); // // return c.newInstance(args); // } //-- add necessary import statements List imports = cu.imports(); ImportDeclaration id = ast.newImportDeclaration(); id.setName(ast.newName(new String[] { "java", "lang", "reflect", "Constructor" })); imports.add(id); //-- create method frame: "public static Object newInstance(final String clazzName, final Object[] args, Class[] paramTypes) throws Exception" final MethodDeclaration md = ast.newMethodDeclaration(); td.bodyDeclarations().add(md); md.setName(ast.newSimpleName("newInstance")); List modifiers = md.modifiers(); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.STATIC_KEYWORD)); md.thrownExceptions().add(ast.newSimpleName("Exception")); List parameters = md.parameters(); SingleVariableDeclaration svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("String"))); svd.setName(ast.newSimpleName("clazzName")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newArrayType(ast.newSimpleType(ast.newSimpleName("Object")))); svd.setName(ast.newSimpleName("args")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newArrayType(ast.newSimpleType(ast.newSimpleName("Class")))); svd.setName(ast.newSimpleName("paramTypes")); parameters.add(svd); md.setReturnType2(ast.newSimpleType(ast.newSimpleName("Object"))); //-- create method body // final Class<?> clazz = Class.forName(clazzName); // final Constructor c = clazz.getDeclaredConstructor(parameterTypes); // c.setAccessible(true); // // return c.newInstance(args); final Block methodBlock = ast.newBlock(); md.setBody(methodBlock); final List methodStmts = methodBlock.statements(); // final Class clazz = Class.forName(clazzName); MethodInvocation init = ast.newMethodInvocation(); init.setName(ast.newSimpleName("forName")); init.setExpression(ast.newSimpleName("Class")); init.arguments().add(ast.newSimpleName("clazzName")); VariableDeclarationFragment varDeclFrag = ast.newVariableDeclarationFragment(); varDeclFrag.setName(ast.newSimpleName("clazz")); varDeclFrag.setInitializer(init); VariableDeclarationStatement varDeclStmt = ast.newVariableDeclarationStatement(varDeclFrag); varDeclStmt.setType(ast.newSimpleType(ast.newSimpleName("Class"))); methodStmts.add(varDeclStmt); // final Constructor c = clazz.getDeclaredConstructor(parameterTypes); init = ast.newMethodInvocation(); init.setName(ast.newSimpleName("getDeclaredConstructor")); init.setExpression(ast.newSimpleName("clazz")); init.arguments().add(ast.newSimpleName("paramTypes")); varDeclFrag = ast.newVariableDeclarationFragment(); varDeclFrag.setName(ast.newSimpleName("c")); varDeclFrag.setInitializer(init); varDeclStmt = ast.newVariableDeclarationStatement(varDeclFrag); varDeclStmt.setType(ast.newSimpleType(ast.newSimpleName("Constructor"))); methodStmts.add(varDeclStmt); // c.setAccessible(true); MethodInvocation minv = ast.newMethodInvocation(); minv.setName(ast.newSimpleName("setAccessible")); minv.setExpression(ast.newSimpleName("c")); minv.arguments().add(ast.newBooleanLiteral(true)); methodStmts.add(ast.newExpressionStatement(minv)); // return c.newInstance(args); minv = ast.newMethodInvocation(); minv.setName(ast.newSimpleName("newInstance")); minv.setExpression(ast.newSimpleName("c")); minv.arguments().add(ast.newSimpleName("args")); final ReturnStatement returnStmt = ast.newReturnStatement(); returnStmt.setExpression(minv); methodStmts.add(returnStmt); }
From source file:org.evosuite.testcarver.codegen.JUnitCodeGenerator.java
License:Open Source License
@SuppressWarnings({ "rawtypes", "unchecked" }) private void createSetFieldMethod(final TypeDeclaration td, final CompilationUnit cu, final AST ast) { //-- add necessary import statements List imports = cu.imports();/*from w ww . ja v a 2 s . co m*/ ImportDeclaration id = ast.newImportDeclaration(); id.setName(ast.newName(new String[] { "java", "lang", "reflect", "Field" })); imports.add(id); //-- create method frame: "public static void setProtectedField(final String clazzName, final String fieldName, final Object receiver, final Object value) throws Exception" final MethodDeclaration md = ast.newMethodDeclaration(); td.bodyDeclarations().add(md); md.setName(ast.newSimpleName("setField")); List modifiers = md.modifiers(); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.STATIC_KEYWORD)); md.thrownExceptions().add(ast.newSimpleName("Exception")); List parameters = md.parameters(); SingleVariableDeclaration svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("String"))); svd.setName(ast.newSimpleName("clazzName")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("String"))); svd.setName(ast.newSimpleName("fieldName")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("Object"))); svd.setName(ast.newSimpleName("receiver")); parameters.add(svd); svd = ast.newSingleVariableDeclaration(); svd.setType(ast.newSimpleType(ast.newSimpleName("Object"))); svd.setName(ast.newSimpleName("value")); parameters.add(svd); //-- create method body // final Class<?> clazz = Class.forName(clazzName); // final Field f = clazz.getDeclaredField(fieldName); // f.setAccessible(true); // f.set(receiver, value); final Block methodBlock = ast.newBlock(); md.setBody(methodBlock); final List methodStmts = methodBlock.statements(); // final Class clazz = Class.forName(clazzName); MethodInvocation init = ast.newMethodInvocation(); init.setName(ast.newSimpleName("forName")); init.setExpression(ast.newSimpleName("Class")); init.arguments().add(ast.newSimpleName("clazzName")); VariableDeclarationFragment varDeclFrag = ast.newVariableDeclarationFragment(); varDeclFrag.setName(ast.newSimpleName("clazz")); varDeclFrag.setInitializer(init); VariableDeclarationStatement varDeclStmt = ast.newVariableDeclarationStatement(varDeclFrag); varDeclStmt.setType(ast.newSimpleType(ast.newSimpleName("Class"))); methodStmts.add(varDeclStmt); // final Field f = clazz.getDeclaredField(fieldName); init = ast.newMethodInvocation(); init.setName(ast.newSimpleName("getDeclaredField")); init.setExpression(ast.newSimpleName("clazz")); init.arguments().add(ast.newSimpleName("fieldName")); varDeclFrag = ast.newVariableDeclarationFragment(); varDeclFrag.setName(ast.newSimpleName("f")); varDeclFrag.setInitializer(init); varDeclStmt = ast.newVariableDeclarationStatement(varDeclFrag); varDeclStmt.setType(ast.newSimpleType(ast.newSimpleName("Field"))); methodStmts.add(varDeclStmt); // f.setAccessible(true); MethodInvocation minv = ast.newMethodInvocation(); minv.setName(ast.newSimpleName("setAccessible")); minv.setExpression(ast.newSimpleName("f")); minv.arguments().add(ast.newBooleanLiteral(true)); methodStmts.add(ast.newExpressionStatement(minv)); // f.set(receiver, value); minv = ast.newMethodInvocation(); minv.setName(ast.newSimpleName("set")); minv.setExpression(ast.newSimpleName("f")); minv.arguments().add(ast.newSimpleName("receiver")); minv.arguments().add(ast.newSimpleName("value")); methodStmts.add(ast.newExpressionStatement(minv)); }
From source file:org.hibernate.eclipse.jdt.ui.internal.jpa.process.ProcessEntityInfo.java
License:Open Source License
@SuppressWarnings("unchecked") public boolean visit(TypeDeclaration node) { ITypeBinding typeBinding = node.resolveBinding(); String nodeName = typeBinding == null ? null : typeBinding.getBinaryName(); if (nodeName == null) { return false; }//from w ww .j a v a 2s . c om entityInfo = entityInfos.getEntityInfo(nodeName); if (entityInfo == null) { return false; } if (entityInfo.isAddMappedSuperclassFlag()) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_MAPPEDSUPERCLASS)); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } if (entityInfo.isAddEntityFlag()) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_ENTITY)); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } /** / if (!entityInfo.isImplicitConstructorFlag() && !entityInfo.isDefaultConstructorFlag() && entityInfo.isAddSerializableInterfaceFlag()) { // add serializable interface SimpleName sn = null; //if (!entityInfo.isAddSerializableInterfaceImportFlag()) { sn = rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_SERIALIZABLE); //} //else { // sn = rewriter.getAST().newSimpleName(JPAConst.IMPORT_SERIALIZABLE); //} SimpleType st = rewriter.getAST().newSimpleType(sn); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); lrw.insertFirst(st, null); // add "private static final long serialVersionUID = 1L;" // ... } /**/ if (!entityInfo.isImplicitConstructorFlag() && !entityInfo.isDefaultConstructorFlag() && entityInfo.isAddSerializableInterfaceFlag()) { MethodDeclaration md = rewriter.getAST().newMethodDeclaration(); md.setConstructor(true); Modifier modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PROTECTED_KEYWORD); md.modifiers().add(modifier); Block body = rewriter.getAST().newBlock(); md.setBody(body); SimpleName sn = rewriter.getAST().newSimpleName(entityInfo.getName()); md.setName(sn); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); List<?> list = lrw.getOriginalList(); MethodDeclaration insertBeforeNode = null; Iterator<?> it = list.iterator(); while (it.hasNext()) { Object obj = it.next(); if (obj instanceof MethodDeclaration) { insertBeforeNode = (MethodDeclaration) obj; break; } } if (insertBeforeNode == null) { lrw.insertLast(md, null); } else { lrw.insertBefore(md, insertBeforeNode, null); } } if (enableOptLock && entityInfo.isAddVersionFlag() && !entityInfo.hasVersionAnnotation()) { // add property "version", add getter/setter getVersion/setVersion, // add annotation for the property or for the getter // final String version = "version"; //$NON-NLS-1$ final String versionType = "Integer"; //$NON-NLS-1$ // VariableDeclarationFragment vdFragment = rewriter.getAST().newVariableDeclarationFragment(); SimpleName variableName = rewriter.getAST().newSimpleName(version); vdFragment.setName(variableName); FieldDeclaration fieldVersion = rewriter.getAST().newFieldDeclaration(vdFragment); Modifier modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PROTECTED_KEYWORD); fieldVersion.modifiers().add(modifier); Name typeName = rewriter.getAST().newName(versionType); SimpleType type = rewriter.getAST().newSimpleType(typeName); fieldVersion.setType(type); // MethodDeclaration mdGetter = rewriter.getAST().newMethodDeclaration(); modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); mdGetter.modifiers().add(modifier); Block body = rewriter.getAST().newBlock(); ReturnStatement returnVersion = rewriter.getAST().newReturnStatement(); variableName = rewriter.getAST().newSimpleName(version); returnVersion.setExpression(variableName); body.statements().add(returnVersion); mdGetter.setBody(body); SimpleName sn = rewriter.getAST().newSimpleName("getVersion"); //$NON-NLS-1$ mdGetter.setName(sn); typeName = rewriter.getAST().newName(versionType); type = rewriter.getAST().newSimpleType(typeName); mdGetter.setReturnType2(type); // MethodDeclaration mdSetter = rewriter.getAST().newMethodDeclaration(); modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); mdSetter.modifiers().add(modifier); body = rewriter.getAST().newBlock(); Assignment assignment = rewriter.getAST().newAssignment(); FieldAccess fieldAccess = rewriter.getAST().newFieldAccess(); ThisExpression thisExpression = rewriter.getAST().newThisExpression(); fieldAccess.setExpression(thisExpression); variableName = rewriter.getAST().newSimpleName(version); fieldAccess.setName(variableName); assignment.setLeftHandSide(fieldAccess); variableName = rewriter.getAST().newSimpleName(version); assignment.setRightHandSide(variableName); ExpressionStatement expressionStatement = rewriter.getAST().newExpressionStatement(assignment); body.statements().add(expressionStatement); mdSetter.setBody(body); sn = rewriter.getAST().newSimpleName("setVersion"); //$NON-NLS-1$ mdSetter.setName(sn); SingleVariableDeclaration svd = rewriter.getAST().newSingleVariableDeclaration(); variableName = rewriter.getAST().newSimpleName(version); svd.setName(variableName); typeName = rewriter.getAST().newName(versionType); type = rewriter.getAST().newSimpleType(typeName); svd.setType(type); mdSetter.parameters().add(svd); // ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); if (entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD && entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD_GETTER) { lrw.insertLast(fieldVersion, null); } if (entityInfo.getVersionFieldGetter() != FieldGetterType.GETTER && entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD_GETTER) { lrw.insertLast(mdGetter, null); lrw.insertLast(mdSetter, null); } if (annotationStyle == AnnotStyle.FIELDS) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION)); lrw = rewriter.getListRewrite(fieldVersion, FieldDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } else if (annotationStyle == AnnotStyle.GETTERS) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION)); lrw = rewriter.getListRewrite(mdGetter, MethodDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } } return true; }
From source file:org.jboss.forge.roaster.model.impl.statements.StatementBuilder.java
License:Open Source License
public static org.jboss.forge.roaster.model.statements.StatementSource asRoasterStatement( Statement jdtStatement) { org.jboss.forge.roaster.model.statements.StatementSource roasterStmt = null; switch (jdtStatement.getNodeType()) { case ASTNode.RETURN_STATEMENT: ReturnStatement returnStatement = (ReturnStatement) jdtStatement; roasterStmt = newReturn()/*w w w . j av a 2s . co m*/ .setReturn(ExpressionBuilder.asRoasterExpression(returnStatement.getExpression())); break; case ASTNode.ASSERT_STATEMENT: AssertStatement assertStatement = (AssertStatement) jdtStatement; roasterStmt = newAssert() .setAssertion(ExpressionBuilder.asRoasterExpression(assertStatement.getExpression())) .setMessage(ExpressionBuilder.asRoasterExpression(assertStatement.getMessage())); break; case ASTNode.ASSIGNMENT: //TODO break; case ASTNode.BLOCK: Block block = (Block) jdtStatement; roasterStmt = newBlock(); ((BlockImpl) roasterStmt).setInternal(block); for (Object o : block.statements()) { ((BlockStatement) roasterStmt).addStatement(StatementBuilder.asRoasterStatement((Statement) o)); } break; case ASTNode.CONTINUE_STATEMENT: ContinueStatement continueStatement = (ContinueStatement) jdtStatement; roasterStmt = newContinue(); break; case ASTNode.VARIABLE_DECLARATION_STATEMENT: break; case ASTNode.DO_STATEMENT: break; case ASTNode.EXPRESSION_STATEMENT: break; case ASTNode.ENHANCED_FOR_STATEMENT: break; case ASTNode.FOR_STATEMENT: break; case ASTNode.IF_STATEMENT: break; case ASTNode.METHOD_INVOCATION: break; case ASTNode.SUPER_METHOD_INVOCATION: break; case ASTNode.CONSTRUCTOR_INVOCATION: break; case ASTNode.SUPER_CONSTRUCTOR_INVOCATION: break; case ASTNode.SWITCH_STATEMENT: break; case ASTNode.SYNCHRONIZED_STATEMENT: break; case ASTNode.TRY_STATEMENT: break; case ASTNode.WHILE_STATEMENT: break; case ASTNode.BREAK_STATEMENT: break; case ASTNode.LABELED_STATEMENT: break; default: throw new RuntimeException("Unknown statement: " + jdtStatement); } if (roasterStmt != null) { ((org.jboss.forge.roaster.model.ASTNode) roasterStmt).setInternal(jdtStatement); } return roasterStmt; }
From source file:org.jboss.tools.arquillian.ui.internal.refactoring.AddMissingTypeRefactoring.java
License:Open Source License
@Override public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { message = null;/*from w ww . j a va2 s .c o m*/ if (astRoot == null || (abstractMethodBindings == null && deploymentMethodName == null)) { message = CANNOT_FIND_A_DEPLOYMENT_METHOD; return null; } MethodDeclaration deploymentMethod = null; TextFileChange result = new TextFileChange(file.getName(), file); MultiTextEdit rootEdit = new MultiTextEdit(); importRewrite = CodeStyleConfiguration.createImportRewrite(astRoot, true); if (astRoot.getAST().hasResolvedBindings()) { importRewrite.setUseContextToFilterImplicitImports(true); } rewrite = ASTRewrite.create(astRoot.getAST()); IType fType = cUnit.findPrimaryType(); if (fType.isAnonymous()) { final ClassInstanceCreation creation = (ClassInstanceCreation) ASTNodes .getParent(NodeFinder.perform(astRoot, fType.getNameRange()), ClassInstanceCreation.class); if (creation != null) { final AnonymousClassDeclaration declaration = creation.getAnonymousClassDeclaration(); if (declaration != null) listRewriter = rewrite.getListRewrite(declaration, AnonymousClassDeclaration.BODY_DECLARATIONS_PROPERTY); } } else { final AbstractTypeDeclaration declaration = (AbstractTypeDeclaration) ASTNodes .getParent(NodeFinder.perform(astRoot, fType.getNameRange()), AbstractTypeDeclaration.class); if (declaration != null) listRewriter = rewrite.getListRewrite(declaration, declaration.getBodyDeclarationsProperty()); } if (listRewriter == null) { throw new CoreException(new Status(IStatus.ERROR, ArquillianUIActivator.PLUGIN_ID, IStatus.ERROR, "Could not find the type element", null)); } ast = astRoot.getAST(); ReturnStatement returnStatement; if (abstractMethodBindings != null) { IMethodBinding abstractMethodBinding = null; for (IMethodBinding binding : abstractMethodBindings) { if (binding.getName().equals(deploymentMethodName)) { abstractMethodBinding = binding; break; } } if (abstractMethodBinding == null) { message = CANNOT_FIND_A_DEPLOYMENT_METHOD; return null; } deploymentMethod = ast.newMethodDeclaration(); deploymentMethod.setName(ast.newSimpleName(deploymentMethodName)); IJavaProject javaProject = abstractMethodBinding.getJavaElement().getJavaProject(); String archiveTypeName = ArquillianUtility.ORG_JBOSS_SHRINKWRAP_API_SPEC_JAVA_ARCHIVE; if (javaProject != null && javaProject.isOpen()) { IProject project = javaProject.getProject(); IFile pomFile = project.getFile(IMavenConstants.POM_FILE_NAME); if (pomFile != null && pomFile.exists()) { try { IMavenProjectFacade facade = MavenPlugin.getMavenProjectRegistry().create(project, new NullProgressMonitor()); MavenProject mavenProject = facade.getMavenProject(new NullProgressMonitor()); Model model = mavenProject.getModel(); String packaging = model.getPackaging(); if (ArquillianConstants.WAR.equals(packaging)) { archiveTypeName = ArquillianUtility.ORG_JBOSS_SHRINKWRAP_API_SPEC_WEB_ARCHIVE; } if (ArquillianConstants.EAR.equals(packaging)) { archiveTypeName = ArquillianUtility.ORG_JBOSS_SHRINKWRAP_API_SPEC_ENTERPRISE_ARCHIVE; } if (ArquillianConstants.RAR.equals(packaging)) { archiveTypeName = ArquillianUtility.ORG_JBOSS_SHRINKWRAP_API_SPEC_RESOURCEADAPTER_ARCHIVE; } } catch (CoreException e) { ArquillianUIActivator.log(e); } } } int index = archiveTypeName.lastIndexOf("."); //$NON-NLS-1$ String simpleArchiveName; if (index >= 0) { simpleArchiveName = archiveTypeName.substring(index + 1); } else { simpleArchiveName = archiveTypeName; } SimpleName type2 = ast.newSimpleName(simpleArchiveName); importRewrite.addImport(archiveTypeName); deploymentMethod.setReturnType2(ast.newSimpleType(type2)); deploymentMethod.setConstructor(false); deploymentMethod.modifiers() .addAll(ASTNodeFactory.newModifiers(ast, Modifier.PUBLIC | Modifier.STATIC)); Annotation marker = rewrite.getAST().newMarkerAnnotation(); importRewrite.addImport(ArquillianUtility.ORG_JBOSS_ARQUILLIAN_CONTAINER_TEST_API_DEPLOYMENT); marker.setTypeName(rewrite.getAST().newSimpleName("Deployment")); //$NON-NLS-1$ rewrite.getListRewrite(deploymentMethod, MethodDeclaration.MODIFIERS2_PROPERTY).insertFirst(marker, null); Block body = ast.newBlock(); deploymentMethod.setBody(body); // XXXArchive archive = (XXXArchive) AbstractTest.createDeployment(); String declaringClassQualifiedName = abstractMethodBinding.getDeclaringClass().getQualifiedName(); importRewrite.addImport(declaringClassQualifiedName); String declaringClassName = abstractMethodBinding.getDeclaringClass().getName(); MethodInvocation deploymentInvocation = ast.newMethodInvocation(); deploymentInvocation.setExpression(ast.newName(declaringClassName)); deploymentInvocation.setName(ast.newSimpleName(deploymentMethodName)); VariableDeclarationFragment archiveDeclFragment = ast.newVariableDeclarationFragment(); archiveDeclFragment.setName(ast.newSimpleName(ARCHIVE_VARIABLE)); ITypeBinding returnType = abstractMethodBinding.getReturnType(); if (!archiveTypeName.equals(returnType.getQualifiedName())) { CastExpression cast = ast.newCastExpression(); cast.setType(ast.newSimpleType(ast.newName(simpleArchiveName))); cast.setExpression(deploymentInvocation); archiveDeclFragment.setInitializer(cast); } else { archiveDeclFragment.setInitializer(deploymentInvocation); } VariableDeclarationStatement vStatement = ast.newVariableDeclarationStatement(archiveDeclFragment); vStatement.setType(ast.newSimpleType(ast.newName(simpleArchiveName))); body.statements().add(vStatement); //return archive; returnStatement = ast.newReturnStatement(); returnStatement.setExpression(ast.newSimpleName(ARCHIVE_VARIABLE)); //body.statements().add(returnStatement); } else { for (MethodDeclaration md : deploymentMethodDeclarations) { if (deploymentMethodName.equals(md.getName().getIdentifier())) { deploymentMethod = md; break; } } if (deploymentMethod == null) { message = CANNOT_FIND_A_DEPLOYMENT_METHOD; return null; } returnStatement = getReturnStatement(deploymentMethod); ast = deploymentMethod.getAST(); rewrite = ASTRewrite.create(ast); } if (returnStatement == null) { message = "Cannot find a return statement"; return null; } Expression expression = returnStatement.getExpression(); if (expression instanceof MethodInvocation) { int start = expression.getStartPosition(); int length = expression.getLength(); selectedExpression = getSelectedExpression(new SourceRange(start, length)); tempName = ARCHIVE_VARIABLE; int i = 0; while (!checkTempName(tempName).isOK()) { tempName = tempName + i++; } createAndInsertTempDeclaration(start, length); addReplaceExpressionWithTemp(); createStatements(tempName, className, deploymentMethod, returnStatement, rootEdit, pm); } if (expression instanceof SimpleName) { String name = ((SimpleName) expression).getIdentifier(); createStatements(name, className, deploymentMethod, returnStatement, rootEdit, pm); } result.setEdit(rootEdit); return result; }
From source file:org.jboss.tools.ws.creation.core.commands.ImplementationClassCreationCommand.java
License:Open Source License
@SuppressWarnings("unchecked") protected MethodDeclaration createMethodForImplClass(AST ast, MethodDeclaration inMethod) { MethodDeclaration md = ast.newMethodDeclaration(); md.setConstructor(false);// w ww . j a v a2s . c o m @SuppressWarnings("rawtypes") List modifiers = md.modifiers(); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); md.setName(ast.newSimpleName(inMethod.getName().getFullyQualifiedName())); Type sType = copyTypeFromOtherASTNode(ast, inMethod.getReturnType2()); md.setReturnType2(sType); @SuppressWarnings("rawtypes") List thrownExceptions = inMethod.thrownExceptions(); for (Object obj : thrownExceptions) { if (obj instanceof SimpleName) { SimpleName sname = (SimpleName) obj; Name newName = ast.newName(sname.getFullyQualifiedName()); md.thrownExceptions().add(newName); } } @SuppressWarnings("rawtypes") List parameters = inMethod.parameters(); for (Object obj : parameters) { SingleVariableDeclaration implSvd = ast.newSingleVariableDeclaration(); SingleVariableDeclaration svd = (SingleVariableDeclaration) obj; implSvd.setName(ast.newSimpleName(svd.getName().getFullyQualifiedName())); implSvd.setType(copyTypeFromOtherASTNode(ast, svd.getType())); md.parameters().add(implSvd); } // create method body Block block = ast.newBlock(); // add log info statement // block.statements().add(createLoggerInvokeStatement(ast, // md.getName().getFullyQualifiedName())); Type returnType = inMethod.getReturnType2(); ReturnStatement rs = ast.newReturnStatement(); if (returnType.isPrimitiveType()) { if (((PrimitiveType) returnType).getPrimitiveTypeCode().equals(PrimitiveType.BOOLEAN)) { BooleanLiteral bl = ast.newBooleanLiteral(false); rs.setExpression(bl); } else if (!((PrimitiveType) returnType).getPrimitiveTypeCode().equals(PrimitiveType.VOID)) { NumberLiteral nl = ast.newNumberLiteral(); nl.setToken("0"); //$NON-NLS-1$ rs.setExpression(nl); } } else if (returnType.isSimpleType()) { String typeName = ((SimpleType) returnType).getName().getFullyQualifiedName(); if ("String".equals(typeName)) { //$NON-NLS-1$ StringLiteral sl = ast.newStringLiteral(); sl.setLiteralValue(""); //$NON-NLS-1$ rs.setExpression(sl); } else { rs.setExpression(ast.newNullLiteral()); } } else { rs.setExpression(ast.newNullLiteral()); } block.statements().add(rs); md.setBody(block); return md; }
From source file:org.juniversal.translator.cplusplus.CPlusPlusSourceFileWriter.java
License:Open Source License
/** * Add visitors for the different kinds of statements. *//*from w w w. j a v a 2s . c o m*/ private void addStatementWriters() { // Block addWriter(Block.class, new CPlusPlusASTNodeWriter<Block>(this) { @SuppressWarnings("unchecked") @Override public void write(Block block) { matchAndWrite("{"); boolean firstStatement = true; for (Statement statement : (List<Statement>) block.statements()) { // If the first statement is a super constructor invocation, we skip it since // it's included as part of the method declaration in C++. If a super // constructor invocation is a statement other than the first, which it should // never be, we let that error out since writeNode won't find a match for it. if (firstStatement && statement instanceof SuperConstructorInvocation) setPositionToEndOfNodeSpaceAndComments(statement); else { copySpaceAndComments(); writeNode(statement); } firstStatement = false; } copySpaceAndComments(); matchAndWrite("}"); } }); // Empty statement (";") addWriter(EmptyStatement.class, new CPlusPlusASTNodeWriter<EmptyStatement>(this) { @Override public void write(EmptyStatement emptyStatement) { matchAndWrite(";"); } }); // Expression statement addWriter(ExpressionStatement.class, new CPlusPlusASTNodeWriter<ExpressionStatement>(this) { @Override public void write(ExpressionStatement expressionStatement) { writeNode(expressionStatement.getExpression()); copySpaceAndComments(); matchAndWrite(";"); } }); // If statement addWriter(IfStatement.class, new CPlusPlusASTNodeWriter<IfStatement>(this) { @Override public void write(IfStatement ifStatement) { matchAndWrite("if"); copySpaceAndComments(); matchAndWrite("("); copySpaceAndComments(); writeNode(ifStatement.getExpression()); copySpaceAndComments(); matchAndWrite(")"); copySpaceAndComments(); writeNode(ifStatement.getThenStatement()); Statement elseStatement = ifStatement.getElseStatement(); if (elseStatement != null) { copySpaceAndComments(); matchAndWrite("else"); copySpaceAndComments(); writeNode(elseStatement); } } }); // While statement addWriter(WhileStatement.class, new CPlusPlusASTNodeWriter<WhileStatement>(this) { @Override public void write(WhileStatement whileStatement) { matchAndWrite("while"); copySpaceAndComments(); matchAndWrite("("); copySpaceAndComments(); writeNode(whileStatement.getExpression()); copySpaceAndComments(); matchAndWrite(")"); copySpaceAndComments(); writeNode(whileStatement.getBody()); } }); // Do while statement addWriter(DoStatement.class, new CPlusPlusASTNodeWriter<DoStatement>(this) { @Override public void write(DoStatement doStatement) { matchAndWrite("do"); copySpaceAndComments(); writeNode(doStatement.getBody()); copySpaceAndComments(); matchAndWrite("while"); copySpaceAndComments(); matchAndWrite("("); copySpaceAndComments(); writeNode(doStatement.getExpression()); copySpaceAndComments(); matchAndWrite(")"); copySpaceAndComments(); matchAndWrite(";"); } }); // Continue statement addWriter(ContinueStatement.class, new CPlusPlusASTNodeWriter<ContinueStatement>(this) { @Override public void write(ContinueStatement continueStatement) { if (continueStatement.getLabel() != null) throw sourceNotSupported( "continue statement with a label isn't supported as that construct doesn't exist in C++; change the code to not use a label"); matchAndWrite("continue"); copySpaceAndComments(); matchAndWrite(";"); } }); // Break statement addWriter(BreakStatement.class, new CPlusPlusASTNodeWriter<BreakStatement>(this) { @Override public void write(BreakStatement breakStatement) { if (breakStatement.getLabel() != null) throw sourceNotSupported( "break statement with a label isn't supported as that construct doesn't exist in C++; change the code to not use a label"); matchAndWrite("break"); copySpaceAndComments(); matchAndWrite(";"); } }); // For statement addWriter(ForStatement.class, new ForStatementWriter(this)); // Return statement addWriter(ReturnStatement.class, new CPlusPlusASTNodeWriter<ReturnStatement>(this) { @Override public void write(ReturnStatement returnStatement) { matchAndWrite("return"); Expression expression = returnStatement.getExpression(); if (expression != null) { copySpaceAndComments(); writeNode(returnStatement.getExpression()); } copySpaceAndComments(); matchAndWrite(";"); } }); // Local variable declaration statement addWriter(VariableDeclarationStatement.class, new VariableDeclarationWriter(this)); // Throw statement addWriter(ThrowStatement.class, new CPlusPlusASTNodeWriter<ThrowStatement>(this) { @Override public void write(ThrowStatement throwStatement) { matchAndWrite("throw"); copySpaceAndComments(); writeNode(throwStatement.getExpression()); copySpaceAndComments(); matchAndWrite(";"); } }); // Delegating constructor invocation addWriter(ConstructorInvocation.class, new CPlusPlusASTNodeWriter(this) { @Override public void write(ASTNode node) { throw sourceNotSupported( "Delegating constructors aren't currently supported; for now you have to change the code to not use them (e.g. by adding an init method)"); } }); }
From source file:org.juniversal.translator.cplusplus.MethodDeclarationWriter.java
License:Open Source License
@SuppressWarnings("unchecked") private void writeSuperConstructorInvocation(MethodDeclaration methodDeclaration) { Block body = methodDeclaration.getBody(); if (body == null) return;//from w w w . j a v a 2 s. c om SuperConstructorInvocation superConstructorInvocation = null; for (Statement statement : (List<Statement>) body.statements()) { if (statement instanceof SuperConstructorInvocation) superConstructorInvocation = (SuperConstructorInvocation) statement; break; } if (superConstructorInvocation == null) return; int originalPosition = getPosition(); setPositionToStartOfNode(superConstructorInvocation); // TODO: Support <expression>.super if (superConstructorInvocation.getExpression() != null) throw sourceNotSupported("<expression>.super constructor invocation syntax not currently supported"); // TODO: Support type arguments here if (!superConstructorInvocation.typeArguments().isEmpty()) throw sourceNotSupported("super constructor invocation with type arguments not currently supported"); write(" : "); matchAndWrite("super"); copySpaceAndComments(); matchAndWrite("("); List<?> arguments = superConstructorInvocation.arguments(); boolean first = true; for (Expression argument : (List<Expression>) arguments) { if (!first) { copySpaceAndComments(); matchAndWrite(","); } copySpaceAndComments(); writeNode(argument); first = false; } copySpaceAndComments(); matchAndWrite(")"); write(" "); setPosition(originalPosition); }
From source file:org.juniversal.translator.cplusplus.WriteCPPTest.java
License:Open Source License
public void testWriteStatement(String javaStatement, String expectedCPPStatement) { String java = "class TestClass{ void testMethod() {\n" + javaStatement + "\n} }"; CompilationUnit compilationUnit = parseCompilationUnit(java); Block block = getFirstMethodBlock(compilationUnit); ASTNode firstStatement = (ASTNode) block.statements().get(0); testWriteNode(firstStatement, java, compilationUnit, 4, expectedCPPStatement); }