You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/05/07 12:47:40 UTC

svn commit: r772605 - in /camel/trunk/components/camel-quickfix: ./ src/main/java/org/apache/camel/component/quickfix/ src/main/java/org/apache/camel/component/quickfix/converter/ src/main/java/org/apache/camel/component/quickfix/example/ src/main/reso...

Author: ningjiang
Date: Thu May  7 10:47:39 2009
New Revision: 772605

URL: http://svn.apache.org/viewvc?rev=772605&view=rev
Log:
CAMEL-1350 refactoring camel-quickfix component

Added:
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java   (contents, props changed)
      - copied, changed from r772503, camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/Exchange2Message.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfix/example/   (props changed)
      - copied from r772503, camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/example/
Removed:
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/Exchange2Message.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/example/
    camel/trunk/components/camel-quickfix/src/main/resources/examples/
    camel/trunk/components/camel-quickfix/src/main/resources/log4j.properties
Modified:
    camel/trunk/components/camel-quickfix/pom.xml
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixAcceptor.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixApplication.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixConsumer.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixEndpoint.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixInitiator.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProcessor.java
    camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProducer.java
    camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfix/example/PassiveFixGateway.java

Modified: camel/trunk/components/camel-quickfix/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/pom.xml?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/pom.xml (original)
+++ camel/trunk/components/camel-quickfix/pom.xml Thu May  7 10:47:39 2009
@@ -51,11 +51,7 @@
 			<groupId>commons-logging</groupId>
 			<artifactId>commons-logging</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
-		</dependency>
-
+		
 		<dependency>
 			<groupId>org.quickfixj</groupId>
 			<artifactId>quickfixj-all</artifactId>
@@ -75,12 +71,7 @@
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-test</artifactId>
 			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.camel</groupId>
-			<artifactId>camel-spring-javaconfig</artifactId>
-			<scope>test</scope>
-		</dependency>
+		</dependency>		
 
 		<dependency>
 			<groupId>junit</groupId>

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixAcceptor.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixAcceptor.java?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixAcceptor.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixAcceptor.java Thu May  7 10:47:39 2009
@@ -20,6 +20,7 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultComponent;
+import org.apache.commons.logging.Log;
 import quickfix.Application;
 import quickfix.ConfigError;
 import quickfix.DefaultMessageFactory;
@@ -36,12 +37,13 @@
  * @author Anton Arhipov
  */
 public class QuickfixAcceptor extends DefaultComponent {
-
+    private static final Log LOG = org.apache.commons.logging.LogFactory.getLog(QuickfixAcceptorEndpoint.class);
+    
     protected QuickfixEndpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         return new QuickfixAcceptorEndpoint(uri, getCamelContext(), remaining);
     }
 
-    class QuickfixAcceptorEndpoint extends QuickfixEndpoint {
+    class QuickfixAcceptorEndpoint extends QuickfixEndpoint {        
 
         private/* Threaded */SocketAcceptor acceptor;
 
@@ -51,7 +53,8 @@
 
         protected void start(Application application, MessageStoreFactory storeFactory,
                              SessionSettings settings, LogFactory logFactory) throws ConfigError {
-
+                        // To avoid this exception in OSGi platform
+            // java.lang.NoClassDefFoundError: quickfix/fix41/MessageFactory
             ClassLoader ccl = Thread.currentThread().getContextClassLoader();
             try {
                 Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
@@ -60,6 +63,9 @@
                                               new DefaultMessageFactory());
 
                 acceptor.start();
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Start the accetpor endpoint");
+                }
             } finally {
                 Thread.currentThread().setContextClassLoader(ccl);
             }
@@ -70,6 +76,9 @@
             super.stop();
             if (acceptor != null) {
                 acceptor.stop();
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Stop the accetpor endpoint");
+                }
                 acceptor = null;
             }
         }

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixApplication.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixApplication.java?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixApplication.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixApplication.java Thu May  7 10:47:39 2009
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.component.quickfix;
 
-import org.apache.log4j.Logger;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import quickfix.Application;
 import quickfix.DoNotSend;
 import quickfix.FieldNotFound;
@@ -35,7 +37,7 @@
  */
 public class QuickfixApplication implements Application {
 
-    private static final Logger LOG = Logger.getLogger(QuickfixApplication.class);
+    private static final Log LOG = LogFactory.getLog(QuickfixApplication.class);
 
     private QuickfixEndpoint endpoint;
 

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixConsumer.java?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixConsumer.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixConsumer.java Thu May  7 10:47:39 2009
@@ -19,7 +19,8 @@
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumer;
-import org.apache.log4j.Logger;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 
 /**
@@ -28,7 +29,7 @@
  * @author Anton Arhipov
  */
 public class QuickfixConsumer extends DefaultConsumer {
-    private static final Logger LOG = Logger.getLogger(QuickfixConsumer.class);
+    private static final Log LOG = LogFactory.getLog(QuickfixConsumer.class);
 
     public QuickfixConsumer(Endpoint endpoint, Processor processor) {
         super(endpoint, processor);

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixEndpoint.java?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixEndpoint.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixEndpoint.java Thu May  7 10:47:39 2009
@@ -27,16 +27,12 @@
 import org.apache.camel.Service;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.log4j.Logger;
 import org.springframework.core.io.DefaultResourceLoader;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;
 import quickfix.Application;
 import quickfix.ConfigError;
-import quickfix.FieldNotFound;
 import quickfix.FileStoreFactory;
-import quickfix.IncorrectDataFormat;
-import quickfix.IncorrectTagValue;
 import quickfix.LogFactory;
 import quickfix.Message;
 import quickfix.MessageStoreFactory;
@@ -44,7 +40,6 @@
 import quickfix.Session;
 import quickfix.SessionID;
 import quickfix.SessionSettings;
-import quickfix.UnsupportedMessageType;
 
 /**
  * QuickfixEndpoint is the common class for quickfix endpoints
@@ -60,20 +55,6 @@
  */
 public abstract class QuickfixEndpoint extends DefaultEndpoint implements Service {
 
-    private static final Logger LOG = Logger.getLogger(QuickfixEndpoint.class);
-
-    {
-        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
-            public void run() {
-                try {
-                    stop();
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }));
-    }
-
     private boolean strict;
 
     private SessionID sessionID;
@@ -94,25 +75,12 @@
         return true;
     }
 
-    public void onMessage(Message message) throws FieldNotFound, IncorrectDataFormat, IncorrectTagValue,
-        UnsupportedMessageType {
+    public void onMessage(Message message) {
         Exchange exchange = createExchange(message);
         try {
             processor.process(exchange);
-        } catch (FieldNotFound e) {
-            throw e;
-        } catch (IncorrectDataFormat e) {
-            throw e;
-        } catch (IncorrectTagValue e) {
-            throw e;
-        } catch (UnsupportedMessageType e) {
-            throw e;
-        } catch (RuntimeException e) {
-            LOG.error("Unexpected exception encountered in onMessage()", e);
-            throw e;
-        } catch (Throwable e) {
-            LOG.error("Unexpected exception encountered in onMessage()", e);
-            throw new RuntimeException("Unexpected exception encountered in onMessage()", e);
+        } catch (Exception e) {
+            exchange.setException(e);
         }
 
     }
@@ -152,7 +120,7 @@
         return Session.lookupSession(sessionID);
     }
 
-    public void stop() throws Exception {
+    public void stop() throws Exception {        
         Session session = Session.lookupSession(sessionID);
         if (session != null) {
             session.disconnect();
@@ -201,7 +169,7 @@
                 // then the screen logging factory will be used by default
                 logFactory = new ScreenLogFactory(settings);
             } else {
-                throw new RuntimeException(
+                throw new IllegalArgumentException(
                                            "The strict option is switched on. "
                                                + "You should either inject the required logging factory via spring context, "
                                                + "or specify the logging factory parameters via endpoint URI");
@@ -216,7 +184,7 @@
             if (!strict) {
                 messageStoreFactory = new FileStoreFactory(settings);
             } else {
-                throw new RuntimeException(
+                throw new IllegalArgumentException(
                                            "The strict option is switched on. "
                                                + "You should either inject the required logging factory via spring context, "
                                                + "or specify the logging factory parameters via endpoint URI");

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixInitiator.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixInitiator.java?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixInitiator.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixInitiator.java Thu May  7 10:47:39 2009
@@ -20,6 +20,7 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultComponent;
+import org.apache.commons.logging.Log;
 import quickfix.Application;
 import quickfix.ConfigError;
 import quickfix.DefaultMessageFactory;
@@ -36,6 +37,8 @@
  * @author Anton Arhipov
  */
 public class QuickfixInitiator extends DefaultComponent {
+    private static final Log LOG = org.apache.commons.logging.LogFactory.getLog(QuickfixInitiatorEndpoint.class);
+    
     protected QuickfixEndpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         return new QuickfixInitiatorEndpoint(uri, getCamelContext(), remaining);
     }
@@ -51,6 +54,8 @@
         protected void start(Application application, MessageStoreFactory storeFactory,
                              SessionSettings settings, LogFactory logFactory) throws ConfigError {
 
+            // To avoid this exception in OSGi platform
+            // java.lang.NoClassDefFoundError: quickfix/fix41/MessageFactory
             ClassLoader ccl = Thread.currentThread().getContextClassLoader();
             try {
                 Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
@@ -59,6 +64,10 @@
                                                 new DefaultMessageFactory());
 
                 initiator.start();
+                
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Start the initiator endpoint");
+                }
             } finally {
                 Thread.currentThread().setContextClassLoader(ccl);
             }
@@ -68,6 +77,9 @@
             super.stop();
             if (initiator != null) {
                 initiator.stop();
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Stop the accetpor endpoint");
+                }
                 initiator = null;
             }
         }

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProcessor.java?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProcessor.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProcessor.java Thu May  7 10:47:39 2009
@@ -18,6 +18,8 @@
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.log4j.Logger;
 
 /**
@@ -25,9 +27,9 @@
  */
 public class QuickfixProcessor implements Processor {
 
-    private static final Logger LOG = Logger.getLogger(QuickfixProcessor.class);
+    private static final Log LOG = LogFactory.getLog(QuickfixProcessor.class);
 
-    // TODO:
+    // The default processor for the consumer
     public void process(Exchange exchange) throws Exception {
         LOG.debug("Processing exchange " + exchange);
     }

Modified: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProducer.java?rev=772605&r1=772604&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProducer.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/QuickfixProducer.java Thu May  7 10:47:39 2009
@@ -22,7 +22,8 @@
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ExchangeHelper;
-import org.apache.log4j.Logger;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import quickfix.Message;
 
 /**
@@ -34,7 +35,7 @@
  */
 public class QuickfixProducer extends DefaultProducer {
 
-    private static final Logger LOG = Logger.getLogger(QuickfixProducer.class);
+    private static final Log LOG = LogFactory.getLog(QuickfixProducer.class);
 
     private QuickfixEndpoint endpoint;
 

Copied: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java (from r772503, camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/Exchange2Message.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java?p2=camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java&p1=camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/Exchange2Message.java&r1=772503&r2=772605&rev=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/Exchange2Message.java (original)
+++ camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java Thu May  7 10:47:39 2009
@@ -19,21 +19,32 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 
 import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.component.quickfix.QuickfixApplication;
 import org.apache.camel.converter.IOConverter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import quickfix.InvalidMessage;
 import quickfix.Message;
-import quickfix.MessageCracker;
 
 /**
  * @author Anton Arhipov
  */
 @Converter
-public class Exchange2Message extends MessageCracker {
+public final class QuickFixConverter {
+        
     public static final int BUFFER_SIZE = 8192; 
+    private static final Log LOG = LogFactory.getLog(QuickFixConverter.class);
+    
+    private QuickFixConverter() {
+        // helper class
+    }
+    
     @Converter
-    public static Message convert(InputStream in) throws IOException, InvalidMessage {        
+    public static Message convert(InputStream in, Exchange exchange) throws IOException, InvalidMessage {        
         byte buffer[] = new byte[BUFFER_SIZE];
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         int count;
@@ -42,8 +53,19 @@
             baos.write(buffer, 0, count);
             count = in.read(buffer);
         }
-
-        String str = baos.toString("ISO-8859-1");
+        String str = null;
+        String charsetName = exchange.getProperty(Exchange.CHARSET_NAME, String.class);
+        if (charsetName != null) {
+            try {
+                str = baos.toString(charsetName);
+            } catch (UnsupportedEncodingException e) {
+                LOG.warn("Cannot convert the byte[] into String with the charset: " + charsetName, e);
+                str = baos.toString();
+            }
+        } else {
+            // using the default encoding 
+            str = baos.toString();
+        }
         in.close();
         return new Message(str);
     }

Propchange: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: camel/trunk/components/camel-quickfix/src/main/java/org/apache/camel/component/quickfix/converter/QuickFixConverter.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfix/example/
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfix/example/PassiveFixGateway.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfix/example/PassiveFixGateway.java?rev=772605&r1=772503&r2=772605&view=diff
==============================================================================
--- camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfix/example/PassiveFixGateway.java (original)
+++ camel/trunk/components/camel-quickfix/src/test/java/org/apache/camel/component/quickfix/example/PassiveFixGateway.java Thu May  7 10:47:39 2009
@@ -24,7 +24,7 @@
  *         <p/>
  *         To use this example, start Banzai and Executor applications from
  *         Quickfix distribution. The PassiveFixGateway example is intended to
- *         receive the messages from Banzai, forward 'em to Executor, and
+ *         receive the messages from Banzai, forward them to Executor, and
  *         respond back to the Banzai with the execution report.
  */
 public class PassiveFixGateway extends SpringRouteBuilder {