Return-Path: Delivered-To: apmail-camel-commits-archive@www.apache.org Received: (qmail 15058 invoked from network); 2 Mar 2011 03:50:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 2 Mar 2011 03:50:18 -0000 Received: (qmail 71591 invoked by uid 500); 2 Mar 2011 03:50:18 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 71531 invoked by uid 500); 2 Mar 2011 03:50:17 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 71524 invoked by uid 99); 2 Mar 2011 03:50:16 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Mar 2011 03:50:16 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 Mar 2011 03:50:13 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 43FC223889E1; Wed, 2 Mar 2011 03:49:51 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1076099 - in /camel/trunk/components/camel-jt400/src: main/java/org/apache/camel/component/jt400/ test/java/org/apache/camel/component/jt400/ Date: Wed, 02 Mar 2011 03:49:51 -0000 To: commits@camel.apache.org From: ningjiang@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110302034951.43FC223889E1@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ningjiang Date: Wed Mar 2 03:49:50 2011 New Revision: 1076099 URL: http://svn.apache.org/viewvc?rev=1076099&view=rev Log: CAMEL-3741 Added new PgmCall option to the Jt400 component Added: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmEndpoint.java (with props) camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java (with props) camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmEndpointTest.java (with props) camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmRouteTest.java (with props) Modified: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Component.java camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400ComponentTest.java Modified: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Component.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Component.java?rev=1076099&r1=1076098&r2=1076099&view=diff ============================================================================== --- camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Component.java (original) +++ camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Component.java Wed Mar 2 03:49:50 2011 @@ -25,11 +25,12 @@ import org.apache.camel.impl.DefaultComp /** * {@link Component} to provide integration with AS/400 objects. * - * Current implementation only supports working with data queues (*DTAQ) + * Current implementation supports working with data queues (*DTAQ) and Program calls (*PGM) */ public class Jt400Component extends DefaultComponent { private static final String DATA_QUEUE = "DTAQ"; + private static final String PGM = "PGM"; @Override protected Endpoint createEndpoint(String uri, String remaining, Map properties) throws Exception { @@ -38,6 +39,11 @@ public class Jt400Component extends Defa if (DATA_QUEUE.equals(type)) { return new Jt400DataQueueEndpoint(uri, this); } + + if (PGM.equals(type)) { + return new Jt400PgmEndpoint(uri, this); + } + throw new CamelException(String.format("AS/400 Object type %s is not supported", type)); } } Added: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmEndpoint.java?rev=1076099&view=auto ============================================================================== --- camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmEndpoint.java (added) +++ camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmEndpoint.java Wed Mar 2 03:49:50 2011 @@ -0,0 +1,123 @@ +/** + * 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 java.net.URI; +import java.net.URISyntaxException; +import java.util.Arrays; +import java.util.Map; + +import javax.naming.OperationNotSupportedException; + +import com.ibm.as400.access.AS400; +import org.apache.camel.CamelContext; +import org.apache.camel.CamelException; +import org.apache.camel.Consumer; +import org.apache.camel.Processor; +import org.apache.camel.Producer; +import org.apache.camel.impl.DefaultEndpoint; + +public class Jt400PgmEndpoint extends DefaultEndpoint { + + private String programToExecute; + + private Integer[] outputFieldsIdxArray; + private Integer[] outputFieldsLengthArray; + + private AS400 iSeries; + + /** + * Creates a new AS/400 PGM CALL endpoint + */ + protected Jt400PgmEndpoint(String endpointUri, Jt400Component component) throws CamelException { + super(endpointUri, component); + try { + URI uri = new URI(endpointUri); + String[] credentials = uri.getUserInfo().split(":"); + iSeries = new AS400(uri.getHost(), credentials[0], credentials[1]); + programToExecute = uri.getPath(); + } catch (URISyntaxException e) { + throw new CamelException("Unable to parse URI for " + endpointUri, e); + } + } + + public Jt400PgmEndpoint(String endpointUri, String programToExecute, Map parameters, + CamelContext camelContext) { + super(endpointUri, camelContext); + this.programToExecute = programToExecute; + } + + public Producer createProducer() throws Exception { + return new Jt400PgmProducer(this); + } + + public Consumer createConsumer(Processor processor) throws Exception { + throw new OperationNotSupportedException(); + } + + public boolean isSingleton() { + return false; + } + + @Override + public void stop() throws Exception { + super.stop(); + if (iSeries != null) { + iSeries.disconnectAllServices(); + } + } + + public boolean isFieldIdxForOuput(int idx) { + return Arrays.binarySearch(outputFieldsIdxArray, idx) >= 0; + } + + public int getOutputFieldLength(int idx) { + return outputFieldsLengthArray[idx]; + } + + // getters and setters + public String getProgramToExecute() { + return programToExecute; + } + + public AS400 getiSeries() { + return iSeries; + } + + public void setOutputFieldsIdx(String outputFieldsIdx) { + if (outputFieldsIdx != null) { + String[] outputArray = outputFieldsIdx.split(","); + outputFieldsIdxArray = new Integer[outputArray.length]; + for (int i = 0; i < outputArray.length; i++) { + String str = outputArray[i]; + outputFieldsIdxArray[i] = Integer.parseInt(str); + } + } + } + + public void setFieldsLength(String fieldsLength) { + if (fieldsLength != null) { + String[] outputArray = fieldsLength.split(","); + outputFieldsLengthArray = new Integer[outputArray.length]; + for (int i = 0; i < outputArray.length; i++) { + String str = outputArray[i]; + outputFieldsLengthArray[i] = Integer.parseInt(str); + } + } + } + +} Propchange: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmEndpoint.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmEndpoint.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: 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=1076099&view=auto ============================================================================== --- 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/Jt400PgmProducer.java Wed Mar 2 03:49:50 2011 @@ -0,0 +1,160 @@ +/** + * 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 java.util.ArrayList; +import java.util.List; + +import com.ibm.as400.access.AS400; +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; +import org.apache.camel.util.ExchangeHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Jt400PgmProducer extends DefaultProducer { + + private static final Logger LOG = LoggerFactory.getLogger(Jt400PgmProducer.class); + + public Jt400PgmProducer(Jt400PgmEndpoint endpoint) { + super(endpoint); + } + + private Jt400PgmEndpoint getISeriesEndpoint() { + return (Jt400PgmEndpoint)super.getEndpoint(); + } + + public void process(Exchange exchange) throws Exception { + + AS400 iSeries = getISeriesEndpoint().getiSeries(); + + String commandStr = getISeriesEndpoint().getProgramToExecute(); + ProgramParameter[] parameterList = getParameterList(exchange); + + ProgramCall pgmCall = new ProgramCall(iSeries); + pgmCall.setProgram(commandStr); + pgmCall.setParameterList(parameterList); + + if (LOG.isDebugEnabled()) { + LOG.trace("Starting to call PGM '" + commandStr + "' in host '" + iSeries.getSystemName() + + "' authenticatin with the user '" + iSeries.getUserId() + "'"); + } + + boolean result = pgmCall.run(); + + if (LOG.isTraceEnabled()) { + 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); + } + + } + + private ProgramParameter[] getParameterList(Exchange exchange) throws InvalidPayloadException { + + Object body = ExchangeHelper.getMandatoryInBody(exchange); + + String[] params = (String[])body; + + ProgramParameter[] parameterList = new ProgramParameter[params.length]; + for (int i = 0; i < params.length; i++) { + Object param = params[i]; + + boolean input = param != null; + boolean output = getISeriesEndpoint().isFieldIdxForOuput(i); + + byte[] inputData = null; + int outputLength = -1; + if (input) { + String value = (String)param; + inputData = new AS400Text(value.length()).toBytes(value); + } + if (output) { + outputLength = getISeriesEndpoint().getOutputFieldLength(i); + } + + if (input && output) { + parameterList[i] = new ProgramParameter(inputData, outputLength); + } + if (input) { + parameterList[i] = new ProgramParameter(inputData); + } + if (output) { + parameterList[i] = new ProgramParameter(outputLength); + } + } + + return parameterList; + } + + private void handlePGMOutput(Exchange exchange, ProgramCall pgmCall, ProgramParameter[] inputs) + throws InvalidPayloadException { + + Object bodyIN = ExchangeHelper.getMandatoryInBody(exchange); + String[] params = (String[])bodyIN; + + List results = new ArrayList(); + + int i = 1; + for (ProgramParameter pgmParam : pgmCall.getParameterList()) { + byte[] output = pgmParam.getOutputData(); + + String value = params[i - 1]; + + if (output != null) { + int length = pgmParam.getOutputDataLength(); + length = pgmParam.getOutputDataLength(); + + AS400Text text = new AS400Text(length); + value = (String)text.toObject(output); + } + + results.add(value); + i++; + } + + String[] bodyOUT = new String[results.size()]; + bodyOUT = results.toArray(bodyOUT); + + exchange.getOut().setBody(bodyOUT); + } + + private void handleMessages(ProgramCall pgmCall) throws Exception { + // 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()); + } + } + } +} Propchange: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400PgmProducer.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400ComponentTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400ComponentTest.java?rev=1076099&r1=1076098&r2=1076099&view=diff ============================================================================== --- camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400ComponentTest.java (original) +++ camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400ComponentTest.java Wed Mar 2 03:49:50 2011 @@ -38,10 +38,10 @@ public class Jt400ComponentTest extends } /** - * Test creation of a {@link Jt400DataQueueEndpoint} + * Test creation of a {@link Jt400DataQueueEndpoint} for Datq */ @Test - public void testCreateEndpoint() throws Exception { + public void testCreateDatqEndpoint() throws Exception { Endpoint endpoint = component .createEndpoint("jt400://user:password@host/qsys.lib/library.lib/queue.dtaq", "/user:password@host/qsys.lib/library.lib/queue.dtaq", new HashMap()); @@ -50,13 +50,25 @@ public class Jt400ComponentTest extends } /** + * Test creation of a {@link Jt400DataQueueEndpoint} for pgm calls + */ + @Test + public void testCreatePgmEndpoint() throws Exception { + Endpoint endpoint = component + .createEndpoint("jt400://user:password@host/qsys.lib/library.lib/queue.pgm", + "/user:password@host/qsys.lib/library.lib/queue.pgm", new HashMap()); + assertNotNull(endpoint); + assertTrue(endpoint instanceof Jt400PgmEndpoint); + } + + /** * Test exception when trying to access any other object type on AS/400 */ @Test public void testCreateEndpointForOtherObjectType() throws Exception { try { - component.createEndpoint("jt400://user:password@host/qsys.lib/library.lib/program.pgm", - "/user:password@host/qsys.lib/library.lib/program.pgm", new HashMap()); + component.createEndpoint("jt400://user:password@host/qsys.lib/library.lib/program.xxx", + "/user:password@host/qsys.lib/library.lib/program.xxx", new HashMap()); fail("Exception should been thrown when trying to create an endpoint for an unsupported object type"); } catch (CamelException e) { // this is just what we expected Added: camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmEndpointTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmEndpointTest.java?rev=1076099&view=auto ============================================================================== --- camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmEndpointTest.java (added) +++ camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmEndpointTest.java Wed Mar 2 03:49:50 2011 @@ -0,0 +1,58 @@ +/** + * 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.test.junit4.CamelTestSupport; +import org.junit.Before; +import org.junit.Test; + +/** + * Test case for {@link Jt400DataQueueEndpoint} + */ +public class Jt400PgmEndpointTest extends CamelTestSupport { + + private static final String USER = "USER"; + private static final String HOST = "host"; + private static final String PASSWORD = "password"; + private static final String PGM = "/qsys.lib/library.lib/prog.pgm"; + + private Jt400PgmEndpoint endpoint; + + @Override + @Before + public void setUp() throws Exception { + super.setUp(); + endpoint = (Jt400PgmEndpoint)resolveMandatoryEndpoint("jt400://" + USER + ":" + PASSWORD + + "@" + HOST + PGM + "?outputFieldsIdx=1,2&fieldsLength=10,512,255"); + } + + /** + * Check that the AS/400 connection is correctly configured for the URL + */ + @Test + public void testSystemConfiguration() { + assertEquals(USER, endpoint.getiSeries().getUserId()); + assertEquals(HOST, endpoint.getiSeries().getSystemName()); + assertEquals(PGM, endpoint.getProgramToExecute()); + assertEquals(10, endpoint.getOutputFieldLength(0)); + assertEquals(512, endpoint.getOutputFieldLength(1)); + assertEquals(255, endpoint.getOutputFieldLength(2)); + assertEquals(false, endpoint.isFieldIdxForOuput(0)); + assertEquals(true, endpoint.isFieldIdxForOuput(1)); + assertEquals(true, endpoint.isFieldIdxForOuput(2)); + } +} Propchange: camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmEndpointTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmEndpointTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmRouteTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmRouteTest.java?rev=1076099&view=auto ============================================================================== --- camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmRouteTest.java (added) +++ camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmRouteTest.java Wed Mar 2 03:49:50 2011 @@ -0,0 +1,91 @@ +/** + * 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 java.util.Arrays; + +import org.apache.camel.Exchange; +import org.apache.camel.builder.ExpressionClause; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.junit.Test; + +/** + * Test case for routes that contain jt400: endpoints This test + * case does nothing by default -- you can use it to test integration when there + * is a real AS/400 system available by filling in correct values for + * {@link #USER}, {@link #PASSWORD}, {@link #SYSTEM}, {@link #LIBRARY} and + * {@link #QUEUE} + */ +public class Jt400PgmRouteTest extends CamelTestSupport { + + // fill in correct values for all constants to test with a real AS/400 + // system + private static final String USER = "grupo"; + private static final String PASSWORD = "atwork"; + private static final String SYSTEM = null; + private static final String LIBRARY = "library"; + private static final String PGM = "program"; + private static final String FIELDS_LENGTH = "1,512,2"; + private static final String OUTPUT_FIELDS = "1,2"; + + @Test + public void testBasicTest() throws Exception { + if (SYSTEM != null) { + final MockEndpoint endpoint = getMockEndpoint("mock:a"); + endpoint.setExpectedMessageCount(1); + Runnable runnable = new Runnable() { + + public void run() { + Exchange exchange = endpoint.getReceivedExchanges().get(0); + char[] secondParameter = new char[512]; + Arrays.fill(secondParameter, ' '); + String[] expectedBody = new String[] {"1234", new String(secondParameter), "01"}; + Object actualBody = exchange.getIn().getBody(); + + assertNotNull(actualBody); + assertTrue(actualBody.getClass().isArray()); + + String[] actualBodyTyped = (String[])actualBody; + for (int i = 0; i < expectedBody.length; i++) { + assertEquals(expectedBody[i], actualBodyTyped[i]); + } + } + }; + endpoint.expects(runnable); + sendBody("direct:a", new String[] {"1234", "", ""}); + endpoint.assertIsSatisfied(); + } + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + + @Override + public void configure() throws Exception { + if (SYSTEM != null) { + String uri = String + .format("jt400://%s:%s@%s/QSYS.LIB/%s.LIB/%s.pgm?outputFieldsIdx=%s&fieldsLength=%s", + USER, PASSWORD, SYSTEM, LIBRARY, PGM, OUTPUT_FIELDS, FIELDS_LENGTH); + from("direct:a").to(uri).to("mock:a"); + } + } + }; + } +} Propchange: camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmRouteTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-jt400/src/test/java/org/apache/camel/component/jt400/Jt400PgmRouteTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date