Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 336478 - [Activity diagram] Cannot create guards
Summary: [Activity diagram] Cannot create guards
Status: RESOLVED FIXED
Alias: None
Product: Papyrus
Classification: Modeling
Component: Diagram (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 major with 1 vote (vote)
Target Milestone: 1.1.0   Edit
Assignee: Anatoliy Tischenko CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-07 03:48 EST by Emmanuel.Leguy CLA
Modified: 2015-02-03 03:38 EST (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Emmanuel.Leguy CLA 2011-02-07 03:48:16 EST
Build Identifier: I20100608-0911

Since 0.7.1, I can't create guards on edges (after a decision node for example). In 0.8.0, it is possible by editing the model explorer view but it is not as simple as in 0.7.0. In 0.7.0, the guard is automatically displayed with the creation of an edge but next versions don't have this behavior anymore...

How to create easily guard with latest versions?
Is there a new version (or a patch) which acts as 0.7.0? (I tried 0.7.0, 0.7.1, 0.7.2 and 0.8.0)

Reproducible: Always

Steps to Reproduce:
1. Launch helios with papyrus 0.7.2
2. Create a new activity diagram (in an opened papyrus project)
3. Create an initial node
4. Create a link to a decision node
5. Create a link from decision node to an opaque action
6. Cannot create a guard for the last link...
Comment 1 Camille Letavernier CLA 2013-03-25 08:59:15 EDT
Setting a guard of an edge generates an NPE.

Steps to reproduce this behavior are :

1. Create an edge (control/object flow) between a decision node and another action node
2. Select the edge that you just created
3. Go through the property view and click on the plus button next to the "Guard" property
4. Choose "Expression" on the generated list
5. Specify the type of this expression as being Boolean
6. Create a new operand being an OpaqueAction
7. Select the Java language
8. Fill out the body of the expression with a Java expression
9. Click Ok for both opened popup
10. The trace produced by the program is the following one

java.lang.NullPointerException
	at java.lang.StringBuffer.<init>(Unknown Source)
	at org.eclipse.papyrus.uml.tools.utils.ValueSpecificationUtil.getSpecificationValue(ValueSpecificationUtil.java:83)
	at org.eclipse.papyrus.uml.diagram.activity.parser.custom.EdgeGuardParser.getValueString(EdgeGuardParser.java:136)
	at org.eclipse.papyrus.uml.diagram.activity.parser.custom.EdgeGuardParser.getPrintString(EdgeGuardParser.java:118)
	at org.eclipse.papyrus.uml.diagram.activity.edit.parts.ControlFlowGuardEditPart.getLabelText(ControlFlowGuardEditPart.java:246)
	at org.eclipse.papyrus.uml.diagram.activity.edit.parts.ControlFlowGuardEditPart.refreshLabel(ControlFlowGuardEditPart.java:475)
	at org.eclipse.papyrus.uml.diagram.activity.edit.parts.ControlFlowGuardEditPart.handleNotificationEvent(ControlFlowGuardEditPart.java:698)
	at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.notifyChanged(GraphicalEditPart.java:1438)
	at org.eclipse.gmf.runtime.diagram.core.listener.DiagramEventBroker.fireNotification(DiagramEventBroker.java:504)
	at org.eclipse.gmf.runtime.diagram.core.listener.DiagramEventBroker.resourceSetChanged(DiagramEventBroker.java:399)
	at org.eclipse.gmf.runtime.diagram.ui.DiagramEventBrokerThreadSafe.resourceSetChanged(DiagramEventBrokerThreadSafe.java:73)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl$1.run(TransactionalEditingDomainImpl.java:781)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.postcommit(TransactionalEditingDomainImpl.java:771)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.deactivate(TransactionalEditingDomainImpl.java:543)
	at org.eclipse.emf.transaction.impl.TransactionImpl.close(TransactionImpl.java:712)
	at org.eclipse.emf.transaction.impl.TransactionImpl.commit(TransactionImpl.java:474)
	at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:155)
	at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:513)
	at org.eclipse.papyrus.commands.CheckedOperationHistory.execute(CheckedOperationHistory.java:182)
	at org.eclipse.papyrus.commands.NotifyingWorkspaceCommandStack.doExecute(NotifyingWorkspaceCommandStack.java:252)
	at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
	at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
	at org.eclipse.papyrus.uml.tools.databinding.PapyrusObservableValue.doSetValue(PapyrusObservableValue.java:77)
	at org.eclipse.core.databinding.observable.value.AbstractObservableValue.setValue(AbstractObservableValue.java:55)
	at org.eclipse.papyrus.infra.widgets.editors.ReferenceDialog.setValue(ReferenceDialog.java:421)
	at org.eclipse.papyrus.infra.widgets.editors.ReferenceDialog.createAction(ReferenceDialog.java:212)
	at org.eclipse.papyrus.infra.widgets.editors.ReferenceDialog.widgetSelected(ReferenceDialog.java:370)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1057)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:941)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:79)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
Comment 2 Camille Letavernier CLA 2015-01-07 07:38:40 EST
Gerrit contribution:

https://git.eclipse.org/r/#/c/34020/

Merged to master
Comment 3 Alexey Shatilov CLA 2015-02-03 03:38:55 EST
1.0-maintenance gerrit contribution:
https://git.eclipse.org/r/#/c/40257/
(merged)