You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/03/04 08:12:40 UTC

svn commit: r1077837 - in /camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400: Jt400PgmCallException.java Jt400PgmProducer.java

Author: davsclaus
Date: Fri Mar  4 07:12:40 2011
New Revision: 1077837

URL: http://svn.apache.org/viewvc?rev=1077837&view=rev
Log:
CAMEL-3741: Improved error handling when error during executing program call. Thanks to Luis Santos for patch.

Added:
    camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmCallException.java   (with props)
Modified:
    camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java

Added: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmCallException.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmCallException.java?rev=1077837&view=auto
==============================================================================
--- camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmCallException.java (added)
+++ camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmCallException.java Fri Mar  4 07:12:40 2011
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jt400;
+
+import org.apache.camel.RuntimeCamelException;
+
+public class Jt400PgmCallException extends RuntimeCamelException {
+
+    private static final long serialVersionUID = 1112933724598115479L;
+
+    public Jt400PgmCallException(String message) {
+        super(message);
+    }
+}

Propchange: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmCallException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmCallException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java?rev=1077837&r1=1077836&r2=1077837&view=diff
==============================================================================
--- camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java (original)
+++ camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java Fri Mar  4 07:12:40 2011
@@ -24,7 +24,6 @@ import com.ibm.as400.access.AS400Message
 import com.ibm.as400.access.AS400Text;
 import com.ibm.as400.access.ProgramCall;
 import com.ibm.as400.access.ProgramParameter;
-
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.impl.DefaultProducer;
@@ -34,14 +33,14 @@ import org.slf4j.LoggerFactory;
 
 public class Jt400PgmProducer extends DefaultProducer {
 
-    private static final Logger LOG =  LoggerFactory.getLogger(Jt400PgmProducer.class);
+    private static final Logger LOG = LoggerFactory.getLogger(Jt400PgmProducer.class);
 
     public Jt400PgmProducer(Jt400PgmEndpoint endpoint) {
         super(endpoint);
     }
 
     private Jt400PgmEndpoint getISeriesEndpoint() {
-        return (Jt400PgmEndpoint)super.getEndpoint();
+        return (Jt400PgmEndpoint) super.getEndpoint();
     }
 
     public void process(Exchange exchange) throws Exception {
@@ -57,30 +56,27 @@ public class Jt400PgmProducer extends De
 
         if (LOG.isDebugEnabled()) {
             LOG.trace("Starting to call PGM '" + commandStr + "' in host '" + iSeries.getSystemName()
-                      + "' authenticatin with the user '" + iSeries.getUserId() + "'");
+                    + "' authentication with the user '" + iSeries.getUserId() + "'");
         }
 
         boolean result = pgmCall.run();
 
         if (LOG.isTraceEnabled()) {
-            LOG.trace("Executed PGM '" + commandStr + "' in host '" + iSeries.getSystemName() + "'. Success?"
-                     + result);
+            LOG.trace("Executed PGM '" + commandStr + "' in host '" + iSeries.getSystemName() + "'. Success? " + result);
         }
 
         if (result) {
             handlePGMOutput(exchange, pgmCall, parameterList);
         } else {
-            // TODO Do we need to throw an exception
-            handleMessages(pgmCall);
+            throw new Jt400PgmCallException(getOutputMessages(pgmCall));
         }
-
     }
 
     private ProgramParameter[] getParameterList(Exchange exchange) throws InvalidPayloadException {
 
         Object body = ExchangeHelper.getMandatoryInBody(exchange);
 
-        String[] params = (String[])body;
+        String[] params = (String[]) body;
 
         ProgramParameter[] parameterList = new ProgramParameter[params.length];
         for (int i = 0; i < params.length; i++) {
@@ -92,7 +88,7 @@ public class Jt400PgmProducer extends De
             byte[] inputData = null;
             int outputLength = -1;
             if (input) {
-                String value = (String)param;
+                String value = (String) param;
                 inputData = new AS400Text(value.length()).toBytes(value);
             }
             if (output) {
@@ -113,11 +109,10 @@ public class Jt400PgmProducer extends De
         return parameterList;
     }
 
-    private void handlePGMOutput(Exchange exchange, ProgramCall pgmCall, ProgramParameter[] inputs)
-        throws InvalidPayloadException {
+    private void handlePGMOutput(Exchange exchange, ProgramCall pgmCall, ProgramParameter[] inputs) throws InvalidPayloadException {
 
         Object bodyIN = ExchangeHelper.getMandatoryInBody(exchange);
-        String[] params = (String[])bodyIN;
+        String[] params = (String[]) bodyIN;
 
         List<String> results = new ArrayList<String>();
 
@@ -129,10 +124,9 @@ public class Jt400PgmProducer extends De
 
             if (output != null) {
                 int length = pgmParam.getOutputDataLength();
-                length = pgmParam.getOutputDataLength();
 
                 AS400Text text = new AS400Text(length);
-                value = (String)text.toObject(output);
+                value = (String) text.toObject(output);
             }
 
             results.add(value);
@@ -145,16 +139,19 @@ public class Jt400PgmProducer extends De
         exchange.getOut().setBody(bodyOUT);
     }
 
-    private void handleMessages(ProgramCall pgmCall) throws Exception {
+    private String getOutputMessages(ProgramCall pgmCall) throws Exception {
+        StringBuilder outputMsg = new StringBuilder();
         // Show messages.
-        if (LOG.isDebugEnabled()) {
-            AS400Message[] messageList = pgmCall.getMessageList();
-            for (int i = 0; i < messageList.length; ++i) {
-                // Load additional message information.
-                messageList[i].load();
-                // Show each message.
-                LOG.debug("The message list [" + i + "]" + messageList[i].getText() + ", help info: " + messageList[i].getHelp());
-            }
+        AS400Message[] messageList = pgmCall.getMessageList();
+        for (int i = 0; i < messageList.length; ++i) {
+            // Load additional message information.
+            messageList[i].load();
+            outputMsg.append(i + ") ");
+            outputMsg.append(messageList[i].getText());
+            outputMsg.append(" - ");
+            outputMsg.append(messageList[i].getHelp());
+            outputMsg.append("\n");
         }
+        return outputMsg.toString();
     }
 }