osate / osate2-ba Goto Github PK
View Code? Open in Web Editor NEWOld Behavior Annex plug-in for OSATE repository, kept for reference
Old Behavior Annex plug-in for OSATE repository, kept for reference
On page 40 and 41 of the behavior annex specification document, it gives an example (BA_example7). In the example, the behavior annex clauses define some transitions with subprogram call statements in their actions. For example:
s2 -[ on dispatch short ]-> s0 { send_result!(local_result) };
If you implement this example in OSATE, you get an error from the AADL editor:
"Invalid number of argument(s) for the subprogram send_result"
The error message seems to think that there should be two parameters for the subprogram call. The subprogram send result has two features: one required data access feature and one out parameter. It appears that the error message is incorrectly counting the output parameter in the required number of input parameters.
Look at the following model. In the sandbox.aadl file, the com_radio.impl does not recognize the in features inherited from the other components.
Please look here for the model.
In the following model, if I try to add a new state, OSATE goes into an infinite loop.
package bren2
public
thread mode_congruency_monitor_logic
features
congruency_timer_expired : in event port;
channel_congruency_failure : out event port; -- > used by higher level channel in control logic
annex behavior_specification {**
states
lanes_are_congruent: initial complete final state;
transitions
s0 -[ on dispatch ]-> s0 { sp := tick'count };
**};
end mode_congruency_monitor_logic;
thread implementation mode_congruency_monitor_logic.impl
end mode_congruency_monitor_logic.impl;
end bren2;
Hello,
I am trying to use the behavior annex. See the following example below. When opening the editor, the OSATE editor crashes. However, when removing the behavior annex description, the model seems to show correctly.
When referencing a feature from a subsystem, it then creates an issue that makes OSATE crashing.
You can reproduce the issue by importing the following project and editing the file model.aadl. See https://github.com/osate/examples/tree/master/Train
When having the following model, the transition have the same identifiers are not marked as an error. See the model below:
data boolean
properties
Data_Model::Data_Representation => boolean;
end boolean;
system door
features
open_cmd : in data port boolean;
annex behavior_specification {**
states
Closed : initial state;
Opened : state;
transitions
t1 : Doors_Closed -[opem_cmd? = false]-> Doors_Closed;
t1 : Doors_Closed -[opem_cmd? = true]-> Doors_Open;
t1 : Doors_Closed -[opem_cmd? = true]-> Doors_Open;
t2 : Doors_Closed -[alarm? = true]-> Doors_Opened {door_open_cmd := true;};
t5 : Doors_Opened -[self.safe and speed? = 0 and intransit? = false and door_sensor?= false and alarm? = false]-> Doors_Closed {door_open_cmd := false;};
**};
end door;
When using RAMSES and the generated BA, I got the following error (see below). Is there anything to update ?
URI: platform:/plugin/fr.tpt.aadl.ramses.transformation.atl
File URL: file:/C:/Users/jdelange/eclipse/eclipse-kepler/fr.tpt.aadl.ramses.transformation.atl/
java.lang.IllegalArgumentException: The class 'BehaviorAction' is not a valid classifier
at org.osate.ba.aadlba.impl.AadlBaFactoryImpl.create(AadlBaFactoryImpl.java:153)
at org.eclipse.m2m.atl.emftvm.impl.ModelImpl.newElement(ModelImpl.java:307)
at org.eclipse.m2m.atl.emftvm.impl.RuleImpl.completeTraceFor(RuleImpl.java:2186)
at org.eclipse.m2m.atl.emftvm.impl.RuleImpl$IsNotAbstractState.createTraces(RuleImpl.java:958)
at org.eclipse.m2m.atl.emftvm.impl.RuleImpl.createTraces(RuleImpl.java:2146)
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.matchAllSingle(ExecEnvImpl.java:2230)
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.run(ExecEnvImpl.java:2083)
at fr.tpt.aadl.ramses.transformation.atl.Aadl2AadlEMFTVMLauncher.doTransformation(Aadl2AadlEMFTVMLauncher.java:293)
at fr.tpt.aadl.ramses.transformation.atl.Aadl2AadlEMFTVMLauncher.generationEntryPoint(Aadl2AadlEMFTVMLauncher.java:139)
at fr.tpt.aadl.ramses.transformation.atl.AadlToTargetSpecificAadl.transform(AadlToTargetSpecificAadl.java:112)
at fr.tpt.aadl.ramses.generation.target.specific.AadlTargetSpecificGenerator.generate(AadlTargetSpecificGenerator.java:112)
at fr.tpt.aadl.ramses.control.osate.GenerateAction.analyzeInstanceModel(GenerateAction.java:110)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelReadOnlyAction.analyzeInstanceModelInMode(AbstractInstanceOrDeclarativeModelReadOnlyAction.java:156)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelReadOnlyAction.doAaxlAction(AbstractInstanceOrDeclarativeModelReadOnlyAction.java:134)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelModifyActionAction$1.doExecute(AbstractInstanceOrDeclarativeModelModifyActionAction.java:81)
at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:513)
at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelModifyActionAction.processAaxlAction(AbstractInstanceOrDeclarativeModelModifyActionAction.java:90)
at org.osate.ui.actions.AbstractAaxlAction.actionBody(AbstractAaxlAction.java:234)
at org.osate.ui.actions.AaxlReadOnlyActionAsJob$ActionAsJob.runInWorkspace(AaxlReadOnlyActionAsJob.java:134)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
fr.tpt.aadl.ramses.control.support.generator.GenerationException: The class 'BehaviorAction' is not a valid classifier
at fr.tpt.aadl.ramses.transformation.atl.Aadl2AadlEMFTVMLauncher.generationEntryPoint(Aadl2AadlEMFTVMLauncher.java:160)
at fr.tpt.aadl.ramses.transformation.atl.AadlToTargetSpecificAadl.transform(AadlToTargetSpecificAadl.java:112)
at fr.tpt.aadl.ramses.generation.target.specific.AadlTargetSpecificGenerator.generate(AadlTargetSpecificGenerator.java:112)
at fr.tpt.aadl.ramses.control.osate.GenerateAction.analyzeInstanceModel(GenerateAction.java:110)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelReadOnlyAction.analyzeInstanceModelInMode(AbstractInstanceOrDeclarativeModelReadOnlyAction.java:156)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelReadOnlyAction.doAaxlAction(AbstractInstanceOrDeclarativeModelReadOnlyAction.java:134)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelModifyActionAction$1.doExecute(AbstractInstanceOrDeclarativeModelModifyActionAction.java:81)
at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:513)
at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelModifyActionAction.processAaxlAction(AbstractInstanceOrDeclarativeModelModifyActionAction.java:90)
at org.osate.ui.actions.AbstractAaxlAction.actionBody(AbstractAaxlAction.java:234)
at org.osate.ui.actions.AaxlReadOnlyActionAsJob$ActionAsJob.runInWorkspace(AaxlReadOnlyActionAsJob.java:134)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
java.lang.NullPointerException
at fr.tpt.aadl.ramses.generation.target.specific.AadlTargetSpecificCodeGenerator.generate(AadlTargetSpecificCodeGenerator.java:77)
at fr.tpt.aadl.ramses.generation.target.specific.AadlTargetSpecificGenerator.generate(AadlTargetSpecificGenerator.java:117)
at fr.tpt.aadl.ramses.control.osate.GenerateAction.analyzeInstanceModel(GenerateAction.java:110)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelReadOnlyAction.analyzeInstanceModelInMode(AbstractInstanceOrDeclarativeModelReadOnlyAction.java:156)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelReadOnlyAction.doAaxlAction(AbstractInstanceOrDeclarativeModelReadOnlyAction.java:134)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelModifyActionAction$1.doExecute(AbstractInstanceOrDeclarativeModelModifyActionAction.java:81)
at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:513)
at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.osate.ui.actions.AbstractInstanceOrDeclarativeModelModifyActionAction.processAaxlAction(AbstractInstanceOrDeclarativeModelModifyActionAction.java:90)
at org.osate.ui.actions.AbstractAaxlAction.actionBody(AbstractAaxlAction.java:234)
at org.osate.ui.actions.AaxlReadOnlyActionAsJob$ActionAsJob.runInWorkspace(AaxlReadOnlyActionAsJob.java:134)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
I have this aadl model (it is just used to test my model transformation from aadl to a verification language)
In the Et.i
thread implementation, I have a transition that contains a PortSendAction
(o!
).
When a request my model to obtain the port
of this action, I obtain a null
value.
So, I save my aadl model in the xmi format, and I find that the port information is lost.
<actions>
<content xsi:type="aadlba:BehaviorActionSequence">
<actions xsi:type="aadlba:PortSendAction"/>
<actions xsi:type="aadlba:AssignmentAction">
package rr
public
with Base_Types;
data D
end D;
data implementation D.i
subcomponents
di: data Base_Types::Integer;
end D.i;
thread Et
features
o: out event port;
properties
Dispatch_Protocol => Periodic;
Period => 10 Ms;
end Et;
thread implementation Et.i
subcomponents
x: data D.i;
annex behavior_specification {**
states
s0: initial complete state;
transitions
s0 -[on dispatch]-> s0 {o!; x.di := 0 };
**};
end Et.i;
thread Rt
features
i: in event port;
properties
Dispatch_Protocol => Sporadic;
Period => 10ms;
end Rt;
thread implementation Rt.i
annex behavior_specification {**
states
s0: initial complete state;
transitions
-- vérifier la sémantique frozen entre v1 et v2
s0 -[on dispatch i]-> s0;
**};
end Rt.i;
process Ep
features
o: out event port;
end Ep;
process implementation Ep.i
subcomponents
t: thread Et.i;
connections
-- event port t.o -> o;
p1: port t.o -> o{Timing => immediate;};
end Ep.i;
process Rp
features
i: in event port;
end Rp;
process implementation Rp.i
subcomponents
t: thread Rt.i;
connections
-- event port i -> t.i;
p2: port i -> t.i{Timing => immediate;};
end Rp.i;
system test
end test;
system implementation test.i
subcomponents
e: process Ep.i;
r: process Rp.i;
connections
-- event port e.o -> r.i;
p3: port e.o -> r.i{Timing => immediate;};
end test.i;
end rr;
For now, the internal features are not supported. Supporting them would then allow the interaction between the core, the ba and other annexes.
See an example of a model that uses the internal features.
package wbs::hydraulics::wheels
public
system wheel
features
pressure_primary : in data port base_types::integer;
pressure_alternate : in data port base_types::integer;
end wheel;
system implementation wheel.impl
internal features
failure_from_behavior : event;
annex EMV2 {**
use types errorlibrary;
use behavior wbs::errorlib::simple;
component error behavior
transitions
failing_mode : operational -[ failure_from_behavior ]-> failed;
end component;
};
annex behavior_specification {
states
working : initial complete state;
pressure_detection : state;
transitions
t0 : working -[ on dispatch ]-> pressure_detection;
t1 : pressure_detection -[pressure_primary > 0 or pressure_alternate > 0]->working;
t2 : pressure_detection -[pressure_alternate < 0 and pressure_primary < 0]->working {failure_from_behavior!};
**};
end wheel.impl;
end wbs::hydraulics::wheels;
When starting Osate with my workspace I get two NPEs (AadlBaUtils.java line 1182 and line 74). In both cases the reason is a missing null check: PropertyUtils.findPropertyExpression may return null but calling code assumes that the result is not null. There is a third call in AadlBaUtils that correctly checks for null.
0 [Worker-3] DEBUG org.osate.xtext.aadl2.ui.containers.Aadl2ProjectsStateHelper - added /Plugin_Resources/AADL_Project.aadl
7478 [Worker-4] ERROR org.eclipse.xtext.builder.clustering.ClusteringBuilderState - Error loading resource
java.lang.NullPointerException
at org.osate.ba.utils.AadlBaUtils.processArrayDataRepresentation(AadlBaUtils.java:1182)
at org.osate.ba.utils.AadlBaUtils.getTypeHolder(AadlBaUtils.java:1114)
at org.osate.ba.analyzers.AadlBaTypeChecker.getValueAndTypeHolder(AadlBaTypeChecker.java:1077)
at org.osate.ba.analyzers.AadlBaTypeChecker.valueVariableCheck(AadlBaTypeChecker.java:1041)
at org.osate.ba.analyzers.AadlBaTypeChecker.valueCheck(AadlBaTypeChecker.java:974)
at org.osate.ba.analyzers.AadlBaTypeChecker.factorCheck(AadlBaTypeChecker.java:897)
at org.osate.ba.analyzers.AadlBaTypeChecker.termCheck(AadlBaTypeChecker.java:842)
at org.osate.ba.analyzers.AadlBaTypeChecker.simpleExpressionCheck(AadlBaTypeChecker.java:768)
at org.osate.ba.analyzers.AadlBaTypeChecker.relationCheck(AadlBaTypeChecker.java:725)
at org.osate.ba.analyzers.AadlBaTypeChecker.valueExpressionCheck(AadlBaTypeChecker.java:672)
at org.osate.ba.analyzers.AadlBaTypeChecker.ifStatementCheck(AadlBaTypeChecker.java:2105)
at org.osate.ba.analyzers.AadlBaTypeChecker.condStatementCheck(AadlBaTypeChecker.java:1839)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionCheck(AadlBaTypeChecker.java:1830)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionsCheck(AadlBaTypeChecker.java:1808)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionBlockCheck(AadlBaTypeChecker.java:1787)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorTransitionCheck(AadlBaTypeChecker.java:369)
at org.osate.ba.analyzers.AadlBaTypeChecker.checkTypes(AadlBaTypeChecker.java:154)
at org.osate.ba.AadlBaResolver.resolveAnnex(AadlBaResolver.java:86)
at org.osate.annexsupport.AnnexResolverProxy.resolveAnnex(AnnexResolverProxy.java:70)
at org.osate.xtext.aadl2.parsing.AnnexParserAgent.afterModelLinked(AnnexParserAgent.java:233)
at org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:53)
at org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:290)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:107)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:258)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:248)
at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:161)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:100)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1297)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:229)
at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:24)
at org.eclipse.xtext.builder.resourceloader.SerialResourceLoader$1.next(SerialResourceLoader.java:45)
at org.eclipse.xtext.builder.resourceloader.AbstractResourceLoader$CheckedLoadOperation.next(AbstractResourceLoader.java:74)
at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.writeNewResourceDescriptions(ClusteringBuilderState.java:352)
at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.doUpdate(ClusteringBuilderState.java:121)
at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:112)
at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:194)
at org.eclipse.xtext.builder.impl.XtextBuilder.fullBuild(XtextBuilder.java:220)
at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:93)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:328)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:403)
at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)
at org.eclipse.core.internal.resources.Project.build(Project.java:124)
at org.eclipse.xtext.builder.impl.BuildScheduler$BuildJob.run(BuildScheduler.java:164)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
7760 [Worker-4] ERROR org.eclipse.xtext.builder.clustering.ClusteringBuilderState - Error loading resource
java.lang.NullPointerException
at org.osate.ba.utils.AadlBaUtils.getDataRepresentation(AadlBaUtils.java:74)
at org.osate.ba.utils.AadlBaUtils.getDataRepresentation(AadlBaUtils.java:405)
at org.osate.ba.utils.AadlBaUtils.getDataRepresentation(AadlBaUtils.java:449)
at org.osate.ba.utils.AadlBaUtils.getTypeHolder(AadlBaUtils.java:926)
at org.osate.ba.utils.AadlBaUtils.getTypeHolder(AadlBaUtils.java:1036)
at org.osate.ba.analyzers.AadlBaTypeChecker.getValueAndTypeHolder(AadlBaTypeChecker.java:1077)
at org.osate.ba.analyzers.AadlBaTypeChecker.valueVariableCheck(AadlBaTypeChecker.java:1041)
at org.osate.ba.analyzers.AadlBaTypeChecker.valueCheck(AadlBaTypeChecker.java:974)
at org.osate.ba.analyzers.AadlBaTypeChecker.factorCheck(AadlBaTypeChecker.java:897)
at org.osate.ba.analyzers.AadlBaTypeChecker.termCheck(AadlBaTypeChecker.java:842)
at org.osate.ba.analyzers.AadlBaTypeChecker.simpleExpressionCheck(AadlBaTypeChecker.java:768)
at org.osate.ba.analyzers.AadlBaTypeChecker.relationCheck(AadlBaTypeChecker.java:725)
at org.osate.ba.analyzers.AadlBaTypeChecker.valueExpressionCheck(AadlBaTypeChecker.java:672)
at org.osate.ba.analyzers.AadlBaTypeChecker.subprogramParameterListCheck(AadlBaTypeChecker.java:2833)
at org.osate.ba.analyzers.AadlBaTypeChecker.qualifiedSubprogramClassifierCallActionResolver(AadlBaTypeChecker.java:2338)
at org.osate.ba.analyzers.AadlBaTypeChecker.communicationActionCheck(AadlBaTypeChecker.java:2384)
at org.osate.ba.analyzers.AadlBaTypeChecker.basicActionCheck(AadlBaTypeChecker.java:2140)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionCheck(AadlBaTypeChecker.java:1826)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionsCheck(AadlBaTypeChecker.java:1808)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionBlockCheck(AadlBaTypeChecker.java:1787)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorTransitionCheck(AadlBaTypeChecker.java:369)
at org.osate.ba.analyzers.AadlBaTypeChecker.checkTypes(AadlBaTypeChecker.java:154)
at org.osate.ba.AadlBaResolver.resolveAnnex(AadlBaResolver.java:86)
at org.osate.annexsupport.AnnexResolverProxy.resolveAnnex(AnnexResolverProxy.java:70)
at org.osate.xtext.aadl2.parsing.AnnexParserAgent.afterModelLinked(AnnexParserAgent.java:233)
at org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:53)
at org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:290)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:107)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:258)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:248)
at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:161)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:100)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1297)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:229)
at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:24)
at org.eclipse.xtext.builder.resourceloader.SerialResourceLoader$1.next(SerialResourceLoader.java:45)
at org.eclipse.xtext.builder.resourceloader.AbstractResourceLoader$CheckedLoadOperation.next(AbstractResourceLoader.java:74)
at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.writeNewResourceDescriptions(ClusteringBuilderState.java:352)
at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.doUpdate(ClusteringBuilderState.java:121)
at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:112)
at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:194)
at org.eclipse.xtext.builder.impl.XtextBuilder.fullBuild(XtextBuilder.java:220)
at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:93)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:328)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:403)
at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)
at org.eclipse.core.internal.resources.Project.build(Project.java:124)
at org.eclipse.xtext.builder.impl.BuildScheduler$BuildJob.run(BuildScheduler.java:164)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
When using OSATE+BA with a command line interface, I have a class cast exception in the name resolver of the BA plugin.
This issues appeared with binaries from version 2.2.2 (both the stable and testing update sites). Binaries of version 2.2.1 work fine.
Unfortunately, I am not able to reproduce the bug when using the source code of OSATE+BA, neither with source code of the master nor with source code from the develop branch.
Here is the result of my tests, when using different release of OSATE+BA:
http://aadl.info/aadl/osate/stable/2.2.1/update-site/
--> The issue does no appear
http://aadl.info/aadl/osate/stable/latest/update-site/
--> ClassCastException
http://aadl.info/aadl/osate/testing/update-site/
--> ClassCastException
Testing with the product (not the update site): http://aadl.info/aadl/osate/stable/latest/products/
—> The issue does not appear.
Considering the the exception trace bellow and the commit d5e2e98352dfef675c829ab8d075aba940f2dda0 (osate/osate2-core@d5e2e98#diff-c778da4cb37b2e32311a9b9b41798b95) even though it is 1 year old, my guess is that the build of the BA on the update site is based on an old version of osate source code. Indeed, when using the BA from the update site I could notice when debuting that the class identifier returned by method getClassifierID was not consistent with the identifiers in the Aadl2Package class.
Looking at the build numbers for BA in http://aadl.info/aadl/osate/stable/latest/update-site/plugins/ it seems they are quite old. Maybe a re-compilation of the BA plugin would solve the issue...?
As I have a nightly build with the latest version on the update site I should be able to detect if it solves the problem.
Thanks!
Etienne.
java.lang.ClassCastException: org.osate.aadl2.impl.ListValueImpl cannot be cast to org.osate.aadl2.NamedValue
at org.osate.utils.PropertyUtils.getValue(PropertyUtils.java:1245)
at org.osate.ba.analyzers.AadlBaNameResolver.propertyAssociationResolver(AadlBaNameResolver.java:2073)
at org.osate.ba.analyzers.AadlBaNameResolver.propertyNameResolver(AadlBaNameResolver.java:1825)
at org.osate.ba.analyzers.AadlBaNameResolver.classifierPropertyReferenceResolver(AadlBaNameResolver.java:1681)
at org.osate.ba.analyzers.AadlBaNameResolver.propertyReferenceResolver(AadlBaNameResolver.java:1556)
at org.osate.ba.analyzers.AadlBaNameResolver.valueConstantResolver(AadlBaNameResolver.java:1498)
at org.osate.ba.analyzers.AadlBaNameResolver.valueResolver(AadlBaNameResolver.java:2356)
at org.osate.ba.analyzers.AadlBaNameResolver.valueExpressionResolver(AadlBaNameResolver.java:2329)
at org.osate.ba.analyzers.AadlBaNameResolver.assignmentActionResolver(AadlBaNameResolver.java:167)
at org.osate.ba.analyzers.AadlBaNameResolver.basicActionResolver(AadlBaNameResolver.java:290)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorActionResolver(AadlBaNameResolver.java:464)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorActionsResolver(AadlBaNameResolver.java:644)
at org.osate.ba.analyzers.AadlBaNameResolver.ifStatementResolver(AadlBaNameResolver.java:438)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorActionResolver(AadlBaNameResolver.java:477)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorActionsResolver(AadlBaNameResolver.java:644)
at org.osate.ba.analyzers.AadlBaNameResolver.ifStatementResolver(AadlBaNameResolver.java:438)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorActionResolver(AadlBaNameResolver.java:477)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorActionsResolver(AadlBaNameResolver.java:638)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorActionBlockResolver(AadlBaNameResolver.java:399)
at org.osate.ba.analyzers.AadlBaNameResolver.behaviorTransitionResolver(AadlBaNameResolver.java:391)
at org.osate.ba.analyzers.AadlBaNameResolver.resolveNames(AadlBaNameResolver.java:1121)
at org.osate.ba.AadlBaResolver.resolveAnnex(AadlBaResolver.java:65)
at org.osate.annexsupport.AnnexResolverProxy.resolveAnnex(AnnexResolverProxy.java:70)
at fr.tpt.aadl.ramses.control.cli.instantiation.AnnexJob.resolve(AnnexJob.java:151)
at fr.tpt.aadl.ramses.control.cli.instantiation.AnnexJobHandler.resolveAllAnnexes(AnnexJobHandler.java:56)
at fr.tpt.aadl.ramses.control.cli.instantiation.StandAloneInstantiator.parse(StandAloneInstantiator.java:165)
at fr.tpt.aadl.ramses.control.cli.instantiation.StandAloneInstantiator.parse(StandAloneInstantiator.java:129)
at fr.tpt.aadl.ramses.control.cli.core.ToolSuiteLauncher.launchDefaultGenerationProcess(ToolSuiteLauncher.java:183)
at fr.tpt.aadl.ramses.control.cli.core.ToolSuiteLauncherCommand.defaultProcess(ToolSuiteLauncherCommand.java:588)
at fr.tpt.aadl.ramses.control.cli.core.ToolSuiteLauncherCommand.main(ToolSuiteLauncherCommand.java:164)
at fr.tpt.aadl.ramses.control.cli.osgi.Application.start(Application.java:60)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
at org.eclipse.equinox.launcher.Main.main(Main.java:1488)
When editing a model, I got the following issue:
!STACK 0
java.lang.ClassCastException: org.osate.aadl2.impl.AbstractTypeImpl cannot be cast to org.osate.aadl2.DataClassifier
at org.osate.ba.utils.AadlBaUtils.getDataRepresentation(AadlBaUtils.java:290)
at org.osate.ba.utils.AadlBaUtils.getDataRepresentation(AadlBaUtils.java:328)
at org.osate.ba.utils.AadlBaUtils.getTypeHolder(AadlBaUtils.java:841)
at org.osate.ba.utils.AadlBaUtils.getTypeHolder(AadlBaUtils.java:955)
at org.osate.ba.analyzers.AadlBaTypeChecker.assignmentActionCheck(AadlBaTypeChecker.java:2954)
at org.osate.ba.analyzers.AadlBaTypeChecker.basicActionCheck(AadlBaTypeChecker.java:2021)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionCheck(AadlBaTypeChecker.java:1714)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionsCheck(AadlBaTypeChecker.java:1696)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorActionBlockCheck(AadlBaTypeChecker.java:1675)
at org.osate.ba.analyzers.AadlBaTypeChecker.behaviorTransitionCheck(AadlBaTypeChecker.java:350)
at org.osate.ba.analyzers.AadlBaTypeChecker.checkTypes(AadlBaTypeChecker.java:141)
at org.osate.ba.AadlBaResolver.resolveAnnex(AadlBaResolver.java:86)
at org.osate.annexsupport.AnnexResolverProxy.resolveAnnex(AnnexResolverProxy.java:70)
at org.osate.xtext.aadl2.parsing.AnnexParserAgent.afterModelLinked(AnnexParserAgent.java:216)
at org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:49)
at org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:292)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:88)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:260)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:250)
at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:163)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:81)
at org.eclipse.xtext.resource.XtextResource.reparse(XtextResource.java:196)
at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.modify(XtextDocument.java:225)
at org.eclipse.xtext.ui.editor.model.XtextDocument.internalModify(XtextDocument.java:103)
at org.eclipse.xtext.ui.editor.reconciler.XtextReconciler.run(XtextReconciler.java:290)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
(Apologies if this is not the right place to post these kind of question, but I didn't find any alternative in the wiki.)
Hello. I'm trying out the latest version of OSATE2 (2.0.6), but I'm getting a couple of errors with the Behaviour Annex which I don't understand. See the model attached below.
In the last component, the thread implementation Cons.i, I get three error markers on the (only) transition. The errors are:
These seem to be syntax errors, but I don't see the problem. The syntax seems correct according to the document available at:
http://aadl.sei.cmu.edu/aadl/documents/Behaviour_Annex1.6.pdf
Given that that document is a draft, dated from 2006/2007, it's quite possibly outdated, but I cannot find anywhere else in that website or the wiki. If it is an outdated version, where can I obtain a more recent version?
Thanks.
package hello_pkg
public
with Base_Types;
system S
end S;
system implementation S.i
subcomponents
p : process P.i;
end S.i ;
process P
features
none;
end P ;
process implementation P.i
subcomponents
prod : thread Prod.i;
cons : thread Cons.i;
connections
conn : port prod.output -> cons.input;
end P.i ;
thread Prod
features
output : out event data port Base_Types::Integer;
end Prod ;
thread implementation Prod.i
annex behavior_specification {**
states
s0 : initial complete state;
transitions
t0 : s0 -[ on dispatch ]-> s0 { output!(1) };
**};
end Prod.i ;
thread Cons
features
input : in event data port Base_Types::Integer;
end Cons ;
thread implementation Cons.i
subcomponents
x : data Base_Types::Integer;
annex behavior_specification {**
states
s0 : initial complete state;
transitions
t0 : s0 -[ input?(x) ]-> s0 { };
**};
end Cons.i ;
end hello_pkg;
Variables declared in the scope of the behavior annex (such as count
in BA_upsample) appear to cause the AadlBaNameResolver to declare a parser failure, preventing use of behavior variables in OSATE.
package BA_upsample public
with Base_Types;
-- This is an example to specify the essence of multi-rate synchronous systems using up
and down sampling adapters to interface a thread a “factor” times the periods of another.
thread upsample
features
lo: in event data port aadlinteger;
hi: out data port aadlinteger;
factor: constant aadlinteger => 4;
properties
Dispatch_Protocol => periodic;
end upsample;
thread implementation upsample.impl annex behavior_specification {**
states
s0: initial complete state;
variables data, count: aadlinteger => 0; transitions
-- initialization would be helpful here
s0 -[ on dispatch and count <= 0]-> s0 { count := Factor-1; lo?data; hi!data };
s0 -[ on dispatch and count > 0]-> s0 { count := count – 1; hi!data };
**};
end upsample.impl.2;
-- This is a time triggered, synchronous, implementation of the above of down-sampling
thread downsample features
hi: in event data port aadlinteger;
lo: out data port aadlinteger;
factor: constant aadlinteger => 4;
properties
Dispatch_Protocol => periodic;
end downsample;
thread implementation downsample.impl
annex behavior_specification {**
states
s0: initial complete state;
variables data, count: aadlinteger => 0; transitions
-- initialization would be helpful here
s0 -[ on dispatch and count <= 0]-> s0 { count := Factor-1; hi?data };
s0 -[ on dispatch and count > 0]-> s0 { count := count – 1; hi?data ; lo!data }; **};
end upsample.impl.2; end BA_upsample;
I have a model in which I have to call a arinc653::stop subprogram. The BA plugin complains because stop is a reserved keyword. However, I think the parser could be able to make the difference, specially that the call to the subprogram is prefixed with the package in which it is defined.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.