blob: 8e49906e39244c61eeb4262f11020a522473cfc4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2012 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.extensionsample.model.util;
import javax.xml.namespace.QName;
import org.eclipse.bpel.extensionsample.model.ModelPackage;
import org.eclipse.bpel.extensionsample.model.SampleSimpleActivity;
import org.eclipse.bpel.extensionsample.model.SampleStructuredActivity;
import org.eclipse.bpel.model.Activity;
import org.eclipse.bpel.model.BPELPackage;
import org.eclipse.bpel.model.Process;
import org.eclipse.bpel.model.Variable;
import org.eclipse.bpel.model.extensions.BPELActivitySerializer;
import org.eclipse.bpel.model.resource.BPELWriter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/*
* Bug 120110 - this class has been updated to include a Variable
* reference for the SampleSimpleActivity and a Variable definition
* for the SampleStructuredActivity.
*/
public class ExtensionSampleActivitySerializer implements BPELActivitySerializer {
@Override
public void marshall(QName elementType, Activity activity, Node parentNode, Process process,
BPELWriter bpelWriter) {
Document document = parentNode.getOwnerDocument();
/*
* SampleSimpleActivity
*/
if (activity instanceof SampleSimpleActivity) {
SampleSimpleActivity sa = (SampleSimpleActivity)activity;
// create a new DOM element for our Activity
Element saElement = document.createElementNS(elementType.getNamespaceURI(),
ExtensionsampleConstants.ND_SAMPLE_SIMPLE_ACTIVITY);
saElement.setPrefix(ExtensionSampleUtils.addNamespace(process));
// handle the SampleExtensionAttribute
if (sa.getSampleExtensionAttribute() != null) {
String attName = ModelPackage.eINSTANCE
.getSampleSimpleActivity_SampleExtensionAttribute().getName();
saElement.setAttribute(attName, sa.getSampleExtensionAttribute());
// add variable name and type as attributes to this SampleSimpleActivity
if (sa.getVariable()!=null) {
String name = sa.getVariable().getName();
if (name!=null && !"".equals(name.trim()) )
saElement.setAttribute("variable",name);
}
}
// insert the DOM element into the DOM tree
parentNode.appendChild(saElement);
}
/*
* SampleStructuredActivity
*/
if (activity instanceof SampleStructuredActivity) {
// create a new DOM element for our Activity
Element activityElement = document.createElementNS(elementType.getNamespaceURI(),
ExtensionsampleConstants.ND_SAMPLE_STRUCTURED_ACTIVITY);
activityElement.setPrefix(ExtensionSampleUtils.addNamespace(process));
// handle child activity
Activity childActivity = ((SampleStructuredActivity) activity).getActivity();
if (childActivity != null) {
activityElement.appendChild(bpelWriter.activity2XML(childActivity));
}
// insert the DOM element into the DOM tree
parentNode.appendChild(activityElement);
}
}
}