diff --git a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java index a05e694c..c5df6554 100644 --- a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java +++ b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java @@ -1,9 +1,6 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.lang.sysmlv2.cocos; -import de.monticore.lang.sysmlbasis._ast.ASTModifier; -import de.monticore.lang.sysmlbasis._ast.ASTSysMLTyping; -import de.monticore.lang.sysmlparts._ast.ASTAttributeUsage; import de.monticore.lang.sysmlparts._ast.ASTConnectionUsage; import de.monticore.lang.sysmlparts._cocos.SysMLPartsASTConnectionUsageCoCo; import de.monticore.lang.sysmlparts._symboltable.ISysMLPartsScope; @@ -180,41 +177,15 @@ protected PortUsageSymbol resolvePortOfSubPart(ISysMLPartsScope scope, return null; } - /** Extract modifiers from PortUsageSymbol */ - protected ASTModifier getModifiersFromPortUsageSymbol(PortUsageSymbol symbol) { - ASTAttributeUsage portAttributeUsageAST = (ASTAttributeUsage) - symbol.getAstNode() - .getPortDefs() - .get(0) - .getSysMLElementList() - .get(0); - return portAttributeUsageAST.getModifier(); - } - protected boolean portIsInput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsInAndNotConjugated = mods.isIn() && !portIsConjugated(symbol); - boolean portIsOutAndConjugated = mods.isOut() && portIsConjugated(symbol); - return (portIsInAndNotConjugated || portIsOutAndConjugated); + return !symbol.getInputAttributes().isEmpty(); } protected boolean portIsOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsOutAndNotConjugated = mods.isOut() && !portIsConjugated(symbol); - boolean portIsInAndConjugated = mods.isIn() && portIsConjugated(symbol); - return (portIsOutAndNotConjugated || portIsInAndConjugated); + return !symbol.getOutputAttributes().isEmpty(); } protected boolean portIsInOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - return mods.isInout(); - } - - protected boolean portIsConjugated(PortUsageSymbol symbol) { - return - ((ASTSysMLTyping) symbol - .getAstNode() - .getSpecialization(0)) - .isConjugated(); + return portIsInput(symbol) && portIsOutput(symbol); } } diff --git a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java index 9832bbaf..a1e65483 100644 --- a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java +++ b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java @@ -1,10 +1,7 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.lang.sysmlv2.cocos; -import de.monticore.lang.sysmlbasis._ast.ASTModifier; import de.monticore.lang.sysmlbasis._ast.ASTEndpoint; -import de.monticore.lang.sysmlbasis._ast.ASTSysMLTyping; -import de.monticore.lang.sysmlparts._ast.ASTAttributeUsage; import de.monticore.lang.sysmlparts._ast.ASTConnectionUsage; import de.monticore.lang.sysmlparts._cocos.SysMLPartsASTConnectionUsageCoCo; import de.monticore.lang.sysmlparts._symboltable.*; @@ -167,41 +164,15 @@ protected PortUsageSymbol resolvePortOfSubPart(ISysMLPartsScope scope, return null; } - /** Extract modifiers from PortUsageSymbol */ - protected ASTModifier getModifiersFromPortUsageSymbol(PortUsageSymbol symbol) { - ASTAttributeUsage portAttributeUsageAST = (ASTAttributeUsage) - symbol.getAstNode() - .getPortDefs() - .get(0) - .getSysMLElementList() - .get(0); - return portAttributeUsageAST.getModifier(); - } - protected boolean portIsInput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsInAndNotConjugated = mods.isIn() && !portIsConjugated(symbol); - boolean portIsOutAndConjugated = mods.isOut() && portIsConjugated(symbol); - return (portIsInAndNotConjugated || portIsOutAndConjugated); + return !symbol.getInputAttributes().isEmpty(); } protected boolean portIsOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsOutAndNotConjugated = mods.isOut() && !portIsConjugated(symbol); - boolean portIsInAndConjugated = mods.isIn() && portIsConjugated(symbol); - return (portIsOutAndNotConjugated || portIsInAndConjugated); + return !symbol.getOutputAttributes().isEmpty(); } protected boolean portIsInOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - return mods.isInout(); - } - - protected boolean portIsConjugated(PortUsageSymbol symbol) { - return - ((ASTSysMLTyping) symbol - .getAstNode() - .getSpecialization(0)) - .isConjugated(); + return portIsInput(symbol) && portIsOutput(symbol); } } diff --git a/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java b/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java index 11aedaa9..11295083 100644 --- a/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java +++ b/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java @@ -181,6 +181,7 @@ private ISysMLv2ArtifactScope createSt(ASTSysMLModel ast) { var tool = new SysMLv2Tool(); var scope = tool.createSymbolTable(ast); tool.completeSymbolTable(ast); + tool.finalizeSymbolTable(ast); return scope; } diff --git a/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java b/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java index 21d7d903..48b57c73 100644 --- a/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java +++ b/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java @@ -180,6 +180,7 @@ private ISysMLv2ArtifactScope createSt(ASTSysMLModel ast) { var tool = new SysMLv2Tool(); var scope = tool.createSymbolTable(ast); tool.completeSymbolTable(ast); + tool.finalizeSymbolTable(ast); return scope; }