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 2012/11/12 15:25:48 UTC
svn commit: r1408301 - in /camel/trunk/components/camel-xmlrpc/src:
main/java/org/apache/camel/component/xmlrpc/
main/java/org/apache/camel/component/xmlrpc/converter/
main/resources/META-INF/services/org/apache/camel/
test/java/org/apache/camel/compon...
Author: ningjiang
Date: Mon Nov 12 14:25:47 2012
New Revision: 1408301
URL: http://svn.apache.org/viewvc?rev=1408301&view=rev
Log:
CAMEL-5776 Added XmlRpcRequestConverter
Added:
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcRequestImpl.java
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/converter/
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverter.java
camel/trunk/components/camel-xmlrpc/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/converter/
camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverterTest.java
Modified:
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcConstants.java
Modified: camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcConstants.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcConstants.java?rev=1408301&r1=1408300&r2=1408301&view=diff
==============================================================================
--- camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcConstants.java (original)
+++ camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcConstants.java Mon Nov 12 14:25:47 2012
@@ -18,6 +18,9 @@ package org.apache.camel.component.xmlrp
public final class XmlRpcConstants {
public static final String OPERATION_NAME = "CamelXmlRpcOperationName";
+ public static final String ERROR_CODE = "CamelXmlRpcErrorCode";
+ public static final String ERROR_MESSAGE = "CamelXmlRpcErrorMessage";
+
private XmlRpcConstants() {
//Utils class
}
Added: camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcRequestImpl.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcRequestImpl.java?rev=1408301&view=auto
==============================================================================
--- camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcRequestImpl.java (added)
+++ camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcRequestImpl.java Mon Nov 12 14:25:47 2012
@@ -0,0 +1,59 @@
+/**
+ * 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.xmlrpc;
+
+import java.util.List;
+
+import org.apache.xmlrpc.XmlRpcRequest;
+import org.apache.xmlrpc.XmlRpcRequestConfig;
+
+public class XmlRpcRequestImpl implements XmlRpcRequest {
+ private static final Object[] ZERO_PARAMS = new Object[0];
+ private final String methodName;
+ private final Object[] params;
+
+ public XmlRpcRequestImpl(String pMethodName, Object[] pParams) {
+ methodName = pMethodName;
+ if (methodName == null) {
+ throw new NullPointerException("The method name must not be null.");
+ }
+ params = pParams == null ? ZERO_PARAMS : pParams;
+ }
+
+ public XmlRpcRequestImpl(String pMethodName, List<?> pParams) {
+ this(pMethodName, pParams == null ? null : pParams.toArray());
+ }
+
+ // we don't want to use the config here
+ public XmlRpcRequestConfig getConfig() {
+ return null;
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public int getParameterCount() {
+ return params.length;
+ }
+
+ public Object getParameter(int pIndex) {
+ return params[pIndex];
+ }
+
+
+}
Added: camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverter.java?rev=1408301&view=auto
==============================================================================
--- camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverter.java (added)
+++ camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverter.java Mon Nov 12 14:25:47 2012
@@ -0,0 +1,56 @@
+/**
+ * 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.xmlrpc.converter;
+
+import java.util.List;
+
+import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.component.xmlrpc.XmlRpcConstants;
+import org.apache.camel.component.xmlrpc.XmlRpcRequestImpl;
+import org.apache.xmlrpc.XmlRpcRequest;
+
+@Converter
+public final class XmlRpcConverter {
+
+ private XmlRpcConverter() {
+ //Helper class
+ }
+
+ @Converter
+ public static XmlRpcRequest toXmlRpcRequest(final Object[] parameters, Exchange exchange) {
+ // get the message operation name
+ String operationName = exchange.getIn().getHeader(XmlRpcConstants.OPERATION_NAME, String.class);
+
+ // create the request object here
+ XmlRpcRequest request = new XmlRpcRequestImpl(operationName, parameters);
+
+ return request;
+ }
+
+ @Converter
+ public static XmlRpcRequest toXmlRpcRequest(final List<?> parameters, Exchange exchange) {
+ // get the message operation name
+ String operationName = exchange.getIn().getHeader(XmlRpcConstants.OPERATION_NAME, String.class);
+
+ // create the request object here
+ XmlRpcRequest request = new XmlRpcRequestImpl(operationName, parameters);
+
+ return request;
+ }
+
+}
Added: camel/trunk/components/camel-xmlrpc/src/main/resources/META-INF/services/org/apache/camel/TypeConverter
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmlrpc/src/main/resources/META-INF/services/org/apache/camel/TypeConverter?rev=1408301&view=auto
==============================================================================
--- camel/trunk/components/camel-xmlrpc/src/main/resources/META-INF/services/org/apache/camel/TypeConverter (added)
+++ camel/trunk/components/camel-xmlrpc/src/main/resources/META-INF/services/org/apache/camel/TypeConverter Mon Nov 12 14:25:47 2012
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+org.apache.camel.component.xmlrpc.converter.XmlRpcConverter
Added: camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverterTest.java?rev=1408301&view=auto
==============================================================================
--- camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverterTest.java (added)
+++ camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/converter/XmlRpcConverterTest.java Mon Nov 12 14:25:47 2012
@@ -0,0 +1,56 @@
+/**
+ * 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.xmlrpc.converter;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.TypeConversionException;
+import org.apache.camel.component.xmlrpc.XmlRpcConstants;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.apache.xmlrpc.XmlRpcRequest;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class XmlRpcConverterTest extends Assert {
+
+ @Test
+ public void testToXmlRpcRequest() throws Exception {
+ CamelContext context = new DefaultCamelContext();
+ Exchange exchange = new DefaultExchange(context);
+ exchange.getIn().setHeader(XmlRpcConstants.OPERATION_NAME, "greet");
+ exchange.getIn().setBody(new Object[] {"me", "you"});
+ XmlRpcRequest request = exchange.getIn().getBody(XmlRpcRequest.class);
+
+ assertNotNull("The request should not be null", request);
+ assertEquals("Get a wrong operation name", "greet", request.getMethodName());
+ assertEquals("Get a wrong parameter size", 2, request.getParameterCount());
+ assertEquals("Get a worng parameter", "you", request.getParameter(1));
+ }
+
+ @Test(expected = TypeConversionException.class)
+ public void testToXmlRpcRequestWithoutOperationName() throws Exception {
+ CamelContext context = new DefaultCamelContext();
+ Exchange exchange = new DefaultExchange(context);
+
+ exchange.getIn().setBody(new Object[] {"me", "you"});
+ exchange.getIn().getBody(XmlRpcRequest.class);
+ fail("Expect the exception is throw");
+
+ }
+
+}