Coder Social home page Coder Social logo

osate2-ba's People

Contributors

etienne13 avatar facad avatar joeseibel avatar juli1 avatar lwrage avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

osate2-ba's Issues

Incorrect error message about number of subprogram paramaters in behavior action statements

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.

infinite loop when adding a new state

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;

Unable to parse

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.

https://gist.github.com/juli1/7126527

Duplicate transitions labels

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;

BehaviorAction not a valid classifier

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)

Port information lost in a PortSendAction

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;

Support of internal features

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;

NullPointerExceptions in AadlBaUtils.java

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)

Class cast exception with OSATE+BA from the update site

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)

AbstractTypeImpl cast to DataClassifier

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)

Syntax error

(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:

  • "unterminated behavior transition (missing ending ';')"
  • "mismatched input '(' expecting {'and', 'mod', 'or', 'rem', 'xor', ']->', '=', '!=', '<', '<=', '>', '>=', '+', '-', '*', '/', '=='}"
  • "extraneous input ')' expecting {, IDENT}"

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;

Name resolution fails for variables declared in the behavior annex

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;

Error when using a stop subprogram call in a behavior annex

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.