[jboss-svn-commits] JBL Code SVN: r25089 - in labs/jbossesb/workspace/mlittle/legstar/product: etc/schemas/xml and 15 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 4 01:34:19 EST 2009


Author: jim.ma
Date: 2009-02-04 01:34:18 -0500 (Wed, 04 Feb 2009)
New Revision: 25089

Added:
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingContext.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingHandler.java
   labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl
Modified:
   labs/jbossesb/workspace/mlittle/legstar/product/docs/ProgrammersGuide.odt
   labs/jbossesb/workspace/mlittle/legstar/product/etc/schemas/xml/jbossesb-1.1.0.xsd
   labs/jbossesb/workspace/mlittle/legstar/product/install/standalone/jbossesb-server-base.zip
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/HTTPEpr.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerTagNames.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebserviceInfo.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ActionMapper.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ESBAwareGenerator.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
   labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/message/MessagePayloadProxy.java
   labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt
   labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/package/org.jboss.soa.esb.services.rules.pkg
   labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java
   labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java
   labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/resources/testrules.pkg
Log:
Merged trunk(revision 25084) to branch;backed outhe format of some class

Modified: labs/jbossesb/workspace/mlittle/legstar/product/docs/ProgrammersGuide.odt
===================================================================
(Binary files differ)

Modified: labs/jbossesb/workspace/mlittle/legstar/product/etc/schemas/xml/jbossesb-1.1.0.xsd
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/etc/schemas/xml/jbossesb-1.1.0.xsd	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/etc/schemas/xml/jbossesb-1.1.0.xsd	2009-02-04 06:34:18 UTC (rev 25089)
@@ -366,9 +366,12 @@
 			<xsd:attribute name="mep" type="jesb:mepType" />
                         <xsd:attribute name="inXsd" type="xsd:string" />
                         <xsd:attribute name="outXsd" type="xsd:string" />
+                        <xsd:attribute name="requestLocation" type="xsd:string"/>
+                        <xsd:attribute name="responseLocation" type="xsd:string"/>
                         <xsd:attribute name="faultXsd" type="xsd:string" />
                         <xsd:attribute name="webservice" type="xsd:boolean" default="true"/>
                         <xsd:attribute name="validate" type="xsd:boolean" default="false"/>
+                        <xsd:attribute name="addressing" type="xsd:boolean" default="false"/>
 		</xsd:complexType>
 	</xsd:element>
 	<xsd:element name="action">

Modified: labs/jbossesb/workspace/mlittle/legstar/product/install/standalone/jbossesb-server-base.zip
===================================================================
(Binary files differ)

Copied: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingContext.java (from rev 25084, labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingContext.java)
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingContext.java	                        (rev 0)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingContext.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.internal.soa.esb.webservice;
+
+import javax.xml.ws.addressing.soap.SOAPAddressingProperties;
+
+
+/**
+ * This is the addressing context for the current thread.
+ * @author kevin
+ */
+public class AddressingContext
+{
+    private static final ThreadLocal<SOAPAddressingProperties> CONTEXT = new ThreadLocal<SOAPAddressingProperties>() ;
+    
+    public static SOAPAddressingProperties getAddressingProperties()
+    {
+        return CONTEXT.get() ;
+    }
+    
+    public static void setAddressingProperties(final SOAPAddressingProperties addressingProperties)
+    {
+        CONTEXT.set(addressingProperties) ;
+    }
+}

Copied: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingHandler.java (from rev 25084, labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingHandler.java)
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingHandler.java	                        (rev 0)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/AddressingHandler.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -0,0 +1,91 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.internal.soa.esb.webservice;
+
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.addressing.JAXWSAConstants;
+import javax.xml.ws.addressing.soap.SOAPAddressingProperties;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.MessageContext.Scope;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+
+/**
+ * The addressing handler for capturing the current 
+ * @author kevin
+ */
+public class AddressingHandler implements SOAPHandler<SOAPMessageContext>
+{
+    public Set<QName> getHeaders()
+    {
+        return null;
+    }
+
+    public void close(final MessageContext context)
+    {
+    }
+
+    public boolean handleFault(final SOAPMessageContext context)
+    {
+        return true;
+    }
+
+    public boolean handleMessage(final SOAPMessageContext context)
+    {
+        final Boolean outbound = (Boolean)context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY) ;
+        if (outbound == null)
+        {
+           throw new IllegalStateException("Cannot obtain required property: " + MessageContext.MESSAGE_OUTBOUND_PROPERTY) ;
+        }
+
+        if (outbound)
+        {
+            return handleResponse(context) ;
+        }
+        else
+        {
+            return handleRequest(context) ;
+        }
+    }
+    
+    private boolean handleRequest(final SOAPMessageContext context)
+    {
+        final SOAPAddressingProperties props =  (SOAPAddressingProperties) context.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND) ;
+        AddressingContext.setAddressingProperties(props) ;
+        
+        return true ;
+    }
+    
+    private boolean handleResponse(final SOAPMessageContext context)
+    {
+        final SOAPAddressingProperties props = AddressingContext.getAddressingProperties() ;
+        if (props != null)
+        {
+            context.put(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_OUTBOUND, props) ;
+            context.setScope(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_OUTBOUND, Scope.APPLICATION) ;
+        }
+        return true ;
+    }
+}

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -38,6 +38,8 @@
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.ws.Provider;
 import javax.xml.ws.WebServiceException;
+import javax.xml.ws.addressing.AddressingBuilder;
+import javax.xml.ws.addressing.soap.SOAPAddressingProperties;
 
 import org.apache.log4j.Logger;
 import org.jboss.soa.esb.client.ServiceInvoker;
@@ -49,6 +51,7 @@
 import org.jboss.soa.esb.message.Body;
 import org.jboss.soa.esb.message.Fault;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.MessagePayloadProxy;
 import org.jboss.soa.esb.message.format.MessageFactory;
 import org.w3c.dom.Document;
 
@@ -66,16 +69,26 @@
     private static final boolean RETURN_STACK_TRACES ;
     private static final Logger LOGGER = Logger.getLogger(BaseWebService.class);
 
+    private static AddressingBuilder ADDRESSING_BUILDER = AddressingBuilder.getAddressingBuilder() ;
+    
     protected final ServiceInvoker serviceInvoker ;
+    protected final MessagePayloadProxy requestProxy ;
+    protected final MessagePayloadProxy responseProxy ;
+    protected final String action ;
 
-    protected BaseWebService(final String category, final String name)
+    protected BaseWebService(final String category, final String name, final String requestLocation, final String responseLocation, final String action)
         throws MessageDeliverException
     {
         serviceInvoker = new ServiceInvoker(category, name) ;
+        requestProxy = new MessagePayloadProxy(null, requestLocation) ;
+        responseProxy = new MessagePayloadProxy(responseLocation, null) ;
+        this.action = action ;
     }
 
     public SOAPMessage invoke(final SOAPMessage request)
     {
+        final SOAPAddressingProperties soapIncomingProps = AddressingContext.getAddressingProperties() ;
+        
         final Message esbReq = MessageFactory.getInstance().getMessage() ;
         try
         {
@@ -99,7 +112,7 @@
                     final ByteArrayOutputStream byteStream = new ByteArrayOutputStream() ;
                     YADOMUtil.serialize(node, new StreamResult(byteStream), true);
                     byteStream.close();
-                    esbReq.getBody().add(byteStream.toString()) ;
+                    requestProxy.setPayload(esbReq, byteStream.toString()) ;
                     found = true ;
                 }
             }
@@ -112,7 +125,7 @@
             final Message esbRes = deliverMessage(esbReq) ;
             if (esbRes != null)
             {
-                final Object input = esbRes.getBody().get() ;
+                final Object input = responseProxy.getPayload(esbRes) ;
                 if (input == null)
                 {
                     throw new SOAPException("Null response from service") ;
@@ -123,10 +136,24 @@
                         false, false, true);
                 final SOAPMessage response = javax.xml.soap.MessageFactory.newInstance().createMessage();
                 response.getSOAPBody().addDocument(respDoc) ;
+                if (soapIncomingProps == null)
+                {
+                    AddressingContext.setAddressingProperties(null) ;
+                }
+                else
+                {
+                    final SOAPAddressingProperties soapOutgoingProps = (SOAPAddressingProperties) ADDRESSING_BUILDER.newAddressingProperties() ;
+                    if (action != null)
+                    {
+                        soapOutgoingProps.setAction(ADDRESSING_BUILDER.newURI(action)) ;
+                    }
+                    AddressingContext.setAddressingProperties(soapOutgoingProps) ;
+                }
                 return response ;
             }
             else
             {
+                AddressingContext.setAddressingProperties(null) ;
                 // We should be able to return null here but this causes JBossWS to NPE.
                 return javax.xml.soap.MessageFactory.newInstance().createMessage();
             }

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBContractGenerator.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -260,7 +260,7 @@
 		Operation op = (Operation) portType.getOperations().get(0);
 		bop.setOperation(op);
 		SOAPOperation soapOperation = new SOAPOperationImpl() ;
-		soapOperation.setSoapActionURI(serviceInfo.getAction()) ;
+		soapOperation.setSoapActionURI(serviceInfo.getResponseAction()) ;
 		bop.addExtensibilityElement(soapOperation) ;
 		
 		if (op.getInput() != null) {

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/ESBServiceEndpointInfo.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -47,7 +47,11 @@
 	private final String className ;
 	private final String namespace ;
 	private final boolean isOneWay ;
-	private final String action ;
+	private final String requestAction ;
+	private final String responseAction ;
+	private final String requestLocation ;
+	private final String responseLocation ;
+	private final boolean addressing ;
 	
 	public ESBServiceEndpointInfo(final WebserviceInfo webserviceInfo)
 			throws UnsupportedEncodingException {
@@ -68,7 +72,8 @@
 		packageName = "esb.ws." + serviceCategory + "." + serviceName ;
 		className = packageName + ".Implementation" ;
 		namespace = "http://soa.jboss.org/" + URLEncoder.encode(service.getCategory(), DEFAULT_ENCODING) ;
-		action = namespace + "/" + operationName ;
+		requestAction = namespace + "/" + operationName ;
+		responseAction = requestAction + "Resp" ;
 		
 		isOneWay = (webserviceInfo.getOutXsd() == null) ;
 		if (isOneWay)
@@ -82,6 +87,9 @@
 				LOGGER.warn("No response specified for RequestResponse service " + serviceCategory + ":" + serviceName) ;
 			}
 		}
+		requestLocation = webserviceInfo.getRequestLocation() ;
+		responseLocation = webserviceInfo.getResponseLocation() ;
+		addressing = webserviceInfo.isAddressing() ;
 	}
 
 	public String getRequestName() {
@@ -136,14 +144,30 @@
 		return namespace ;
 	}
 	
-	public String getAction() {
-		return action ;
+	public String getRequestAction() {
+		return requestAction ;
 	}
 	
+	public String getResponseAction() {
+		return responseAction ;
+	}
+	
 	public boolean isOneWay() {
 		return isOneWay ;
 	}
 	
+	public String getRequestLocation() {
+		return requestLocation ;
+	}
+	
+	public String getResponseLocation() {
+		return responseLocation ;
+	}
+	
+	public boolean isAddressing() {
+		return addressing ;
+	}
+	
 	static
 	{
 		DEFAULT_ENCODING = AccessController.doPrivileged(new PrivilegedAction<String>() {
@@ -153,4 +177,4 @@
 			}
 		}) ;
 	}
-}
\ No newline at end of file
+}

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -52,7 +52,7 @@
 		}
 	}
 	
-	public byte[] generate(final String category, final String service, final ESBServiceEndpointInfo epInfo)
+	public byte[] generate(final String category, final String service, final ESBServiceEndpointInfo epInfo, final boolean includeHandlers)
 			throws WebServicePublishException {
 		try {
 			pool.get(epInfo.getClassName());
@@ -100,9 +100,20 @@
 			annotation2.addMemberValue("value", enumValue);
 			attribute.addAnnotation(annotation2);
 			
+			if (includeHandlers)
+			{
+				final Annotation handlerChainAnnotation = new Annotation("javax.jws.HandlerChain", constantPool) ;
+				final StringMemberValue handlerValue = new StringMemberValue(constantPool) ;
+				handlerValue.setValue("esb-jaxws-handlers.xml") ;
+				handlerChainAnnotation.addMemberValue("file", handlerValue) ;
+				attribute.addAnnotation(handlerChainAnnotation) ;
+			}
+			
 			seiClass.getClassFile().addAttribute(attribute);
 			
-			final String constructorStr = "super(\"" + category + "\"," + "\""  + service + "\");";
+			final String constructorStr = "super(\"" +category + "\",\"" + service + "\"," +
+				getParamValue(epInfo.getRequestLocation()) + "," + getParamValue(epInfo.getResponseLocation()) + ", \"" + 
+				epInfo.getResponseAction() + "\");" ;
 			CtConstructor defaultConstructor = new CtConstructor(null, seiClass) ;
 			defaultConstructor.setBody(constructorStr) ;
 			seiClass.addConstructor(defaultConstructor) ;
@@ -115,4 +126,12 @@
 					e);
 		}
 	}
+	
+	private String getParamValue(final String value) {
+		if (value == null) {
+			return "null" ;
+		} else {
+			return '"' + value + '"' ;
+		}
+	}
 }

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -30,10 +30,10 @@
  */
 public class OneWayBaseWebService extends BaseWebService
 {
-    protected OneWayBaseWebService(final String category, final String name)
+    protected OneWayBaseWebService(final String category, final String name, final String requestLocation, final String responseLocation, final String action)
         throws MessageDeliverException
     {
-        super(category, name) ;
+        super(category, name, requestLocation, responseLocation, action) ;
     }
     
     @Override

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -40,10 +40,10 @@
     private static final long TIMEOUT ;
     private static final Logger LOGGER = Logger.getLogger(RequestResponseBaseWebService.class) ;
     
-    protected RequestResponseBaseWebService(final String category, final String name)
+    protected RequestResponseBaseWebService(final String category, final String name, final String requestLocation, final String responseLocation, final String action)
         throws MessageDeliverException
     {
-        super(category, name) ;
+        super(category, name, requestLocation, responseLocation, action) ;
     }
     
     @Override

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/HTTPEpr.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/HTTPEpr.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/HTTPEpr.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -43,6 +43,7 @@
  */
 public class HTTPEpr extends EPR
 {
+	
 	public HTTPEpr (EPR epr)
 	{
 		super(epr);

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -26,8 +26,6 @@
  * @author - kstam at redhat.com
  *
  */
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -64,7 +62,7 @@
                 LifecyclePriorities.COURIER_PRIORITY) ;
 
     /**
-     * InVM Couriers.
+     * InVM Couiers.
      * <p/>
      * We handle this
      */

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerTagNames.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerTagNames.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerTagNames.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -26,7 +26,6 @@
 package org.jboss.soa.esb.listeners;
 
 import org.jboss.soa.esb.addressing.eprs.JDBCEpr;
-import org.jboss.soa.esb.schedule.ScheduleProvider;
 
 public class ListenerTagNames
 {
@@ -72,6 +71,8 @@
     public static final String IN_XSD_ATTRIBUTE_TAG         = "inXsd";
     public static final String OUT_XSD_ATTRIBUTE_TAG        = "outXsd";
     public static final String FAULT_XSD_ATTRIBUTE_TAG      = "faultXsd";
+    public static final String REQUEST_LOCATION_TAG         = "requestLocation";
+    public static final String RESPONSE_LOCATION_TAG        = "responseLocation";
     public static final String VALIDATE_ATTRIBUTE_TAG       = "validate";
     public static final String WEBSERVICE_ATTRIBUTE_TAG     = "webservice";
     public static final String ACTION_ELEMENT_TAG		    = "action";

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/ListenerUtil.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -42,6 +42,7 @@
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.services.registry.RegistryException;
 import org.jboss.soa.esb.util.Util;
+
 public class ListenerUtil
 {
     private static Logger logger = Logger.getLogger(ListenerUtil.class);

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -49,7 +49,12 @@
 import org.jboss.deployment.SubDeployerSupport;
 import org.jboss.internal.soa.esb.publish.ContractReferencePublisher;
 import org.jboss.internal.soa.esb.util.XMLHelper;
-import org.jboss.internal.soa.esb.webservice.*;
+import org.jboss.internal.soa.esb.webservice.AddressingHandler;
+import org.jboss.internal.soa.esb.webservice.ESBContractGenerator;
+import org.jboss.internal.soa.esb.webservice.ESBResponseFilter;
+import org.jboss.internal.soa.esb.webservice.ESBServiceContractPublisher;
+import org.jboss.internal.soa.esb.webservice.ESBServiceEndpointInfo;
+import org.jboss.internal.soa.esb.webservice.JAXWSProviderClassGenerator;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.MetaData;
 import org.jboss.metadata.XmlFileLoader;
@@ -86,6 +91,21 @@
    private static final String PREFIX_CANONICAL_NAME = "jboss.esb:deployment=" ;
    private static final String ESB_ARTIFACT_NAME = "jbossesb.esb" ;
    
+   private final String HANDLER_CHAIN_PREFIX = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
+       "<handler-chains xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
+       " xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee javaee_web_services_1_2.xsd\">" +
+           "<handler-chain><protocol-bindings>##SOAP11_HTTP</protocol-bindings>" ;
+   private final String HANDLER_CHAIN_POSTFIX = "</handler-chain></handler-chains>" ;
+   private final String HANDLER_PREFIX = "<handler><handler-name>" ;
+   private final String HANDLER_MIDDLE = "</handler-name><handler-class>" ;
+   private final String HANDLER_POSTFIX = "</handler-class></handler>" ;
+   
+   private final String WSADDR_NAME = "WSAddressing Handler" ;
+   private final String WSADDR_HANDLER = "org.jboss.ws.extensions.addressing.jaxws.WSAddressingServerHandler" ;
+   
+   private final String WSADDR_CONTEXT_NAME = "WSAddressing Context Handler" ;
+   private final String WSADDR_CONTEXT_HANDLER = AddressingHandler.class.getName() ;
+   
    /**
     * Default CTOR used to set default values to the Suffixes and RelativeOrder
     * attributes. Those are read at subdeployer registration time by the MainDeployer
@@ -469,8 +489,16 @@
                        addFile(zos, serviceInfo.getWSDLFileName(), wsdl) ;
                        
                        final Service service = webserviceInfo.getService() ;
+                       final String handlers = getHandlers(serviceInfo) ;
+                       final boolean includeHandlers = (handlers != null) ;
+                       if (includeHandlers)
+                       {
+                           final String wsHandlerName = "WEB-INF/classes/" + serviceInfo.getPackageName().replace('.', '/') + "/esb-jaxws-handlers.xml" ;
+                           addFile(zos, wsHandlerName, handlers) ;
+                       }
+                       
                        final byte[] wsClass = generator.generate(service.getCategory(),
-                           service.getName(), serviceInfo) ;
+                           service.getName(), serviceInfo, includeHandlers) ;
                        final String wsClassName = serviceInfo.getClassName().replace('.', '/') + ".class" ;
                        addFile(zos, "WEB-INF/classes/" + wsClassName, wsClass) ;
 
@@ -659,4 +687,26 @@
     {
         esbNames.remove(deploymentName) ;
     }
+    
+    private String getHandlers(final ESBServiceEndpointInfo serviceInfo)
+    {
+        final String result ;
+        
+        if (!serviceInfo.isAddressing())
+        {
+            result = null ;
+        }
+        else
+        {
+            final StringBuilder sb = new StringBuilder(HANDLER_CHAIN_PREFIX) ;
+            if (serviceInfo.isAddressing())
+            {
+                sb.append(HANDLER_PREFIX).append(WSADDR_CONTEXT_NAME).append(HANDLER_MIDDLE).append(WSADDR_CONTEXT_HANDLER).append(HANDLER_POSTFIX) ;
+                sb.append(HANDLER_PREFIX).append(WSADDR_NAME).append(HANDLER_MIDDLE).append(WSADDR_HANDLER).append(HANDLER_POSTFIX) ;
+            }
+            sb.append(HANDLER_CHAIN_POSTFIX) ;
+            result = sb.toString() ;
+        }
+        return result ;
+    }
 }

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebserviceInfo.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebserviceInfo.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/WebserviceInfo.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -52,6 +52,18 @@
      * The service request/response flag.
      */
     private final boolean requestResponse ;
+    /**
+     * The request location within the message.
+     */
+    private final String requestLocation ;
+    /**
+     * The response location within the message.
+     */
+    private final String responseLocation ;
+    /**
+     * Flag indicating the endpoint requires addressing.
+     */
+    private final boolean addressing ;
 
     /**
      * Construct the webservice information.
@@ -65,12 +77,34 @@
     public WebserviceInfo(final Service service, final String inXsd, final String outXsd,
         final String faultXsd, final String description, final boolean requestResponse)
     {
+        this(service, inXsd, outXsd, faultXsd, description, requestResponse, null, null, false) ;
+    }
+    
+    /**
+     * Construct the webservice information.
+     * @param service The associated service details.
+     * @param inXsd The input schema.
+     * @param outXsd The output schema.
+     * @param faultXsd The fault schemas.
+     * @param description The service description.
+     * @param requestResponse The service request/response flag.
+     * @param requestLocation The request location within the message.
+     * @param responseLocation The response location within the message.
+     * @param addressing Does the endpoint require addressing?
+     */
+    public WebserviceInfo(final Service service, final String inXsd, final String outXsd,
+        final String faultXsd, final String description, final boolean requestResponse,
+        final String requestLocation, final String responseLocation, final boolean addressing)
+    {
         this.service = service ;
         this.inXsd = inXsd ;
         this.outXsd = outXsd ;
         this.faultXsd = faultXsd ;
         this.description = description ;
         this.requestResponse = requestResponse ;
+        this.requestLocation = requestLocation ;
+        this.responseLocation = responseLocation ;
+        this.addressing = addressing ;
     }
 
     /**
@@ -128,6 +162,33 @@
     }
 
     /**
+     * Get the request location within the message.
+     * @return The request location.
+     */
+    public String getRequestLocation()
+    {
+        return requestLocation ;
+    }
+
+    /**
+     * Get the response location within the message.
+     * @return The response location.
+     */
+    public String getResponseLocation()
+    {
+        return responseLocation ;
+    }
+
+    /**
+     * Does the endpoint require addressing?
+     * @return
+     */
+    public boolean isAddressing()
+    {
+        return addressing ;
+    }
+
+    /**
      * Test for equality.
      * @param obj The object to compare with
      * @return true if equal, false otherwise.
@@ -140,7 +201,10 @@
             return (service.equals(webserviceInfo.getService()) && objEquals(inXsd, webserviceInfo.inXsd) &&
                 objEquals(outXsd, webserviceInfo.outXsd) && objEquals(faultXsd, webserviceInfo.faultXsd) &&
                 objEquals(description, webserviceInfo.description) &&
-                (requestResponse == webserviceInfo.isRequestResponse())) ;
+                (requestResponse == webserviceInfo.isRequestResponse()) &&
+                objEquals(requestLocation, webserviceInfo.requestLocation) &&
+                objEquals(responseLocation, webserviceInfo.responseLocation) &&
+                (addressing == webserviceInfo.isAddressing())) ;
         }
 
         return false ;
@@ -152,7 +216,8 @@
      */
     public int hashCode()
     {
-        return service.hashCode() ^ objHash(inXsd) ^ objHash(outXsd) ^ objHash(faultXsd) & objHash(description) ^ (requestResponse ? 0xdeafdeaf : 0) ;
+        return service.hashCode() ^ objHash(inXsd) ^ objHash(outXsd) ^ objHash(faultXsd) & objHash(description) ^ (requestResponse ? 0xdeafdeaf : 0) ^
+            objHash(requestLocation) ^ objHash(responseLocation)  ^ (addressing ? 0xfeedfeed : 0);
     }
 
     /**
@@ -161,7 +226,9 @@
      */
     public String toString()
     {
-        return service + objName("inXsd", inXsd) + objName("outXsd", outXsd) + objName("faultXsd" , faultXsd) + objName("description" , description) + (requestResponse ? ",requestResponse" : "") ;
+        return service + objName("inXsd", inXsd) + objName("outXsd", outXsd) + objName("faultXsd" , faultXsd) + objName("description" , description) +
+            (requestResponse ? ",requestResponse" : "") + objName("requestLocation", requestLocation) + objName("responseLocation", responseLocation) +
+            (addressing ? ", addressing" : "") ;
     }
 
     /**

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ActionMapper.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ActionMapper.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ActionMapper.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -82,6 +82,18 @@
 		        {
 		            listenerConfigTree.setAttribute(ListenerTagNames.VALIDATE_ATTRIBUTE_TAG, Boolean.toString(actions.getValidate())) ;
 		        }
+		        
+		        final String requestLocation = actions.getRequestLocation() ;
+		        if (requestLocation != null)
+		        {
+		            listenerConfigTree.setAttribute(ListenerTagNames.REQUEST_LOCATION_TAG, requestLocation) ;
+		        }
+		        
+		        final String responseLocation = actions.getResponseLocation() ;
+		        if (responseLocation != null)
+		        {
+		            listenerConfigTree.setAttribute(ListenerTagNames.RESPONSE_LOCATION_TAG, responseLocation) ;
+		        }
                 
 		        SecurityMapper.map(listenerConfigTree, listenerService);
 			List<Action> actionList = actions.getActionList();

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ESBAwareGenerator.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ESBAwareGenerator.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/ESBAwareGenerator.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -207,14 +207,14 @@
         } else if (listener instanceof JbrListener) {
             logger.error("JbossRemoting listener only supported in Gateway mode.");
             return;
-        } else if (listener instanceof GroovyListener) {
-            listenerConfigTree = GroovyListenerMapper.map(root, (GroovyListener)listener, model);
         } else if (listener instanceof HttpListener) {
         	logger.error("Http listener only supported in Gateway mode.");
             return;
-        } else {
-			listenerConfigTree = UntypedListenerMapper.map(root, listener, model);
-		}
+        } else if (listener instanceof GroovyListener) {
+            listenerConfigTree = GroovyListenerMapper.map(root, (GroovyListener)listener, model);
+		        } else {
+			            listenerConfigTree = UntypedListenerMapper.map(root, listener, model);
+		        }
 
         if (listener instanceof AbstractScheduledListener) {
             ScheduleMapper.map(listenerConfigTree, (AbstractScheduledListener) listener, model);

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers110/XMLBeansModel.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -515,7 +515,8 @@
                             final WebserviceInfo webserviceInfo = new WebserviceInfo(
                                 new org.jboss.soa.esb.Service(service.getCategory(), service.getName()),
                                 actions.getInXsd(), actions.getOutXsd(), actions.getFaultXsd(),
-                                service.getDescription(), MepType.REQUEST_RESPONSE.equals(actions.getMep())) ;
+                                service.getDescription(), MepType.REQUEST_RESPONSE.equals(actions.getMep()),
+                                actions.getRequestLocation(), actions.getResponseLocation(), actions.getAddressing()) ;
                             endpointServices.add(webserviceInfo) ;
                         }
                     }

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -385,7 +385,7 @@
 			invocationRequest.getReturnPayload().put(HTTPMetadataConstants.RESPONSE_CODE_MESSAGE, "Server exception type " + fme.getCause().getClass().getSimpleName());
 			return fme.getCause().getMessage();         
         
-        }catch (Throwable t) {
+        } catch (Throwable t) {
             logger.error("JBoss Remoting Gateway failed to " + (synchronous ? "synchronously" : "asynchronously") + " deliver message to target service [" +
                     messageDeliveryAdapter.getDeliveryAdapter().getServiceCategory() + ":" +
                     messageDeliveryAdapter.getDeliveryAdapter().getServiceName() + "].", t);

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -57,6 +57,7 @@
 import org.jboss.soa.esb.listeners.ListenerTagNames;
 import org.jboss.soa.esb.listeners.message.errors.Factory;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.MessagePayloadProxy;
 import org.jboss.soa.esb.message.Properties;
 import org.jboss.soa.esb.services.persistence.MessageStore;
 import org.jboss.soa.esb.services.security.PublicCryptoUtil;
@@ -105,6 +106,14 @@
 	 * The response XSD.
 	 */
 	private final Schema responseSchema ;
+	/**
+	 * The request payload proxy.
+	 */
+	private MessagePayloadProxy requestPayloadProxy ;
+	/**
+	 * The response payload proxy.
+	 */
+	private MessagePayloadProxy responsePayloadProxy ;
 
 	/**
 	 *
@@ -196,6 +205,8 @@
 			{
 				throw new ConfigurationException("Failed to parse the response schema: " + outXsd, saxe) ;
 			}
+			requestPayloadProxy = new MessagePayloadProxy(config.getAttribute(ListenerTagNames.REQUEST_LOCATION_TAG), null) ;
+			responsePayloadProxy = new MessagePayloadProxy(config.getAttribute(ListenerTagNames.RESPONSE_LOCATION_TAG), null) ;
 		}
 		else
 		{
@@ -589,11 +600,18 @@
 			String validationFailure = null ;
 			if (requestSchema != null)
 			{
-				final Object input = message.getBody().get() ;
-				if ((input == null) || !XMLHelper.validate(requestSchema, input.toString()))
+				try
 				{
-					validationFailure = "Request validation failure: " + input ;
+					final Object input = requestPayloadProxy.getPayload(message) ;
+					if ((input == null) || !XMLHelper.validate(requestSchema, input.toString()))
+					{
+						validationFailure = "Request validation failure: " + input ;
+					}
 				}
+				catch (final MessageDeliverException mde)
+				{
+					validationFailure = mde.getMessage() ;
+				}
 			}
 			if (validationFailure == null)
 			{
@@ -676,11 +694,18 @@
 					{
 						if (responseSchema != null)
 						{
-							final Object output = message.getBody().get() ;
-							if ((output == null) || !XMLHelper.validate(responseSchema, output.toString()))
+							try
 							{
-								validationFailure = "Response validation failure: " + output ;
+								final Object output = responsePayloadProxy.getPayload(message) ;
+								if ((output == null) || !XMLHelper.validate(responseSchema, output.toString()))
+								{
+									validationFailure = "Response validation failure: " + output ;
+								}
 							}
+							catch (final MessageDeliverException mde)
+							{
+								validationFailure = mde.getMessage() ;
+							}
 						}
 						if (validationFailure == null)
 						{

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -106,10 +106,6 @@
             _config = config ;
             checkMyParms() ;
 	}
-	
-	protected EPR getEpr() {
-		return this._epr;
-	}
 
 	/**
 	 * Check for mandatory and optional attributes in parameter tree

Modified: labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/message/MessagePayloadProxy.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/message/MessagePayloadProxy.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/rosetta/src/org/jboss/soa/esb/message/MessagePayloadProxy.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -126,6 +126,24 @@
                          new String[] {config.getAttribute(SET_PAYLOAD_LOCATION, Body.DEFAULT_LOCATION)});
     }
 
+    /**
+     * Public constructor.
+     *
+     * @param config The component configuration.
+     */
+    public MessagePayloadProxy(String getPayloadLocation, String setPayloadLocation) {
+        if (getPayloadLocation == null)
+        {
+            getPayloadLocation = Body.DEFAULT_LOCATION ;
+        }
+        if (setPayloadLocation == null)
+        {
+            setPayloadLocation = Body.DEFAULT_LOCATION ;
+        }
+        
+        setDataLocations(new String[] {getPayloadLocation}, new String[] {setPayloadLocation}) ;
+    }
+
     private void setDataLocations(String[] getPayloadLocations, String[] setPayloadLocations) {
         this.getPayloadLocations = Arrays.asList(getPayloadLocations);
         this.setPayloadLocations = Arrays.asList(setPayloadLocations);

Modified: labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt	2009-02-04 06:34:18 UTC (rev 25089)
@@ -21,6 +21,7 @@
   the location of the rule package. It can specify a fully qualified file name,
   or just the directory (if there is only one package file in it). Modify one 
   of these to match the path of your ESB installation.
+  The original drl that is located in the ruleAgent folder and named Original.drl.
 
 To Run standalone mode:
 =======================
@@ -52,4 +53,4 @@
   rules. The console will show the resulting price of the policy that is calculated 
   from the rules.
   
-  
\ No newline at end of file
+  

Copied: labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl (from rev 25084, labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl)
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl	                        (rev 0)
+++ labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl	2009-02-04 06:34:18 UTC (rev 25089)
@@ -0,0 +1,60 @@
+package org.jboss.soa.esb.services.rules
+
+#list any import classes here.
+import org.jboss.soa.esb.services.rules.Driver;
+import org.jboss.soa.esb.services.rules.Policy;
+
+#declare any global variables here
+global org.jboss.soa.esb.message.Message message;
+
+rule "Safe Youth"
+	
+	when
+		#conditions
+		Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == 0)
+		policy: Policy(type == "COMPREHENSIVE")
+	then 
+		#actions
+		policy.setBasePrice(450);
+		System.out.println("Safe Youth - pay 450");
+		
+end
+
+rule "Risky Youth"
+	
+	when
+		#conditions
+		Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims >= 1)
+		policy : Policy(type == "COMPREHENSIVE")
+	then 
+		#actions
+		policy.setBasePrice(700);
+		System.out.println("Risky Youth - pay 700");
+		
+end
+
+rule "Safe Adult"
+	
+	when
+		#conditions
+		Driver(age > 24, locationRiskProfile == "LOW", priorClaims == 0)
+		policy: Policy(type == "COMPREHENSIVE")
+	then 
+		#actions
+		policy.setBasePrice(120);
+		System.out.println("Safe adult - pay 120");
+		
+end
+
+rule "Risky Adult"
+	
+	when
+		#conditions
+		Driver(age > 24, locationRiskProfile == "LOW", priorClaims >= 1)
+		policy: Policy(type == "COMPREHENSIVE")
+	then 
+		#actions
+		policy.setBasePrice(300);
+		System.out.println("Risky adult - pay 300");
+		
+end

Modified: labs/jbossesb/workspace/mlittle/legstar/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/package/org.jboss.soa.esb.services.rules.pkg
===================================================================
(Binary files differ)

Modified: labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -24,11 +24,29 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.StringReader;
+import java.net.URL;
+import java.util.Properties;
 
 import junit.framework.JUnit4TestAdapter;
+
 import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.agent.AgentEventListener;
+import org.drools.agent.RuleAgent;
+import org.drools.common.DroolsObjectOutputStream;
 import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+import org.jboss.internal.soa.esb.util.StreamUtils;
+import org.jboss.soa.esb.ConfigurationException;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -98,24 +116,90 @@
 		assertNotNull( spreadSheetAsString );
 	}
 	
-	/* 
-	   This test is currently disabled as the file property that exists in RuleBaseHelper.properties
-	   accesses a file on the local file system. This causes problems with the integration build as
-	   the working dir is not the same and when run from eclipse or ant in this modules directory.
-	   The issue here could be fixed by using the dir property in base-build.xml, but that caused
-	   the other modules to fail. Leaving this for now as v5.0 will clean this up./Daniel
 	@Test
-	*/
-	public void loadRuleBaseFromRuleAgent() throws Exception
+	public void verifyRuleAgentPkgFile() throws DroolsParserException, RuleServiceBuilderException, IOException, RuleServiceException
 	{
-		RuleBase ruleBase = helper.loadRuleBaseFromRuleAgent( "RuleBaseHelper.properties" );
-		assertNotNull( ruleBase );
-		assertEquals( "org.jboss.internal.soa.esb.rules", ruleBase.getPackages()[0].getName());
+	    final Properties properties = new Properties();
+	    URL pkgUrl = getClass().getResource("/testrules.pkg");
+	    
+	    properties.setProperty("newInstance", "true");
+	    properties.setProperty("file", pkgUrl.getFile());
+	    properties.setProperty("poll", "20");
+	    properties.setProperty("name", "MyConfig");
+	    
+	    // note that the is an exception occurs TestAgentEventListeners exception 
+	    // method will be called an this test will fail.
+	    RuleAgent ruleAgent = RuleAgent.newRuleAgent(properties, new TestAgentEventListener());
+	    Package pkg = ruleAgent.getRuleBase().getPackage("org.jboss.internal.soa.esb.rules");
+	    System.out.println(pkg);
+	    assertNotNull(pkg);
 	}
 	
+	/**
+	 * This method can be used to generate .pkg file for a .drl.
+	 */
+	@Test
+	@Ignore
+	public void generatePackageFromDrl() throws DroolsParserException, ConfigurationException, IOException
+	{
+        createPackageFile("/RuleAgentQuickstart.drl", "ruleAgent.pkg");
+	}
+	
+	private static void createPackageFile(final String drlFile, final String pkgFile) throws DroolsParserException, IOException, ConfigurationException
+	{
+		final PackageBuilder builder = new PackageBuilder();
+		final String drl = StreamUtils.getResourceAsString(drlFile, "UTF-8");
+        builder.addPackageFromDrl(new StringReader(drl));
+        
+        // gets the package
+        org.drools.rule.Package pkg = builder.getPackage();
+            
+        // creates the rulebase
+        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+
+        // adds the package
+        ruleBase.addPackage(pkg);
+        
+        serializeObject(pkg, pkgFile);
+	}
+	
+	private static void serializeObject(Object object, final String toFile) throws FileNotFoundException, IOException 
+	{
+        ObjectOutputStream outstream = null;
+        try 
+        {
+            outstream = new DroolsObjectOutputStream(new FileOutputStream(toFile));
+            outstream.writeObject(object);
+        } 
+        finally 
+        {
+            if (outstream != null) 
+            {
+                outstream.close();
+            }
+        }
+    }
+	 
 	public static junit.framework.Test suite()
 	{
 		return new JUnit4TestAdapter( DroolsRuleBaseHelperUnitTest.class );
 	}
 	
+	private class TestAgentEventListener implements AgentEventListener
+	{
+        public void exception(Exception e)
+        {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+        
+        public void setAgentName(String name) { }
+        public void debug(String message) { }
+        public void debug(String message, Object object) { }
+        public void info(String message) { }
+        public void info(String message, Object object) { }
+        public void warning(String message) { }
+        public void warning(String message, Object object) { }
+	}
+	
 }

Modified: labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java
===================================================================
--- labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java	2009-02-04 06:30:17 UTC (rev 25088)
+++ labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java	2009-02-04 06:34:18 UTC (rev 25089)
@@ -211,54 +211,6 @@
         assertEquals( 2 , counter.getCounter() );
 	}
 	
-	/* 
-	   This test is currently disabled as the file property that exists in RuleBaseHelper.properties
-	   accesses a file on the local file system. This causes problems with the integration build as
-	   the working dir is not the same and when run from eclipse or ant in this modules directory.
-	   The issue here could be fixed by using the dir property in base-build.xml, but that caused
-	   the other modules to fail. Leaving this for now as v5.0 will clean this up./Daniel
-	@Test
-    */
-	public void executeStatefulRulesFromRuleAgent() throws RuleServiceException
-	{
-		Map<String,Object> globals = getGlobalsWithDest();
-		
-		message = ruleService.executeStatefulRulesFromRuleAgent( "RuleBaseHelper.properties", message , globals, null );
-		
-		ArrayList<String> destinations = getDistinations( globals );
-		assertTrue( destinations.size() == 1 );
-		
-		message = ruleService.executeStatefulRules( ruleBase, true, message , globals, null );
-		assertTrue( destinations.size() == 2 );
-	}
-	
-	/*
-	 	Commented out for the same reason as the previous test.
-	@Test
-	*/
-	public void executeStatefulRulesCheckCached() throws RuleServiceException, LifecycleResourceException
-	{
-		ruleService.getCachedRuleBases().clear();
-		final String ruleAgentProperites = "RuleBaseHelper.properties";
-		Map<String,Object> globals = getGlobalsWithDest();
-		ruleService.executeStatefulRulesFromRuleAgent( ruleAgentProperites, message , globals, null );
-		
-		Map<String, RuleAgent> ruleAgents = ruleService.getCachedRuleAgents();
-		assertEquals( 1,  ruleAgents.size() );
-		RuleAgent ruleAgent = ruleAgents.get( ruleAgentProperites );
-		assertNotNull( ruleAgent );
-		
-		RuleBase rBase = ruleAgent.getRuleBase();
-		assertEquals ( rBase, ruleService.getCachedRuleBases().get( ruleAgentProperites ) );
-		
-		for ( int i = 0 ; i < 10 ; i++ )
-    		ruleService.executeStatefulRulesFromRuleAgent( ruleAgentProperites, message , globals, null );
-		
-		assertEquals( 1,  ruleAgents.size() );
-		assertEquals( 1,  ruleService.getCachedRuleBases().size() );
-		assertEquals ( rBase, ruleService.getCachedRuleBases().get( ruleAgentProperites ) );
-	}
-		
 	//	Test setup methods
 	
 	@Before

Modified: labs/jbossesb/workspace/mlittle/legstar/product/services/jbrules/src/test/resources/testrules.pkg
===================================================================
(Binary files differ)




More information about the jboss-svn-commits mailing list