[jboss-svn-commits] JBL Code SVN: r17088 - in labs/jbossesb/workspace/bramley/product: lib/ext and 21 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Dec 7 08:39:07 EST 2007
Author: tfennelly
Date: 2007-12-07 08:39:06 -0500 (Fri, 07 Dec 2007)
New Revision: 17088
Added:
labs/jbossesb/workspace/bramley/product/lib/ext/commons-codec-1.3.jar
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistry.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/RegsitryEntry.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/InVMListenerMapper.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryUnitTest.java
Modified:
labs/jbossesb/workspace/bramley/product/etc/schemas/xml/jbossesb-1.0.1.xsd
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/JAXRRegistryImpl.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/MockRegistryImpl.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/Service.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/actions/Aggregator.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierCollection.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/Invoker.java
labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/MockCourierFactory.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/CourierIntegrationTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFileReplyToEprUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFtpReplyToEprIntegrationTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultJdbcReplyToEprUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerInVMUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/GatewayInVMServiceUnitTest.java
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/listenerInVM.xml
labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/services/registry/RegistryUnitTest.java
labs/jbossesb/workspace/bramley/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java
labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollectorAction.java
labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java
labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java
labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java
Log:
<invm-listener> config + InVMRegistry + a few InVMCourier tweaks
Modified: labs/jbossesb/workspace/bramley/product/etc/schemas/xml/jbossesb-1.0.1.xsd
===================================================================
--- labs/jbossesb/workspace/bramley/product/etc/schemas/xml/jbossesb-1.0.1.xsd 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/etc/schemas/xml/jbossesb-1.0.1.xsd 2007-12-07 13:39:06 UTC (rev 17088)
@@ -497,6 +497,36 @@
</xsd:complexType>
</xsd:element>
+ <xsd:element name="invm-listener" substitutionGroup="jesb:listener">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ A specific listener using the invm protocol.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="jesb:listener">
+ <xsd:attribute name="lock-step-delivery" type="xsd:boolean" use="optional" default="false">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Should messages delivered to the associated ciourier be delivered in lock step.
+ This basically means that the the messageery thread will block untill the message
+ is picked up.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="lock-step-timeout" type="xsd:long" use="optional" default="10000">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ The thread wait time for the blocking delivery thread when delivery is being made in lock-step.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
FS Type Implementations.
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
Added: labs/jbossesb/workspace/bramley/product/lib/ext/commons-codec-1.3.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbossesb/workspace/bramley/product/lib/ext/commons-codec-1.3.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -22,9 +22,6 @@
package org.jboss.internal.soa.esb.couriers;
-import java.util.HashMap;
-import java.util.Vector;
-
import org.apache.log4j.Logger;
import org.jboss.soa.esb.addressing.MalformedEPRException;
import org.jboss.soa.esb.addressing.eprs.InVMEpr;
@@ -32,282 +29,94 @@
import org.jboss.soa.esb.couriers.CourierTimeoutException;
import org.jboss.soa.esb.message.Message;
-public class InVMCourier implements PickUpOnlyCourier, DeliverOnlyCourier
-{
- /**
- * disable public default constructor
- */
- protected InVMCourier()
- {
- }
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
- /**
- * package protected constructor - Objects of this class should only be
- * instantiated by internal implementations
- *
- * @param epr
- */
- public InVMCourier(InVMEpr epr) throws CourierException,
- MalformedEPRException
- {
- this(epr, false);
- }
+public class InVMCourier implements PickUpOnlyCourier, DeliverOnlyCourier {
- /**
- * package protected constructor - Objects of this class should only be
- * instantiated by internal implementations
- *
- * @param epr
- * @param receiverOnly
- */
+ /**
+ * package protected constructor - Objects of this class should only be
+ * instantiated by internal implementations
+ *
+ * @param epr
+ */
+ public InVMCourier(InVMEpr epr) throws CourierException,
+ MalformedEPRException
+ {
+ this.epr = epr;
+ if (epr.getLockstep()) {
+ deliveryTimeout = epr.getLockstepWaitTime();
+ } else {
+ deliveryTimeout = 0;
+ }
+ }
- public InVMCourier(InVMEpr epr, boolean receiverOnly)
- throws CourierException, MalformedEPRException
- {
- _receiverOnly = receiverOnly;
- _epr = epr;
+ /**
+ * package the ESB message into the queue
+ *
+ * @param message Message - the message to deliverAsync
+ * @return boolean - the result of the delivery
+ * @throws CourierException -
+ * if problems were encountered
+ */
+ public boolean deliver(Message message) throws CourierException, MalformedEPRException
+ {
+ if (message == null) {
+ return false;
+ }
- synchronized (_queue)
- {
- InVMCourier._referenceCount++;
- _registered = true;
- }
- }
+ synchronized (messageQueue) {
+ messageQueue.add(message);
- /**
- * package the ESB message into the queue
- *
- * @param message
- * Message - the message to deliverAsync
- * @return boolean - the result of the delivery
- * @throws CourierException -
- * if problems were encountered
- */
+ // Notify 1 waiting pickup thread of the delivery...
+ messageQueue.notify();
- public boolean deliver(Message message) throws CourierException,
- MalformedEPRException
- {
- if (_receiverOnly)
- throw new CourierException("This is a pickUp-only Courier");
+ if (deliveryTimeout > 0) {
+ try {
+ // Wait on notification from the pickup thread...
+ messageQueue.wait(deliveryTimeout);
+ } catch (InterruptedException e) {
+ _logger.warn("Timeout expired while waiting on message pickup on InVM queue '" + epr.getAddr().getAddress() + "'.", e);
+ }
+ }
+ }
- if (message == null)
- return false;
-
- /*
- * Normally we keep the link between sender and receiver threads. This
- * makes the model simpler and allows services to be transplanted
- * between transports. Plus, this is based on the experiences from CORBA
- * 2.0 to 2.3, where POA was introduced: by default all local
- * invocations then looked like remote invocations and weren't
- * necessarily handled by the same thread. But all good ORBs had a
- * workaround to go back to the old style, where the same thread did all
- * of the work in "lock step".
- */
+ return true;
+ }
- if (_epr.getLockstep())
- return lockstepDeliver(message);
+ public Message pickup(long millis) throws CourierException, CourierTimeoutException
+ {
+ Message message = null;
- Vector<Message> serviceQueue;
+ millis = Math.max(millis, 100);
+ synchronized (messageQueue) {
+ if (messageQueue.isEmpty()) {
+ try {
+ messageQueue.wait(millis);
+ } catch (InterruptedException e) {
+ _logger.debug("Pickup thread '" + Thread.currentThread().getName() + "' interrupted while waiting on delivery notification or timeout.", e);
+ }
+ }
+ if (!messageQueue.isEmpty()) {
+ message = messageQueue.remove();
+ }
- synchronized (_queue)
- {
- serviceQueue = _queue.get(_epr.getServiceId());
+ // Notify 1 waiting delivery thread of the pickup...
+ messageQueue.notify();
+ }
- if (serviceQueue == null)
- {
- serviceQueue = new Vector<Message>();
- _queue.put(_epr.getServiceId(), serviceQueue);
+ return message;
+ }
- _queue.notify();
- }
+ public void cleanup()
+ {
+ }
- if (!_registered)
- {
- InVMCourier._referenceCount++;
- _registered = true;
- }
- }
+ protected InVMEpr epr;
- synchronized (serviceQueue)
- {
- serviceQueue.add(message);
- }
+ protected static Logger _logger = Logger.getLogger(InVMCourier.class);
- return true;
- }
+ private Queue<Message> messageQueue = new ConcurrentLinkedQueue<Message>();
- public Message pickup(long millis) throws CourierException,
- CourierTimeoutException
- {
- long limit = ((millis < 100) ? 100 : millis);
-
- if (_epr.getLockstep())
- return lockstepPickup(limit);
-
- long startTime = System.currentTimeMillis();
- Vector serviceQueue;
-
- do
- {
- synchronized (_queue)
- {
- serviceQueue = _queue.get(_epr.getServiceId());
-
- if (serviceQueue == null) // no queue, so no messages, so
- // let's wait.
- {
- try
- {
- _queue.wait(limit);
- }
- catch (InterruptedException ex)
- {
- serviceQueue = _queue.get(_epr.getServiceId());
- }
- }
-
- if (!_registered)
- {
- InVMCourier._referenceCount++;
- _registered = true;
- }
- }
-
- if (serviceQueue != null)
- {
- synchronized (serviceQueue)
- {
- /*
- * If queue size is 0 then let's keep waiting.
- */
-
- if (serviceQueue.size() > 0)
- {
- Message result = (Message) serviceQueue.remove(0);
-
- if (result != null)
- return result;
- }
- }
- }
-
- } while (System.currentTimeMillis() - startTime < limit);
-
- return null;
- }
-
- public void cleanup()
- {
- synchronized (_queue)
- {
- if (_registered)
- {
- if (InVMCourier._referenceCount-- == 0)
- {
- _queue.remove(_epr.getServiceId());
- }
-
- _registered = false;
- }
- }
- }
-
- private final boolean lockstepDeliver(Message message)
- throws CourierException, MalformedEPRException
- {
- Vector<Message> semaphoreMessage = null;
-
- synchronized (_queue)
- {
- semaphoreMessage = _queue.get(_epr.getServiceId());
-
- if (semaphoreMessage == null)
- {
- semaphoreMessage = new Vector<Message>();
- _queue.put(_epr.getServiceId(), semaphoreMessage);
- }
-
- semaphoreMessage.add(message);
-
- _queue.notify();
- }
-
- synchronized (semaphoreMessage)
- {
- try
- {
- semaphoreMessage.wait(_epr.getLockstepWaitTime()); // Not
- // picked up
- // in 10s?
- // Probably not going to happen.
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- return true;
- }
-
- private final Message lockstepPickup(long limit) throws CourierException,
- CourierTimeoutException
- {
- long startTime = System.currentTimeMillis();
- Vector<Message> semaphoreMessage = null;
-
- do
- {
- synchronized (_queue)
- {
- semaphoreMessage = _queue.get(_epr.getServiceId());
-
- if ((semaphoreMessage == null) || (semaphoreMessage.size() == 0))
- { // no queue, so no messages, so let's wait.
- try
- {
- _queue.wait(limit);
- }
- catch (InterruptedException ex)
- {
- // hopefully message has been added to the queue now
-
- semaphoreMessage = _queue.get(_epr.getServiceId());
- }
- }
- }
-
- if (semaphoreMessage != null)
- {
- synchronized (semaphoreMessage)
- {
- semaphoreMessage.notify();
-
- try
- {
- return semaphoreMessage.remove(0);
- }
- catch (Exception ex)
- {
- return null;
- }
- }
- }
-
- } while (System.currentTimeMillis() - startTime < limit);
-
- return null;
- }
-
- protected boolean _receiverOnly;
-
- protected InVMEpr _epr;
-
- protected static Logger _logger = Logger.getLogger(InVMCourier.class);
-
- private boolean _registered;
-
- static private HashMap<String, Vector<Message>> _queue = new HashMap<String, Vector<Message>>();
-
- static private int _referenceCount = 0;
+ private long deliveryTimeout = 0;
}
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -49,12 +49,10 @@
*/
public class TwoWayCourierImpl implements TwoWayCourier
{
- private DeliverOnlyCourier _deliverCourier;
-
- private EPR _toEPR ;
+ private EPR _toEPR ;
+ private DeliverOnlyCourier deliverCourier;
+ private PickUpOnlyCourier pickupCourier;
- private PickUpOnlyCourier _pickupCourier;
-
/**
* Constructor.
*
@@ -71,16 +69,30 @@
setReplyToEpr(replyToEpr);
}
- /**
- * @see org.jboss.soa.esb.couriers.TwoWayCourier#setToEpr(toEPR).
+ public TwoWayCourierImpl(EPR toEPR, DeliverOnlyCourier deliver, PickUpOnlyCourier pickup) throws CourierException, MalformedEPRException {
+ // TODO: Doesn't seem to require the replyToEpr??
+ _toEPR = toEPR ;
+ deliverCourier = deliver;
+ pickupCourier = pickup;
+ }
+
+ public DeliverOnlyCourier getDeliverCourier() {
+ return deliverCourier;
+ }
+
+ public PickUpOnlyCourier getPickupCourier() {
+ return pickupCourier;
+ }
+
+ /**
*/
public void setToEpr(EPR toEPR) throws CourierException,
MalformedEPRException
{
- DeliverOnlyCourier old = _deliverCourier;
+ DeliverOnlyCourier old = deliverCourier;
try
{
- _deliverCourier = getDeliverCourier(toEPR);
+ deliverCourier = getDeliverCourier(toEPR);
_toEPR = toEPR ;
}
finally
@@ -90,15 +102,14 @@
}
/**
- * @see org.jboss.soa.esb.couriers.TwoWayCourier#setReplyEpr(toReplyEPR).
*/
public void setReplyToEpr(EPR replyToEPR) throws CourierException,
MalformedEPRException
{
- PickUpOnlyCourier old = _pickupCourier;
+ PickUpOnlyCourier old = pickupCourier;
try
{
- _pickupCourier = getPickupCourier(replyToEPR);
+ pickupCourier = getPickupCourier(replyToEPR);
}
finally
{
@@ -106,21 +117,21 @@
}
}
- private DeliverOnlyCourier getDeliverCourier(EPR toEPR)
+ public static DeliverOnlyCourier getDeliverCourier(EPR toEPR)
throws CourierException, MalformedEPRException
{
return (null == toEPR) ? null : (DeliverOnlyCourier) courierFromEpr(
toEPR, false);
}
- private PickUpOnlyCourier getPickupCourier(EPR replyToEPR)
+ public static PickUpOnlyCourier getPickupCourier(EPR replyToEPR)
throws CourierException, MalformedEPRException
{
return (null == replyToEPR) ? null
: (PickUpOnlyCourier) courierFromEpr(replyToEPR, true);
}
- private Object courierFromEpr(EPR epr, boolean pickUpOnly)
+ private static Object courierFromEpr(EPR epr, boolean pickUpOnly)
throws CourierException, MalformedEPRException
{
if (null == epr)
@@ -131,8 +142,6 @@
return new FileCourier((FileEpr) epr, pickUpOnly);
if (epr instanceof JDBCEpr)
return new SqlTableCourier((JDBCEpr) epr, pickUpOnly);
- if (epr instanceof InVMEpr)
- return new InVMCourier((InVMEpr) epr, pickUpOnly);
// TODO the following is necessary because EPR
// serialization/deserialization loses type
@@ -140,7 +149,7 @@
return courierFromGenericEPR(epr, pickUpOnly);
}
- private Object courierFromGenericEPR(EPR epr, boolean pickUpOnly)
+ private static Object courierFromGenericEPR(EPR epr, boolean pickUpOnly)
throws CourierException, MalformedEPRException
{
String addr = null;
@@ -150,8 +159,6 @@
return new JmsCourier(new JMSEpr(epr), pickUpOnly);
if (addr.startsWith(JDBCEpr.JDBC_PROTOCOL))
return new SqlTableCourier(new JDBCEpr(epr), pickUpOnly);
- if (addr.startsWith(InVMEpr.INVM_PROTOCOL))
- return new InVMCourier(new InVMEpr(epr), pickUpOnly);
// TODO magic strings
if (addr.startsWith("file://") || addr.startsWith("ftp://")
|| addr.startsWith("sftp://") || addr.startsWith("ftps://"))
@@ -167,7 +174,7 @@
public boolean deliver(Message message) throws CourierException,
MalformedEPRException
{
- if (null == _deliverCourier)
+ if (null == deliverCourier)
throw new CourierException("No deliverAsync courier");
final Header call = message.getHeader();
call.setTo(_toEPR) ;
@@ -190,7 +197,7 @@
{
message = FilterManager.getInstance().doOutputWork(message, null);
- return _deliverCourier.deliver(message);
+ return deliverCourier.deliver(message);
}
finally
{
@@ -207,7 +214,7 @@
public Message pickup(long waitTime) throws CourierException,
CourierTimeoutException
{
- return pickup(waitTime, _pickupCourier);
+ return pickup(waitTime, pickupCourier);
}
/**
@@ -232,10 +239,10 @@
public void cleanup ()
{
- CourierUtil.cleanCourier(_deliverCourier) ;
- _deliverCourier = null ;
- CourierUtil.cleanCourier(_pickupCourier) ;
- _pickupCourier = null ;
- CourierFactory.deregisterCourier(this) ;
+ CourierUtil.cleanCourier(deliverCourier) ;
+ deliverCourier = null ;
+ CourierUtil.cleanCourier(pickupCourier) ;
+ pickupCourier = null ;
+ CourierFactory.getInstance().deregisterCourier(this) ;
}
}
Added: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistry.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistry.java (rev 0)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistry.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -0,0 +1,134 @@
+/*
+ * 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.services.registry;
+
+import org.jboss.soa.esb.Service;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.services.registry.Registry;
+import org.jboss.soa.esb.services.registry.RegistryException;
+import org.jboss.soa.esb.services.registry.ServiceNotFoundException;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Iterator;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * In VM registry.
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class InVMRegistry implements Registry {
+
+ private Map<Service, List<RegsitryEntry>> regEntries = new ConcurrentHashMap<Service, List<RegsitryEntry>>();
+
+ public void unRegisterService(String category, String serviceName) throws RegistryException, ServiceNotFoundException {
+ if(category == null) {
+ category = "";
+ }
+ regEntries.remove(new Service(category, serviceName));
+ }
+
+ public void registerEPR(String serviceCategoryName, String serviceName, String serviceDescription, EPR epr, String eprDescription) throws RegistryException {
+ if(serviceCategoryName == null) {
+ serviceCategoryName = "";
+ }
+ Service service = new Service(serviceCategoryName, serviceName);
+ RegsitryEntry regEntry = new RegsitryEntry(service, serviceDescription, epr, eprDescription);
+ List<RegsitryEntry> serviceEntries = getServiceEntries(service);
+
+ serviceEntries.add(regEntry);
+ }
+
+ public void unRegisterEPR(String serviceCategoryName, String serviceName, EPR epr) throws RegistryException, ServiceNotFoundException {
+ if(serviceCategoryName == null) {
+ serviceCategoryName = "";
+ }
+ Service service = new Service(serviceCategoryName, serviceName);
+ List<RegsitryEntry> serviceEntries = getServiceEntries(service);
+ Iterator<RegsitryEntry> iterator = serviceEntries.iterator();
+
+ while (iterator.hasNext()) {
+ RegsitryEntry regsitryEntry = iterator.next();
+
+ if(regsitryEntry.getEpr().getAddr().getAddress().equals(epr.getAddr().getAddress())) {
+ iterator.remove();
+ }
+ }
+ }
+
+ public List<String> findAllServices() throws RegistryException {
+ return findServices(null);
+ }
+
+ public List<String> findServices(String serviceCategoryName) throws RegistryException {
+ Iterator<Service> iterator = regEntries.keySet().iterator();
+ List<String> services = new ArrayList<String>();
+
+ while (iterator.hasNext()) {
+ Service service = iterator.next();
+ if(serviceCategoryName == null || service.getCategory().equals(serviceCategoryName)) {
+ services.add(service.getName());
+ }
+ }
+
+ return services;
+ }
+
+ public List<EPR> findEPRs(String serviceCategoryName, String serviceName) throws RegistryException, ServiceNotFoundException {
+ if(serviceCategoryName == null) {
+ serviceCategoryName = "";
+ }
+ List<EPR> eprs = new ArrayList<EPR>();
+ Service service = new Service(serviceCategoryName, serviceName);
+ List<RegsitryEntry> serviceEntries = getServiceEntries(service);
+
+ for (RegsitryEntry serviceEntry : serviceEntries) {
+ eprs.add(serviceEntry.getEpr());
+ }
+
+ return eprs;
+ }
+
+ public EPR findEPR(String serviceCategoryName, String serviceName) throws RegistryException, ServiceNotFoundException {
+ if(serviceCategoryName == null) {
+ serviceCategoryName = "";
+ }
+ List<EPR> eprs = findEPRs(serviceCategoryName, serviceName);
+
+ if(!eprs.isEmpty()) {
+ return eprs.get(0);
+ } else {
+ return null;
+ }
+ }
+
+ private synchronized List<RegsitryEntry> getServiceEntries(Service service) {
+ List<RegsitryEntry> serviceEntries = regEntries.get(service);
+
+ if(serviceEntries == null) {
+ serviceEntries = new ArrayList<RegsitryEntry>();
+ regEntries.put(service, serviceEntries);
+ }
+
+ return serviceEntries;
+ }
+}
Property changes on: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistry.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/JAXRRegistryImpl.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/JAXRRegistryImpl.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/JAXRRegistryImpl.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -61,6 +61,7 @@
import org.jboss.soa.esb.MarshalException;
import org.jboss.soa.esb.UnmarshalException;
import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.addressing.eprs.InVMEpr;
import org.jboss.soa.esb.common.Configuration;
import org.jboss.soa.esb.services.registry.Registry;
import org.jboss.soa.esb.services.registry.RegistryException;
@@ -72,8 +73,7 @@
*
* @author Kurt Stam
*/
-public class JAXRRegistryImpl implements Registry
-{
+public class JAXRRegistryImpl extends InVMRegistry {
private static Logger logger = Logger.getLogger(JAXRRegistryImpl.class);
public static Set<PasswordAuthentication> creds = new HashSet<PasswordAuthentication>();
private static Properties props = new Properties();
@@ -158,7 +158,10 @@
*/
@SuppressWarnings("unchecked")
public void unRegisterService(String category, String serviceName) throws RegistryException, ServiceNotFoundException{
-// first find the ServiceBindings for this service
+ // Make sure it's unregistered from the InVMRegistry...
+ super.unRegisterService(category, serviceName);
+
+ // first find the ServiceBindings for this service
Connection connection = JAXRRegistryImpl.getConnection();
Service service = null;
try {
@@ -185,50 +188,59 @@
public void registerEPR(String category, String serviceName, String serviceDescription, EPR epr, String eprDescription)
throws RegistryException
{
- Connection connection = JAXRRegistryImpl.getConnection();
- try {
- //Find the service
- Service service = findService(category,serviceName);
- if (service==null) {
- logger.log(Level.DEBUG, "Service " + serviceName + " does not yet exist, creating now..");
- service = registerService(category, serviceName, serviceDescription);
- }
+ if(epr instanceof InVMEpr) {
+ // Only register these EPRs in memory...
+ super.registerEPR(category, serviceName, serviceDescription, epr, eprDescription);
+ } else {
+ // All other EPRs are registered in the central repo...
- connection.setCredentials(JAXRRegistryImpl.creds);
- RegistryService rs = connection.getRegistryService();
- BusinessLifeCycleManager blm = rs.getBusinessLifeCycleManager();
- BusinessQueryManager bqm = rs.getBusinessQueryManager();
- ServiceBinding serviceBinding = blm.createServiceBinding();
- serviceBinding.setDescription(blm.createInternationalString(eprDescription));
- String xml = EPRHelper.toXMLString(epr);
- serviceBinding.setAccessURI(URLEncoder.encode(xml,"UTF-8"));
-
- ArrayList<ServiceBinding> serviceBindings = new ArrayList<ServiceBinding>();
- serviceBindings.add(serviceBinding);
- service.addServiceBindings(serviceBindings);
- Collection<String> findQualifiers = new ArrayList<String>();
- findQualifiers.add(FindQualifier.AND_ALL_KEYS);
- findQualifiers.add(FindQualifier.SORT_BY_NAME_DESC);
- ClassificationScheme cScheme = bqm.findClassificationSchemeByName(findQualifiers, "org.jboss.soa.esb.:category");
- Classification classification = blm.createClassification(cScheme, "category", category);
- service.addClassification(classification);
-
- saveRegistryObject(serviceBinding);
- } catch (JAXRException je) {
- throw new RegistryException(je.getLocalizedMessage(), je);
- } catch (UnsupportedEncodingException uee) {
- throw new RegistryException(uee.getLocalizedMessage(), uee);
- } catch (MarshalException me) {
- throw new RegistryException(me.getLocalizedMessage(), me);
- } finally {
- closeConnection(connection);
- }
- }
+ Connection connection = JAXRRegistryImpl.getConnection();
+ try {
+ //Find the service
+ Service service = findService(category,serviceName);
+ if (service==null) {
+ logger.log(Level.DEBUG, "Service " + serviceName + " does not yet exist, creating now..");
+ service = registerService(category, serviceName, serviceDescription);
+ }
+
+ connection.setCredentials(JAXRRegistryImpl.creds);
+ RegistryService rs = connection.getRegistryService();
+ BusinessLifeCycleManager blm = rs.getBusinessLifeCycleManager();
+ BusinessQueryManager bqm = rs.getBusinessQueryManager();
+ ServiceBinding serviceBinding = blm.createServiceBinding();
+ serviceBinding.setDescription(blm.createInternationalString(eprDescription));
+ String xml = EPRHelper.toXMLString(epr);
+ serviceBinding.setAccessURI(URLEncoder.encode(xml,"UTF-8"));
+
+ ArrayList<ServiceBinding> serviceBindings = new ArrayList<ServiceBinding>();
+ serviceBindings.add(serviceBinding);
+ service.addServiceBindings(serviceBindings);
+ Collection<String> findQualifiers = new ArrayList<String>();
+ findQualifiers.add(FindQualifier.AND_ALL_KEYS);
+ findQualifiers.add(FindQualifier.SORT_BY_NAME_DESC);
+ ClassificationScheme cScheme = bqm.findClassificationSchemeByName(findQualifiers, "org.jboss.soa.esb.:category");
+ Classification classification = blm.createClassification(cScheme, "category", category);
+ service.addClassification(classification);
+
+ saveRegistryObject(serviceBinding);
+ } catch (JAXRException je) {
+ throw new RegistryException(je.getLocalizedMessage(), je);
+ } catch (UnsupportedEncodingException uee) {
+ throw new RegistryException(uee.getLocalizedMessage(), uee);
+ } catch (MarshalException me) {
+ throw new RegistryException(me.getLocalizedMessage(), me);
+ } finally {
+ closeConnection(connection);
+ }
+ }
+ }
/**
* Remove an EPR from the Registry
*/
public void unRegisterEPR(String category, String serviceName, EPR toBeDeletedEPR) throws RegistryException, ServiceNotFoundException{
- //first find the ServiceBindings for this service
+ super.unRegisterEPR(category, serviceName, toBeDeletedEPR);
+
+ //first find the ServiceBindings for this service
Connection connection = JAXRRegistryImpl.getConnection();
Service service = null;
try {
@@ -271,8 +283,12 @@
*/
public List<String> findAllServices() throws RegistryException
{
- List<String> serviceNames = new ArrayList<String>();
- try {
+ List<String> serviceNames = new ArrayList<String>();
+
+ // Add the invm Services at the front of the list...
+ serviceNames.addAll(super.findAllServices());
+
+ try {
Collection services = getJBossESBOrganization().getServices();
for (Iterator i=services.iterator();i.hasNext();) {
String serviceName = ((Service)i.next()).getName().getValue();
@@ -292,7 +308,11 @@
public List<String> findServices(String category) throws RegistryException
{
List<String>serviceNames = new ArrayList<String>();
- try {
+
+ // Add the invm Services at the front of the list...
+ serviceNames.addAll(super.findServices(category));
+
+ try {
Collection<Service>services = findServicesForCategory(category);
for (Iterator<Service> i=services.iterator();i.hasNext();) {
String serviceName = i.next().getName().getValue();
@@ -311,7 +331,11 @@
public List<EPR> findEPRs(String category, String serviceName) throws RegistryException, ServiceNotFoundException
{
List<EPR> eprs = new ArrayList<EPR>();
- Connection connection = JAXRRegistryImpl.getConnection();
+
+ // Add the invm EPRs at the front of the list...
+ eprs.addAll(super.findEPRs(category, serviceName));
+
+ Connection connection = JAXRRegistryImpl.getConnection();
try {
Service service = findService(category, serviceName);
if (service==null){
@@ -345,30 +369,34 @@
*/
public EPR findEPR(String category, String serviceName) throws RegistryException, ServiceNotFoundException
{
- EPR epr = null;
- Connection connection = JAXRRegistryImpl.getConnection();
- try {
- Service service = findService(category, serviceName);
- if (service==null){
- throw new ServiceNotFoundException("Could not find service with category=" + category + " and serviceName=" + serviceName);
- }
- // Get registry service and business query manager
- Collection<ServiceBinding> serviceBindings = findServiceBindings(service);
- if (serviceBindings.iterator().hasNext()) {
- ServiceBinding serviceBinding = (ServiceBinding) serviceBindings.iterator().next();
- String eprXML = URLDecoder.decode(serviceBinding.getAccessURI(),"UTF-8");
- epr = EPRHelper.fromXMLString(eprXML);
- }
- } catch (JAXRException je) {
- throw new RegistryException(je.getLocalizedMessage(), je);
- } catch (UnsupportedEncodingException uee) {
- throw new RegistryException(uee.getLocalizedMessage(), uee);
- } catch (UnmarshalException me) {
- throw new RegistryException(me.getLocalizedMessage(), me);
- } finally {
- closeConnection(connection);
- }
- return epr;
+ EPR epr = super.findEPR(category, serviceName);
+
+ if(epr == null) {
+ Connection connection = JAXRRegistryImpl.getConnection();
+ try {
+ Service service = findService(category, serviceName);
+ if (service==null){
+ throw new ServiceNotFoundException("Could not find service with category=" + category + " and serviceName=" + serviceName);
+ }
+ // Get registry service and business query manager
+ Collection<ServiceBinding> serviceBindings = findServiceBindings(service);
+ if (serviceBindings.iterator().hasNext()) {
+ ServiceBinding serviceBinding = (ServiceBinding) serviceBindings.iterator().next();
+ String eprXML = URLDecoder.decode(serviceBinding.getAccessURI(),"UTF-8");
+ epr = EPRHelper.fromXMLString(eprXML);
+ }
+ } catch (JAXRException je) {
+ throw new RegistryException(je.getLocalizedMessage(), je);
+ } catch (UnsupportedEncodingException uee) {
+ throw new RegistryException(uee.getLocalizedMessage(), uee);
+ } catch (UnmarshalException me) {
+ throw new RegistryException(me.getLocalizedMessage(), me);
+ } finally {
+ closeConnection(connection);
+ }
+ }
+
+ return epr;
}
/**
* Find all Organizations with a name mathing the queryString parameter.
@@ -431,7 +459,12 @@
serviceName="";
}
Connection connection = JAXRRegistryImpl.getConnection();
- try {
+
+ if(connection == null) {
+ return null;
+ }
+
+ try {
// Get registry service and business query manager
RegistryService rs = connection.getRegistryService();
BusinessQueryManager bqm = rs.getBusinessQueryManager();
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/MockRegistryImpl.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/MockRegistryImpl.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/MockRegistryImpl.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -39,6 +39,8 @@
*/
public class MockRegistryImpl implements Registry
{
+ // TODO: Make it extend the InVMRegistry???
+
private static Map<String,Category> categories = new HashMap<String,Category>();
/**
Added: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/RegsitryEntry.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/RegsitryEntry.java (rev 0)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/RegsitryEntry.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -0,0 +1,59 @@
+/*
+ * 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.services.registry;
+
+import org.jboss.soa.esb.Service;
+import org.jboss.soa.esb.addressing.EPR;
+
+/**
+ * Registry Entry.
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class RegsitryEntry {
+
+ private Service service;
+ private String serviceDescription;
+ private EPR epr;
+ private String eprDescription;
+
+ public RegsitryEntry(Service service, String serviceDescription, EPR epr, String eprDescription) {
+ this.service = service;
+ this.serviceDescription = serviceDescription;
+ this.epr = epr;
+ this.eprDescription = eprDescription;
+ }
+
+ public Service getService() {
+ return service;
+ }
+
+ public String getServiceDescription() {
+ return serviceDescription;
+ }
+
+ public EPR getEpr() {
+ return epr;
+ }
+
+ public String getEprDescription() {
+ return eprDescription;
+ }
+}
Property changes on: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/RegsitryEntry.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/Service.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/Service.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/Service.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -35,20 +35,17 @@
*/
public class Service implements Serializable{
- /**
- *
- */
private static final long serialVersionUID = 1L;
private String category;
private String name;
public Service(String category, String name) {
- AssertArgument.isNotNullAndNotEmpty(category, "category");
+ AssertArgument.isNotNull(category, "category");
AssertArgument.isNotNullAndNotEmpty(name, "name");
this.category = category.trim();
this.name = name.trim();
}
-
+
public boolean equals(Service service) {
if (category.equals(service.getCategory()) && name.equals(service.getName())) {
return true;
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/actions/Aggregator.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/actions/Aggregator.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/actions/Aggregator.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -299,7 +299,7 @@
logger.debug("Found timeout message.");
try {
EPR epr = registry.findEPR(serviceCategoryName, serviceName);
- Courier courier = CourierFactory.getCourier(epr);
+ Courier courier = CourierFactory.getInstance().getCourier(epr);
try
{
courier.deliver(message);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -25,14 +25,16 @@
* This class represents the endpoint reference for services.
*/
-import java.net.URI;
-import java.net.URISyntaxException;
-
+import org.apache.commons.codec.binary.Hex;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.addressing.XMLUtil;
+import org.jboss.internal.soa.esb.assertion.AssertArgument;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
+import java.net.URI;
+import java.net.URISyntaxException;
+
/**
* A helper class for using in-VM communication.
*
@@ -226,7 +228,40 @@
return "InVMEpr [ " + super.getAddr().extendedToString() + " ]";
}
- public static URI type()
+ public boolean equals(Object obj) {
+ if(obj == null) {
+ return false;
+ } else if(!(obj instanceof InVMEpr)) {
+ return false;
+ } else if(obj == this) {
+ return true;
+ }
+
+ // Compare the addresses...
+ return getAddr().getAddress().equals(((InVMEpr)obj).getAddr().getAddress());
+ }
+
+ /**
+ * Create an encoded service ID from the supplied Service Cat and Name.
+ * <p/>
+ * The result is a simple hex encoding of the concatenated strings and is
+ * usable in the InVMEpr URI i.e. is uneffected by slashes etc in the
+ * Cat and Service name strings.
+ *
+ * @param catagory The Service Category.
+ * @param name The Service name.
+ * @return Hex encoded string.
+ */
+ public static String createEncodedServiceId(String catagory, String name) {
+ AssertArgument.isNotNullAndNotEmpty(catagory, "catagory");
+ AssertArgument.isNotNullAndNotEmpty(name, "name");
+
+ byte[] bytes = (catagory.trim() + name.trim()).getBytes();
+
+ return new String(Hex.encodeHex(bytes));
+ }
+
+ public static URI type()
{
return _type;
}
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierCollection.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierCollection.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierCollection.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -54,7 +54,7 @@
{
for (EPR epr: eprs)
{
- final Courier courier = CourierFactory.getCourier(epr) ;
+ final Courier courier = CourierFactory.getInstance().getCourier(epr) ;
if (courier == null)
{
throw new CourierException("Null courier returned for EPR: " + epr) ;
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -29,12 +29,17 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl;
+import org.jboss.internal.soa.esb.couriers.InVMCourier;
+import org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier;
+import org.jboss.internal.soa.esb.couriers.PickUpOnlyCourier;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.addressing.MalformedEPRException;
+import org.jboss.soa.esb.addressing.eprs.InVMEpr;
import org.jboss.soa.esb.lifecycle.LifecyclePriorities;
import org.jboss.soa.esb.lifecycle.LifecycleResource;
import org.jboss.soa.esb.lifecycle.LifecycleResourceException;
@@ -50,13 +55,19 @@
/**
* The lifecycle resource factory.
*/
- private static final LifecycleResourceFactory<Map<TwoWayCourier, Exception>> lifecycleCourierFactory = new LifecycleCourierFactory() ;
+ private final LifecycleResourceFactory<Map<TwoWayCourier, Exception>> lifecycleCourierFactory = new LifecycleCourierFactory() ;
/**
* Lifecycle couriers.
*/
- private static final LifecycleResource<Map<TwoWayCourier, Exception>> lifecycleCouriers =
+ private final LifecycleResource<Map<TwoWayCourier, Exception>> lifecycleCouriers =
new LifecycleResource<Map<TwoWayCourier,Exception>>(lifecycleCourierFactory,
LifecyclePriorities.COURIER_PRIORITY) ;
+ /**
+ * InVM Couiers. No real resources or lifecycle associated with these, so no need for the
+ * LifecycleResource stuff.
+ * TODO: Check this with Kev!
+ */
+ private final Map<String, InVMCourier> inVMCouriers = new ConcurrentHashMap<String, InVMCourier>();
/**
* Factory singleton instance.
@@ -103,9 +114,9 @@
* @return Courier
* @throws CourierException if the specific courier implementation cannot be created.
*/
- public static Courier getCourier(EPR toEPR) throws CourierException, MalformedEPRException
+ public Courier getCourier(EPR toEPR) throws CourierException, MalformedEPRException
{
- return getCourier(toEPR, null);
+ return instance.getCourier(toEPR, null);
}
/**
* Obtain a courier which can perform pickups only and prime it with the "to address" (toEPR)
@@ -115,9 +126,9 @@
* @return TwoWayCourier
* @throws CourierException if the specific courier implementation cannot be created.
*/
- public static TwoWayCourier getPickupCourier(EPR replyToEPR) throws CourierException, MalformedEPRException
+ public TwoWayCourier getPickupCourier(EPR replyToEPR) throws CourierException, MalformedEPRException
{
- return getCourier(null, replyToEPR);
+ return instance.getCourier(null, replyToEPR);
}
/**
* Obtain a courier which can perform both deliveries and pickups and prime it with
@@ -128,18 +139,48 @@
* @return TwoWayCourier
* @throws CourierException if the specific courier implementation cannot be created.
*/
- public static TwoWayCourier getCourier(EPR toEPR, EPR replyToEPR) throws CourierException, MalformedEPRException
+ public TwoWayCourier getCourier(EPR toEPR, EPR replyToEPR) throws CourierException, MalformedEPRException
{
- final TwoWayCourier result = new TwoWayCourierImpl(toEPR, replyToEPR);
- registerCourier(result) ;
- return result ;
- }
-
- /**
+ DeliverOnlyCourier deliverCourier = null;
+ PickUpOnlyCourier pickupCourier = null;
+
+ // Get the Delivery Courier...
+ if(toEPR instanceof InVMEpr) {
+ deliverCourier = getInVMCourier((InVMEpr) toEPR);
+ } else if(toEPR != null) {
+ deliverCourier = TwoWayCourierImpl.getDeliverCourier(toEPR);
+ }
+
+ // Get the Pickup Courier...
+ if(replyToEPR instanceof InVMEpr) {
+ pickupCourier = getInVMCourier((InVMEpr) replyToEPR);
+ } else if(replyToEPR != null) {
+ pickupCourier = TwoWayCourierImpl.getPickupCourier(replyToEPR);
+ }
+
+ final TwoWayCourier result = new TwoWayCourierImpl(toEPR, deliverCourier, pickupCourier);
+ registerCourier(result);
+
+ return result;
+ }
+
+ private synchronized InVMCourier getInVMCourier(InVMEpr epr) throws MalformedEPRException, CourierException {
+ String address = epr.getAddr().getAddress();
+ InVMCourier courier = inVMCouriers.get(address);
+
+ if(courier == null) {
+ courier = new InVMCourier(epr);
+ inVMCouriers.put(address, courier);
+ }
+
+ return courier;
+ }
+
+ /**
* Register the courier as part of the current set.
* @param courier The current courier.
*/
- private static synchronized void registerCourier(final TwoWayCourier courier)
+ private synchronized void registerCourier(final TwoWayCourier courier)
throws CourierException
{
final Exception ex ;
@@ -165,7 +206,7 @@
* Deregister the courier from the current set.
* @param courier The current courier.
*/
- public static synchronized void deregisterCourier(final TwoWayCourier courier)
+ public synchronized void deregisterCourier(final TwoWayCourier courier)
{
try
{
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/couriers/CourierUtil.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -215,7 +215,7 @@
throws URISyntaxException, CourierException, MalformedEPRException
{
EPR toEpr = message.getHeader().getTo();
- Courier courier = CourierFactory.getCourier(toEpr);
+ Courier courier = CourierFactory.getInstance().getCourier(toEpr);
try
{
courier.deliver(message);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -33,10 +33,8 @@
import org.jboss.soa.esb.listeners.config.xbeanmodel.ServiceDocument.Service;
import org.jboss.soa.esb.listeners.config.xbeanmodel.SqlListenerDocument.SqlListener;
import org.jboss.soa.esb.listeners.config.xbeanmodel.ScheduledListenerDocument.ScheduledListener;
-import org.jboss.soa.esb.listeners.config.xbeanmodel.Listener;
-import org.jboss.soa.esb.listeners.config.xbeanmodel.JbrListenerDocument;
-import org.jboss.soa.esb.listeners.config.xbeanmodel.GroovyListenerDocument;
-import org.jboss.soa.esb.listeners.config.xbeanmodel.AbstractScheduledListener;
+import org.jboss.soa.esb.listeners.config.xbeanmodel.InvmListenerDocument.InvmListener;
+import org.jboss.soa.esb.listeners.config.xbeanmodel.*;
import org.jboss.soa.esb.listeners.config.mappers.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -99,7 +97,9 @@
Service listenerService;
// Of course we could do the following reflectively if we really want to - TODO perhaps!!
- if(listener instanceof JmsListener) {
+ if(listener instanceof InvmListener) {
+ listenerConfigTree = InVMListenerMapper.map(root, (InvmListener)listener, model);
+ } else if(listener instanceof JmsListener) {
listenerConfigTree = JmsListenerMapper.map(root, (JmsListener)listener, model);
} else if (listener instanceof ScheduledListener) {
listenerConfigTree = ScheduledListenerMapper.map(root, (ScheduledListener) listener);
Added: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/InVMListenerMapper.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/InVMListenerMapper.java (rev 0)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/InVMListenerMapper.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -0,0 +1,66 @@
+
+/*
+ * 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.soa.esb.listeners.config.mappers;
+
+import org.w3c.dom.Element;
+import org.jboss.soa.esb.listeners.config.xbeanmodel.InvmListenerDocument;
+import org.jboss.soa.esb.listeners.config.xbeanmodel.ServiceDocument;
+import org.jboss.soa.esb.listeners.config.Generator;
+import org.jboss.soa.esb.listeners.ListenerTagNames;
+import org.jboss.soa.esb.dom.YADOMUtil;
+import org.jboss.soa.esb.addressing.eprs.JMSEpr;
+import org.jboss.soa.esb.addressing.eprs.InVMEpr;
+
+/**
+ * Mapper for the InVM transport.
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class InVMListenerMapper {
+ public static Element map(Element root, InvmListenerDocument.InvmListener listener, Generator.XMLBeansModel model) {
+ ServiceDocument.Service service = model.getService(listener);
+ Element listenerNode = YADOMUtil.addElement(root, listener.getName());
+
+
+ // Map the standard listener attributes - common across all listener types...
+ MapperUtil.mapDefaultAttributes(listener, listenerNode, model);
+ // Map the <property> elements targeted at the listener - from the listener itself.
+ MapperUtil.mapProperties(listener.getPropertyList(), listenerNode);
+
+ Element eprNode = YADOMUtil.addElement(listenerNode, ListenerTagNames.EPR_TAG);
+
+ // Map EPR related attributes onto the EPR - from the listener config...
+ mapInvmEprProperties(eprNode, listener, service);
+
+ // Remove any empty attributes set on the EPR config...
+ YADOMUtil.removeEmptyAttributes(eprNode);
+
+ return listenerNode;
+ }
+
+ private static void mapInvmEprProperties(Element eprNode, InvmListenerDocument.InvmListener listener, ServiceDocument.Service service) {
+ eprNode.setAttribute(ListenerTagNames.PROTOCOL_TAG, InVMEpr.INVM_PROTOCOL);
+ eprNode.setAttribute(ListenerTagNames.URL_TAG, InVMEpr.INVM_PROTOCOL + "://"
+ + InVMEpr.createEncodedServiceId(service.getCategory(), service.getName())
+ + "?" + listener.getLockStepDelivery()
+ + "#" + listener.getLockStepTimeout());
+ }
+}
Property changes on: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/InVMListenerMapper.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/HibernateInterceptor.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -205,7 +205,7 @@
try {
boolean bSent = false;
for (EPR current : m_targetEprs) {
- m_courier = CourierFactory.getCourier(current);
+ m_courier = CourierFactory.getInstance().getCourier(current);
try {
if (m_courier.deliver(message)) {
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -204,7 +204,7 @@
boolean bSent = false;
for (EPR current : _targetEprs) {
- courier = CourierFactory.getCourier(current);
+ courier = CourierFactory.getInstance().getCourier(current);
try {
if (courier.deliver((Message) obj)) {
bSent = true;
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -237,7 +237,7 @@
boolean bSent = false;
for (EPR current : _targetEprs)
{
- courier = CourierFactory.getCourier(current);
+ courier = CourierFactory.getInstance().getCourier(current);
try
{
if (courier.deliver(message))
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -362,7 +362,7 @@
{
try
{
- courier = CourierFactory.getCourier(replyToAddress);
+ courier = CourierFactory.getInstance().getCourier(replyToAddress);
courier.deliver(message);
}
catch (final CourierException e)
@@ -415,7 +415,7 @@
{
try
{
- courier = CourierFactory.getCourier(faultToAddress);
+ courier = CourierFactory.getInstance().getCourier(faultToAddress);
courier.deliver(message);
}
catch (final CourierException e)
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/Invoker.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/Invoker.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/Invoker.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -124,7 +124,7 @@
call.setMessageID(uri);
}
- Courier sender = CourierFactory.getCourier(call.getTo());
+ Courier sender = CourierFactory.getInstance().getCourier(call.getTo());
PickUpOnlyCourier receiver = null;
try
{
@@ -133,7 +133,7 @@
{
if (null==call.getReplyTo())
call.setReplyTo(DefaultReplyTo.getReplyTo(call.getTo()));
- receiver = CourierFactory.getPickupCourier(call.getReplyTo());
+ receiver = CourierFactory.getInstance().getPickupCourier(call.getReplyTo());
}
sender.deliver(outgoing);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -179,7 +179,7 @@
final TwoWayCourier pickUpCourier ;
try
{
- pickUpCourier = CourierFactory.getPickupCourier(_epr) ;
+ pickUpCourier = CourierFactory.getInstance().getPickupCourier(_epr) ;
try
{
final Method setPollLatency = pickUpCourier.getClass().getMethod(
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/MockCourierFactory.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/MockCourierFactory.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/MockCourierFactory.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -46,7 +46,12 @@
throw malformedEPRException;
}
- return couriers.get(toEPR);
+ TwoWayCourier courier = couriers.get(toEPR);
+ if(courier == null) {
+ courier = (TwoWayCourier) getCourier(toEPR);
+ }
+
+ return courier;
}
public static void install() {
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/CourierIntegrationTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/CourierIntegrationTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/CourierIntegrationTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -100,7 +100,7 @@
FileEpr epr = getEpr(url);
epr.setInputSuffix(".esbMessage");
epr.setPostDelete(true);
- TwoWayCourier courier = CourierFactory.getPickupCourier(epr);
+ TwoWayCourier courier = CourierFactory.getInstance().getPickupCourier(epr);
Message message = null;
while (null != (message = courier.pickup(100)))
@@ -113,7 +113,7 @@
message.getHeader().setMessageID(new URI(UUID.randomUUID().toString()));
message.getHeader().setTo(getEpr(url));
message.getBody().add(BytesBody.BYTES_LOCATION, "Hello World".getBytes());
- Courier courier = CourierFactory.getCourier(message.getHeader().getTo());
+ Courier courier = CourierFactory.getInstance().getCourier(message.getHeader().getTo());
courier.deliver(message);
}
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/FileCourierUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -140,7 +140,7 @@
fromEpr.setInputSuffix(TEST_SUFFIX);
fromEpr.setPostSuffix(DONE_SUFFIX);
- TwoWayCourier pickUp = CourierFactory.getPickupCourier(fromEpr);
+ TwoWayCourier pickUp = CourierFactory.getInstance().getPickupCourier(fromEpr);
Message retrieved = pickUp.pickup(1000);
Assert.assertFalse("Null message retrieved",null==retrieved);
@@ -190,7 +190,7 @@
fromEpr.setInputSuffix(TEST_SUFFIX);
fromEpr.setPostSuffix(DONE_SUFFIX);
- TwoWayCourier pickUp = CourierFactory.getPickupCourier(fromEpr);
+ TwoWayCourier pickUp = CourierFactory.getInstance().getPickupCourier(fromEpr);
try
{
@@ -239,7 +239,7 @@
fromEpr.setInputSuffix(TEST_SUFFIX);
fromEpr.setPostSuffix(DONE_SUFFIX);
- TwoWayCourier pickUp = CourierFactory.getPickupCourier(fromEpr);
+ TwoWayCourier pickUp = CourierFactory.getInstance().getPickupCourier(fromEpr);
Message retrieved = pickUp.pickup(1000);
Assert.assertFalse("Null message retrieved",null==retrieved);
@@ -283,7 +283,7 @@
// setting postdelete to true will delete input Message files, if they were picked up
fromEpr.setPostDelete(true);
- TwoWayCourier pickUp = CourierFactory.getPickupCourier(fromEpr);
+ TwoWayCourier pickUp = CourierFactory.getInstance().getPickupCourier(fromEpr);
Message retrieved = pickUp.pickup(1000);
Assert.assertFalse("Null message retrieved",null==retrieved);
@@ -329,7 +329,7 @@
// Don't delete - default is to delete files in error
fromEpr.setErrorDelete(false);
- TwoWayCourier pickUp = CourierFactory.getPickupCourier(fromEpr);
+ TwoWayCourier pickUp = CourierFactory.getInstance().getPickupCourier(fromEpr);
Message retrieved = pickUp.pickup(1000);
Assert.assertTrue("Null message retrieved",null==retrieved);
@@ -357,7 +357,7 @@
fromEpr.setErrorSuffix(ERROR_SUFFIX);
// Not using setErrorDelete(false) should delete files in error
- TwoWayCourier pickUp = CourierFactory.getPickupCourier(fromEpr);
+ TwoWayCourier pickUp = CourierFactory.getInstance().getPickupCourier(fromEpr);
Message retrieved = pickUp.pickup(1000);
Assert.assertTrue("Null message retrieved",null==retrieved);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -22,17 +22,21 @@
package org.jboss.internal.soa.esb.couriers.tests;
-import java.net.URI;
-
import junit.framework.Assert;
import junit.framework.JUnit4TestAdapter;
-
import org.jboss.internal.soa.esb.couriers.InVMCourier;
+import org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl;
+import org.jboss.soa.esb.addressing.MalformedEPRException;
import org.jboss.soa.esb.addressing.eprs.InVMEpr;
+import org.jboss.soa.esb.couriers.CourierException;
+import org.jboss.soa.esb.couriers.CourierFactory;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
import org.junit.Test;
+import java.net.URI;
+import java.net.URISyntaxException;
+
public class InVMCourierUnitTest
{
public static junit.framework.Test suite()
@@ -44,32 +48,31 @@
public void testUnthreadedDeliver() throws Exception
{
InVMEpr epr = new InVMEpr(new URI("invm://serviceid1"));
- Producer producer = new Producer(epr);
- Consumer consumer = new Consumer(epr);
+ InVMCourier courier = new InVMCourier(epr);
+ Producer producer = new Producer(courier);
+ Consumer consumer = new Consumer(courier);
producer.run();
consumer.run();
- Assert.assertEquals(consumer.valid(), true);
+ Assert.assertEquals(true, consumer.valid());
}
@Test
public void testThreadedDeliver() throws Exception
{
InVMEpr epr = new InVMEpr(new URI("invm://serviceid2"));
- Producer producer = new Producer(epr);
- Consumer consumer = new Consumer(epr);
+ InVMCourier courier = new InVMCourier(epr);
+ Producer producer = new Producer(courier);
+ Consumer consumer = new Consumer(courier);
producer.start();
consumer.start();
try
{
- synchronized (condition())
- {
- condition().wait();
- }
- }
+ waitOnConditon();
+ }
catch (Exception ex)
{
ex.printStackTrace();
@@ -82,8 +85,9 @@
public void testDelayedThreadedDeliver() throws Exception
{
InVMEpr epr = new InVMEpr(new URI("invm://serviceid3"));
- Producer producer = new Producer(epr);
- Consumer consumer = new Consumer(epr);
+ InVMCourier courier = new InVMCourier(epr);
+ Producer producer = new Producer(courier);
+ Consumer consumer = new Consumer(courier);
consumer.start();
@@ -99,11 +103,8 @@
try
{
- synchronized (condition())
- {
- condition().wait();
- }
- }
+ waitOnConditon();
+ }
catch (Exception ex)
{
ex.printStackTrace();
@@ -116,7 +117,8 @@
public void testThreadedNullDeliver() throws Exception
{
InVMEpr epr = new InVMEpr(new URI("invm://serviceid4"));
- Consumer consumer = new Consumer(epr);
+ InVMCourier courier = new InVMCourier(epr);
+ Consumer consumer = new Consumer(courier);
consumer.start();
@@ -130,11 +132,8 @@
try
{
- synchronized (condition())
- {
- condition().wait();
- }
- }
+ waitOnConditon();
+ }
catch (Exception ex)
{
ex.printStackTrace();
@@ -147,19 +146,17 @@
public void testLockstepDeliver() throws Exception
{
InVMEpr epr = new InVMEpr(new URI("invm://serviceid5?true#2000"));
- Producer producer = new Producer(epr);
- Consumer consumer = new Consumer(epr);
+ InVMCourier courier = new InVMCourier(epr);
+ Producer producer = new Producer(courier);
+ Consumer consumer = new Consumer(courier);
consumer.start();
producer.start();
try
{
- synchronized (condition())
- {
- condition().wait();
- }
- }
+ waitOnConditon();
+ }
catch (Exception ex)
{
ex.printStackTrace();
@@ -167,14 +164,25 @@
Assert.assertEquals(consumer.valid(), true);
}
-
- @Test
+
+ @Test
+ public void test_single_Courier_Creation() throws URISyntaxException, MalformedEPRException, CourierException {
+ InVMEpr epr = new InVMEpr(new URI("invm://serviceid5?true#2000"));
+ TwoWayCourierImpl courier1 = (TwoWayCourierImpl) CourierFactory.getInstance().getCourier(epr);
+ TwoWayCourierImpl courier2 = (TwoWayCourierImpl) CourierFactory.getInstance().getCourier(epr);
+
+ Assert.assertTrue(courier1.getDeliverCourier() == courier2.getDeliverCourier());
+ Assert.assertTrue(courier1.getPickupCourier() == courier2.getPickupCourier());
+ }
+
+ @Test
public void testLockstepPerformance () throws Exception
{
InVMEpr epr = new InVMEpr(new URI("invm://serviceid5?true#2000"));
int iters = 1000;
- Producer producer = new Producer(epr, iters, false);
- Consumer consumer = new Consumer(epr, iters, false);
+ InVMCourier courier = new InVMCourier(epr);
+ Producer producer = new Producer(courier, iters, false);
+ Consumer consumer = new Consumer(courier, iters, false);
long stime = System.currentTimeMillis();
consumer.start();
@@ -182,11 +190,8 @@
try
{
- synchronized (condition())
- {
- condition().wait();
- }
- }
+ waitOnConditon();
+ }
catch (Exception ex)
{
ex.printStackTrace();
@@ -205,18 +210,26 @@
System.err.println("Messages per second: "+msgsPerSecond);
}
- @Test
+ private void waitOnConditon() throws InterruptedException {
+ synchronized (condition())
+ {
+ condition().wait();
+ }
+ }
+
+ @Test
public void testLockstepMultiProducerPerformance () throws Exception
{
InVMEpr epr = new InVMEpr(new URI("invm://serviceid5?true#2000"));
int iters = 1000;
int numberOfProducers = 50;
Producer[] producer = new Producer[numberOfProducers];
- Consumer consumer = new Consumer(epr, iters*numberOfProducers, false);
+ InVMCourier courier = new InVMCourier(epr);
+ Consumer consumer = new Consumer(courier, iters*numberOfProducers, false);
long stime = System.currentTimeMillis();
for (int i = 0; i < numberOfProducers; i++)
- producer[i] = new Producer(epr, iters, false);
+ producer[i] = new Producer(courier, iters, false);
consumer.start();
@@ -225,11 +238,8 @@
try
{
- synchronized (condition())
- {
- condition().wait();
- }
- }
+ waitOnConditon();
+ }
catch (Exception ex)
{
ex.printStackTrace();
@@ -260,23 +270,21 @@
class Producer extends Thread
{
- public Producer (InVMEpr epr)
+ public Producer (InVMCourier courier, int iters, boolean debug)
{
- this(epr, InVMCourierUnitTest.ITERATIONS, true);
- }
-
- public Producer (InVMEpr epr, int iters, boolean debug)
- {
- _epr = epr;
+ this.courier = courier;
_iters = iters;
_debug = debug;
}
-
- public void run ()
+
+ public Producer(InVMCourier courier) {
+ this(courier, InVMCourierUnitTest.ITERATIONS, true);
+ }
+
+ public void run ()
{
try
{
- InVMCourier courier = new InVMCourier(_epr);
int number = 0;
int iterations = _iters;
@@ -300,33 +308,32 @@
}
}
- private InVMEpr _epr;
+ private InVMCourier courier;
private int _iters;
private boolean _debug;
}
class Consumer extends Thread
{
- public Consumer (InVMEpr epr)
+ public Consumer(InVMCourier courier) {
+ this(courier, InVMCourierUnitTest.ITERATIONS, true);
+ }
+
+ public Consumer (InVMCourier courier, int iters, boolean debug)
+ {
+ this.courier = courier;
+ _iters = iters;
+ _debug = debug;
+ }
+
+ public void run ()
{
- this(epr, InVMCourierUnitTest.ITERATIONS, true);
- }
-
- public Consumer (InVMEpr epr, int iters, boolean debug)
- {
- _epr = epr;
- _iters = iters;
- _debug = debug;
- }
-
- public void run ()
- {
try
{
- InVMCourier courier = new InVMCourier(_epr);
int i;
-
- for (i = 0; i < _iters; i++)
+
+ System.out.println("Consumer Iters: " + _iters);
+ for (i = 0; i < _iters; i++)
{
Message msg = courier.pickup(2000);
@@ -367,8 +374,8 @@
return _valid;
}
+ private InVMCourier courier;
private boolean _valid = false;
- private InVMEpr _epr;
private int _iters;
private boolean _debug;
private int _itersCompleted = 0;
Added: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryUnitTest.java (rev 0)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -0,0 +1,65 @@
+/*
+ * 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.services.registry;
+
+import junit.framework.TestCase;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.services.registry.RegistryException;
+import org.jboss.soa.esb.services.registry.ServiceNotFoundException;
+
+import java.net.URI;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class InVMRegistryUnitTest extends TestCase {
+
+ public void test() throws ServiceNotFoundException, RegistryException {
+ InVMRegistry reg = new InVMRegistry();
+
+ assertNull(reg.findEPR("x", "y"));
+
+ reg.registerEPR("x", "y", "blah", new EPR(URI.create("x://123")), "blah");
+ assertEquals(1, reg.findEPRs("x", "y").size());
+ assertEquals("x://123", reg.findEPR("x", "y").getAddr().getAddress());
+
+ reg.registerEPR("x", "y", "blah", new EPR(URI.create("x://1234")), "blah");
+ assertEquals(2, reg.findEPRs("x", "y").size());
+
+ reg.registerEPR("a", "z", "blah", new EPR(URI.create("x://12345")), "blah");
+ assertEquals(2, reg.findEPRs("x", "y").size());
+ assertEquals(1, reg.findEPRs("a", "z").size());
+
+ assertEquals(2, reg.findAllServices().size());
+ assertEquals(1, reg.findServices("x").size());
+
+ // unreg using a valid service, but unregistred EPR... make sure nothing changes...
+ reg.unRegisterEPR("a", "z", new EPR(URI.create("x://1")));
+ assertEquals(1, reg.findEPRs("a", "z").size());
+ // unreg using a valid service + registred EPR... make sure EPR is removed...
+ reg.unRegisterEPR("a", "z", new EPR(URI.create("x://12345")));
+ assertEquals(0, reg.findEPRs("a", "z").size());
+
+ // unreg all for the service
+ assertEquals(2, reg.findEPRs("x", "y").size());
+ reg.unRegisterService("x", "y");
+ assertEquals(0, reg.findEPRs("x", "y").size());
+ }
+}
Property changes on: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryUnitTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -48,6 +48,8 @@
*/
public class MockRegistry implements Registry {
+ // TODO: Make it extend the InVMRegistry???
+
private static final String REGISTRY_IMPEMENTATION_CLASS_ORIGINAL = Environment.REGISTRY_IMPEMENTATION_CLASS + "#Original";
public static PropertyManager regPropManager = ModulePropertyManager.getPropertyManager(ModulePropertyManager.REGISTRY_MODULE);
public static List<RepositoryEntry> repository = new ArrayList<RepositoryEntry>();
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFileReplyToEprUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFileReplyToEprUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFileReplyToEprUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -108,7 +108,7 @@
FileEpr serviceEpr = new FileEpr(toEpr.getURL());
serviceEpr.setInputSuffix(initialSuffix);
serviceEpr.setPostDelete(true);
- PickUpOnlyCourier listener = CourierFactory.getPickupCourier(serviceEpr);
+ PickUpOnlyCourier listener = CourierFactory.getInstance().getPickupCourier(serviceEpr);
Message received = listener.pickup(100);
String text_2 = new String((byte[]) received.getBody().get(BytesBody.BYTES_LOCATION));
assertTrue(text_1.equals(text_2));
@@ -122,7 +122,7 @@
CourierUtil.deliverMessage(response);
// try to pick up reply
- PickUpOnlyCourier waiter = CourierFactory.getPickupCourier(replyToEpr);
+ PickUpOnlyCourier waiter = CourierFactory.getInstance().getPickupCourier(replyToEpr);
Message finalMsg = waiter.pickup(100);
assertTrue(text_2.equals(new String((byte[]) finalMsg.getBody().get(BytesBody.BYTES_LOCATION))));
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFtpReplyToEprIntegrationTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFtpReplyToEprIntegrationTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultFtpReplyToEprIntegrationTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -109,7 +109,7 @@
FTPEpr serviceEpr = new FTPEpr(toEpr.getURL());
serviceEpr.setInputSuffix(initialSuffix);
serviceEpr.setPostDelete(true);
- PickUpOnlyCourier listener = CourierFactory.getPickupCourier(serviceEpr);
+ PickUpOnlyCourier listener = CourierFactory.getInstance().getPickupCourier(serviceEpr);
Message received = listener.pickup(100);
String text_2 = new String((byte[]) received.getBody().get(BytesBody.BYTES_LOCATION));
assertTrue(text_1.equals(text_2));
@@ -123,7 +123,7 @@
CourierUtil.deliverMessage(response);
// try to pick up reply
- PickUpOnlyCourier waiter = CourierFactory.getPickupCourier(replyToEpr);
+ PickUpOnlyCourier waiter = CourierFactory.getInstance().getPickupCourier(replyToEpr);
Message finalMsg = waiter.pickup(100);
assertTrue(text_2.equals(new String((byte[]) finalMsg.getBody().get(BytesBody.BYTES_LOCATION))));
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultJdbcReplyToEprUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultJdbcReplyToEprUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/tests/DefaultJdbcReplyToEprUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -137,7 +137,7 @@
// Mock a service that picks up the original message and replies
JDBCEpr serviceEpr = getEpr("foo");
- PickUpOnlyCourier listener = CourierFactory.getPickupCourier(serviceEpr);
+ PickUpOnlyCourier listener = CourierFactory.getInstance().getPickupCourier(serviceEpr);
Message received = listener.pickup(100);
String text_2 = new String((byte[]) received.getBody().get(BytesBody.BYTES_LOCATION));
assertTrue(text_1.equals(text_2));
@@ -150,7 +150,7 @@
CourierUtil.deliverMessage(response);
// try to pick up reply
- PickUpOnlyCourier waiter = CourierFactory.getPickupCourier(replyToEpr);
+ PickUpOnlyCourier waiter = CourierFactory.getInstance().getPickupCourier(replyToEpr);
Message finalMsg = waiter.pickup(100);
assertTrue(text_2.equals(new String((byte[]) finalMsg.getBody().get(BytesBody.BYTES_LOCATION))));
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -23,6 +23,7 @@
package org.jboss.soa.esb.addressing.helpers.tests;
import java.net.URI;
+import java.net.URISyntaxException;
import junit.framework.TestCase;
@@ -71,4 +72,11 @@
}
}
+ public void test_getEncodedServiceId() throws URISyntaxException {
+ String serviceId = InVMEpr.createEncodedServiceId("Service Cat / &&&", " Service / Name $$");
+ assertEquals("5365727669636520436174202f2026262653657276696365202f204e616d65202424", serviceId);
+
+ InVMEpr epr = new InVMEpr(new URI(InVMEpr.INVM_PROTOCOL + "://" + serviceId));
+ assertEquals("5365727669636520436174202f2026262653657276696365202f204e616d65202424", epr.getServiceId());
+ }
}
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -81,7 +81,7 @@
int howMany = 10; // how many messages do you want to send before the
// listener comes up
- DeliverOnlyCourier sender = CourierFactory.getCourier(toEPR);
+ DeliverOnlyCourier sender = CourierFactory.getInstance().getCourier(toEPR);
Message message = MessageFactory.getInstance().getMessage();
message.getHeader().setTo(toEPR);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -113,7 +113,7 @@
int howMany = 10; // how many messages do you want to send before the
// listener comes up
- DeliverOnlyCourier sender = CourierFactory.getCourier(toEPR);
+ DeliverOnlyCourier sender = CourierFactory.getInstance().getCourier(toEPR);
Message message = MessageFactory.getInstance().getMessage();
message.getHeader().setTo(toEPR);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerInVMUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerInVMUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerInVMUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -93,7 +93,7 @@
int howMany = 10; // how many messages do you want to send before the
// listener comes up
- DeliverOnlyCourier sender = CourierFactory.getCourier(toEPR);
+ DeliverOnlyCourier sender = CourierFactory.getInstance().getCourier(toEPR);
Message message = MessageFactory.getInstance().getMessage();
message.getHeader().setTo(toEPR);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -107,7 +107,7 @@
int howMany = 10; // how many messages do you want to send before the
// listener comes up
- DeliverOnlyCourier sender = CourierFactory.getCourier(toEPR);
+ DeliverOnlyCourier sender = CourierFactory.getInstance().getCourier(toEPR);
Message message = MessageFactory.getInstance().getMessage();
message.getHeader().setTo(toEPR);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -95,7 +95,7 @@
int howMany = 10; // how many messages do you want to send before the
// listener comes up
- DeliverOnlyCourier sender = CourierFactory.getCourier(toEPR);
+ DeliverOnlyCourier sender = CourierFactory.getInstance().getCourier(toEPR);
Message message = MessageFactory.getInstance().getMessage();
message.getHeader().setTo(toEPR);
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/GatewayInVMServiceUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/GatewayInVMServiceUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/GatewayInVMServiceUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -22,233 +22,90 @@
package org.jboss.soa.esb.listeners.gateway;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.Statement;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.log4j.Logger;
-import org.jboss.soa.esb.addressing.EPR;
-import org.jboss.soa.esb.addressing.eprs.InVMEpr;
-import org.jboss.soa.esb.common.tests.BaseTest;
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.actions.AbstractActionPipelineProcessor;
+import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.listeners.LifecycleUtil;
-import org.jboss.soa.esb.listeners.ListenerTagNames;
-import org.jboss.soa.esb.listeners.ListenerUtil;
-import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycle;
-import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleController;
+import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException;
+import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.testutils.FileUtil;
-import org.jboss.soa.esb.testutils.HsqldbUtil;
-import org.jboss.soa.esb.testutils.TestEnvironmentUtil;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.parameters.ParamRepositoryException;
+import org.jboss.soa.esb.testutils.ESBConfigUtil;
+import org.xml.sax.SAXException;
-public class GatewayInVMServiceUnitTest extends BaseTest
+import java.util.HashMap;
+import java.util.Map;
+
+public class GatewayInVMServiceUnitTest extends TestCase
{
- private Logger log = Logger.getLogger(GatewayInVMServiceUnitTest.class);
+ private ESBConfigUtil configUtil;
- public GatewayInVMServiceUnitTest()
- {
- }
+ protected void setUp() throws Exception {
+ configUtil = new ESBConfigUtil(getClass().getResourceAsStream("listenerInVM.xml"));
+ configUtil.startController();
+ }
- public void setUp()
- {
- runBeforeAllTests();
- }
+ protected void tearDown() throws Exception {
+ configUtil.stopController();
+ }
- public void tearDown()
- {
- runAfterAllTests();
- }
+ public void test() throws ManagedLifecycleException, SAXException, ParamRepositoryException, ConfigurationException, InterruptedException, MessageDeliverException {
+ ESBConfigUtil configUtil = new ESBConfigUtil(getClass().getResourceAsStream("listenerInVM.xml"));
- public void testGatewayInVMServiceInvocation() throws Exception
- {
- ConfigTree tree = new ConfigTree("test");
- final File tmpDir = new File(System.getProperty("user.dir"));
- final String tmpDirForm = tmpDir.toURL().toExternalForm();
+ configUtil.startController();
- tree.setAttribute("inputDir", tmpDirForm);
- tree.setAttribute("target-service-category", "Example12345");
- tree.setAttribute("target-service-name", "Test12345");
- tree.setAttribute("gatewayClass",
- "org.jboss.soa.esb.listeners.gateway.FileGatewayListener");
- tree.setAttribute("inputSuffix", "dummy");
- tree.setAttribute("workSuffix", "work");
- tree.setAttribute("postDelete", "true");
- tree.setAttribute(ListenerTagNames.POLL_LATENCY_SECS_TAG, "abcd");
+ ServiceInvoker invoker1 = new ServiceInvoker("X", "1");
+ ServiceInvoker invoker2 = new ServiceInvoker("X", "2");
+ Message message1 = MessageFactory.getInstance().getMessage();
+ Message message2 = MessageFactory.getInstance().getMessage();
+ Message message3 = MessageFactory.getInstance().getMessage();
+ Message message4 = MessageFactory.getInstance().getMessage();
- FileGatewayListener gateway = new FileGatewayListener(tree);
+ invoker1.deliverAsync(message1);
+ invoker2.deliverAsync(message2);
- String configFile = getClass().getResource("listenerInVM.xml")
- .getFile();
- ConfigTree lTree = ConfigTree.fromInputStream(new FileInputStream(
- configFile));
- ConfigTree eprElement = lTree.getAllChildren()[0].getFirstChild("EPR");
- EPR toEPR = ListenerUtil.assembleEpr(eprElement);
+ // Give the listener threads a few ms to pickup...
+ Thread.sleep(200);
- if (!(toEPR instanceof InVMEpr))
- fail();
+ assertEquals(2, MockMessageAwareAction.messages.size());
+ assertEquals(message1, MockMessageAwareAction.messages.get("listener1"));
+ assertEquals(message2, MockMessageAwareAction.messages.get("listener2"));
- final List<ManagedLifecycle> instances = LifecycleUtil
- .getListeners(lTree);
+ // and go with a few more messages....
+ invoker1.deliverAsync(message3);
+ invoker2.deliverAsync(message4);
- final ManagedLifecycleController controller = new ManagedLifecycleController(
- instances);
- controller.start();
+ // Give the listener threads a few ms to pickup...
+ Thread.sleep(200);
- gateway.initialise();
- gateway.start();
+ assertEquals(2, MockMessageAwareAction.messages.size());
+ assertEquals(message3, MockMessageAwareAction.messages.get("listener1"));
+ assertEquals(message4, MockMessageAwareAction.messages.get("listener2"));
+ }
- File testFile = null;
-
- try
- {
- testFile = File.createTempFile("foo", ".dummy", tmpDir);
-
- String testString = "Hello World";
- FileOutputStream stream = new FileOutputStream(testFile);
-
- stream.write(testString.getBytes());
- stream.close();
-
- gateway.onSchedule();
- }
- catch (Throwable ex)
- {
- log.error(ex);
-
- fail();
- }
- finally
- {
- testFile.delete();
- }
-
- gateway.stop();
- gateway.destroy();
-
- controller.stop();
-
- assertTrue(MockMessageAwareAction.received());
- }
-
- protected void runBeforeAllTests()
+ public static class MockMessageAwareAction extends AbstractActionPipelineProcessor
{
- try
- {
- TestEnvironmentUtil.setESBPropertiesFileToUse("product",
- "../product");
- // Set the juddi properties file in System so juddi will pick it up
- // later and use the test values.
- String juddiPropertiesFile = "/org/jboss/soa/esb/listeners/juddi-unittest.properties";
- System.setProperty("juddi.propertiesFile", juddiPropertiesFile);
- // Read this properties file to get the db connection string
- Properties props = new Properties();
- InputStream inStream = Class.class
- .getResourceAsStream(juddiPropertiesFile);
+ private static Map<String, Message> messages = new HashMap<String, Message>();
+ private ConfigTree config;
- props.load(inStream);
- String mDbDriver = props.getProperty("juddi.jdbcDriver");
- String mDbUrl = props.getProperty("juddi.jdbcUrl");
- String mDbUsername = props.getProperty("juddi.jdbcUsername");
- String mDbPassword = props.getProperty("juddi.jdbcPassword");
-
- String database = "not tested yet";
- if ("org.hsqldb.jdbcDriver".equals(mDbDriver))
- {
- database = "hsqldb";
- // Bring up hsql on default port 9001
- HsqldbUtil.startHsqldb(TestEnvironmentUtil.getUserDir(
- "product", "../product")
- + "/build/hsqltestdb", "juddi");
- }
- else if ("com.mysql.jdbc.Driver".equals(mDbDriver))
- {
- database = "mysql";
- } // add and test your own database..
-
- // Get the registry-schema create scripts
- String sqlDir = TestEnvironmentUtil.getUserDir("product",
- "../product")
- + "/install/jUDDI-registry/sql/" + database + "/";
- // Drop what is there now, if exists. We want to start fresh.
- String sqlDropCmd = FileUtil.readTextFile(new File(sqlDir
- + "drop_database.sql"));
- String resource = "juddi-sql/" + database + "/create_database.sql";
- InputStream is = Thread.currentThread().getContextClassLoader()
- .getResourceAsStream(resource);
- String sqlCreateCmd = FileUtil.readStream(is);
- String sqlInsertPubCmd = FileUtil.readTextFile(new File(sqlDir
- + "import.sql"));
-
- try
- {
- Class.forName(mDbDriver);
- }
- catch (Exception e)
- {
- log.error(
- "ERROR: failed to load " + database + " JDBC driver.",
- e);
- return;
- }
-
- con = DriverManager.getConnection(mDbUrl, mDbUsername, mDbPassword);
- Statement stmnt = con.createStatement();
- stmnt.execute(sqlDropCmd);
- stmnt.execute(sqlCreateCmd);
- stmnt.execute(sqlInsertPubCmd);
- stmnt.close();
- }
- catch (Throwable e)
+ public MockMessageAwareAction(ConfigTree config)
{
- log.error("We should stop testing, since we don't have a db.", e);
- assertTrue(false);
- }
- }
+ this.config = config;
+ }
- protected final void runAfterAllTests()
- {
- try
- {
- Thread.sleep(1000);
- Statement stmnt = con.createStatement();
-
- stmnt.execute("SHUTDOWN");
- stmnt.close();
-
- con.close();
+ public Message process(Message message) throws ActionProcessingException {
+ synchronized (messages) {
+ try {
+ messages.put(config.getRequiredAttribute("action"), message);
+ } catch (ConfigurationException e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+ return message;
}
- catch (Exception ex)
- {
- log.error(ex);
- }
- }
-
- private Connection con;
-
- public static class MockMessageAwareAction
- {
- public MockMessageAwareAction(ConfigTree config)
- {
- }
-
- public Message notifyTest (Message message) throws Exception
- {
- _received = true;
-
- return message;
- }
-
- public static final boolean received ()
- {
- return _received;
- }
-
- private static boolean _received;
- }
+ }
}
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/listenerInVM.xml
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/listenerInVM.xml 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/listenerInVM.xml 2007-12-07 13:39:06 UTC (rev 17088)
@@ -1,20 +1,27 @@
-<DummyTester parameterReloadSecs="180">
- <DummyActionConfig
- service-category="Example12345"
- service-name="Test12345"
- service-description="My Dummy Service Name InVM"
- listenerClass="org.jboss.soa.esb.listeners.message.MessageAwareListener"
- maxThreads="10"
- >
- <EPR
- URL="invm://serviceid67890"
- />
-
- <action class="org.jboss.soa.esb.listeners.gateway.GatewayInVMServiceUnitTest$MockMessageAwareAction" process="notifyTest" />
- <action class="org.jboss.soa.esb.actions.Notifier" okMethod="notifyOK">
- <NotificationList type="OK">
- <target class="NotifyConsole" />
- </NotificationList>
- </action>
- </DummyActionConfig>
-</DummyTester>
+<?xml version = "1.0" encoding = "UTF-8"?>
+<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
+ parameterReloadSecs="5">
+
+ <services>
+
+ <service category="X" name="1" description="Service">
+ <listeners>
+ <invm-listener name="xy-invm"/>
+ </listeners>
+ <actions>
+ <action name="listener1" class="org.jboss.soa.esb.listeners.gateway.GatewayInVMServiceUnitTest$MockMessageAwareAction"/>
+ </actions>
+ </service>
+
+ <service category="X" name="2" description="Service">
+ <listeners>
+ <invm-listener name="xy-invm"/>
+ </listeners>
+ <actions>
+ <action name="listener2" class="org.jboss.soa.esb.listeners.gateway.GatewayInVMServiceUnitTest$MockMessageAwareAction"/>
+ </actions>
+ </service>
+
+ </services>
+
+</jbossesb>
Modified: labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/services/registry/RegistryUnitTest.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/services/registry/RegistryUnitTest.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/rosetta/tests/src/org/jboss/soa/esb/services/registry/RegistryUnitTest.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -21,8 +21,19 @@
*/
package org.jboss.soa.esb.services.registry;
+import junit.framework.Assert;
+import junit.framework.JUnit4TestAdapter;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.testutils.FileUtil;
+import org.jboss.soa.esb.testutils.HsqldbUtil;
+import org.jboss.soa.esb.testutils.TestEnvironmentUtil;
+import org.junit.AfterClass;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import org.junit.BeforeClass;
+import org.junit.Test;
import java.io.File;
import java.io.InputStream;
@@ -31,18 +42,6 @@
import java.util.Collection;
import java.util.Iterator;
import java.util.Properties;
-
-import junit.framework.JUnit4TestAdapter;
-
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.jboss.soa.esb.addressing.EPR;
-import org.jboss.soa.esb.testutils.FileUtil;
-import org.jboss.soa.esb.testutils.HsqldbUtil;
-import org.jboss.soa.esb.testutils.TestEnvironmentUtil;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
/**
* Testing the registry.
*
@@ -152,7 +151,8 @@
assertEquals(services.size(),0);
} catch (Exception re) {
logger.log(Level.ERROR, re.getLocalizedMessage(), re);
- assertTrue(false);
+ re.printStackTrace();
+ Assert.fail("Unexpected exception: " + re.getMessage());
}
}
/**
Modified: labs/jbossesb/workspace/bramley/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actions/CommandInterpreter.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -101,7 +101,7 @@
_logger.error("Null replyToEPR in message - response will not be sent to invoker");
else
{
- Courier courier = CourierFactory.getCourier(reply);
+ Courier courier = CourierFactory.getInstance().getCourier(reply);
try
{
courier.deliver(message);
Modified: labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollectorAction.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollectorAction.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/DataCollectorAction.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -87,7 +87,7 @@
URI uri = new URI(UUID.randomUUID().toString());
esbMessage.getHeader().setMessageID(uri);
try {
- sender = CourierFactory.getCourier(epr);
+ sender = CourierFactory.getInstance().getCourier(epr);
sender.deliver(esbMessage);
} finally {
CourierUtil.cleanCourier(sender);
Modified: labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/InvokerAction.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -99,7 +99,7 @@
URI uri = new URI(UUID.randomUUID().toString());
esbMessage.getHeader().setMessageID(uri);
try {
- sender = CourierFactory.getCourier(epr);
+ sender = CourierFactory.getInstance().getCourier(epr);
sender.deliver(esbMessage);
} finally {
CourierUtil.cleanCourier(sender);
Modified: labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/client/OperationsCollectorAction.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -88,7 +88,7 @@
URI uri = new URI(UUID.randomUUID().toString());
esbMessage.getHeader().setMessageID(uri);
try {
- sender = CourierFactory.getCourier(epr);
+ sender = CourierFactory.getInstance().getCourier(epr);
sender.deliver(esbMessage);
} finally {
CourierUtil.cleanCourier(sender);
Modified: labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java
===================================================================
--- labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java 2007-12-07 11:45:25 UTC (rev 17087)
+++ labs/jbossesb/workspace/bramley/product/tools/console/management/src/main/java/org/jboss/soa/esb/monitoring/server/DataFilerJob.java 2007-12-07 13:39:06 UTC (rev 17088)
@@ -21,11 +21,6 @@
*/
package org.jboss.soa.esb.monitoring.server;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.UUID;
-
import org.apache.log4j.Logger;
import org.jboss.internal.soa.esb.couriers.DeliverOnlyCourier;
import org.jboss.soa.esb.addressing.EPR;
@@ -44,6 +39,11 @@
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.List;
+import java.util.UUID;
+
/**
* DataFilerJob is a Quartz job which, when fired, delivers a message to
* all DataCollector services asking for statistics.
@@ -76,7 +76,7 @@
esbMessage.getHeader().setMessageID(uri);
try {
- sender = CourierFactory.getCourier(epr);
+ sender = CourierFactory.getInstance().getCourier(epr);
sender.deliver(esbMessage);
} finally {
CourierUtil.cleanCourier(sender);
@@ -84,7 +84,7 @@
}
}
- list = RegistryUtil.getEprs(FilerAction.INTERNAL_CATEGORY, FilerAction.OPERATIONS_COLLECTOR_SERVICE_ACTION_NAME);
+ list = RegistryUtil.getEprs(org.jboss.soa.esb.monitoring.server.FilerAction.INTERNAL_CATEGORY, org.jboss.soa.esb.monitoring.server.FilerAction.OPERATIONS_COLLECTOR_SERVICE_ACTION_NAME);
if (list != null) {
for (int i = 0; i < list.size(); i++) {
EPR epr = (EPR)list.get(i);
@@ -96,7 +96,7 @@
URI opURI = new URI(UUID.randomUUID().toString());
opMessage.getHeader().setMessageID(opURI);
try{
- sender = CourierFactory.getCourier(epr);
+ sender = CourierFactory.getInstance().getCourier(epr);
sender.deliver(opMessage);
} finally {
CourierUtil.cleanCourier(sender);
More information about the jboss-svn-commits
mailing list