[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.tools.uml2] questions about creating sequence diagram

Hi, dear all

I'm trying to create a sequence diagram by manually writing code. So I created a utility method for this purpose:

	private void createMessage(Lifeline lifeLine1, Lifeline lifeLine2,
			MessageSort ms, Operation op) {
		Message createMessage = interaction.createMessage("new");
		createMessage.setMessageSort(ms);
		MessageOccurrenceSpecification sendEventOccur = (MessageOccurrenceSpecification) interaction
				.createFragment(
						null,
						org.eclipse.uml2.uml.UMLPackage.Literals.MESSAGE_OCCURRENCE_SPECIFICATION);
		sendEventOccur.getCovereds().add(lifeLine1);
		sendEventOccur.setMessage(createMessage);
		MessageOccurrenceSpecification recvEventOccur = (MessageOccurrenceSpecification) interaction
				.createFragment(
						null,
						org.eclipse.uml2.uml.UMLPackage.Literals.MESSAGE_OCCURRENCE_SPECIFICATION);
		recvEventOccur.getCovereds().add(lifeLine2);
		recvEventOccur.setMessage(createMessage);
		createMessage.setSendEvent(sendEventOccur);
		createMessage.setReceiveEvent(recvEventOccur);
		SendOperationEvent sendOpEvent = (SendOperationEvent) pack
				.createPackagedElement(TransformUtil.chooseName("sendEvent",
						pack), UML2P.eINSTANCE.getSendOperationEvent());
		sendEventOccur.setEvent(sendOpEvent);
		ReceiveOperationEvent recvOpEvent = (ReceiveOperationEvent) pack
				.createPackagedElement(TransformUtil.chooseName("recvEvent",
						pack), UML2P.eINSTANCE.getReceiveOperationEvent());
		recvEventOccur.setEvent(recvOpEvent);

		if (op != null) {
			sendOpEvent.setOperation(op);
			recvOpEvent.setOperation(op);
		}
	}

This method works well when I set "op" argument to null. But it will fail to show if I specify other value to op. Is there a standard way to do such
things?

Thanks a lot!
James Gan