[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