[savara-commits] savara SVN: r646 - in branches/experimental/2.0.x/bundles/org.savara.bpel/src: test/java/org/savara/bpel/generator and 2 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Feb 10 07:32:24 EST 2011
Author: objectiser
Date: 2011-02-10 07:32:24 -0500 (Thu, 10 Feb 2011)
New Revision: 646
Added:
branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/resources/bpel/SerializeTest.bpel
Modified:
branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/util/BPELModelUtil.java
branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/generator/GeneratorTest.java
branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/util/BPELModelUtilTest.java
Log:
SAVARA-175 - replaced sun internal jaxb namespace prefix mapping mechanism, that changed across jdk versions, with a more standard (but not ideal) workaround.
Modified: branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/util/BPELModelUtil.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/util/BPELModelUtil.java 2011-02-09 23:15:27 UTC (rev 645)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/util/BPELModelUtil.java 2011-02-10 12:32:24 UTC (rev 646)
@@ -63,17 +63,34 @@
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
if (prefixes != null) {
- try {
- com.sun.xml.bind.marshaller.NamespacePrefixMapper mapper=
- new NamespacePrefixMapperImpl(prefixes);
+ java.io.ByteArrayOutputStream baos=new java.io.ByteArrayOutputStream();
+
+ marshaller.marshal(factory.createProcess(desc), baos);
+
+ // Convert to DOM
+ javax.xml.parsers.DocumentBuilderFactory dbfactory=
+ javax.xml.parsers.DocumentBuilderFactory.newInstance();
+ dbfactory.setNamespaceAware(true);
+
+ org.w3c.dom.Document doc=
+ dbfactory.newDocumentBuilder().parse(new java.io.ByteArrayInputStream(baos.toByteArray()));
+
+ for (String ns : prefixes.keySet()) {
+ String prefix=prefixes.get(ns);
- marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);
- } catch (RuntimeException mex) {
- mex.printStackTrace();
- }
+ doc.getDocumentElement().setAttribute("xmlns:"+prefix, ns);
+ }
+
+ javax.xml.transform.dom.DOMSource source=new javax.xml.transform.dom.DOMSource(doc);
+ javax.xml.transform.stream.StreamResult result=new javax.xml.transform.stream.StreamResult(os);
+
+ javax.xml.transform.Transformer transformer=
+ javax.xml.transform.TransformerFactory.newInstance().newTransformer();
+ transformer.transform(source, result);
+
+ } else {
+ marshaller.marshal(factory.createProcess(desc), os);
}
-
- marshaller.marshal(factory.createProcess(desc), os);
} catch(Exception e) {
throw new IOException("Failed to serialize model", e);
}
Modified: branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/generator/GeneratorTest.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/generator/GeneratorTest.java 2011-02-09 23:15:27 UTC (rev 645)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/generator/GeneratorTest.java 2011-02-10 12:32:24 UTC (rev 646)
@@ -29,9 +29,7 @@
import org.savara.common.model.annotation.AnnotationDefinitions;
import org.savara.common.model.generator.ModelGenerator;
import org.scribble.common.logging.CachedJournal;
-import org.scribble.protocol.model.Role;
import org.scribble.protocol.parser.antlr.ANTLRProtocolParser;
-import org.savara.protocol.util.ProtocolServices;
public class GeneratorTest {
@@ -169,69 +167,60 @@
projected.getProtocol().getAnnotations(), AnnotationDefinitions.TYPE);
}
- java.util.List<Role> projectedRoles=projected.getRoles();
+ //java.util.List<Role> projectedRoles=projected.getRoles();
ModelGenerator generator=new ProtocolToBPELModelGenerator();
- //defn = projected.getProtocol();
-
- if (generator != null) { // && defn != null) {
-
- Object target=generator.generate(projected, journal, null);
-
- /*
- ModelReference targetRef=
- new ModelReference(BPELNotation.NOTATION_CODE);
- targetRef.setAlias(m_name);
- targetRef.setLocatedRole(m_role);
-
- DefaultBPELLanguageModel target=
- new DefaultBPELLanguageModel(targetRef);
+ Object target=generator.generate(projected, journal, null);
+
+ /*
+ ModelReference targetRef=
+ new ModelReference(BPELNotation.NOTATION_CODE);
+ targetRef.setAlias(m_name);
+ targetRef.setLocatedRole(m_role);
+
+ DefaultBPELLanguageModel target=
+ new DefaultBPELLanguageModel(targetRef);
- generator.generate(targetRef, role,
- target, projected);
- */
-
- if (target instanceof TProcess) {
- // Obtain any namespace prefix map
- java.util.Map<String, String> prefixes=
- new java.util.HashMap<String, String>();
-
- java.util.List<Annotation> list=
- AnnotationDefinitions.getAnnotations(projected.getProtocol().getAnnotations(),
- AnnotationDefinitions.TYPE);
-
- for (Annotation annotation : list) {
- if (annotation.getProperties().containsKey(AnnotationDefinitions.NAMESPACE_PROPERTY) &&
- annotation.getProperties().containsKey(AnnotationDefinitions.PREFIX_PROPERTY)) {
- prefixes.put((String)annotation.getProperties().get(AnnotationDefinitions.NAMESPACE_PROPERTY),
- (String)annotation.getProperties().get(AnnotationDefinitions.PREFIX_PROPERTY));
- }
- }
-
- try {
- java.io.ByteArrayOutputStream baos=new java.io.ByteArrayOutputStream();
-
- BPELModelUtil.serialize((TProcess)target, baos, prefixes);
-
- baos.close();
-
- String text=new String(baos.toByteArray());
-
- checkResults(result, text);
- } catch(Exception e) {
- result.addError(this, e);
- }
- } else {
- result.addError(this,
- new Throwable("No BPEL generated"));
- }
-
- } else {
- result.addError(this,
- new Throwable("Unable to find Model Generator"));
- }
- }
+ generator.generate(targetRef, role,
+ target, projected);
+ */
+
+ if (target instanceof TProcess) {
+ // Obtain any namespace prefix map
+ java.util.Map<String, String> prefixes=
+ new java.util.HashMap<String, String>();
+
+ java.util.List<Annotation> list=
+ AnnotationDefinitions.getAnnotations(projected.getProtocol().getAnnotations(),
+ AnnotationDefinitions.TYPE);
+
+ for (Annotation annotation : list) {
+ if (annotation.getProperties().containsKey(AnnotationDefinitions.NAMESPACE_PROPERTY) &&
+ annotation.getProperties().containsKey(AnnotationDefinitions.PREFIX_PROPERTY)) {
+ prefixes.put((String)annotation.getProperties().get(AnnotationDefinitions.NAMESPACE_PROPERTY),
+ (String)annotation.getProperties().get(AnnotationDefinitions.PREFIX_PROPERTY));
+ }
+ }
+
+ try {
+ java.io.ByteArrayOutputStream baos=new java.io.ByteArrayOutputStream();
+
+ BPELModelUtil.serialize((TProcess)target, baos, prefixes);
+
+ baos.close();
+
+ String text=new String(baos.toByteArray());
+
+ checkResults(result, text);
+ } catch(Exception e) {
+ result.addError(this, e);
+ }
+ } else {
+ result.addError(this,
+ new Throwable("No BPEL generated"));
+ }
+ }
}
}
Modified: branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/util/BPELModelUtilTest.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/util/BPELModelUtilTest.java 2011-02-09 23:15:27 UTC (rev 645)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/java/org/savara/bpel/util/BPELModelUtilTest.java 2011-02-10 12:32:24 UTC (rev 646)
@@ -23,7 +23,7 @@
public class BPELModelUtilTest extends TestCase {
- public void testGetBPELModel() {
+ public void testDeserialize() {
String filename="bpel/PolicyQuoteProcess_PolicyQuoteProcessService.bpel";
java.io.InputStream is=
@@ -43,4 +43,63 @@
fail("Failed to deserialise BPEL process: "+e);
}
}
+
+ public void testSerialize() {
+ String filename="bpel/SerializeTest.bpel";
+
+ java.io.InputStream is=
+ ClassLoader.getSystemResourceAsStream(filename);
+
+ if (is == null) {
+ fail("Failed to load BPEL model file '"+filename+"'");
+ }
+
+ try {
+ TProcess process=BPELModelUtil.deserialize(is);
+
+ if (process == null) {
+ fail("Failed to retrieve BPEL process");
+ }
+
+ java.io.ByteArrayOutputStream os=new java.io.ByteArrayOutputStream();
+
+ java.util.Map<String,String> prefixes=new java.util.HashMap<String, String>();
+
+ //prefixes.put("http://docs.oasis-open.org/wsbpel/2.0/process/executable","bpel");
+ prefixes.put("http://creditagency.com/creditCheckService","ca");
+ prefixes.put("http://creditagency.com/creditCheck","cred");
+ prefixes.put("http://dmv.com/drivingRecordService","dmv");
+ prefixes.put("http://dmv.com/drivingRecord","drv");
+ prefixes.put("http://www.example.org/policyQuoteCalculationService","pcs");
+ prefixes.put("http://www.example.org/policyQuoteEntityService","pes");
+ prefixes.put("http://www.example.org/policyQuote","pol");
+ prefixes.put("http://www.example.org/policyQuoteProcessService","pps");
+ prefixes.put("http://www.pi4soa.org/PolicyQuote","tns");
+ prefixes.put("http://www.w3.org/2001/XMLSchema","xsd");
+ prefixes.put("http://www.scribble.org/conversation","ns0");
+
+ BPELModelUtil.serialize(process, os, prefixes);
+
+ String serialized=new String(os.toByteArray());
+
+ os.close();
+
+ is = ClassLoader.getSystemResourceAsStream(filename);
+
+ byte[] b=new byte[is.available()];
+ is.read(b);
+
+ String original=new String(b);
+
+ if (serialized.equals(original) == false) {
+ System.out.println("BPEL serialize: original (len="+original.length()+
+ ") ::"+original+":: serialized (len="+serialized.length()+") ::"+serialized+"::");
+
+ fail("Serialized BPEL not same as original");
+ }
+
+ } catch(Exception e) {
+ fail("Failed to deserialise BPEL process: "+e);
+ }
+ }
}
Added: branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/resources/bpel/SerializeTest.bpel
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/resources/bpel/SerializeTest.bpel (rev 0)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/test/resources/bpel/SerializeTest.bpel 2011-02-10 12:32:24 UTC (rev 646)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?><process xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:ca="http://creditagency.com/creditCheckService" xmlns:cred="http://creditagency.com/creditCheck" xmlns:dmv="http://dmv.com/drivingRecordService" xmlns:drv="http://dmv.com/drivingRecord" xmlns:ns0="http://www.scribble.org/conversation" xmlns:pcs="http://www.example.org/policyQuoteCalculationService" xmlns:pes="http://www.example.org/policyQuoteEntityService" xmlns:pol="http://www.example.org/policyQuote" xmlns:pps="http://www.example.org/policyQuoteProcessService" xmlns:tns="http://www.pi4soa.org/PolicyQuote" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PolicyQuoteProcess_PolicyQuoteProcessService" ns0:conversationType="org.pi4soa.policyquote.policyquote.PolicyQuoteProcess at PolicyQuoteProcessService" targetNamespace="http://www.example.org/policyQuoteProcessService">
+ <import importType="http://schemas.xmlsoap.org/wsdl/" location="PolicyQuoteProcess_PolicyQuoteProcessService.wsdl" namespace="http://www.example.org/policyQuoteProcessService"/>
+ <import importType="http://schemas.xmlsoap.org/wsdl/" location="PolicyQuoteProcess_CreditCheckService.wsdl" namespace="http://creditagency.com/creditCheckService"/>
+ <import importType="http://schemas.xmlsoap.org/wsdl/" location="PolicyQuoteProcess_DrivingRecordService.wsdl" namespace="http://dmv.com/drivingRecordService"/>
+ <import importType="http://schemas.xmlsoap.org/wsdl/" location="PolicyQuoteProcess_PolicyQuoteCalculationService.wsdl" namespace="http://www.example.org/policyQuoteCalculationService"/>
+ <import importType="http://schemas.xmlsoap.org/wsdl/" location="PolicyQuoteProcess_PolicyQuoteEntityService.wsdl" namespace="http://www.example.org/policyQuoteEntityService"/>
+ <import importType="http://schemas.xmlsoap.org/wsdl/" location="PolicyQuoteProcess_PolicyQuoteProcessServiceArtifacts.wsdl" namespace="http://www.example.org/policyQuoteProcessService"/>
+ <partnerLinks>
+ <partnerLink myRole="PolicyQuoteProcessService" name="DriverToPolicyQuoteProcessService" partnerLinkType="pps:DriverToPolicyQuoteProcessServiceServiceLT"/>
+ <partnerLink name="PolicyQuoteProcessServiceToDrivingRecordService" partnerLinkType="pps:PolicyQuoteProcessServiceToDrivingRecordServiceLT" partnerRole="DrivingRecordServiceRequester"/>
+ <partnerLink myRole="DrivingRecordCallbackService" name="DrivingRecordServiceToPolicyQuoteProcessService" partnerLinkType="pps:DrivingRecordServiceToPolicyQuoteProcessServiceServiceLT"/>
+ <partnerLink name="PolicyQuoteProcessServiceToCreditCheckService" partnerLinkType="pps:PolicyQuoteProcessServiceToCreditCheckServiceLT" partnerRole="CreditCheckServiceRequester"/>
+ <partnerLink name="PolicyQuoteProcessServiceToPolicyQuoteCalculationService" partnerLinkType="pps:PolicyQuoteProcessServiceToPolicyQuoteCalculationServiceLT" partnerRole="PolicyQuoteCalculationServiceRequester"/>
+ <partnerLink name="PolicyQuoteProcessServiceToPolicyQuoteEntityService" partnerLinkType="pps:PolicyQuoteProcessServiceToPolicyQuoteEntityServiceLT" partnerRole="PolicyQuoteEntityServiceRequester"/>
+ </partnerLinks>
+ <variables>
+ <variable messageType="pps:receivePolicyQuoteRequest" name="policyQuoteVar"/>
+ <variable messageType="dmv:checkDrivingRecordRequest" name="drivingRecordRequestVar"/>
+ <variable messageType="pps:receiveDrivingRecordRequest" name="drivingRecordResponseVar"/>
+ <variable messageType="ca:checkCreditRequest" name="creditCheckRequestVar"/>
+ <variable messageType="ca:checkCreditResponse" name="creditCheckResponseVar"/>
+ <variable messageType="pcs:calculatePolicyQuoteResponse" name="policyQuoteReplyVar"/>
+ <variable messageType="pps:policyQuoteFaultFault" name="policyQuoteFaultVar"/>
+ </variables>
+ <sequence>
+ <receive createInstance="yes" name="Receive_policyQuote" operation="receivePolicyQuote" partnerLink="DriverToPolicyQuoteProcessService" portType="pps:PolicyQuoteProcessService" variable="policyQuoteVar"/>
+ <invoke inputVariable="drivingRecordRequestVar" name="Send_drivingRecordRequest" operation="checkDrivingRecord" partnerLink="PolicyQuoteProcessServiceToDrivingRecordService" portType="dmv:DrivingRecordService"/>
+ <receive name="Receive_drivingRecordResponse" operation="receiveDrivingRecord" partnerLink="DrivingRecordServiceToPolicyQuoteProcessService" portType="pps:DrivingRecordCallbackService" variable="drivingRecordResponseVar"/>
+ <if>
+ <sequence>
+ <invoke inputVariable="creditCheckRequestVar" name="Send_creditCheckRequest" operation="checkCredit" outputVariable="creditCheckResponseVar" partnerLink="PolicyQuoteProcessServiceToCreditCheckService" portType="ca:CreditCheckService"/>
+ <invoke inputVariable="policyQuoteVar" name="Send_policyQuote" operation="calculatePolicyQuote" outputVariable="policyQuoteReplyVar" partnerLink="PolicyQuoteProcessServiceToPolicyQuoteCalculationService" portType="pcs:PolicyQuoteCalculationService"/>
+ <invoke inputVariable="policyQuoteVar" name="Send_policyQuote" operation="createPolicyQuote" outputVariable="policyQuoteReplyVar" partnerLink="PolicyQuoteProcessServiceToPolicyQuoteEntityService" portType="pes:PolicyQuoteEntityService"/>
+ <reply name="Send_policyQuoteReply" operation="receivePolicyQuote" partnerLink="DriverToPolicyQuoteProcessService" portType="pps:PolicyQuoteProcessService" variable="policyQuoteReplyVar"/>
+ </sequence>
+ <else>
+ <sequence>
+ <reply faultName="pps:policyQuoteFault" name="Send_policyQuoteFault" operation="receivePolicyQuote" partnerLink="DriverToPolicyQuoteProcessService" portType="pps:PolicyQuoteProcessService" variable="policyQuoteFaultVar"/>
+ </sequence>
+ </else>
+ </if>
+ </sequence>
+</process>
\ No newline at end of file
More information about the savara-commits
mailing list