Example usage for org.eclipse.jdt.core.dom AST newJavadoc

List of usage examples for org.eclipse.jdt.core.dom AST newJavadoc

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom AST newJavadoc.

Prototype

public Javadoc newJavadoc() 

Source Link

Document

Creates and returns a new doc comment node.

Usage

From source file:ac.at.tuwien.dsg.uml.statemachine.export.transformation.engines.AbstractStateMachineTestStrategy.java

License:Open Source License

/**
 * Method which for any type of trigger Event, from CallEvent, to ChangeEvent, TimeEvent, etc, creates an abstract method
 * @param trigger/*  www  . j a va 2 s .c o  m*/
 * @param ast
 * @return
 */
protected MethodDeclaration createAbstractTriggerInvocation(Trigger trigger, AST ast) {

    //get trigger event
    Event event = trigger.getEvent();
    //if UML operation triggers event (so CLass method)

    String methodName = GENERATE_EVENT_LEADING;
    Javadoc javadoc = ast.newJavadoc();
    TagElement tag = ast.newTagElement();
    TextElement textElement = ast.newTextElement();

    if (event instanceof CallEvent) {

        CallEvent callEvent = (CallEvent) event;
        Operation operation = callEvent.getOperation();
        Class operationClass = (Class) operation.eContainer();

        methodName = operationClass.getName().replaceAll("\\W", "") + "_"
                + operation.getName().replaceAll("\\W", "");
        textElement.setText("Method must return true if method invocation is successful."
                + " Method designed to allow particular implementation  call of \"" + operation.getName() + "\""
                + " on class \"" + operationClass.getName()
                + "\" so we can assert if transition after event is correct");

    } else if (event instanceof ChangeEvent) {

        ChangeEvent changeEvent = (ChangeEvent) event;
        OpaqueExpression changeExpression = (OpaqueExpression) changeEvent.getChangeExpression();
        if (changeExpression.getBodies().isEmpty()) {
            System.err.println("Event " + event.getName() + " has no body/expression");
        } else {
            String body = changeExpression.getBodies().iterator().next();
            body = StringFormatter.convertNonAlphanumericalSymbolsToUnderscore(
                    StringFormatter.convertMathSymbolsToText(body));

            methodName = changeEvent.getName().replaceAll("\\W", "") + "_" + body;
            textElement.setText("Method must return true if event invocation is successful"
                    + " Method designed to allow particular implementation  for forcing condition \"" + body
                    + "\" encountered on event \"" + changeEvent.getName()
                    + "\" to true so we can assert if transition after event is correct");
        }
    } else if (event instanceof TimeEvent) {

        TimeEvent timeEvent = (TimeEvent) event;

        if (timeEvent.getWhen() == null || timeEvent.getWhen().getExpr() == null) {
            System.err.println("Event " + event.getName() + " has no when/expression");
        } else {
            String expression = ((LiteralString) timeEvent.getWhen().getExpr()).getValue(); // maybe can do something more with TimeExpression
            expression = StringFormatter.convertNonAlphanumericalSymbolsToUnderscore(
                    StringFormatter.convertMathSymbolsToText(expression));

            methodName = timeEvent.getName().replaceAll("\\W", "") + "_" + expression;
            textElement.setText("Method must return true if event invocation is successful"
                    + " Method designed to allow particular implementation  for forcing the time event "
                    + timeEvent.getName() + " with body \"" + expression
                    + "\" to happen so we can assert if transition after event is correct");
        }

    } else if (event instanceof SignalEvent) {

        SignalEvent signalEvent = (SignalEvent) event;
        Signal signal = signalEvent.getSignal();

        methodName = signal.getName().replaceAll("\\W", "");
        textElement.setText("Method must return true if method invocation is successful."
                + " Method designed to allow particular implementation call of \"" + signal.getName()
                + "\" so we can assert if transition after event is correct");
    } else {

        System.err.println("Event type of " + event.getClass() + " not supported yet ");
        methodName = "invoke" + event.getName().replaceAll("\\W", "_");
        textElement.setText("Event type of " + event.getClass()
                + " not supported yet so generated javadoc not very usefull. Method must ensure the event is called so we can assert if transition after event is correct.");
    }

    tag.fragments().add(textElement);
    javadoc.tags().add(tag);

    MethodDeclaration method = createAbstractAssertMethod(javadoc, methodName, ast);
    return method;
}

From source file:ac.at.tuwien.dsg.uml.statemachine.export.transformation.engines.AbstractStateMachineTestStrategy.java

License:Open Source License

protected MethodDeclaration createAbstractMethodForState(StateMachineState state, AST ast) {

    String stateName = state.equals(StateMachineState.INITIAL_STATE) ? "InitialState"
            : state.getName().replaceAll("\\W", "");

    Javadoc javadoc = ast.newJavadoc();
    TagElement tag = ast.newTagElement();
    TextElement textElement = ast.newTextElement();
    textElement.setText("Method must return true if the current state is " + stateName);
    tag.fragments().add(textElement);//  ww w  .j  a v  a 2s  .  c  om
    javadoc.tags().add(tag);

    MethodDeclaration method = createAbstractAssertMethod(javadoc, ASSERT_STATE_LEADING + stateName, ast);
    return method;
}

From source file:ac.at.tuwien.dsg.uml.statemachine.export.transformation.engines.AbstractStateMachineTestStrategy.java

License:Open Source License

protected MethodDeclaration createAbstractMethodForGuard(String condition, AST ast) {

    String conditionName = StringFormatter
            .convertNonAlphanumericalSymbolsToUnderscore(StringFormatter.convertMathSymbolsToText(condition));

    Javadoc javadoc = ast.newJavadoc();
    TagElement tag = ast.newTagElement();
    TextElement textElement = ast.newTextElement();
    textElement.setText(//from w  w w  .  j a  va 2s  .c  o m
            "Method must evaluate and return true if the following condition is true:  state is " + condition);
    tag.fragments().add(textElement);
    javadoc.tags().add(tag);

    MethodDeclaration method = createAbstractAssertMethod(javadoc,
            ASSERT_GUARD_LEADING + (conditionName.substring(0, 1).toUpperCase() + conditionName.substring(1)),
            ast);
    return method;
}

From source file:ac.at.tuwien.dsg.uml.statemachine.export.transformation.engines.AbstractStateMachineTestStrategy.java

License:Open Source License

protected MethodDeclaration createAbstractForceConditionMethod(String condition, AST ast) {

    String conditionName = StringFormatter
            .convertNonAlphanumericalSymbolsToUnderscore(StringFormatter.convertMathSymbolsToText(condition));

    Javadoc javadoc = ast.newJavadoc();
    TagElement tag = ast.newTagElement();
    TextElement textElement = ast.newTextElement();
    textElement.setText(//from w w  w  .  jav  a2  s .  com
            "Method must call tested system and ensure the following condition is true so the test can progress on the current test branch: "
                    + condition);
    tag.fragments().add(textElement);
    javadoc.tags().add(tag);

    MethodDeclaration method = createAbstractAssertMethod(javadoc,
            FORCE_GUARD_LEADING + (conditionName.substring(0, 1).toUpperCase() + conditionName.substring(1)),
            ast);
    return method;
}

From source file:com.crispico.flower.mp.metamodel.codesyncjava.algorithm.forward.ForwardJavaDeclaration.java

License:Open Source License

/**
 * @throws CodeSyncException //w  w w.  ja  v a  2  s . c  o m
 * @flowerModelElementId _zbgpOpiOEd6aNMdNFvR5WQ
 */
@SuppressWarnings("unchecked")
@Override
protected void setASTFeatureValue(EStructuralFeature feature, TDeclaration astElement, Object value)
        throws CodeSyncException {
    if (astElement == null)
        throw new IllegalArgumentException("astElement null ");
    AST ast = astElement.getAST();

    switch (feature.getFeatureID()) {
    case UMLPackage.NAMED_ELEMENT__VISIBILITY:
        JavaSyncUtils.updateVisibilityFromModelToJavaClass(astElement, (VisibilityKind) value);
        break;
    case UMLPackage.ELEMENT__OWNED_COMMENT:
        List<Comment> listComments = (List<Comment>) value;
        if (listComments.size() > 1)
            throw new IllegalArgumentException("setting more than one documentation ");
        else if (listComments.size() == 1) {
            String documentation = listComments.get(0).getBody();
            Javadoc javadoc = ast.newJavadoc();
            if (documentation != null) {
                javadoc.setProperty("comment", "\r\n" + documentation + "\r\n");
                documentation = documentation.replace("\n", "\n * ");
            }
            TagElement tag = ast.newTagElement();
            TextElement te = ast.newTextElement();
            tag.fragments().add(te);
            te.setText(documentation);
            javadoc.tags().add(tag);
            astElement.setJavadoc(javadoc);
        } else if (listComments.isEmpty())
            astElement.setJavadoc(null);
        break;
    case UMLPackage.FEATURE__IS_STATIC:
        JavaSyncUtils.updateModifierFromModelToJavaClass(astElement, (Boolean) value,
                JavaSyncUtils.MODIFIER_STATIC);
        break;
    case CodeSyncPackage.FINAL_FEATURE__IS_FINAL:
        JavaSyncUtils.updateModifierFromModelToJavaClass(astElement, (Boolean) value,
                JavaSyncUtils.MODIFIER_FINAL);
        break;
    default:
        throw new IllegalArgumentException("Cannot get value for feature in ForwardJavaDeclaration:" + feature);
    }
}

From source file:com.crispico.flower.mp.metamodel.codesyncjava.algorithm.forward.ForwardJavaType.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//from   ww w  .  ja  va 2s  .co  m
protected void setASTFeatureValue(EStructuralFeature feature, CompilationUnit astElement, Object value)
        throws CodeSyncException {
    if (astElement == null)
        throw new IllegalArgumentException("astElement null ");
    AST ast = astElement.getAST();
    TypeDeclaration masterClass = JavaSyncUtils.getMasterClass(astElement);

    switch (feature.getFeatureID()) {
    case UMLPackage.NAMED_ELEMENT__NAME:
        if (value == null)
            throw new IllegalArgumentException("setting name to null value ");

        String oldName = masterClass.getName().toString();
        if (!oldName.equals(value) && !oldName.equals("MISSING")) { // rename case
            try {
                SyncUtils.renameFile(oldName.toString(), (String) value, ".java", parentFolder);
            } catch (CoreException e) {
                throw new RuntimeException("Error during folder refresh: " + parentFolder, e);
            } catch (Exception e) {
                throw new RuntimeException("Error during file rename ", e);
            }
        }
        try {
            masterClass.setName(ast.newSimpleName((String) value));
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    case UMLPackage.NAMED_ELEMENT__VISIBILITY:
        JavaSyncUtils.updateVisibilityFromModelToJavaClass(masterClass, (VisibilityKind) value);
        break;
    case UMLPackage.CLASSIFIER__IS_ABSTRACT:
        JavaSyncUtils.updateModifierFromModelToJavaClass(masterClass, (Boolean) value,
                JavaSyncUtils.MODIFIER_ABSTRACT);
        break;
    case UMLPackage.ELEMENT__OWNED_COMMENT:
        List<Comment> listComments = (List<Comment>) value;
        if (listComments.size() > 1)
            throw new IllegalArgumentException("setting more than one documentation ");
        else if (listComments.size() == 1) {
            String documentation = listComments.get(0).getBody();
            Javadoc javadoc = ast.newJavadoc();
            if (documentation != null) {
                javadoc.setProperty("comment", "\r\n" + documentation + "\r\n");
                documentation = documentation.replace("\n", "\n * ");
            }
            TagElement tag = ast.newTagElement();
            TextElement te = ast.newTextElement();
            tag.fragments().add(te);
            te.setText(documentation);
            javadoc.tags().add(tag);
            JavaSyncUtils.getMasterClass(astElement).setJavadoc(javadoc);
        } else if (listComments.isEmpty())
            JavaSyncUtils.getMasterClass(astElement).setJavadoc(null);
        break;
    default:
        throw new IllegalArgumentException("Cannot get value for feature in ForwardJavaType:" + feature);
    }
}

From source file:com.idega.eclipse.ejbwizards.BeanCreator.java

License:Open Source License

protected Javadoc getJavadoc(AST ast, IMethod method) {
    Javadoc jc = ast.newJavadoc();
    TagElement tag = ast.newTagElement();
    tag.setTagName(TagElement.TAG_SEE);
    TextElement te = ast.newTextElement();
    te.setText(getType().getFullyQualifiedName() + "#" + method.getElementName());
    tag.fragments().add(te);// w ww  . j  av a2s .  c o m
    jc.tags().add(tag);

    return jc;
}

From source file:de.akra.idocit.java.services.JavadocGeneratorTest.java

License:Apache License

/**
 * Tests {@link JavadocGenerator#appendDocsToJavadoc(List, String, String, Javadoc)} .
 * //  ww  w . ja v  a  2 s. co  m
 * @throws IOException
 * @throws FileNotFoundException
 */
@SuppressWarnings("unchecked")
@Test
public void testGenerateJavadoc() throws FileNotFoundException, IOException {
    ParserOutput output = JavaTestUtils
            .createCompilationUnit(AllIDocItJavaTests.SOURCE_DIR + "ParsingService.java");
    CompilationUnit cu = output.getCompilationUnit();

    AbstractTypeDeclaration absTypeDecl = (AbstractTypeDeclaration) cu.types().get(0);
    AST ast = absTypeDecl.getAST();
    Javadoc javadoc = ast.newJavadoc();

    List<Documentation> documentations = createParamDocumentations();

    JavaMethod methodParam = new JavaMethod(SignatureElement.EMPTY_SIGNATURE_ELEMENT, "Method",
            "Searching Operations", Numerus.SINGULAR);

    for (Documentation documentation : documentations) {
        methodParam.addDocpart(documentation);
    }

    JavadocGenerator.INSTANCE.appendDocsToJavadoc(methodParam.getDocumentations(), null, null,
            "Searching Operations", javadoc, new ArrayList<TagElement>(), null);
    JavadocGenerator.INSTANCE.appendDocsToJavadoc(methodParam.getDocumentations(), TagElement.TAG_PARAM,
            "person", "Searching Operations", javadoc, new ArrayList<TagElement>(), null);

    JavaMethod methodReturn = new JavaMethod(SignatureElement.EMPTY_SIGNATURE_ELEMENT, "Method",
            "Searching Operations", Numerus.SINGULAR);

    for (Documentation documentation : createReturnDocumentations()) {
        methodReturn.addDocpart(documentation);
    }

    JavadocGenerator.INSTANCE.appendDocsToJavadoc(methodReturn.getDocumentations(), TagElement.TAG_RETURN, null,
            "Searching Operations", javadoc, new ArrayList<TagElement>(), null);

    TagElement tagElement = ast.newTagElement();
    tagElement.setTagName(JavadocParser.JAVADOC_TAG_THEMATICGRID);

    List<ASTNode> fragments = (List<ASTNode>) tagElement.fragments();
    TextElement textElement = ast.newTextElement();
    textElement.setText(" Searching Operations");
    fragments.add(textElement);

    List<TagElement> tags = javadoc.tags();
    tags.add(tagElement);

    Assert.assertEquals(EXPECTED_JAVADOC, javadoc.toString());
}

From source file:de.akra.idocit.java.services.JavadocGeneratorTest.java

License:Apache License

/**
 * This is not a real unit test. It is a trial to use the ITextFileBufferManager to
 * save the changes in a CompilationUnit.<br />
 * Test for/*  ww w.j  a  v a 2 s .c  om*/
 * {@link JavaInterfaceGenerator#updateJavadocInAST(de.akra.idocit.java.structure.JavaInterfaceArtifact)}
 * .
 * 
 * @throws FileNotFoundException
 * @throws IOException
 * @throws BadLocationException
 * @throws MalformedTreeException
 * @throws CoreException
 * @throws ParsingException
 */
@Ignore
public void testJavaInterfaceGenerator2() throws FileNotFoundException, IOException, MalformedTreeException,
        BadLocationException, CoreException, ParsingException {

    ParserOutput output = JavaTestUtils
            .createCompilationUnit(AllIDocItJavaTests.SOURCE_DIR + "ParsingService2.java");
    CompilationUnit unit = output.getCompilationUnit();
    String originalCU = unit.toString();

    TypeDeclaration typeDecl = (TypeDeclaration) unit.types().get(0);
    AST ast = typeDecl.getAST();
    ASTRewrite rewriter = ASTRewrite.create(ast);

    List<JavadocTagElement> jDocTags = new ArrayList<JavadocTagElement>();
    JavadocTagElement tagElem = new JavadocTagElement(TagElement.TAG_PARAM, "paramName",
            createParamDocumentations(), SignatureElement.EMPTY_SIGNATURE_ELEMENT);
    jDocTags.add(tagElem);

    List<TagElement> additionalTags = Collections.emptyList();
    Javadoc javadoc = JavaInterfaceGenerator.createOrUpdateJavadoc(jDocTags, additionalTags, ast.newJavadoc(),
            ast, null, JavadocGenerator.INSTANCE, null);

    rewriter.set(typeDecl, TypeDeclaration.JAVADOC_PROPERTY, javadoc, null);

    // get the buffer manager
    ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
    IPath path = unit.getJavaElement().getPath();

    try {
        bufferManager.connect(path, LocationKind.IFILE, null);
        // retrieve the buffer
        ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(path, LocationKind.IFILE);

        if (textFileBuffer != null) {
            logger.log(Level.INFO, "isSynchronized=" + textFileBuffer.isSynchronized());

            IDocument document = textFileBuffer.getDocument();

            logger.log(Level.INFO, document.toString());

            // ... edit the document ...
            TextEdit edit = rewriter.rewriteAST(document, null);
            edit.apply(document);

            // commit changes to underlying file
            textFileBuffer.commit(null /* ProgressMonitor */, false /* Overwrite */);
        } else {
            logger.log(Level.SEVERE, "textFileBuffer == null");
        }
    } finally {
        bufferManager.disconnect(path, LocationKind.IFILE, null);
    }

    String changedCU = unit.toString();

    logger.log(Level.INFO, originalCU);
    logger.log(Level.INFO, changedCU);
}

From source file:de.akra.idocit.java.services.JavadocParserTest.java

License:Apache License

/**
 * Test for {@link JavadocParser#parseIDocItJavadoc(Javadoc)}.
 * /*from   ww w .ja  v  a  2  s  .c  o m*/
 * @throws ParserConfigurationException
 * @throws IOException
 * @throws SAXException
 * @throws ParsingException 
 * 
 * @throws Exception
 */
@Test
public void testParse() throws SAXException, IOException, ParserConfigurationException, ParsingException {
    {
        AST a = AST.newAST(AST.JLS3);
        Javadoc javadoc = a.newJavadoc();

        List<Documentation> paramDocumentations = createParamDocumentations();
        List<Documentation> returnDocumentations = createReturnDocumentations();

        JavaMethod methodWithParams = new JavaMethod(SignatureElement.EMPTY_SIGNATURE_ELEMENT, "Method",
                "Searching Operations", Numerus.SINGULAR);

        for (Documentation documentation : paramDocumentations) {
            methodWithParams.addDocpart(documentation);
        }

        JavaMethod methodWithReturn = new JavaMethod(SignatureElement.EMPTY_SIGNATURE_ELEMENT, "Method",
                "Searching Operations", Numerus.SINGULAR);

        for (Documentation documentation : returnDocumentations) {
            methodWithReturn.addDocpart(documentation);
        }

        JavadocGenerator.INSTANCE.appendDocsToJavadoc(methodWithParams.getDocumentations(), null, null,
                "Searching Operations", javadoc, new ArrayList<TagElement>(), null);
        JavadocGenerator.INSTANCE.appendDocsToJavadoc(methodWithParams.getDocumentations(),
                TagElement.TAG_PARAM, "person", "Searching Operations", javadoc, new ArrayList<TagElement>(),
                null);
        JavadocGenerator.INSTANCE.appendDocsToJavadoc(methodWithReturn.getDocumentations(),
                TagElement.TAG_RETURN, null, "Searching Operations", javadoc, new ArrayList<TagElement>(),
                null);
        JavadocGenerator.INSTANCE.appendDocsToJavadoc(methodWithParams.getDocumentations(),
                TagElement.TAG_THROWS, "IllegalArgException", "Searching Operations", javadoc,
                new ArrayList<TagElement>(), null);

        // add the number of used documentations to this list, to make an assertion
        List<Documentation> allUsedDocs = new ArrayList<Documentation>(paramDocumentations.size() * 4);
        allUsedDocs.addAll(paramDocumentations);
        allUsedDocs.addAll(paramDocumentations);
        allUsedDocs.addAll(returnDocumentations);
        allUsedDocs.addAll(paramDocumentations);

        logger.log(Level.FINE, javadoc.toString());

        List<Documentation> convertedDocs = JavadocParser.INSTANCE.parseIDocItJavadoc(javadoc,
                TestUtils.createReferenceAddressees(), TestUtils.createReferenceThematicRoles(),
                methodWithParams);

        logger.log(Level.FINE, allUsedDocs.toString());
        logger.log(Level.FINE, convertedDocs.toString());

        Assert.assertEquals(allUsedDocs, convertedDocs);
    }
}