From b2c6c9545efd75eb66d65a3803383875ec015be2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Bispo?= Date: Sun, 29 Dec 2024 23:55:35 +0000 Subject: [PATCH 1/3] Adapts code to changes in WeaverEngine interface --- .../fe/specs/alpakka/weaver/SmaliWeaver.java | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java index 4ca6407..fa9898b 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java @@ -5,13 +5,13 @@ import org.lara.interpreter.weaver.interf.JoinPoint; import org.lara.interpreter.weaver.options.WeaverOption; import org.lara.interpreter.weaver.utils.LaraResourceProvider; -import org.lara.language.specification.LanguageSpecification; +import org.lara.language.specification.dsl.LanguageSpecificationV2; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.alpakka.ast.App; import pt.up.fe.specs.alpakka.ast.SmaliNode; -import pt.up.fe.specs.alpakka.weaver.abstracts.ASmaliWeaverJoinPoint; -import pt.up.fe.specs.alpakka.parser.antlr.SmaliFileParser; import pt.up.fe.specs.alpakka.parser.antlr.AlpakkaParser; +import pt.up.fe.specs.alpakka.parser.antlr.SmaliFileParser; +import pt.up.fe.specs.alpakka.weaver.abstracts.ASmaliWeaverJoinPoint; import pt.up.fe.specs.alpakka.weaver.abstracts.weaver.ASmaliWeaver; import pt.up.fe.specs.alpakka.weaver.options.SmaliWeaverOption; import pt.up.fe.specs.alpakka.weaver.options.SmaliWeaverOptions; @@ -26,7 +26,7 @@ * The abstract class {@link ASmaliWeaverJoinPoint} can be used to add * user-defined methods and fields which the user intends to add for all join points and are not intended to be used in * LARA aspects. - * + * * @author Lara Weaver Generator */ public class SmaliWeaver extends ASmaliWeaver { @@ -37,21 +37,13 @@ public static String getWovenCodeFoldername() { return WOVEN_CODE_FOLDERNAME; } - /** - * Thread-scope WeaverEngine - */ - // private static final SpecsThreadLocal THREAD_LOCAL_WEAVER = new - // SpecsThreadLocal<>( - // WeaverEngine.class); /** - * @deprecated * @return */ - @Deprecated - public static LanguageSpecification buildLanguageSpecificationOld() { - return LanguageSpecification.newInstance(() -> "smali/weaverspecs/joinPointModel.xml", - () -> "smali/weaverspecs/artifacts.xml", () -> "smali/weaverspecs/actionModel.xml", true); + public static LanguageSpecificationV2 buildLanguageSpecification() { + return LanguageSpecificationV2.newInstance(() -> "smali/weaverspecs/joinPointModel.xml", + () -> "smali/weaverspecs/artifacts.xml", () -> "smali/weaverspecs/actionModel.xml"); } private static final String ALPAKKA_API_NAME = "alpakka-js"; @@ -80,7 +72,7 @@ public String getWeaverApiName() { /** * Warns the lara interpreter if the weaver accepts a folder as the application or only one file at a time. - * + * * @return true if the weaver is able to work with several files, false if only works with one file */ @Override @@ -103,13 +95,10 @@ private List filterSupportedFiles(File... sources) { /** * Set a file/folder in the weaver if it is valid file/folder type for the weaver. - * - * @param sources - * the file with the source code - * @param outputDir - * output directory for the generated file(s) - * @param args - * arguments to start the weaver + * + * @param sources the file with the source code + * @param outputDir output directory for the generated file(s) + * @param args arguments to start the weaver * @return true if the file type is valid */ @Override @@ -156,7 +145,7 @@ public AstMethods getAstMethods() { /** * Return a JoinPoint instance of the language root, i.e., an instance of APlaceholder - * + * * @return an instance of the join point root/program */ @Override @@ -169,7 +158,7 @@ public JoinPoint select() { /** * Closes the weaver to the specified output directory location, if the weaver generates new file(s) - * + * * @return if close was successful */ @Override @@ -182,7 +171,7 @@ public boolean close() { /** * Returns a list of Gears associated to this weaver engine - * + * * @return a list of implementations of {@link AGear} or null if no gears are available */ @Override @@ -205,8 +194,8 @@ public List getOptions() { } @Override - public LanguageSpecification getLanguageSpecification() { - return buildLanguageSpecificationOld(); + protected LanguageSpecificationV2 buildLangSpecs() { + return buildLanguageSpecification(); } @Override From f8062cb59c6422abad774312f30033e98730f986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Bispo?= Date: Thu, 2 Jan 2025 11:53:30 +0000 Subject: [PATCH 2/3] [AlpakkaWeaver] Changes in automatically generated code --- .../fe/specs/alpakka/weaver/SmaliWeaver.png | Bin 935 -> 71581 bytes .../fe/specs/alpakka/weaver/SmaliWeaver.svg | 450 +++++++++++++++++- .../abstracts/joinpoints/AArrayType.java | 156 +++--- .../weaver/abstracts/joinpoints/ACatch.java | 272 +++++------ .../abstracts/joinpoints/AClassNode.java | 86 ++-- .../abstracts/joinpoints/AClassType.java | 200 ++++---- .../abstracts/joinpoints/AExpression.java | 12 +- .../abstracts/joinpoints/AFieldNode.java | 64 +-- .../abstracts/joinpoints/AFieldReference.java | 156 +++--- .../weaver/abstracts/joinpoints/AGoto.java | 206 ++++---- .../abstracts/joinpoints/AIfComparison.java | 206 ++++---- .../joinpoints/AIfComparisonWithZero.java | 206 ++++---- .../abstracts/joinpoints/AInstruction.java | 230 ++++----- .../abstracts/joinpoints/AJoinPoint.java | 406 ++++++++-------- .../weaver/abstracts/joinpoints/ALabel.java | 190 ++++---- .../abstracts/joinpoints/ALabelReference.java | 156 +++--- .../abstracts/joinpoints/ALineDirective.java | 190 ++++---- .../weaver/abstracts/joinpoints/ALiteral.java | 156 +++--- .../abstracts/joinpoints/AManifest.java | 66 +-- .../abstracts/joinpoints/AMethodNode.java | 98 ++-- .../joinpoints/AMethodPrototype.java | 156 +++--- .../joinpoints/AMethodReference.java | 206 ++++---- .../abstracts/joinpoints/APackedSwitch.java | 190 ++++---- .../abstracts/joinpoints/APlaceholder.java | 12 +- .../joinpoints/APrimitiveLiteral.java | 156 +++--- .../abstracts/joinpoints/APrimitiveType.java | 156 +++--- .../weaver/abstracts/joinpoints/AProgram.java | 78 +-- .../abstracts/joinpoints/ARegisterList.java | 156 +++--- .../abstracts/joinpoints/ARegisterRange.java | 156 +++--- .../joinpoints/ARegisterReference.java | 156 +++--- .../joinpoints/ARegistersDirective.java | 190 ++++---- .../abstracts/joinpoints/AResourceNode.java | 12 +- .../joinpoints/AReturnStatement.java | 206 ++++---- .../abstracts/joinpoints/ASparseSwitch.java | 190 ++++---- .../joinpoints/ASparseSwitchElement.java | 156 +++--- .../abstracts/joinpoints/AStatement.java | 90 ++-- .../weaver/abstracts/joinpoints/ASwitch.java | 206 ++++---- .../abstracts/joinpoints/AThrowStatement.java | 206 ++++---- .../abstracts/joinpoints/ATypeDescriptor.java | 156 +++--- .../weaver/abstracts/weaver/ASmaliWeaver.java | 4 +- 40 files changed, 3382 insertions(+), 2962 deletions(-) diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.png b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.png index 76726920397d98426a73278a1c61d1f459e33b11..93108311dfca5cdc08f34dddb057934077155652 100644 GIT binary patch literal 71581 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 diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.svg b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.svg index ab40036..757d2ac 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.svg +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.svg @@ -1,31 +1,451 @@ - - - + + SmaliWeaver_join_point_hierarchy_join_point_hierarchy - - + + -placeholder - -placeholder +arrayType + +arrayType - + +typeDescriptor + +typeDescriptor + + + +arrayType->typeDescriptor + + + + + +literal + +literal + + + +typeDescriptor->literal + + + + + +catch + +catch + + + +statement + +statement + + + +catch->statement + + + + + joinpoint - -joinpoint + +joinpoint + + + +statement->joinpoint + + + + + +classNode + +classNode + + + +classNode->joinpoint + + + + + +classType + +classType + + + +classType->typeDescriptor + + + + + +expression + +expression + + + +expression->joinpoint + + + + + +fieldNode + +fieldNode + + + +fieldNode->joinpoint + + + + + +fieldReference + +fieldReference + + + +fieldReference->expression + + + + + +goto + +goto + + + +instruction + +instruction + + + +goto->instruction + + + + + +instruction->statement + + + + + +ifComparison + +ifComparison + + + +ifComparison->instruction + + + + + +ifComparisonWithZero + +ifComparisonWithZero + + + +ifComparisonWithZero->instruction + + + + + +label + +label + + + +label->statement + + + + + +labelReference + +labelReference + + + +labelReference->expression + + + + + +lineDirective + +lineDirective + + + +lineDirective->statement + + + + + +literal->expression + + + + + +manifest + +manifest + + + +manifest->joinpoint + + + + + +methodNode + +methodNode + + + +methodNode->joinpoint + + + + + +methodPrototype + +methodPrototype + + + +methodPrototype->literal + + + + + +methodReference + +methodReference + + + +methodReference->expression + + + + + +packedSwitch + +packedSwitch + + + +packedSwitch->statement + + + + + +placeholder + +placeholder - + placeholder->joinpoint - - + + + + + +primitiveLiteral + +primitiveLiteral + + + +primitiveLiteral->literal + + + + + +primitiveType + +primitiveType + + + +primitiveType->typeDescriptor + + + + + +program + +program + + + +program->joinpoint + + + + + +registerList + +registerList + + + +registerList->expression + + + + + +registerRange + +registerRange + + + +registerRange->expression + + + + + +registerReference + +registerReference + + + +registerReference->expression + + + + + +registersDirective + +registersDirective + + + +registersDirective->statement + + + + + +resourceNode + +resourceNode + + + +resourceNode->joinpoint + + + + + +returnStatement + +returnStatement + + + +returnStatement->instruction + + + + + +sparseSwitch + +sparseSwitch + + + +sparseSwitch->statement + + + + + +sparseSwitchElement + +sparseSwitchElement + + + +sparseSwitchElement->expression + + + + + +switch + +switch + + + +switch->instruction + + + + + +throwStatement + +throwStatement + + + +throwStatement->instruction + + diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AArrayType.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AArrayType.java index 0142e4d..4bcdbc8 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AArrayType.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AArrayType.java @@ -25,138 +25,148 @@ public AArrayType(ATypeDescriptor aTypeDescriptor){ this.aTypeDescriptor = aTypeDescriptor; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aTypeDescriptor.getParentImpl(); + public String getAstImpl() { + return this.aTypeDescriptor.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aTypeDescriptor.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aTypeDescriptor.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aTypeDescriptor.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aTypeDescriptor.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aTypeDescriptor.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aTypeDescriptor.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aTypeDescriptor.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aTypeDescriptor.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aTypeDescriptor.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aTypeDescriptor.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aTypeDescriptor.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aTypeDescriptor.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aTypeDescriptor.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aTypeDescriptor.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aTypeDescriptor.getChildImpl(index); + public String getIdImpl() { + return this.aTypeDescriptor.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aTypeDescriptor.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aTypeDescriptor.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aTypeDescriptor.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aTypeDescriptor.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aTypeDescriptor.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aTypeDescriptor.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aTypeDescriptor.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aTypeDescriptor.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aTypeDescriptor.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aTypeDescriptor.insertAfterImpl(code); } /** @@ -178,49 +188,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aTypeDescriptor.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aTypeDescriptor.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aTypeDescriptor.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aTypeDescriptor.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aTypeDescriptor.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aTypeDescriptor.replaceWithStringsImpl(node); } /** @@ -304,17 +304,17 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum ArrayTypeAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ACatch.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ACatch.java index 677d1be..8f40b37 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ACatch.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ACatch.java @@ -26,67 +26,67 @@ public ACatch(AStatement aStatement){ this.aStatement = aStatement; } /** - * Get value on attribute exception + * Get value on attribute _catch * @return the attribute's value */ - public abstract ATypeDescriptor getExceptionImpl(); + public abstract ALabelReference getCatchImpl(); /** - * Get value on attribute exception + * Get value on attribute _catch * @return the attribute's value */ - public final Object getException() { + public final Object getCatch() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "exception", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "catch", Optional.empty()); } - ATypeDescriptor result = this.getExceptionImpl(); + ALabelReference result = this.getCatchImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "exception", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "catch", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "exception", e); + throw new AttributeException(get_class(), "catch", e); } } /** * */ - public void defExceptionImpl(ATypeDescriptor value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def exception with type ATypeDescriptor not implemented "); + public void defCatchImpl(ALabelReference value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def catch with type ALabelReference not implemented "); } /** - * Get value on attribute tryStart + * Get value on attribute exception * @return the attribute's value */ - public abstract ALabelReference getTryStartImpl(); + public abstract ATypeDescriptor getExceptionImpl(); /** - * Get value on attribute tryStart + * Get value on attribute exception * @return the attribute's value */ - public final Object getTryStart() { + public final Object getException() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "tryStart", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "exception", Optional.empty()); } - ALabelReference result = this.getTryStartImpl(); + ATypeDescriptor result = this.getExceptionImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "tryStart", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "exception", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "tryStart", e); + throw new AttributeException(get_class(), "exception", e); } } /** * */ - public void defTryStartImpl(ALabelReference value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def tryStart with type ALabelReference not implemented "); + public void defExceptionImpl(ATypeDescriptor value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def exception with type ATypeDescriptor not implemented "); } /** @@ -122,35 +122,44 @@ public void defTryEndImpl(ALabelReference value) { } /** - * Get value on attribute _catch + * Get value on attribute tryStart * @return the attribute's value */ - public abstract ALabelReference getCatchImpl(); + public abstract ALabelReference getTryStartImpl(); /** - * Get value on attribute _catch + * Get value on attribute tryStart * @return the attribute's value */ - public final Object getCatch() { + public final Object getTryStart() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "catch", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "tryStart", Optional.empty()); } - ALabelReference result = this.getCatchImpl(); + ALabelReference result = this.getTryStartImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "catch", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "tryStart", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "catch", e); + throw new AttributeException(get_class(), "tryStart", e); } } /** * */ - public void defCatchImpl(ALabelReference value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def catch with type ALabelReference not implemented "); + public void defTryStartImpl(ALabelReference value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def tryStart with type ALabelReference not implemented "); + } + + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aStatement.getLineImpl(); } /** @@ -172,12 +181,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aStatement.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aStatement.defLineImpl(value); } /** @@ -195,145 +202,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aStatement.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aStatement.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aStatement.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aStatement.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aStatement.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aStatement.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aStatement.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aStatement.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aStatement.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aStatement.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aStatement.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aStatement.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aStatement.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aStatement.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aStatement.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aStatement.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aStatement.getAncestorImpl(type); + public String getIdImpl() { + return this.aStatement.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aStatement.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aStatement.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aStatement.getIdImpl(); + public AProgram getRootImpl() { + return this.aStatement.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aStatement.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aStatement.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aStatement.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aStatement.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aStatement.insertAfterImpl(code); } /** @@ -355,49 +365,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aStatement.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aStatement.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aStatement.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aStatement.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aStatement.replaceWithStringsImpl(node); } /** @@ -428,6 +428,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "catch": { + if(value instanceof ALabelReference){ + this.defCatchImpl((ALabelReference)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "exception": { if(value instanceof ATypeDescriptor){ this.defExceptionImpl((ATypeDescriptor)value); @@ -435,23 +442,23 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "tryStart": { + case "tryEnd": { if(value instanceof ALabelReference){ - this.defTryStartImpl((ALabelReference)value); + this.defTryEndImpl((ALabelReference)value); return; } this.unsupportedTypeForDef(attribute, value); } - case "tryEnd": { + case "tryStart": { if(value instanceof ALabelReference){ - this.defTryEndImpl((ALabelReference)value); + this.defTryStartImpl((ALabelReference)value); return; } this.unsupportedTypeForDef(attribute, value); } - case "catch": { - if(value instanceof ALabelReference){ - this.defCatchImpl((ALabelReference)value); + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); return; } this.unsupportedTypeForDef(attribute, value); @@ -470,13 +477,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -487,10 +487,10 @@ public final void defImpl(String attribute, Object value) { @Override protected final void fillWithAttributes(List attributes) { this.aStatement.fillWithAttributes(attributes); + attributes.add("catch"); attributes.add("exception"); - attributes.add("tryStart"); attributes.add("tryEnd"); - attributes.add("catch"); + attributes.add("tryStart"); } /** @@ -534,24 +534,24 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum CatchAttributes { + CATCH("catch"), EXCEPTION("exception"), - TRYSTART("tryStart"), TRYEND("tryEnd"), - CATCH("catch"), + TRYSTART("tryStart"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassNode.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassNode.java index 7001121..c476768 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassNode.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassNode.java @@ -19,40 +19,37 @@ public abstract class AClassNode extends ASmaliWeaverJoinPoint { /** - * Get value on attribute methods - * @return the attribute's value - */ - public abstract AMethodNode[] getMethodsArrayImpl(); - - /** - * Get value on attribute methods + * Get value on attribute classDescriptor * @return the attribute's value */ - public Object getMethodsImpl() { - AMethodNode[] aMethodNodeArrayImpl0 = getMethodsArrayImpl(); - Object nativeArray0 = getWeaverEngine().getScriptEngine().toNativeArray(aMethodNodeArrayImpl0); - return nativeArray0; - } + public abstract AClassType getClassDescriptorImpl(); /** - * Get value on attribute methods + * Get value on attribute classDescriptor * @return the attribute's value */ - public final Object getMethods() { + public final Object getClassDescriptor() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "methods", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "classDescriptor", Optional.empty()); } - Object result = this.getMethodsImpl(); + AClassType result = this.getClassDescriptorImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "methods", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "classDescriptor", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "methods", e); + throw new AttributeException(get_class(), "classDescriptor", e); } } + /** + * + */ + public void defClassDescriptorImpl(AClassType value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def classDescriptor with type AClassType not implemented "); + } + /** * Get value on attribute fields * @return the attribute's value @@ -89,37 +86,40 @@ public final Object getFields() { } /** - * Get value on attribute classDescriptor + * Get value on attribute methods * @return the attribute's value */ - public abstract AClassType getClassDescriptorImpl(); + public abstract AMethodNode[] getMethodsArrayImpl(); /** - * Get value on attribute classDescriptor + * Get value on attribute methods * @return the attribute's value */ - public final Object getClassDescriptor() { + public Object getMethodsImpl() { + AMethodNode[] aMethodNodeArrayImpl0 = getMethodsArrayImpl(); + Object nativeArray0 = getWeaverEngine().getScriptEngine().toNativeArray(aMethodNodeArrayImpl0); + return nativeArray0; + } + + /** + * Get value on attribute methods + * @return the attribute's value + */ + public final Object getMethods() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "classDescriptor", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "methods", Optional.empty()); } - AClassType result = this.getClassDescriptorImpl(); + Object result = this.getMethodsImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "classDescriptor", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "methods", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "classDescriptor", e); + throw new AttributeException(get_class(), "methods", e); } } - /** - * - */ - public void defClassDescriptorImpl(AClassType value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def classDescriptor with type AClassType not implemented "); - } - /** * Get value on attribute superClassDescriptor * @return the attribute's value @@ -196,9 +196,9 @@ public final void defImpl(String attribute, Object value) { @Override protected final void fillWithAttributes(List attributes) { super.fillWithAttributes(attributes); - attributes.add("methods"); - attributes.add("fields"); attributes.add("classDescriptor"); + attributes.add("fields"); + attributes.add("methods"); attributes.add("superClassDescriptor"); } @@ -230,21 +230,21 @@ public final String get_class() { * */ protected enum ClassNodeAttributes { - METHODS("methods"), - FIELDS("fields"), CLASSDESCRIPTOR("classDescriptor"), + FIELDS("fields"), + METHODS("methods"), SUPERCLASSDESCRIPTOR("superClassDescriptor"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassType.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassType.java index e50fbac..7592fd2 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassType.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AClassType.java @@ -52,195 +52,205 @@ public final Object getClassName() { } /** - * Get value on attribute packageName + * Get value on attribute decl * @return the attribute's value */ - public abstract String getPackageNameImpl(); + public abstract AClassNode getDeclImpl(); /** - * Get value on attribute packageName + * Get value on attribute decl * @return the attribute's value */ - public final Object getPackageName() { + public final Object getDecl() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "packageName", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "decl", Optional.empty()); } - String result = this.getPackageNameImpl(); + AClassNode result = this.getDeclImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "packageName", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "decl", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "packageName", e); + throw new AttributeException(get_class(), "decl", e); } } /** - * Get value on attribute decl + * + */ + public void defDeclImpl(AClassNode value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def decl with type AClassNode not implemented "); + } + + /** + * Get value on attribute packageName * @return the attribute's value */ - public abstract AClassNode getDeclImpl(); + public abstract String getPackageNameImpl(); /** - * Get value on attribute decl + * Get value on attribute packageName * @return the attribute's value */ - public final Object getDecl() { + public final Object getPackageName() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "decl", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "packageName", Optional.empty()); } - AClassNode result = this.getDeclImpl(); + String result = this.getPackageNameImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "decl", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "packageName", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "decl", e); + throw new AttributeException(get_class(), "packageName", e); } } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defDeclImpl(AClassNode value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def decl with type AClassNode not implemented "); + @Override + public String getAstImpl() { + return this.aTypeDescriptor.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aTypeDescriptor.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aTypeDescriptor.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aTypeDescriptor.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aTypeDescriptor.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aTypeDescriptor.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aTypeDescriptor.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aTypeDescriptor.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aTypeDescriptor.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aTypeDescriptor.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aTypeDescriptor.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aTypeDescriptor.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aTypeDescriptor.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aTypeDescriptor.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aTypeDescriptor.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aTypeDescriptor.getAncestorImpl(type); + public String getIdImpl() { + return this.aTypeDescriptor.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aTypeDescriptor.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aTypeDescriptor.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aTypeDescriptor.getIdImpl(); + public AProgram getRootImpl() { + return this.aTypeDescriptor.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aTypeDescriptor.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aTypeDescriptor.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aTypeDescriptor.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aTypeDescriptor.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aTypeDescriptor.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aTypeDescriptor.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aTypeDescriptor.insertAfterImpl(code); } /** @@ -262,49 +272,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aTypeDescriptor.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aTypeDescriptor.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aTypeDescriptor.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aTypeDescriptor.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aTypeDescriptor.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aTypeDescriptor.replaceWithStringsImpl(node); } /** @@ -353,8 +353,8 @@ public final void defImpl(String attribute, Object value) { protected final void fillWithAttributes(List attributes) { this.aTypeDescriptor.fillWithAttributes(attributes); attributes.add("className"); - attributes.add("packageName"); attributes.add("decl"); + attributes.add("packageName"); } /** @@ -399,19 +399,19 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum ClassTypeAttributes { CLASSNAME("className"), - PACKAGENAME("packageName"), DECL("decl"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), + PACKAGENAME("packageName"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AExpression.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AExpression.java index 002b56c..76c433c 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AExpression.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AExpression.java @@ -76,17 +76,17 @@ public String get_class() { * */ protected enum ExpressionAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldNode.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldNode.java index e29ba4a..ff5970b 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldNode.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldNode.java @@ -19,77 +19,77 @@ public abstract class AFieldNode extends ASmaliWeaverJoinPoint { /** - * Get value on attribute name + * Get value on attribute isStatic * @return the attribute's value */ - public abstract String getNameImpl(); + public abstract Boolean getIsStaticImpl(); /** - * Get value on attribute name + * Get value on attribute isStatic * @return the attribute's value */ - public final Object getName() { + public final Object getIsStatic() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "name", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "isStatic", Optional.empty()); } - String result = this.getNameImpl(); + Boolean result = this.getIsStaticImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "name", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "isStatic", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "name", e); + throw new AttributeException(get_class(), "isStatic", e); } } /** - * Get value on attribute referenceName + * Get value on attribute name * @return the attribute's value */ - public abstract String getReferenceNameImpl(); + public abstract String getNameImpl(); /** - * Get value on attribute referenceName + * Get value on attribute name * @return the attribute's value */ - public final Object getReferenceName() { + public final Object getName() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "referenceName", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "name", Optional.empty()); } - String result = this.getReferenceNameImpl(); + String result = this.getNameImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "referenceName", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "name", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "referenceName", e); + throw new AttributeException(get_class(), "name", e); } } /** - * Get value on attribute isStatic + * Get value on attribute referenceName * @return the attribute's value */ - public abstract Boolean getIsStaticImpl(); + public abstract String getReferenceNameImpl(); /** - * Get value on attribute isStatic + * Get value on attribute referenceName * @return the attribute's value */ - public final Object getIsStatic() { + public final Object getReferenceName() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "isStatic", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "referenceName", Optional.empty()); } - Boolean result = this.getIsStaticImpl(); + String result = this.getReferenceNameImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "isStatic", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "referenceName", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "isStatic", e); + throw new AttributeException(get_class(), "referenceName", e); } } @@ -123,9 +123,9 @@ public final void defImpl(String attribute, Object value) { @Override protected final void fillWithAttributes(List attributes) { super.fillWithAttributes(attributes); + attributes.add("isStatic"); attributes.add("name"); attributes.add("referenceName"); - attributes.add("isStatic"); } /** @@ -156,20 +156,20 @@ public final String get_class() { * */ protected enum FieldNodeAttributes { + ISSTATIC("isStatic"), NAME("name"), REFERENCENAME("referenceName"), - ISSTATIC("isStatic"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldReference.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldReference.java index 2418efb..88b2dba 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldReference.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AFieldReference.java @@ -24,138 +24,148 @@ public AFieldReference(AExpression aExpression){ this.aExpression = aExpression; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -177,49 +187,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -303,17 +303,17 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum FieldReferenceAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AGoto.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AGoto.java index 2bda1a3..19d1d10 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AGoto.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AGoto.java @@ -68,12 +68,12 @@ public Boolean getCanThrowImpl() { } /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ @Override - public Boolean getSetsResultImpl() { - return this.aInstruction.getSetsResultImpl(); + public String getOpCodeNameImpl() { + return this.aInstruction.getOpCodeNameImpl(); } /** @@ -86,12 +86,21 @@ public Boolean getSetsRegisterImpl() { } /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ @Override - public String getOpCodeNameImpl() { - return this.aInstruction.getOpCodeNameImpl(); + public Boolean getSetsResultImpl() { + return this.aInstruction.getSetsResultImpl(); + } + + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aInstruction.getLineImpl(); } /** @@ -113,12 +122,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aInstruction.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aInstruction.defLineImpl(value); } /** @@ -136,145 +143,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aInstruction.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aInstruction.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aInstruction.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aInstruction.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aInstruction.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aInstruction.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aInstruction.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aInstruction.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aInstruction.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aInstruction.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aInstruction.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aInstruction.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aInstruction.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aInstruction.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aInstruction.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aInstruction.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aInstruction.getAncestorImpl(type); + public String getIdImpl() { + return this.aInstruction.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aInstruction.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aInstruction.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aInstruction.getIdImpl(); + public AProgram getRootImpl() { + return this.aInstruction.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aInstruction.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aInstruction.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aInstruction.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aInstruction.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aInstruction.insertAfterImpl(code); } /** @@ -296,49 +306,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aInstruction.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aInstruction.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aInstruction.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aInstruction.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aInstruction.replaceWithStringsImpl(node); } /** @@ -376,6 +376,13 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -390,13 +397,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -453,23 +453,23 @@ public final boolean instanceOf(String joinpointClass) { protected enum GotoAttributes { LABEL("label"), CANTHROW("canThrow"), - SETSRESULT("setsResult"), - SETSREGISTER("setsRegister"), OPCODENAME("opCodeName"), + SETSREGISTER("setsRegister"), + SETSRESULT("setsResult"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparison.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparison.java index 6a91204..6802be1 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparison.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparison.java @@ -68,12 +68,12 @@ public Boolean getCanThrowImpl() { } /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ @Override - public Boolean getSetsResultImpl() { - return this.aInstruction.getSetsResultImpl(); + public String getOpCodeNameImpl() { + return this.aInstruction.getOpCodeNameImpl(); } /** @@ -86,12 +86,21 @@ public Boolean getSetsRegisterImpl() { } /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ @Override - public String getOpCodeNameImpl() { - return this.aInstruction.getOpCodeNameImpl(); + public Boolean getSetsResultImpl() { + return this.aInstruction.getSetsResultImpl(); + } + + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aInstruction.getLineImpl(); } /** @@ -113,12 +122,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aInstruction.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aInstruction.defLineImpl(value); } /** @@ -136,145 +143,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aInstruction.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aInstruction.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aInstruction.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aInstruction.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aInstruction.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aInstruction.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aInstruction.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aInstruction.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aInstruction.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aInstruction.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aInstruction.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aInstruction.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aInstruction.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aInstruction.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aInstruction.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aInstruction.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aInstruction.getAncestorImpl(type); + public String getIdImpl() { + return this.aInstruction.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aInstruction.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aInstruction.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aInstruction.getIdImpl(); + public AProgram getRootImpl() { + return this.aInstruction.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aInstruction.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aInstruction.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aInstruction.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aInstruction.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aInstruction.insertAfterImpl(code); } /** @@ -296,49 +306,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aInstruction.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aInstruction.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aInstruction.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aInstruction.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aInstruction.replaceWithStringsImpl(node); } /** @@ -376,6 +376,13 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -390,13 +397,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -453,23 +453,23 @@ public final boolean instanceOf(String joinpointClass) { protected enum IfComparisonAttributes { LABEL("label"), CANTHROW("canThrow"), - SETSRESULT("setsResult"), - SETSREGISTER("setsRegister"), OPCODENAME("opCodeName"), + SETSREGISTER("setsRegister"), + SETSRESULT("setsResult"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparisonWithZero.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparisonWithZero.java index e2a2f67..3635b6f 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparisonWithZero.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AIfComparisonWithZero.java @@ -68,12 +68,12 @@ public Boolean getCanThrowImpl() { } /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ @Override - public Boolean getSetsResultImpl() { - return this.aInstruction.getSetsResultImpl(); + public String getOpCodeNameImpl() { + return this.aInstruction.getOpCodeNameImpl(); } /** @@ -86,12 +86,21 @@ public Boolean getSetsRegisterImpl() { } /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ @Override - public String getOpCodeNameImpl() { - return this.aInstruction.getOpCodeNameImpl(); + public Boolean getSetsResultImpl() { + return this.aInstruction.getSetsResultImpl(); + } + + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aInstruction.getLineImpl(); } /** @@ -113,12 +122,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aInstruction.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aInstruction.defLineImpl(value); } /** @@ -136,145 +143,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aInstruction.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aInstruction.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aInstruction.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aInstruction.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aInstruction.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aInstruction.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aInstruction.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aInstruction.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aInstruction.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aInstruction.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aInstruction.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aInstruction.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aInstruction.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aInstruction.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aInstruction.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aInstruction.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aInstruction.getAncestorImpl(type); + public String getIdImpl() { + return this.aInstruction.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aInstruction.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aInstruction.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aInstruction.getIdImpl(); + public AProgram getRootImpl() { + return this.aInstruction.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aInstruction.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aInstruction.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aInstruction.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aInstruction.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aInstruction.insertAfterImpl(code); } /** @@ -296,49 +306,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aInstruction.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aInstruction.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aInstruction.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aInstruction.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aInstruction.replaceWithStringsImpl(node); } /** @@ -376,6 +376,13 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -390,13 +397,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -453,23 +453,23 @@ public final boolean instanceOf(String joinpointClass) { protected enum IfComparisonWithZeroAttributes { LABEL("label"), CANTHROW("canThrow"), - SETSRESULT("setsResult"), - SETSREGISTER("setsRegister"), OPCODENAME("opCodeName"), + SETSREGISTER("setsRegister"), + SETSRESULT("setsResult"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AInstruction.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AInstruction.java index 557caef..737996f 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AInstruction.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AInstruction.java @@ -51,27 +51,27 @@ public final Object getCanThrow() { } /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ - public abstract Boolean getSetsResultImpl(); + public abstract String getOpCodeNameImpl(); /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ - public final Object getSetsResult() { + public final Object getOpCodeName() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "setsResult", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "opCodeName", Optional.empty()); } - Boolean result = this.getSetsResultImpl(); + String result = this.getOpCodeNameImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "setsResult", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "opCodeName", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "setsResult", e); + throw new AttributeException(get_class(), "opCodeName", e); } } @@ -101,30 +101,39 @@ public final Object getSetsRegister() { } /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ - public abstract String getOpCodeNameImpl(); + public abstract Boolean getSetsResultImpl(); /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ - public final Object getOpCodeName() { + public final Object getSetsResult() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "opCodeName", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "setsResult", Optional.empty()); } - String result = this.getOpCodeNameImpl(); + Boolean result = this.getSetsResultImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "opCodeName", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "setsResult", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "opCodeName", e); + throw new AttributeException(get_class(), "setsResult", e); } } + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aStatement.getLineImpl(); + } + /** * Get value on attribute nextStatement * @return the attribute's value @@ -144,12 +153,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aStatement.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aStatement.defLineImpl(value); } /** @@ -167,145 +174,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aStatement.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aStatement.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aStatement.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aStatement.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aStatement.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aStatement.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aStatement.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aStatement.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aStatement.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aStatement.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aStatement.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aStatement.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aStatement.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aStatement.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aStatement.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aStatement.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aStatement.getAncestorImpl(type); + public String getIdImpl() { + return this.aStatement.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aStatement.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aStatement.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aStatement.getIdImpl(); + public AProgram getRootImpl() { + return this.aStatement.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aStatement.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aStatement.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aStatement.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aStatement.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aStatement.insertAfterImpl(code); } /** @@ -327,49 +337,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aStatement.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aStatement.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aStatement.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aStatement.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aStatement.replaceWithStringsImpl(node); } /** @@ -400,6 +400,13 @@ public List select(String selectName) { @Override public void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -414,13 +421,6 @@ public void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -432,9 +432,9 @@ public void defImpl(String attribute, Object value) { protected void fillWithAttributes(List attributes) { this.aStatement.fillWithAttributes(attributes); attributes.add("canThrow"); - attributes.add("setsResult"); - attributes.add("setsRegister"); attributes.add("opCodeName"); + attributes.add("setsRegister"); + attributes.add("setsResult"); } /** @@ -479,23 +479,23 @@ public boolean instanceOf(String joinpointClass) { */ protected enum InstructionAttributes { CANTHROW("canThrow"), - SETSRESULT("setsResult"), - SETSREGISTER("setsRegister"), OPCODENAME("opCodeName"), + SETSREGISTER("setsRegister"), + SETSRESULT("setsResult"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AJoinPoint.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AJoinPoint.java index c5ba690..1876a6d 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AJoinPoint.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AJoinPoint.java @@ -60,138 +60,136 @@ public void defImpl(String attribute, Object value) { */ @Override protected void fillWithActions(List actions) { + actions.add("detach()"); + actions.add("insertAfter(AJoinPoint node)"); + actions.add("insertAfter(String code)"); + actions.add("insertBefore(AJoinPoint node)"); + actions.add("insertBefore(String node)"); actions.add("replaceWith(AJoinPoint node)"); actions.add("replaceWith(String node)"); actions.add("replaceWith(AJoinPoint[] node)"); actions.add("replaceWithStrings(String[] node)"); - actions.add("insertBefore(AJoinPoint node)"); - actions.add("insertBefore(String node)"); - actions.add("insertAfter(AJoinPoint node)"); - actions.add("insertAfter(String code)"); - actions.add("detach()"); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ - public AJoinPoint replaceWithImpl(AJoinPoint node) { - throw new UnsupportedOperationException(get_class()+": Action replaceWith not implemented "); + public AJoinPoint detachImpl() { + throw new UnsupportedOperationException(get_class()+": Action detach not implemented "); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ - public final AJoinPoint replaceWith(AJoinPoint node) { + public final Object detach() { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "replaceWith", this, Optional.empty(), node); + eventTrigger().triggerAction(Stage.BEGIN, "detach", this, Optional.empty()); } - AJoinPoint result = this.replaceWithImpl(node); + AJoinPoint result = this.detachImpl(); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "replaceWith", this, Optional.ofNullable(result), node); + eventTrigger().triggerAction(Stage.END, "detach", this, Optional.ofNullable(result)); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "replaceWith", e); + throw new ActionException(get_class(), "detach", e); } } /** - * Overload which accepts a string + * Inserts the given join point after this join point * @param node */ - public AJoinPoint replaceWithImpl(String node) { - throw new UnsupportedOperationException(get_class()+": Action replaceWith not implemented "); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + throw new UnsupportedOperationException(get_class()+": Action insertAfter not implemented "); } /** - * Overload which accepts a string + * Inserts the given join point after this join point * @param node */ - public final AJoinPoint replaceWith(String node) { + public final Object insertAfter(AJoinPoint node) { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "replaceWith", this, Optional.empty(), node); + eventTrigger().triggerAction(Stage.BEGIN, "insertAfter", this, Optional.empty(), node); } - AJoinPoint result = this.replaceWithImpl(node); + AJoinPoint result = this.insertAfterImpl(node); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "replaceWith", this, Optional.ofNullable(result), node); + eventTrigger().triggerAction(Stage.END, "insertAfter", this, Optional.ofNullable(result), node); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "replaceWith", e); + throw new ActionException(get_class(), "insertAfter", e); } } /** - * Overload which accepts a list of join points - * @param node + * Overload which accepts a string + * @param code */ - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - throw new UnsupportedOperationException(get_class()+": Action replaceWith not implemented "); + public AJoinPoint insertAfterImpl(String code) { + throw new UnsupportedOperationException(get_class()+": Action insertAfter not implemented "); } /** - * Overload which accepts a list of join points - * @param node + * Overload which accepts a string + * @param code */ - public final AJoinPoint replaceWith(AJoinPoint[] node) { + public final Object insertAfter(String code) { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "replaceWith", this, Optional.empty(), new Object[] { node}); + eventTrigger().triggerAction(Stage.BEGIN, "insertAfter", this, Optional.empty(), code); } - AJoinPoint result = this.replaceWithImpl(node); + AJoinPoint result = this.insertAfterImpl(code); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "replaceWith", this, Optional.ofNullable(result), new Object[] { node}); + eventTrigger().triggerAction(Stage.END, "insertAfter", this, Optional.ofNullable(result), code); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "replaceWith", e); + throw new ActionException(get_class(), "insertAfter", e); } } /** - * Overload which accepts a list of strings + * Inserts the given join point before this join point * @param node */ - public AJoinPoint replaceWithStringsImpl(String[] node) { - throw new UnsupportedOperationException(get_class()+": Action replaceWithStrings not implemented "); + public AJoinPoint insertBeforeImpl(AJoinPoint node) { + throw new UnsupportedOperationException(get_class()+": Action insertBefore not implemented "); } /** - * Overload which accepts a list of strings + * Inserts the given join point before this join point * @param node */ - public final AJoinPoint replaceWithStrings(String[] node) { + public final Object insertBefore(AJoinPoint node) { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "replaceWithStrings", this, Optional.empty(), new Object[] { node}); + eventTrigger().triggerAction(Stage.BEGIN, "insertBefore", this, Optional.empty(), node); } - AJoinPoint result = this.replaceWithStringsImpl(node); + AJoinPoint result = this.insertBeforeImpl(node); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "replaceWithStrings", this, Optional.ofNullable(result), new Object[] { node}); + eventTrigger().triggerAction(Stage.END, "insertBefore", this, Optional.ofNullable(result), node); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "replaceWithStrings", e); + throw new ActionException(get_class(), "insertBefore", e); } } /** - * Inserts the given join point before this join point + * Overload which accepts a string * @param node */ - public AJoinPoint insertBeforeImpl(AJoinPoint node) { + public AJoinPoint insertBeforeImpl(String node) { throw new UnsupportedOperationException(get_class()+": Action insertBefore not implemented "); } /** - * Inserts the given join point before this join point + * Overload which accepts a string * @param node */ - public final AJoinPoint insertBefore(AJoinPoint node) { + public final Object insertBefore(String node) { try { if(hasListeners()) { eventTrigger().triggerAction(Stage.BEGIN, "insertBefore", this, Optional.empty(), node); @@ -200,115 +198,117 @@ public final AJoinPoint insertBefore(AJoinPoint node) { if(hasListeners()) { eventTrigger().triggerAction(Stage.END, "insertBefore", this, Optional.ofNullable(result), node); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { throw new ActionException(get_class(), "insertBefore", e); } } /** - * Overload which accepts a string + * Replaces this node with the given node * @param node */ - public AJoinPoint insertBeforeImpl(String node) { - throw new UnsupportedOperationException(get_class()+": Action insertBefore not implemented "); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + throw new UnsupportedOperationException(get_class()+": Action replaceWith not implemented "); } /** - * Overload which accepts a string + * Replaces this node with the given node * @param node */ - public final AJoinPoint insertBefore(String node) { + public final Object replaceWith(AJoinPoint node) { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "insertBefore", this, Optional.empty(), node); + eventTrigger().triggerAction(Stage.BEGIN, "replaceWith", this, Optional.empty(), node); } - AJoinPoint result = this.insertBeforeImpl(node); + AJoinPoint result = this.replaceWithImpl(node); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "insertBefore", this, Optional.ofNullable(result), node); + eventTrigger().triggerAction(Stage.END, "replaceWith", this, Optional.ofNullable(result), node); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "insertBefore", e); + throw new ActionException(get_class(), "replaceWith", e); } } /** - * Inserts the given join point after this join point + * Overload which accepts a string * @param node */ - public AJoinPoint insertAfterImpl(AJoinPoint node) { - throw new UnsupportedOperationException(get_class()+": Action insertAfter not implemented "); + public AJoinPoint replaceWithImpl(String node) { + throw new UnsupportedOperationException(get_class()+": Action replaceWith not implemented "); } /** - * Inserts the given join point after this join point + * Overload which accepts a string * @param node */ - public final AJoinPoint insertAfter(AJoinPoint node) { + public final Object replaceWith(String node) { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "insertAfter", this, Optional.empty(), node); + eventTrigger().triggerAction(Stage.BEGIN, "replaceWith", this, Optional.empty(), node); } - AJoinPoint result = this.insertAfterImpl(node); + AJoinPoint result = this.replaceWithImpl(node); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "insertAfter", this, Optional.ofNullable(result), node); + eventTrigger().triggerAction(Stage.END, "replaceWith", this, Optional.ofNullable(result), node); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "insertAfter", e); + throw new ActionException(get_class(), "replaceWith", e); } } /** - * Overload which accepts a string - * @param code + * Overload which accepts a list of join points + * @param node */ - public AJoinPoint insertAfterImpl(String code) { - throw new UnsupportedOperationException(get_class()+": Action insertAfter not implemented "); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + throw new UnsupportedOperationException(get_class()+": Action replaceWith not implemented "); } /** - * Overload which accepts a string - * @param code + * Overload which accepts a list of join points + * @param node */ - public final AJoinPoint insertAfter(String code) { + public final Object replaceWith(Object[] node) { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "insertAfter", this, Optional.empty(), code); + eventTrigger().triggerAction(Stage.BEGIN, "replaceWith", this, Optional.empty(), new Object[] { node}); } - AJoinPoint result = this.insertAfterImpl(code); + AJoinPoint result = this.replaceWithImpl(pt.up.fe.specs.util.SpecsCollections.cast(node, AJoinPoint.class)); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "insertAfter", this, Optional.ofNullable(result), code); + eventTrigger().triggerAction(Stage.END, "replaceWith", this, Optional.ofNullable(result), new Object[] { node}); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "insertAfter", e); + throw new ActionException(get_class(), "replaceWith", e); } } /** - * Removes the node associated to this joinpoint from the AST + * Overload which accepts a list of strings + * @param node */ - public AJoinPoint detachImpl() { - throw new UnsupportedOperationException(get_class()+": Action detach not implemented "); + public AJoinPoint replaceWithStringsImpl(String[] node) { + throw new UnsupportedOperationException(get_class()+": Action replaceWithStrings not implemented "); } /** - * Removes the node associated to this joinpoint from the AST + * Overload which accepts a list of strings + * @param node */ - public final AJoinPoint detach() { + public final Object replaceWithStrings(Object[] node) { try { if(hasListeners()) { - eventTrigger().triggerAction(Stage.BEGIN, "detach", this, Optional.empty()); + eventTrigger().triggerAction(Stage.BEGIN, "replaceWithStrings", this, Optional.empty(), new Object[] { node}); } - AJoinPoint result = this.detachImpl(); + AJoinPoint result = this.replaceWithStringsImpl(pt.up.fe.specs.util.SpecsCollections.cast(node, String.class)); if(hasListeners()) { - eventTrigger().triggerAction(Stage.END, "detach", this, Optional.ofNullable(result)); + eventTrigger().triggerAction(Stage.END, "replaceWithStrings", this, Optional.ofNullable(result), new Object[] { node}); } - return result; + return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new ActionException(get_class(), "detach", e); + throw new ActionException(get_class(), "replaceWithStrings", e); } } @@ -321,89 +321,95 @@ protected void fillWithAttributes(List attributes) { super.fillWithAttributes(attributes); //Attributes available for all join points - attributes.add("root"); - attributes.add("parent"); - attributes.add("getAncestor(String type)"); + attributes.add("ast"); + attributes.add("children"); + attributes.add("code"); attributes.add("descendants"); + attributes.add("getAncestor(String type)"); + attributes.add("getChild(int index)"); attributes.add("getDescendants(String type)"); attributes.add("getDescendantsAndSelf(String type)"); - attributes.add("children"); - attributes.add("getChild(int index)"); attributes.add("id"); - attributes.add("ast"); - attributes.add("code"); + attributes.add("parent"); + attributes.add("root"); } /** - * Returns the 'program' joinpoint + * String representation of the ast */ - public abstract AProgram getRootImpl(); + public abstract String getAstImpl(); /** - * Returns the 'program' joinpoint + * String representation of the ast */ - public final Object getRoot() { + public final Object getAst() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "root", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "ast", Optional.empty()); } - AProgram result = this.getRootImpl(); + String result = this.getAstImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "root", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "ast", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "root", e); + throw new AttributeException(get_class(), "ast", e); } } /** - * Returns the parent node in the AST, or undefined if it is the root node + * Get value on attribute children + * @return the attribute's value */ - public abstract AJoinPoint getParentImpl(); + public abstract AJoinPoint[] getChildrenArrayImpl(); /** - * Returns the parent node in the AST, or undefined if it is the root node + * Returns an array with the children of the node, ignoring null nodes */ - public final Object getParent() { + public Object getChildrenImpl() { + AJoinPoint[] aJoinPointArrayImpl0 = getChildrenArrayImpl(); + Object nativeArray0 = getWeaverEngine().getScriptEngine().toNativeArray(aJoinPointArrayImpl0); + return nativeArray0; + } + + /** + * Returns an array with the children of the node, ignoring null nodes + */ + public final Object getChildren() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "parent", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "children", Optional.empty()); } - AJoinPoint result = this.getParentImpl(); + Object result = this.getChildrenImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "parent", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "children", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "parent", e); + throw new AttributeException(get_class(), "children", e); } } /** - * - * @param type - * @return + * String with the code represented by this node */ - public abstract AJoinPoint getAncestorImpl(String type); + public abstract String getCodeImpl(); /** - * - * @param type - * @return + * String with the code represented by this node */ - public final Object getAncestor(String type) { + public final Object getCode() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "getAncestor", Optional.empty(), type); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "code", Optional.empty()); } - AJoinPoint result = this.getAncestorImpl(type); + String result = this.getCodeImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "getAncestor", Optional.ofNullable(result), type); + eventTrigger().triggerAttribute(Stage.END, this, "code", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "getAncestor", e); + throw new AttributeException(get_class(), "code", e); } } @@ -445,134 +451,128 @@ public final Object getDescendants() { * @param type * @return */ - public abstract AJoinPoint[] getDescendantsArrayImpl(String type); - - /** - * - * @param type - * @return - */ - public Object getDescendantsImpl(String type) { - AJoinPoint[] aJoinPointArrayImpl0 = getDescendantsArrayImpl(type); - Object nativeArray0 = getWeaverEngine().getScriptEngine().toNativeArray(aJoinPointArrayImpl0); - return nativeArray0; - } + public abstract AJoinPoint getAncestorImpl(String type); /** * * @param type * @return */ - public final Object getDescendants(String type) { + public final Object getAncestor(String type) { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "getDescendants", Optional.empty(), type); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "getAncestor", Optional.empty(), type); } - Object result = this.getDescendantsImpl(type); + AJoinPoint result = this.getAncestorImpl(type); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "getDescendants", Optional.ofNullable(result), type); + eventTrigger().triggerAttribute(Stage.END, this, "getAncestor", Optional.ofNullable(result), type); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "getDescendants", e); + throw new AttributeException(get_class(), "getAncestor", e); } } /** * - * @param type - * @return - */ - public abstract AJoinPoint[] getDescendantsAndSelfArrayImpl(String type); - - /** - * - * @param type + * @param index * @return */ - public Object getDescendantsAndSelfImpl(String type) { - AJoinPoint[] aJoinPointArrayImpl0 = getDescendantsAndSelfArrayImpl(type); - Object nativeArray0 = getWeaverEngine().getScriptEngine().toNativeArray(aJoinPointArrayImpl0); - return nativeArray0; - } + public abstract AJoinPoint getChildImpl(int index); /** * - * @param type + * @param index * @return */ - public final Object getDescendantsAndSelf(String type) { + public final Object getChild(int index) { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "getDescendantsAndSelf", Optional.empty(), type); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "getChild", Optional.empty(), index); } - Object result = this.getDescendantsAndSelfImpl(type); + AJoinPoint result = this.getChildImpl(index); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "getDescendantsAndSelf", Optional.ofNullable(result), type); + eventTrigger().triggerAttribute(Stage.END, this, "getChild", Optional.ofNullable(result), index); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "getDescendantsAndSelf", e); + throw new AttributeException(get_class(), "getChild", e); } } /** - * Get value on attribute children - * @return the attribute's value + * + * @param type + * @return */ - public abstract AJoinPoint[] getChildrenArrayImpl(); + public abstract AJoinPoint[] getDescendantsArrayImpl(String type); /** - * Returns an array with the children of the node, ignoring null nodes + * + * @param type + * @return */ - public Object getChildrenImpl() { - AJoinPoint[] aJoinPointArrayImpl0 = getChildrenArrayImpl(); + public Object getDescendantsImpl(String type) { + AJoinPoint[] aJoinPointArrayImpl0 = getDescendantsArrayImpl(type); Object nativeArray0 = getWeaverEngine().getScriptEngine().toNativeArray(aJoinPointArrayImpl0); return nativeArray0; } /** - * Returns an array with the children of the node, ignoring null nodes + * + * @param type + * @return */ - public final Object getChildren() { + public final Object getDescendants(String type) { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "children", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "getDescendants", Optional.empty(), type); } - Object result = this.getChildrenImpl(); + Object result = this.getDescendantsImpl(type); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "children", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "getDescendants", Optional.ofNullable(result), type); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "children", e); + throw new AttributeException(get_class(), "getDescendants", e); } } /** * - * @param index + * @param type * @return */ - public abstract AJoinPoint getChildImpl(int index); + public abstract AJoinPoint[] getDescendantsAndSelfArrayImpl(String type); /** * - * @param index + * @param type * @return */ - public final Object getChild(int index) { + public Object getDescendantsAndSelfImpl(String type) { + AJoinPoint[] aJoinPointArrayImpl0 = getDescendantsAndSelfArrayImpl(type); + Object nativeArray0 = getWeaverEngine().getScriptEngine().toNativeArray(aJoinPointArrayImpl0); + return nativeArray0; + } + + /** + * + * @param type + * @return + */ + public final Object getDescendantsAndSelf(String type) { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "getChild", Optional.empty(), index); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "getDescendantsAndSelf", Optional.empty(), type); } - AJoinPoint result = this.getChildImpl(index); + Object result = this.getDescendantsAndSelfImpl(type); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "getChild", Optional.ofNullable(result), index); + eventTrigger().triggerAttribute(Stage.END, this, "getDescendantsAndSelf", Optional.ofNullable(result), type); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "getChild", e); + throw new AttributeException(get_class(), "getDescendantsAndSelf", e); } } @@ -600,48 +600,48 @@ public final Object getId() { } /** - * String representation of the ast + * Returns the parent node in the AST, or undefined if it is the root node */ - public abstract String getAstImpl(); + public abstract AJoinPoint getParentImpl(); /** - * String representation of the ast + * Returns the parent node in the AST, or undefined if it is the root node */ - public final Object getAst() { + public final Object getParent() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "ast", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "parent", Optional.empty()); } - String result = this.getAstImpl(); + AJoinPoint result = this.getParentImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "ast", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "parent", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "ast", e); + throw new AttributeException(get_class(), "parent", e); } } /** - * String with the code represented by this node + * Returns the 'program' joinpoint */ - public abstract String getCodeImpl(); + public abstract AProgram getRootImpl(); /** - * String with the code represented by this node + * Returns the 'program' joinpoint */ - public final Object getCode() { + public final Object getRoot() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "code", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "root", Optional.empty()); } - String result = this.getCodeImpl(); + AProgram result = this.getRootImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "code", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "root", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "code", e); + throw new AttributeException(get_class(), "root", e); } } diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabel.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabel.java index 036a3f6..b95e770 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabel.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabel.java @@ -50,6 +50,15 @@ public final Object getName() { } } + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aStatement.getLineImpl(); + } + /** * Get value on attribute nextStatement * @return the attribute's value @@ -69,12 +78,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aStatement.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aStatement.defLineImpl(value); } /** @@ -92,145 +99,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aStatement.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aStatement.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aStatement.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aStatement.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aStatement.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aStatement.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aStatement.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aStatement.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aStatement.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aStatement.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aStatement.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aStatement.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aStatement.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aStatement.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aStatement.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aStatement.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aStatement.getAncestorImpl(type); + public String getIdImpl() { + return this.aStatement.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aStatement.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aStatement.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aStatement.getIdImpl(); + public AProgram getRootImpl() { + return this.aStatement.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aStatement.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aStatement.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aStatement.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aStatement.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aStatement.insertAfterImpl(code); } /** @@ -252,49 +262,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aStatement.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aStatement.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aStatement.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aStatement.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aStatement.replaceWithStringsImpl(node); } /** @@ -325,6 +325,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -339,13 +346,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -401,20 +401,20 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum LabelAttributes { NAME("name"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabelReference.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabelReference.java index 40be7a9..531505f 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabelReference.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALabelReference.java @@ -58,138 +58,148 @@ public void defDeclImpl(ALabel value) { } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -211,49 +221,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -346,17 +346,17 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum LabelReferenceAttributes { DECL("decl"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALineDirective.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALineDirective.java index f5fa7af..5bc815e 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALineDirective.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALineDirective.java @@ -50,6 +50,15 @@ public final Object getValue() { } } + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aStatement.getLineImpl(); + } + /** * Get value on attribute nextStatement * @return the attribute's value @@ -69,12 +78,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aStatement.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aStatement.defLineImpl(value); } /** @@ -92,145 +99,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aStatement.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aStatement.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aStatement.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aStatement.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aStatement.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aStatement.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aStatement.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aStatement.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aStatement.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aStatement.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aStatement.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aStatement.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aStatement.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aStatement.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aStatement.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aStatement.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aStatement.getAncestorImpl(type); + public String getIdImpl() { + return this.aStatement.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aStatement.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aStatement.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aStatement.getIdImpl(); + public AProgram getRootImpl() { + return this.aStatement.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aStatement.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aStatement.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aStatement.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aStatement.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aStatement.insertAfterImpl(code); } /** @@ -252,49 +262,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aStatement.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aStatement.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aStatement.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aStatement.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aStatement.replaceWithStringsImpl(node); } /** @@ -325,6 +325,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -339,13 +346,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -401,20 +401,20 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum LineDirectiveAttributes { VALUE("value"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALiteral.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALiteral.java index 3f2e35f..856f872 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALiteral.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ALiteral.java @@ -24,138 +24,148 @@ public ALiteral(AExpression aExpression){ this.aExpression = aExpression; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -177,49 +187,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -303,17 +303,17 @@ public boolean instanceOf(String joinpointClass) { * */ protected enum LiteralAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AManifest.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AManifest.java index dce2011..3bd927b 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AManifest.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AManifest.java @@ -18,31 +18,6 @@ */ public abstract class AManifest extends ASmaliWeaverJoinPoint { - /** - * Get value on attribute packageName - * @return the attribute's value - */ - public abstract String getPackageNameImpl(); - - /** - * Get value on attribute packageName - * @return the attribute's value - */ - public final Object getPackageName() { - try { - if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "packageName", Optional.empty()); - } - String result = this.getPackageNameImpl(); - if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "packageName", Optional.ofNullable(result)); - } - return result!=null?result:getUndefinedValue(); - } catch(Exception e) { - throw new AttributeException(get_class(), "packageName", e); - } - } - /** * Get value on attribute activities * @return the attribute's value @@ -78,6 +53,31 @@ public final Object getActivities() { } } + /** + * Get value on attribute packageName + * @return the attribute's value + */ + public abstract String getPackageNameImpl(); + + /** + * Get value on attribute packageName + * @return the attribute's value + */ + public final Object getPackageName() { + try { + if(hasListeners()) { + eventTrigger().triggerAttribute(Stage.BEGIN, this, "packageName", Optional.empty()); + } + String result = this.getPackageNameImpl(); + if(hasListeners()) { + eventTrigger().triggerAttribute(Stage.END, this, "packageName", Optional.ofNullable(result)); + } + return result!=null?result:getUndefinedValue(); + } catch(Exception e) { + throw new AttributeException(get_class(), "packageName", e); + } + } + /** * Get value on attribute services * @return the attribute's value @@ -143,8 +143,8 @@ public final void defImpl(String attribute, Object value) { @Override protected final void fillWithAttributes(List attributes) { super.fillWithAttributes(attributes); - attributes.add("packageName"); attributes.add("activities"); + attributes.add("packageName"); attributes.add("services"); } @@ -176,20 +176,20 @@ public final String get_class() { * */ protected enum ManifestAttributes { - PACKAGENAME("packageName"), ACTIVITIES("activities"), + PACKAGENAME("packageName"), SERVICES("services"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodNode.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodNode.java index 1b2ea96..d3d5cf0 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodNode.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodNode.java @@ -19,52 +19,52 @@ public abstract class AMethodNode extends ASmaliWeaverJoinPoint { /** - * Get value on attribute name + * Get value on attribute isStatic * @return the attribute's value */ - public abstract String getNameImpl(); + public abstract Boolean getIsStaticImpl(); /** - * Get value on attribute name + * Get value on attribute isStatic * @return the attribute's value */ - public final Object getName() { + public final Object getIsStatic() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "name", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "isStatic", Optional.empty()); } - String result = this.getNameImpl(); + Boolean result = this.getIsStaticImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "name", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "isStatic", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "name", e); + throw new AttributeException(get_class(), "isStatic", e); } } /** - * Get value on attribute referenceName + * Get value on attribute name * @return the attribute's value */ - public abstract String getReferenceNameImpl(); + public abstract String getNameImpl(); /** - * Get value on attribute referenceName + * Get value on attribute name * @return the attribute's value */ - public final Object getReferenceName() { + public final Object getName() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "referenceName", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "name", Optional.empty()); } - String result = this.getReferenceNameImpl(); + String result = this.getNameImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "referenceName", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "name", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "referenceName", e); + throw new AttributeException(get_class(), "name", e); } } @@ -101,62 +101,62 @@ public void defPrototypeImpl(AMethodPrototype value) { } /** - * Get value on attribute registersDirective + * Get value on attribute referenceName * @return the attribute's value */ - public abstract ARegistersDirective getRegistersDirectiveImpl(); + public abstract String getReferenceNameImpl(); /** - * Get value on attribute registersDirective + * Get value on attribute referenceName * @return the attribute's value */ - public final Object getRegistersDirective() { + public final Object getReferenceName() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "registersDirective", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "referenceName", Optional.empty()); } - ARegistersDirective result = this.getRegistersDirectiveImpl(); + String result = this.getReferenceNameImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "registersDirective", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "referenceName", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "registersDirective", e); + throw new AttributeException(get_class(), "referenceName", e); } } /** - * - */ - public void defRegistersDirectiveImpl(ARegistersDirective value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def registersDirective with type ARegistersDirective not implemented "); - } - - /** - * Get value on attribute isStatic + * Get value on attribute registersDirective * @return the attribute's value */ - public abstract Boolean getIsStaticImpl(); + public abstract ARegistersDirective getRegistersDirectiveImpl(); /** - * Get value on attribute isStatic + * Get value on attribute registersDirective * @return the attribute's value */ - public final Object getIsStatic() { + public final Object getRegistersDirective() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "isStatic", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "registersDirective", Optional.empty()); } - Boolean result = this.getIsStaticImpl(); + ARegistersDirective result = this.getRegistersDirectiveImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "isStatic", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "registersDirective", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "isStatic", e); + throw new AttributeException(get_class(), "registersDirective", e); } } + /** + * + */ + public void defRegistersDirectiveImpl(ARegistersDirective value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def registersDirective with type ARegistersDirective not implemented "); + } + /** * */ @@ -201,11 +201,11 @@ public final void defImpl(String attribute, Object value) { @Override protected final void fillWithAttributes(List attributes) { super.fillWithAttributes(attributes); + attributes.add("isStatic"); attributes.add("name"); - attributes.add("referenceName"); attributes.add("prototype"); + attributes.add("referenceName"); attributes.add("registersDirective"); - attributes.add("isStatic"); } /** @@ -236,22 +236,22 @@ public final String get_class() { * */ protected enum MethodNodeAttributes { + ISSTATIC("isStatic"), NAME("name"), - REFERENCENAME("referenceName"), PROTOTYPE("prototype"), + REFERENCENAME("referenceName"), REGISTERSDIRECTIVE("registersDirective"), - ISSTATIC("isStatic"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodPrototype.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodPrototype.java index 686fa05..8558418 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodPrototype.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodPrototype.java @@ -94,138 +94,148 @@ public void defReturnTypeImpl(ATypeDescriptor value) { } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aLiteral.getParentImpl(); + public String getAstImpl() { + return this.aLiteral.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aLiteral.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aLiteral.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aLiteral.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aLiteral.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aLiteral.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aLiteral.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aLiteral.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aLiteral.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aLiteral.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aLiteral.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aLiteral.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aLiteral.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aLiteral.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aLiteral.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aLiteral.getChildImpl(index); + public String getIdImpl() { + return this.aLiteral.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aLiteral.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aLiteral.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aLiteral.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aLiteral.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aLiteral.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aLiteral.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aLiteral.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aLiteral.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aLiteral.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aLiteral.insertAfterImpl(code); } /** @@ -247,49 +257,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aLiteral.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aLiteral.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aLiteral.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aLiteral.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aLiteral.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aLiteral.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aLiteral.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aLiteral.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aLiteral.replaceWithStringsImpl(node); } /** @@ -384,17 +384,17 @@ public final boolean instanceOf(String joinpointClass) { protected enum MethodPrototypeAttributes { PARAMETERS("parameters"), RETURNTYPE("returnType"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodReference.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodReference.java index 142a648..c97c3a3 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodReference.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AMethodReference.java @@ -26,62 +26,62 @@ public AMethodReference(AExpression aExpression){ this.aExpression = aExpression; } /** - * Get value on attribute parentClassDescriptor + * Get value on attribute name * @return the attribute's value */ - public abstract ATypeDescriptor getParentClassDescriptorImpl(); + public abstract String getNameImpl(); /** - * Get value on attribute parentClassDescriptor + * Get value on attribute name * @return the attribute's value */ - public final Object getParentClassDescriptor() { + public final Object getName() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "parentClassDescriptor", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "name", Optional.empty()); } - ATypeDescriptor result = this.getParentClassDescriptorImpl(); + String result = this.getNameImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "parentClassDescriptor", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "name", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "parentClassDescriptor", e); + throw new AttributeException(get_class(), "name", e); } } /** - * - */ - public void defParentClassDescriptorImpl(ATypeDescriptor value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def parentClassDescriptor with type ATypeDescriptor not implemented "); - } - - /** - * Get value on attribute name + * Get value on attribute parentClassDescriptor * @return the attribute's value */ - public abstract String getNameImpl(); + public abstract ATypeDescriptor getParentClassDescriptorImpl(); /** - * Get value on attribute name + * Get value on attribute parentClassDescriptor * @return the attribute's value */ - public final Object getName() { + public final Object getParentClassDescriptor() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "name", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "parentClassDescriptor", Optional.empty()); } - String result = this.getNameImpl(); + ATypeDescriptor result = this.getParentClassDescriptorImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "name", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "parentClassDescriptor", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "name", e); + throw new AttributeException(get_class(), "parentClassDescriptor", e); } } + /** + * + */ + public void defParentClassDescriptorImpl(ATypeDescriptor value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def parentClassDescriptor with type ATypeDescriptor not implemented "); + } + /** * Get value on attribute prototype * @return the attribute's value @@ -115,138 +115,148 @@ public void defPrototypeImpl(AMethodPrototype value) { } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -268,49 +278,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -365,8 +365,8 @@ public final void defImpl(String attribute, Object value) { @Override protected final void fillWithAttributes(List attributes) { this.aExpression.fillWithAttributes(attributes); - attributes.add("parentClassDescriptor"); attributes.add("name"); + attributes.add("parentClassDescriptor"); attributes.add("prototype"); } @@ -411,20 +411,20 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum MethodReferenceAttributes { - PARENTCLASSDESCRIPTOR("parentClassDescriptor"), NAME("name"), + PARENTCLASSDESCRIPTOR("parentClassDescriptor"), PROTOTYPE("prototype"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APackedSwitch.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APackedSwitch.java index fc58c49..f3b3359 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APackedSwitch.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APackedSwitch.java @@ -23,6 +23,15 @@ public abstract class APackedSwitch extends AStatement { public APackedSwitch(AStatement aStatement){ this.aStatement = aStatement; } + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aStatement.getLineImpl(); + } + /** * Get value on attribute nextStatement * @return the attribute's value @@ -42,12 +51,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aStatement.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aStatement.defLineImpl(value); } /** @@ -65,145 +72,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aStatement.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aStatement.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aStatement.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aStatement.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aStatement.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aStatement.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aStatement.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aStatement.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aStatement.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aStatement.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aStatement.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aStatement.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aStatement.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aStatement.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aStatement.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aStatement.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aStatement.getAncestorImpl(type); + public String getIdImpl() { + return this.aStatement.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aStatement.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aStatement.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aStatement.getIdImpl(); + public AProgram getRootImpl() { + return this.aStatement.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aStatement.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aStatement.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aStatement.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aStatement.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aStatement.insertAfterImpl(code); } /** @@ -225,49 +235,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aStatement.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aStatement.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aStatement.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aStatement.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aStatement.replaceWithStringsImpl(node); } /** @@ -298,6 +298,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -312,13 +319,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -372,20 +372,20 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum PackedSwitchAttributes { + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APlaceholder.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APlaceholder.java index 47dbd0e..f978889 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APlaceholder.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APlaceholder.java @@ -105,17 +105,17 @@ public final String get_class() { */ protected enum PlaceholderAttributes { KIND("kind"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveLiteral.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveLiteral.java index 654d448..04f235b 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveLiteral.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveLiteral.java @@ -54,138 +54,148 @@ public final Object setValue(String value) { } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aLiteral.getParentImpl(); + public String getAstImpl() { + return this.aLiteral.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aLiteral.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aLiteral.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aLiteral.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aLiteral.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aLiteral.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aLiteral.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aLiteral.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aLiteral.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aLiteral.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aLiteral.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aLiteral.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aLiteral.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aLiteral.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aLiteral.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aLiteral.getChildImpl(index); + public String getIdImpl() { + return this.aLiteral.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aLiteral.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aLiteral.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aLiteral.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aLiteral.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aLiteral.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aLiteral.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aLiteral.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aLiteral.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aLiteral.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aLiteral.insertAfterImpl(code); } /** @@ -207,49 +217,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aLiteral.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aLiteral.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aLiteral.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aLiteral.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aLiteral.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aLiteral.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aLiteral.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aLiteral.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aLiteral.replaceWithStringsImpl(node); } /** @@ -335,17 +335,17 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum PrimitiveLiteralAttributes { SETVALUE("setValue"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveType.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveType.java index 75a582b..1c5c781 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveType.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/APrimitiveType.java @@ -25,138 +25,148 @@ public APrimitiveType(ATypeDescriptor aTypeDescriptor){ this.aTypeDescriptor = aTypeDescriptor; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aTypeDescriptor.getParentImpl(); + public String getAstImpl() { + return this.aTypeDescriptor.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aTypeDescriptor.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aTypeDescriptor.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aTypeDescriptor.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aTypeDescriptor.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aTypeDescriptor.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aTypeDescriptor.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aTypeDescriptor.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aTypeDescriptor.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aTypeDescriptor.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aTypeDescriptor.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aTypeDescriptor.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aTypeDescriptor.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aTypeDescriptor.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aTypeDescriptor.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aTypeDescriptor.getChildImpl(index); + public String getIdImpl() { + return this.aTypeDescriptor.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aTypeDescriptor.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aTypeDescriptor.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aTypeDescriptor.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aTypeDescriptor.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aTypeDescriptor.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aTypeDescriptor.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aTypeDescriptor.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aTypeDescriptor.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aTypeDescriptor.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aTypeDescriptor.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aTypeDescriptor.insertAfterImpl(code); } /** @@ -178,49 +188,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aTypeDescriptor.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aTypeDescriptor.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aTypeDescriptor.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aTypeDescriptor.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aTypeDescriptor.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aTypeDescriptor.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aTypeDescriptor.replaceWithStringsImpl(node); } /** @@ -304,17 +304,17 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum PrimitiveTypeAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AProgram.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AProgram.java index 30827c3..cca3af2 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AProgram.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AProgram.java @@ -19,37 +19,32 @@ public abstract class AProgram extends ASmaliWeaverJoinPoint { /** - * Get value on attribute manifest - * @return the attribute's value + * + * @param outputName + * @return */ - public abstract AManifest getManifestImpl(); + public abstract Void buildApkImpl(String outputName); /** - * Get value on attribute manifest - * @return the attribute's value + * + * @param outputName + * @return */ - public final Object getManifest() { + public final Object buildApk(String outputName) { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "manifest", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "buildApk", Optional.empty(), outputName); } - AManifest result = this.getManifestImpl(); + Void result = this.buildApkImpl(outputName); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "manifest", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "buildApk", Optional.ofNullable(result), outputName); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "manifest", e); + throw new AttributeException(get_class(), "buildApk", e); } } - /** - * - */ - public void defManifestImpl(AManifest value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def manifest with type AManifest not implemented "); - } - /** * Get value on attribute classes * @return the attribute's value @@ -86,32 +81,37 @@ public final Object getClasses() { } /** - * - * @param outputName - * @return + * Get value on attribute manifest + * @return the attribute's value */ - public abstract Void buildApkImpl(String outputName); + public abstract AManifest getManifestImpl(); /** - * - * @param outputName - * @return + * Get value on attribute manifest + * @return the attribute's value */ - public final Object buildApk(String outputName) { + public final Object getManifest() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "buildApk", Optional.empty(), outputName); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "manifest", Optional.empty()); } - Void result = this.buildApkImpl(outputName); + AManifest result = this.getManifestImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "buildApk", Optional.ofNullable(result), outputName); + eventTrigger().triggerAttribute(Stage.END, this, "manifest", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "buildApk", e); + throw new AttributeException(get_class(), "manifest", e); } } + /** + * + */ + public void defManifestImpl(AManifest value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def manifest with type AManifest not implemented "); + } + /** * */ @@ -149,9 +149,9 @@ public final void defImpl(String attribute, Object value) { @Override protected final void fillWithAttributes(List attributes) { super.fillWithAttributes(attributes); - attributes.add("manifest"); - attributes.add("classes"); attributes.add("buildApk"); + attributes.add("classes"); + attributes.add("manifest"); } /** @@ -182,20 +182,20 @@ public final String get_class() { * */ protected enum ProgramAttributes { - MANIFEST("manifest"), - CLASSES("classes"), BUILDAPK("buildApk"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), + CLASSES("classes"), + MANIFEST("manifest"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterList.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterList.java index 9517d59..b79e609 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterList.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterList.java @@ -24,138 +24,148 @@ public ARegisterList(AExpression aExpression){ this.aExpression = aExpression; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -177,49 +187,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -303,17 +303,17 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum RegisterListAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterRange.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterRange.java index c9dcd72..7c0474b 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterRange.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterRange.java @@ -24,138 +24,148 @@ public ARegisterRange(AExpression aExpression){ this.aExpression = aExpression; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -177,49 +187,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -303,17 +303,17 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum RegisterRangeAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterReference.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterReference.java index bc1cf79..4ffa9e0 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterReference.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegisterReference.java @@ -24,138 +24,148 @@ public ARegisterReference(AExpression aExpression){ this.aExpression = aExpression; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -177,49 +187,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -303,17 +303,17 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum RegisterReferenceAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegistersDirective.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegistersDirective.java index 20149e5..2152514 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegistersDirective.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ARegistersDirective.java @@ -82,6 +82,15 @@ public void defValueImpl(APrimitiveLiteral value) { throw new UnsupportedOperationException("Join point "+get_class()+": Action def value with type APrimitiveLiteral not implemented "); } + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aStatement.getLineImpl(); + } + /** * Get value on attribute nextStatement * @return the attribute's value @@ -101,12 +110,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aStatement.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aStatement.defLineImpl(value); } /** @@ -124,145 +131,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aStatement.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aStatement.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aStatement.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aStatement.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aStatement.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aStatement.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aStatement.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aStatement.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aStatement.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aStatement.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aStatement.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aStatement.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aStatement.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aStatement.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aStatement.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aStatement.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aStatement.getAncestorImpl(type); + public String getIdImpl() { + return this.aStatement.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aStatement.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aStatement.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aStatement.getIdImpl(); + public AProgram getRootImpl() { + return this.aStatement.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aStatement.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aStatement.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aStatement.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aStatement.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aStatement.insertAfterImpl(code); } /** @@ -284,49 +294,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aStatement.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aStatement.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aStatement.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aStatement.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aStatement.replaceWithStringsImpl(node); } /** @@ -364,6 +364,13 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -378,13 +385,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -442,20 +442,20 @@ public final boolean instanceOf(String joinpointClass) { protected enum RegistersDirectiveAttributes { TYPE("type"), VALUE("value"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AResourceNode.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AResourceNode.java index 72a20d5..f90c1f6 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AResourceNode.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AResourceNode.java @@ -76,17 +76,17 @@ public final String get_class() { * */ protected enum ResourceNodeAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AReturnStatement.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AReturnStatement.java index f1ad643..dd1e7e5 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AReturnStatement.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AReturnStatement.java @@ -34,12 +34,12 @@ public Boolean getCanThrowImpl() { } /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ @Override - public Boolean getSetsResultImpl() { - return this.aInstruction.getSetsResultImpl(); + public String getOpCodeNameImpl() { + return this.aInstruction.getOpCodeNameImpl(); } /** @@ -52,12 +52,21 @@ public Boolean getSetsRegisterImpl() { } /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ @Override - public String getOpCodeNameImpl() { - return this.aInstruction.getOpCodeNameImpl(); + public Boolean getSetsResultImpl() { + return this.aInstruction.getSetsResultImpl(); + } + + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aInstruction.getLineImpl(); } /** @@ -79,12 +88,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aInstruction.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aInstruction.defLineImpl(value); } /** @@ -102,145 +109,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aInstruction.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aInstruction.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aInstruction.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aInstruction.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aInstruction.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aInstruction.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aInstruction.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aInstruction.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aInstruction.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aInstruction.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aInstruction.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aInstruction.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aInstruction.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aInstruction.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aInstruction.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aInstruction.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aInstruction.getAncestorImpl(type); + public String getIdImpl() { + return this.aInstruction.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aInstruction.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aInstruction.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aInstruction.getIdImpl(); + public AProgram getRootImpl() { + return this.aInstruction.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aInstruction.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aInstruction.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aInstruction.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aInstruction.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aInstruction.insertAfterImpl(code); } /** @@ -262,49 +272,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aInstruction.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aInstruction.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aInstruction.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aInstruction.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aInstruction.replaceWithStringsImpl(node); } /** @@ -335,6 +335,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -349,13 +356,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -410,23 +410,23 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum ReturnStatementAttributes { CANTHROW("canThrow"), - SETSRESULT("setsResult"), - SETSREGISTER("setsRegister"), OPCODENAME("opCodeName"), + SETSREGISTER("setsRegister"), + SETSRESULT("setsResult"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitch.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitch.java index 8c38a29..beda215 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitch.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitch.java @@ -23,6 +23,15 @@ public abstract class ASparseSwitch extends AStatement { public ASparseSwitch(AStatement aStatement){ this.aStatement = aStatement; } + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aStatement.getLineImpl(); + } + /** * Get value on attribute nextStatement * @return the attribute's value @@ -42,12 +51,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aStatement.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aStatement.defLineImpl(value); } /** @@ -65,145 +72,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aStatement.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aStatement.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aStatement.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aStatement.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aStatement.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aStatement.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aStatement.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aStatement.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aStatement.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aStatement.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aStatement.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aStatement.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aStatement.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aStatement.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aStatement.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aStatement.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aStatement.getAncestorImpl(type); + public String getIdImpl() { + return this.aStatement.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aStatement.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aStatement.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aStatement.getIdImpl(); + public AProgram getRootImpl() { + return this.aStatement.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aStatement.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aStatement.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aStatement.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aStatement.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aStatement.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aStatement.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aStatement.insertAfterImpl(code); } /** @@ -225,49 +235,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aStatement.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aStatement.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aStatement.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aStatement.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aStatement.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aStatement.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aStatement.replaceWithStringsImpl(node); } /** @@ -298,6 +298,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -312,13 +319,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -372,20 +372,20 @@ public final boolean instanceOf(String joinpointClass) { * */ protected enum SparseSwitchAttributes { + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitchElement.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitchElement.java index c651b24..75e242d 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitchElement.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASparseSwitchElement.java @@ -58,138 +58,148 @@ public void defLabelImpl(ALabelReference value) { } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aExpression.getParentImpl(); + public String getAstImpl() { + return this.aExpression.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aExpression.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aExpression.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aExpression.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aExpression.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aExpression.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aExpression.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aExpression.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aExpression.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aExpression.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aExpression.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aExpression.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aExpression.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aExpression.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aExpression.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aExpression.getChildImpl(index); + public String getIdImpl() { + return this.aExpression.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aExpression.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aExpression.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aExpression.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aExpression.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aExpression.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aExpression.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aExpression.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aExpression.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aExpression.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aExpression.insertAfterImpl(code); } /** @@ -211,49 +221,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aExpression.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aExpression.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aExpression.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aExpression.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aExpression.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aExpression.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aExpression.replaceWithStringsImpl(node); } /** @@ -346,17 +346,17 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum SparseSwitchElementAttributes { LABEL("label"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AStatement.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AStatement.java index b60ebca..d653b37 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AStatement.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AStatement.java @@ -19,99 +19,99 @@ public abstract class AStatement extends ASmaliWeaverJoinPoint { /** - * Get value on attribute nextStatement + * Get value on attribute line * @return the attribute's value */ - public abstract AStatement getNextStatementImpl(); + public abstract ALineDirective getLineImpl(); /** - * Get value on attribute nextStatement + * Get value on attribute line * @return the attribute's value */ - public final Object getNextStatement() { + public final Object getLine() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "nextStatement", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "line", Optional.empty()); } - AStatement result = this.getNextStatementImpl(); + ALineDirective result = this.getLineImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "nextStatement", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "line", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "nextStatement", e); + throw new AttributeException(get_class(), "line", e); } } /** * */ - public void defNextStatementImpl(AStatement value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def nextStatement with type AStatement not implemented "); + public void defLineImpl(ALineDirective value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def line with type ALineDirective not implemented "); } /** - * Get value on attribute prevStatement + * Get value on attribute nextStatement * @return the attribute's value */ - public abstract AStatement getPrevStatementImpl(); + public abstract AStatement getNextStatementImpl(); /** - * Get value on attribute prevStatement + * Get value on attribute nextStatement * @return the attribute's value */ - public final Object getPrevStatement() { + public final Object getNextStatement() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "prevStatement", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "nextStatement", Optional.empty()); } - AStatement result = this.getPrevStatementImpl(); + AStatement result = this.getNextStatementImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "prevStatement", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "nextStatement", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "prevStatement", e); + throw new AttributeException(get_class(), "nextStatement", e); } } /** * */ - public void defPrevStatementImpl(AStatement value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def prevStatement with type AStatement not implemented "); + public void defNextStatementImpl(AStatement value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def nextStatement with type AStatement not implemented "); } /** - * Get value on attribute line + * Get value on attribute prevStatement * @return the attribute's value */ - public abstract ALineDirective getLineImpl(); + public abstract AStatement getPrevStatementImpl(); /** - * Get value on attribute line + * Get value on attribute prevStatement * @return the attribute's value */ - public final Object getLine() { + public final Object getPrevStatement() { try { if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.BEGIN, this, "line", Optional.empty()); + eventTrigger().triggerAttribute(Stage.BEGIN, this, "prevStatement", Optional.empty()); } - ALineDirective result = this.getLineImpl(); + AStatement result = this.getPrevStatementImpl(); if(hasListeners()) { - eventTrigger().triggerAttribute(Stage.END, this, "line", Optional.ofNullable(result)); + eventTrigger().triggerAttribute(Stage.END, this, "prevStatement", Optional.ofNullable(result)); } return result!=null?result:getUndefinedValue(); } catch(Exception e) { - throw new AttributeException(get_class(), "line", e); + throw new AttributeException(get_class(), "prevStatement", e); } } /** * */ - public void defLineImpl(ALineDirective value) { - throw new UnsupportedOperationException("Join point "+get_class()+": Action def line with type ALineDirective not implemented "); + public void defPrevStatementImpl(AStatement value) { + throw new UnsupportedOperationException("Join point "+get_class()+": Action def prevStatement with type AStatement not implemented "); } /** @@ -134,6 +134,13 @@ public List select(String selectName) { @Override public void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -148,13 +155,6 @@ public void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -165,9 +165,9 @@ public void defImpl(String attribute, Object value) { @Override protected void fillWithAttributes(List attributes) { super.fillWithAttributes(attributes); + attributes.add("line"); attributes.add("nextStatement"); attributes.add("prevStatement"); - attributes.add("line"); } /** @@ -198,20 +198,20 @@ public String get_class() { * */ protected enum StatementAttributes { + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASwitch.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASwitch.java index 7342e91..008f8b4 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASwitch.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ASwitch.java @@ -34,12 +34,12 @@ public Boolean getCanThrowImpl() { } /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ @Override - public Boolean getSetsResultImpl() { - return this.aInstruction.getSetsResultImpl(); + public String getOpCodeNameImpl() { + return this.aInstruction.getOpCodeNameImpl(); } /** @@ -52,12 +52,21 @@ public Boolean getSetsRegisterImpl() { } /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ @Override - public String getOpCodeNameImpl() { - return this.aInstruction.getOpCodeNameImpl(); + public Boolean getSetsResultImpl() { + return this.aInstruction.getSetsResultImpl(); + } + + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aInstruction.getLineImpl(); } /** @@ -79,12 +88,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aInstruction.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aInstruction.defLineImpl(value); } /** @@ -102,145 +109,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aInstruction.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aInstruction.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aInstruction.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aInstruction.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aInstruction.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aInstruction.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aInstruction.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aInstruction.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aInstruction.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aInstruction.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aInstruction.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aInstruction.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aInstruction.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aInstruction.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aInstruction.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aInstruction.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aInstruction.getAncestorImpl(type); + public String getIdImpl() { + return this.aInstruction.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aInstruction.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aInstruction.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aInstruction.getIdImpl(); + public AProgram getRootImpl() { + return this.aInstruction.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aInstruction.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aInstruction.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aInstruction.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aInstruction.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aInstruction.insertAfterImpl(code); } /** @@ -262,49 +272,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aInstruction.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aInstruction.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aInstruction.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aInstruction.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aInstruction.replaceWithStringsImpl(node); } /** @@ -335,6 +335,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -349,13 +356,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -410,23 +410,23 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum SwitchAttributes { CANTHROW("canThrow"), - SETSRESULT("setsResult"), - SETSREGISTER("setsRegister"), OPCODENAME("opCodeName"), + SETSREGISTER("setsRegister"), + SETSRESULT("setsResult"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AThrowStatement.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AThrowStatement.java index d428f76..593c535 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AThrowStatement.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/AThrowStatement.java @@ -34,12 +34,12 @@ public Boolean getCanThrowImpl() { } /** - * Get value on attribute setsResult + * Get value on attribute opCodeName * @return the attribute's value */ @Override - public Boolean getSetsResultImpl() { - return this.aInstruction.getSetsResultImpl(); + public String getOpCodeNameImpl() { + return this.aInstruction.getOpCodeNameImpl(); } /** @@ -52,12 +52,21 @@ public Boolean getSetsRegisterImpl() { } /** - * Get value on attribute opCodeName + * Get value on attribute setsResult * @return the attribute's value */ @Override - public String getOpCodeNameImpl() { - return this.aInstruction.getOpCodeNameImpl(); + public Boolean getSetsResultImpl() { + return this.aInstruction.getSetsResultImpl(); + } + + /** + * Get value on attribute line + * @return the attribute's value + */ + @Override + public ALineDirective getLineImpl() { + return this.aInstruction.getLineImpl(); } /** @@ -79,12 +88,10 @@ public AStatement getPrevStatementImpl() { } /** - * Get value on attribute line - * @return the attribute's value + * */ - @Override - public ALineDirective getLineImpl() { - return this.aInstruction.getLineImpl(); + public void defLineImpl(ALineDirective value) { + this.aInstruction.defLineImpl(value); } /** @@ -102,145 +109,148 @@ public void defPrevStatementImpl(AStatement value) { } /** - * + * Get value on attribute ast + * @return the attribute's value */ - public void defLineImpl(ALineDirective value) { - this.aInstruction.defLineImpl(value); + @Override + public String getAstImpl() { + return this.aInstruction.getAstImpl(); } /** - * Get value on attribute parent + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aInstruction.getParentImpl(); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aInstruction.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aInstruction.getDescendantsArrayImpl(type); + public String getCodeImpl() { + return this.aInstruction.getCodeImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aInstruction.getDescendantsAndSelfArrayImpl(type); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aInstruction.getDescendantsArrayImpl(); } /** - * Get value on attribute ast + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aInstruction.getAstImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aInstruction.getAncestorImpl(type); } /** - * Get value on attribute code + * Get value on attribute getChild * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aInstruction.getCodeImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aInstruction.getChildImpl(index); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aInstruction.getChildrenArrayImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aInstruction.getDescendantsArrayImpl(type); } /** - * Get value on attribute root + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aInstruction.getRootImpl(); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aInstruction.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aInstruction.getAncestorImpl(type); + public String getIdImpl() { + return this.aInstruction.getIdImpl(); } /** - * Get value on attribute getChild + * Get value on attribute parent * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aInstruction.getChildImpl(index); + public AJoinPoint getParentImpl() { + return this.aInstruction.getParentImpl(); } /** - * Get value on attribute id + * Get value on attribute root * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aInstruction.getIdImpl(); + public AProgram getRootImpl() { + return this.aInstruction.getRootImpl(); } /** - * Get value on attribute descendantsArrayImpl - * @return the attribute's value + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aInstruction.getDescendantsArrayImpl(); + public AJoinPoint detachImpl() { + return this.aInstruction.detachImpl(); } /** - * Replaces this node with the given node - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aInstruction.insertImpl(position, code); } /** - * Overload which accepts a list of join points + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aInstruction.replaceWithImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aInstruction.insertAfterImpl(node); } /** - * Overload which accepts a list of strings - * @param node + * Overload which accepts a string + * @param code */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aInstruction.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(String code) { + return this.aInstruction.insertAfterImpl(code); } /** @@ -262,49 +272,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aInstruction.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aInstruction.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aInstruction.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aInstruction.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aInstruction.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aInstruction.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aInstruction.replaceWithStringsImpl(node); } /** @@ -335,6 +335,13 @@ public final List select(String selectName) { @Override public final void defImpl(String attribute, Object value) { switch(attribute){ + case "line": { + if(value instanceof ALineDirective){ + this.defLineImpl((ALineDirective)value); + return; + } + this.unsupportedTypeForDef(attribute, value); + } case "nextStatement": { if(value instanceof AStatement){ this.defNextStatementImpl((AStatement)value); @@ -349,13 +356,6 @@ public final void defImpl(String attribute, Object value) { } this.unsupportedTypeForDef(attribute, value); } - case "line": { - if(value instanceof ALineDirective){ - this.defLineImpl((ALineDirective)value); - return; - } - this.unsupportedTypeForDef(attribute, value); - } default: throw new UnsupportedOperationException("Join point "+get_class()+": attribute '"+attribute+"' cannot be defined"); } } @@ -410,23 +410,23 @@ public final boolean instanceOf(String joinpointClass) { */ protected enum ThrowStatementAttributes { CANTHROW("canThrow"), - SETSRESULT("setsResult"), - SETSREGISTER("setsRegister"), OPCODENAME("opCodeName"), + SETSREGISTER("setsRegister"), + SETSRESULT("setsResult"), + LINE("line"), NEXTSTATEMENT("nextStatement"), PREVSTATEMENT("prevStatement"), - LINE("line"), - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ATypeDescriptor.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ATypeDescriptor.java index ca81baa..8d4dbff 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ATypeDescriptor.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/joinpoints/ATypeDescriptor.java @@ -25,138 +25,148 @@ public ATypeDescriptor(ALiteral aLiteral){ this.aLiteral = aLiteral; } /** - * Get value on attribute parent + * Get value on attribute ast * @return the attribute's value */ @Override - public AJoinPoint getParentImpl() { - return this.aLiteral.getParentImpl(); + public String getAstImpl() { + return this.aLiteral.getAstImpl(); } /** - * Get value on attribute getDescendantsArrayImpl + * Get value on attribute childrenArrayImpl * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl(String type) { - return this.aLiteral.getDescendantsArrayImpl(type); + public AJoinPoint[] getChildrenArrayImpl() { + return this.aLiteral.getChildrenArrayImpl(); } /** - * Get value on attribute getDescendantsAndSelfArrayImpl + * Get value on attribute code * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { - return this.aLiteral.getDescendantsAndSelfArrayImpl(type); + public String getCodeImpl() { + return this.aLiteral.getCodeImpl(); } /** - * Get value on attribute ast + * Get value on attribute descendantsArrayImpl * @return the attribute's value */ @Override - public String getAstImpl() { - return this.aLiteral.getAstImpl(); + public AJoinPoint[] getDescendantsArrayImpl() { + return this.aLiteral.getDescendantsArrayImpl(); } /** - * Get value on attribute code + * Get value on attribute getAncestor * @return the attribute's value */ @Override - public String getCodeImpl() { - return this.aLiteral.getCodeImpl(); + public AJoinPoint getAncestorImpl(String type) { + return this.aLiteral.getAncestorImpl(type); } /** - * Get value on attribute childrenArrayImpl + * Get value on attribute getChild * @return the attribute's value */ @Override - public AJoinPoint[] getChildrenArrayImpl() { - return this.aLiteral.getChildrenArrayImpl(); + public AJoinPoint getChildImpl(int index) { + return this.aLiteral.getChildImpl(index); } /** - * Get value on attribute root + * Get value on attribute getDescendantsArrayImpl * @return the attribute's value */ @Override - public AProgram getRootImpl() { - return this.aLiteral.getRootImpl(); + public AJoinPoint[] getDescendantsArrayImpl(String type) { + return this.aLiteral.getDescendantsArrayImpl(type); } /** - * Get value on attribute getAncestor + * Get value on attribute getDescendantsAndSelfArrayImpl * @return the attribute's value */ @Override - public AJoinPoint getAncestorImpl(String type) { - return this.aLiteral.getAncestorImpl(type); + public AJoinPoint[] getDescendantsAndSelfArrayImpl(String type) { + return this.aLiteral.getDescendantsAndSelfArrayImpl(type); } /** - * Get value on attribute getChild + * Get value on attribute id * @return the attribute's value */ @Override - public AJoinPoint getChildImpl(int index) { - return this.aLiteral.getChildImpl(index); + public String getIdImpl() { + return this.aLiteral.getIdImpl(); } /** - * Get value on attribute id + * Get value on attribute parent * @return the attribute's value */ @Override - public String getIdImpl() { - return this.aLiteral.getIdImpl(); + public AJoinPoint getParentImpl() { + return this.aLiteral.getParentImpl(); } /** - * Get value on attribute descendantsArrayImpl + * Get value on attribute root * @return the attribute's value */ @Override - public AJoinPoint[] getDescendantsArrayImpl() { - return this.aLiteral.getDescendantsArrayImpl(); + public AProgram getRootImpl() { + return this.aLiteral.getRootImpl(); } /** - * Replaces this node with the given node - * @param node + * Removes the node associated to this joinpoint from the AST */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint detachImpl() { + return this.aLiteral.detachImpl(); } /** - * Overload which accepts a string - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(String node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, String code) { + return this.aLiteral.insertImpl(position, code); } /** - * Overload which accepts a list of join points - * @param node + * + * @param position + * @param code */ @Override - public AJoinPoint replaceWithImpl(AJoinPoint[] node) { - return this.aLiteral.replaceWithImpl(node); + public AJoinPoint[] insertImpl(String position, JoinPoint code) { + return this.aLiteral.insertImpl(position, code); } /** - * Overload which accepts a list of strings + * Inserts the given join point after this join point * @param node */ @Override - public AJoinPoint replaceWithStringsImpl(String[] node) { - return this.aLiteral.replaceWithStringsImpl(node); + public AJoinPoint insertAfterImpl(AJoinPoint node) { + return this.aLiteral.insertAfterImpl(node); + } + + /** + * Overload which accepts a string + * @param code + */ + @Override + public AJoinPoint insertAfterImpl(String code) { + return this.aLiteral.insertAfterImpl(code); } /** @@ -178,49 +188,39 @@ public AJoinPoint insertBeforeImpl(String node) { } /** - * Inserts the given join point after this join point + * Replaces this node with the given node * @param node */ @Override - public AJoinPoint insertAfterImpl(AJoinPoint node) { - return this.aLiteral.insertAfterImpl(node); + public AJoinPoint replaceWithImpl(AJoinPoint node) { + return this.aLiteral.replaceWithImpl(node); } /** * Overload which accepts a string - * @param code - */ - @Override - public AJoinPoint insertAfterImpl(String code) { - return this.aLiteral.insertAfterImpl(code); - } - - /** - * Removes the node associated to this joinpoint from the AST + * @param node */ @Override - public AJoinPoint detachImpl() { - return this.aLiteral.detachImpl(); + public AJoinPoint replaceWithImpl(String node) { + return this.aLiteral.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of join points + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, String code) { - return this.aLiteral.insertImpl(position, code); + public AJoinPoint replaceWithImpl(AJoinPoint[] node) { + return this.aLiteral.replaceWithImpl(node); } /** - * - * @param position - * @param code + * Overload which accepts a list of strings + * @param node */ @Override - public AJoinPoint[] insertImpl(String position, JoinPoint code) { - return this.aLiteral.insertImpl(position, code); + public AJoinPoint replaceWithStringsImpl(String[] node) { + return this.aLiteral.replaceWithStringsImpl(node); } /** @@ -304,17 +304,17 @@ public boolean instanceOf(String joinpointClass) { * */ protected enum TypeDescriptorAttributes { - PARENT("parent"), - GETDESCENDANTS("getDescendants"), - GETDESCENDANTSANDSELF("getDescendantsAndSelf"), AST("ast"), - CODE("code"), CHILDREN("children"), - ROOT("root"), + CODE("code"), + DESCENDANTS("descendants"), GETANCESTOR("getAncestor"), GETCHILD("getChild"), + GETDESCENDANTS("getDescendants"), + GETDESCENDANTSANDSELF("getDescendantsAndSelf"), ID("id"), - DESCENDANTS("descendants"); + PARENT("parent"), + ROOT("root"); private String name; /** diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java index 7e7218e..b3253f8 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java @@ -7,8 +7,8 @@ /** * Abstract Weaver Implementation for SmaliWeaver
- * Since the generated abstract classes are always overwritten, their implementation should be done by extending those abstract classes with user-defined classes.
- * The abstract class {@link pt.up.fe.specs.alpakka.weaver.abstracts.ASmaliWeaverJoinPoint} can be used to add user-defined methods and fields which the user intends to add for all join points and are not intended to be used in LARA aspects. +Since the generated abstract classes are always overwritten, their implementation should be done by extending those abstract classes with user-defined classes.
+The abstract class {@link pt.up.fe.specs.alpakka.weaver.abstracts.ASmaliWeaverJoinPoint} contains attributes and actions common to all join points. * The implementation of the abstract methods is mandatory! * @author Lara C. */ From 2c7c49bf5d77573a5eaa2436f92e998a30291369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Bispo?= Date: Thu, 2 Jan 2025 15:25:06 +0000 Subject: [PATCH 3/3] [AlpakkaWeaver] Automatic changes to code --- .../src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java | 8 ++++---- .../alpakka/weaver/abstracts/weaver/ASmaliWeaver.java | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java index fa9898b..090ebb5 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/SmaliWeaver.java @@ -5,7 +5,7 @@ import org.lara.interpreter.weaver.interf.JoinPoint; import org.lara.interpreter.weaver.options.WeaverOption; import org.lara.interpreter.weaver.utils.LaraResourceProvider; -import org.lara.language.specification.dsl.LanguageSpecificationV2; +import org.lara.language.specification.dsl.LanguageSpecification; import org.suikasoft.jOptions.Interfaces.DataStore; import pt.up.fe.specs.alpakka.ast.App; import pt.up.fe.specs.alpakka.ast.SmaliNode; @@ -41,8 +41,8 @@ public static String getWovenCodeFoldername() { /** * @return */ - public static LanguageSpecificationV2 buildLanguageSpecification() { - return LanguageSpecificationV2.newInstance(() -> "smali/weaverspecs/joinPointModel.xml", + public static LanguageSpecification buildLanguageSpecification() { + return LanguageSpecification.newInstance(() -> "smali/weaverspecs/joinPointModel.xml", () -> "smali/weaverspecs/artifacts.xml", () -> "smali/weaverspecs/actionModel.xml"); } @@ -194,7 +194,7 @@ public List getOptions() { } @Override - protected LanguageSpecificationV2 buildLangSpecs() { + protected LanguageSpecification buildLangSpecs() { return buildLanguageSpecification(); } diff --git a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java index b3253f8..dcf6d7a 100644 --- a/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java +++ b/AlpakkaWeaver/src/pt/up/fe/specs/alpakka/weaver/abstracts/weaver/ASmaliWeaver.java @@ -7,8 +7,8 @@ /** * Abstract Weaver Implementation for SmaliWeaver
-Since the generated abstract classes are always overwritten, their implementation should be done by extending those abstract classes with user-defined classes.
-The abstract class {@link pt.up.fe.specs.alpakka.weaver.abstracts.ASmaliWeaverJoinPoint} contains attributes and actions common to all join points. + * Since the generated abstract classes are always overwritten, their implementation should be done by extending those abstract classes with user-defined classes.
+ * The abstract class {@link pt.up.fe.specs.alpakka.weaver.abstracts.ASmaliWeaverJoinPoint} contains attributes and actions common to all join points. * The implementation of the abstract methods is mandatory! * @author Lara C. */ @@ -21,7 +21,7 @@ public abstract class ASmaliWeaver extends LaraWeaverEngine { */ @Override public final List getActions() { - String[] weaverActions= {"replaceWith", "replaceWith", "replaceWith", "replaceWithStrings", "insertBefore", "insertBefore", "insertAfter", "insertAfter", "detach"}; + String[] weaverActions= {"detach", "insertAfter", "insertAfter", "insertBefore", "insertBefore", "replaceWith", "replaceWith", "replaceWith", "replaceWithStrings"}; return Arrays.asList(weaverActions); }