You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bv...@apache.org on 2012/12/10 19:45:39 UTC

svn commit: r1419655 - in /camel/trunk/components/camel-quickfix/src: main/java/org/apache/camel/component/quickfixj/ test/java/org/apache/camel/component/quickfixj/ test/java/org/apache/camel/component/quickfixj/examples/ test/java/org/apache/camel/co...

Author: bvahdat
Date: Mon Dec 10 18:45:37 2012
New Revision: 1419655

URL: http://svn.apache.org/viewvc?rev=1419655&view=rev
Log:
CAMEL-5861: Fixed the example org.apache.camel.component.quickfixj.examples.RequestReplyExample which never used to work since it's integration into the Apache Camel source. Also polished the codebase of this Camel component as well.

Modified:
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessageCorrelator.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessagePredicate.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjProducer.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjProducerTest.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjSpringTest.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/AuthenticationExample.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/RequestReplyExample.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/routing/FixMessageRouter.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/trading/TradeExecutor.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/transform/QuickfixjEventJsonTransformer.java

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessageCorrelator.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessageCorrelator.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessageCorrelator.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessageCorrelator.java Mon Dec 10 18:45:37 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.quickfixj;
 
+import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CountDownLatch;
@@ -29,7 +30,7 @@ import quickfix.SessionID;
 
 public class MessageCorrelator implements QuickfixjEventListener {
     public static final long DEFAULT_CORRELATION_TIMEOUT = 1000L;
-    private final CopyOnWriteArrayList<MessageCorrelationRule> rules = new CopyOnWriteArrayList<MessageCorrelationRule>();
+    private final List<MessageCorrelationRule> rules = new CopyOnWriteArrayList<MessageCorrelationRule>();
 
     public Callable<Message> getReply(SessionID sessionID, Exchange exchange)
         throws InterruptedException, ExchangeTimedOutException {

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessagePredicate.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessagePredicate.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessagePredicate.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/MessagePredicate.java Mon Dec 10 18:45:37 2012
@@ -19,6 +19,8 @@ package org.apache.camel.component.quick
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.camel.util.ObjectHelper;
+
 import quickfix.Field;
 import quickfix.FieldMap;
 import quickfix.FieldNotFound;
@@ -41,7 +43,7 @@ public class MessagePredicate {
     }
     
     private void addHeaderFieldIfPresent(int tag, String value) {
-        if (value != null && !"".equals(value)) {
+        if (!ObjectHelper.isEmpty(value)) {
             withHeaderField(tag, value);
         }
     }
@@ -58,7 +60,7 @@ public class MessagePredicate {
                     value = fieldMap.getString(c.getField());
                 }
             } catch (FieldNotFound e) {
-                // ignored, shouldn't happen
+                ObjectHelper.wrapRuntimeCamelException(e);
             }
             if (!c.getObject().equals(value)) {
                 return false;

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjProducer.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjProducer.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfixj/QuickfixjProducer.java Mon Dec 10 18:45:37 2012
@@ -31,11 +31,13 @@ public class QuickfixjProducer extends D
     public static final String CORRELATION_TIMEOUT_KEY = "CorrelationTimeout";
     public static final String CORRELATION_CRITERIA_KEY = "CorrelationCriteria";
     
-    private final SessionID sessionID;
-    
     public QuickfixjProducer(Endpoint endpoint) {
         super(endpoint);
-        sessionID = ((QuickfixjEndpoint) getEndpoint()).getSessionID();
+    }
+
+    @Override
+    public QuickfixjEndpoint getEndpoint() {
+        return (QuickfixjEndpoint) super.getEndpoint();
     }
 
     public void process(Exchange exchange) throws Exception {
@@ -50,7 +52,7 @@ public class QuickfixjProducer extends D
         Message message = camelMessage.getBody(Message.class);
         log.debug("Sending FIX message: {}", message);
 
-        SessionID messageSessionID = sessionID;
+        SessionID messageSessionID = getEndpoint().getSessionID();
         if (messageSessionID == null) {
             messageSessionID = MessageUtils.getSessionID(message);
         }
@@ -63,9 +65,8 @@ public class QuickfixjProducer extends D
         Callable<Message> callable = null;
 
         if (exchange.getPattern().isOutCapable()) {
-            QuickfixjEndpoint endpoint = (QuickfixjEndpoint) getEndpoint();
-            MessageCorrelator messageCorrelator = endpoint.getEngine().getMessageCorrelator();
-            callable = messageCorrelator.getReply(endpoint.getSessionID(), exchange);
+            MessageCorrelator messageCorrelator = getEndpoint().getEngine().getMessageCorrelator();
+            callable = messageCorrelator.getReply(getEndpoint().getSessionID(), exchange);
         }
 
         if (!session.send(message)) {

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjProducerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjProducerTest.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjProducerTest.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjProducerTest.java Mon Dec 10 18:45:37 2012
@@ -75,9 +75,8 @@ public class QuickfixjProducerTest {
         producer = Mockito.spy(new QuickfixjProducer(mockEndpoint));
     }
     
-    @SuppressWarnings("serial")
     public class TestException extends RuntimeException {
-        
+        private static final long serialVersionUID = 1L;
     }
     
     @Test

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjSpringTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjSpringTest.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjSpringTest.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/QuickfixjSpringTest.java Mon Dec 10 18:45:37 2012
@@ -72,7 +72,7 @@ public class QuickfixjSpringTest extends
         }
     }
 
-    @SuppressWarnings("serial")
     public static class CustomNewOrderSingle extends NewOrderSingle {
+        private static final long serialVersionUID = 1L;
     }
 }

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/AuthenticationExample.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/AuthenticationExample.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/AuthenticationExample.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/AuthenticationExample.java Mon Dec 10 18:45:37 2012
@@ -23,7 +23,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.builder.PredicateBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.quickfixj.QuickfixjComponent;
 import org.apache.camel.component.quickfixj.QuickfixjEndpoint;
 import org.apache.camel.component.quickfixj.QuickfixjEventCategory;
 import org.apache.camel.component.quickfixj.examples.util.CountDownLatchDecrementer;
@@ -45,7 +44,7 @@ import quickfix.field.RawDataLength;
  * 
  */
 public class AuthenticationExample {
-    private static final Logger LOG = LoggerFactory.getLogger(QuickfixjComponent.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AuthenticationExample.class);
 
     public static void main(String[] args) throws Exception {
         new AuthenticationExample().run();

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/RequestReplyExample.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/RequestReplyExample.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/RequestReplyExample.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/RequestReplyExample.java Mon Dec 10 18:45:37 2012
@@ -18,8 +18,8 @@ package org.apache.camel.component.quick
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
 import java.net.URL;
+import java.net.URLConnection;
 import java.util.UUID;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -29,7 +29,6 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Header;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.quickfixj.MessagePredicate;
-import org.apache.camel.component.quickfixj.QuickfixjComponent;
 import org.apache.camel.component.quickfixj.QuickfixjEndpoint;
 import org.apache.camel.component.quickfixj.QuickfixjEventCategory;
 import org.apache.camel.component.quickfixj.QuickfixjProducer;
@@ -59,7 +58,7 @@ import quickfix.fix42.ExecutionReport;
 import quickfix.fix42.OrderStatusRequest;
 
 public class RequestReplyExample {
-    private static final Logger LOG = LoggerFactory.getLogger(QuickfixjComponent.class);
+    private static final Logger LOG = LoggerFactory.getLogger(RequestReplyExample.class);
 
     public static void main(String[] args) throws Exception {
         new RequestReplyExample().run();
@@ -104,7 +103,7 @@ public class RequestReplyExample {
         // Verify that the response is a JSON response.
         
         URL orderStatusUrl = new URL(orderStatusServiceUrl + "?sessionID=FIX.4.2:TRADER->MARKET&orderID=abc");
-        HttpURLConnection connection = (HttpURLConnection) orderStatusUrl.openConnection();
+        URLConnection connection = orderStatusUrl.openConnection();
         BufferedReader orderStatusReply = IOHelper.buffered(new InputStreamReader(connection.getInputStream()));
         String line = orderStatusReply.readLine();
         if (!line.equals("\"message\": {")) {
@@ -128,8 +127,10 @@ public class RequestReplyExample {
         
     public static class OrderStatusRequestTransformer {
         public void transform(Exchange exchange) throws FieldNotFound {
-            String sessionID = (String) exchange.getIn().getHeader("sessionID");
-            String orderID = (String) exchange.getIn().getHeader("orderID");
+            // For the reply take the reverse sessionID into the account, that's the reverse of
+            // exchange.getIn().getHeader("sessionID", String.class) which is equal to "FIX.4.2:TRADER->MARKET"
+            String sessionID = "FIX.4.2:MARKET->TRADER";
+            String orderID = exchange.getIn().getHeader("orderID", String.class);
 
             OrderStatusRequest request = new OrderStatusRequest(new ClOrdID("XYZ"), new Symbol("GOOG"), new Side(Side.BUY));
             request.set(new OrderID(orderID));
@@ -138,14 +139,14 @@ public class RequestReplyExample {
             // and having the requested OrderID. This is a loose correlation but the best
             // we can do with FIX 4.2. Newer versions of FIX have an optional explicit correlation field.
             exchange.setProperty(QuickfixjProducer.CORRELATION_CRITERIA_KEY, new MessagePredicate(
-                new SessionID(sessionID), MsgType.EXECUTION_REPORT).withField(OrderID.FIELD, request.getString(OrderID.FIELD)));
+                new SessionID(sessionID), MsgType.ORDER_STATUS_REQUEST).withField(OrderID.FIELD, request.getString(OrderID.FIELD)));
             
             exchange.getIn().setBody(request);
         }
     }
     
     public static class MarketOrderStatusService {
-        private static final Logger LOG = LoggerFactory.getLogger(QuickfixjComponent.class);
+        private static final Logger LOG = LoggerFactory.getLogger(MarketOrderStatusService.class);
         
         public ExecutionReport getOrderStatus(OrderStatusRequest request) throws FieldNotFound {
             LOG.info("Received order status request for orderId=" + request.getOrderID().getValue());

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/routing/FixMessageRouter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/routing/FixMessageRouter.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/routing/FixMessageRouter.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/routing/FixMessageRouter.java Mon Dec 10 18:45:37 2012
@@ -17,6 +17,7 @@
 package org.apache.camel.component.quickfixj.examples.routing;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -98,7 +99,7 @@ public class FixMessageRouter {
             try {
                 return fieldMap.getString(tag);
             } catch (Exception e) {
-                // won't happen
+                ObjectHelper.wrapRuntimeCamelException(e);
             }
         }
         return null;

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/trading/TradeExecutor.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/trading/TradeExecutor.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/trading/TradeExecutor.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/trading/TradeExecutor.java Mon Dec 10 18:45:37 2012
@@ -73,10 +73,14 @@ public class TradeExecutor {
     private int orderID;
     private int execID;
     
-    @SuppressWarnings("serial")
     public TradeExecutor() throws ConfigError, FieldConvertError {
         setAlwaysFillLimitOrders(true);
-        setValidOrderTypes(new HashSet<String>() { { add(OrdType.LIMIT + ""); add(OrdType.MARKET + ""); } });
+
+        Set<String> validOrderTypes = new HashSet<String>();
+        validOrderTypes.add(OrdType.LIMIT + "");
+        validOrderTypes.add(OrdType.MARKET + "");
+        setValidOrderTypes(validOrderTypes);
+
         setMarketQuoteProvider(new DefaultMarketQuoteProvider(10.00));
     }
     

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/transform/QuickfixjEventJsonTransformer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/transform/QuickfixjEventJsonTransformer.java?rev=1419655&r1=1419654&r2=1419655&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/transform/QuickfixjEventJsonTransformer.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfixj/examples/transform/QuickfixjEventJsonTransformer.java Mon Dec 10 18:45:37 2012
@@ -33,7 +33,7 @@ public class QuickfixjEventJsonTransform
     }
     
     public String transform(Exchange exchange) {
-        SessionID sessionID = (SessionID) exchange.getIn().getHeader(QuickfixjEndpoint.SESSION_ID_KEY);
+        SessionID sessionID = exchange.getIn().getHeader(QuickfixjEndpoint.SESSION_ID_KEY, SessionID.class);
         Session session = Session.lookupSession(sessionID);
         DataDictionary dataDictionary = session.getDataDictionary();