[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