[jboss-svn-commits] JBL Code SVN: r28382 - in labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta: tests/src/org/jboss/internal/soa/esb/webservice and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 24 07:31:33 EDT 2009
Author: kevin.conner at jboss.com
Date: 2009-07-24 07:31:32 -0400 (Fri, 24 Jul 2009)
New Revision: 28382
Added:
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java
Modified:
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java
Log:
Handle multiple instances of WS endpoint: JBESB-2754
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java 2009-07-24 11:09:54 UTC (rev 28381)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java 2009-07-24 11:31:32 UTC (rev 28382)
@@ -68,10 +68,10 @@
protected final ServiceInvoker serviceInvoker ;
- protected BaseWebService(final String category, final String name)
+ protected BaseWebService(final ServiceInvoker serviceInvoker)
throws MessageDeliverException
{
- serviceInvoker = new ServiceInvoker(category, name) ;
+ this.serviceInvoker = serviceInvoker ;
}
public SOAPMessage invoke(final SOAPMessage request)
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java 2009-07-24 11:09:54 UTC (rev 28381)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGenerator.java 2009-07-24 11:31:32 UTC (rev 28382)
@@ -19,10 +19,14 @@
*/
package org.jboss.internal.soa.esb.webservice;
+import org.jboss.soa.esb.client.ServiceInvoker;
+
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
+import javassist.CtField;
import javassist.LoaderClassPath;
+import javassist.Modifier;
import javassist.NotFoundException;
import javassist.bytecode.AnnotationsAttribute;
import javassist.bytecode.ConstPool;
@@ -102,7 +106,14 @@
seiClass.getClassFile().addAttribute(attribute);
- final String constructorStr = "super(\"" + category + "\"," + "\"" + service + "\");";
+ final String siClassName = ServiceInvoker.class.getName() ;
+ final CtClass siClass = pool.get(siClassName) ;
+ final String siFieldName = "serviceInvoker" ;
+ final CtField field = new CtField(siClass, siFieldName, seiClass) ;
+ field.setModifiers(Modifier.PRIVATE | Modifier.STATIC | Modifier.FINAL) ;
+ seiClass.addField(field, "new " + siClassName + "(\"" + category + "\", \"" + service + "\")") ;
+
+ final String constructorStr = "super("+siFieldName+");";
CtConstructor defaultConstructor = new CtConstructor(null, seiClass) ;
defaultConstructor.setBody(constructorStr) ;
seiClass.addConstructor(defaultConstructor) ;
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java 2009-07-24 11:09:54 UTC (rev 28381)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/OneWayBaseWebService.java 2009-07-24 11:31:32 UTC (rev 28382)
@@ -21,6 +21,7 @@
*/
package org.jboss.internal.soa.esb.webservice;
+import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.message.Message;
@@ -30,10 +31,10 @@
*/
public class OneWayBaseWebService extends BaseWebService
{
- protected OneWayBaseWebService(final String category, final String name)
+ protected OneWayBaseWebService(final ServiceInvoker serviceInvoker)
throws MessageDeliverException
{
- super(category, name) ;
+ super(serviceInvoker) ;
}
@Override
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java 2009-07-24 11:09:54 UTC (rev 28381)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/webservice/RequestResponseBaseWebService.java 2009-07-24 11:31:32 UTC (rev 28382)
@@ -22,6 +22,7 @@
package org.jboss.internal.soa.esb.webservice;
import org.apache.log4j.Logger;
+import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.common.Environment;
import org.jboss.soa.esb.common.ModulePropertyManager;
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
@@ -40,10 +41,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 ServiceInvoker serviceInvoker)
throws MessageDeliverException
{
- super(category, name) ;
+ super(serviceInvoker) ;
}
@Override
Added: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java (rev 0)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java 2009-07-24 11:31:32 UTC (rev 28382)
@@ -0,0 +1,146 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.internal.soa.esb.webservice;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.jboss.internal.soa.esb.couriers.MockCourier;
+import org.jboss.internal.soa.esb.couriers.MockCourierFactory;
+import org.jboss.internal.soa.esb.services.registry.MockRegistry;
+import org.jboss.internal.soa.esb.util.StreamUtils;
+import org.jboss.soa.esb.Service;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.listeners.config.Generator;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.services.registry.RegistryException;
+import org.jboss.soa.esb.services.registry.RegistryFactory;
+import org.jboss.soa.esb.util.ClassUtil;
+
+public class JAXWSProviderClassGeneratorUnitTest extends TestCase
+{
+ private TestRegistry testRegistry ;
+
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ MockCourierFactory.install() ;
+ testRegistry = new TestRegistry() ;
+ RegistryFactory.setRegistry(testRegistry) ;
+ }
+
+ @Override
+ protected void tearDown()
+ throws Exception
+ {
+ RegistryFactory.setRegistry(null) ;
+ MockCourierFactory.uninstall() ;
+ }
+
+ public void testRegistryLookupCount()
+ throws Exception
+ {
+ final InputStream is = ClassUtil.getResourceAsStream("jbossesb_config_08.xml", getClass()) ;
+ final byte[] configBytes = StreamUtils.readStream(is) ;
+ ByteArrayOutputStream listenerXml = new ByteArrayOutputStream();
+ ByteArrayOutputStream gatewayXml = new ByteArrayOutputStream();
+ Generator generator = new Generator(new ByteArrayInputStream(configBytes), listenerXml, gatewayXml);
+ generator.generate();
+ List<org.jboss.soa.esb.listeners.config.xbeanmodel.ServiceDocument.Service> services = generator.getModel().getServices();
+ final org.jboss.soa.esb.listeners.config.xbeanmodel.ServiceDocument.Service service = services.get(0) ;
+ final ESBServiceEndpointInfo endpointInfo = new ESBServiceEndpointInfo(service) ;
+
+ final EPR deliverEPR = new EPR(new URI("test:deliver")) ;
+ final MockCourier deliverCourier = new MockCourier(true);
+ final String category = service.getCategory() ;
+ final String name = service.getName() ;
+ TestRegistry.register(category, name, deliverEPR, deliverCourier);
+
+ final JAXWSProviderClassGenerator classGenerator = new JAXWSProviderClassGenerator() ;
+
+ final byte[] bytes = classGenerator.generate(category, name, endpointInfo) ;
+ final ClassLoader classLoader = new ClassLoader() {
+ public java.lang.Class<?> loadClass(final String name) throws ClassNotFoundException {
+ if (endpointInfo.getClassName().equals(name)) {
+ return defineClass(name, bytes, 0, bytes.length) ;
+ } else {
+ return super.loadClass(name) ;
+ }
+ };
+ } ;
+ final Class<?> baseWebServiceClass = classLoader.loadClass(endpointInfo.getClassName()) ;
+
+ final BaseWebService baseWebService = (BaseWebService)baseWebServiceClass.newInstance() ;
+ assertEquals("Initial instance count", 1, testRegistry.getCount(category, name)) ;
+
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ baseWebService.deliverMessage(message) ;
+ assertEquals("First invocation", 1, testRegistry.getCount(category, name)) ;
+
+ final BaseWebService baseWebService2 = (BaseWebService)baseWebServiceClass.newInstance() ;
+ assertEquals("Second instance count", 1, testRegistry.getCount(category, name)) ;
+
+ baseWebService2.deliverMessage(message) ;
+ assertEquals("Second invocation", 1, testRegistry.getCount(category, name)) ;
+ }
+
+ final class TestRegistry extends MockRegistry
+ {
+ final Map<Service, Integer> counts = new HashMap<Service, Integer>() ;
+
+ @Override
+ public List<EPR> findEPRs(final String category, final String serviceName)
+ throws RegistryException
+ {
+ final Service service = new Service(category, serviceName) ;
+ final Integer count = counts.get(service) ;
+ if (count != null)
+ {
+ counts.put(service, Integer.valueOf(count.intValue() + 1)) ;
+ }
+ else
+ {
+ counts.put(service, Integer.valueOf(1)) ;
+ }
+
+ return super.findEPRs(category, serviceName) ;
+ }
+
+ public int getCount(final String category, final String serviceName)
+ {
+ final Service service = new Service(category, serviceName) ;
+ final Integer count = counts.get(service) ;
+ if (count != null)
+ {
+ return count.intValue() ;
+ }
+ return 0 ;
+ }
+ }
+}
Property changes on: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/webservice/JAXWSProviderClassGeneratorUnitTest.java
___________________________________________________________________
Name: svn:keywords
+ Rev Date
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list