You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2007/06/21 03:50:27 UTC
svn commit: r549323 - in /incubator/cxf/trunk/rt/bindings/http/src:
main/java/org/apache/cxf/binding/http/
test/java/org/apache/cxf/binding/http/bare/
Author: dandiep
Date: Wed Jun 20 18:50:26 2007
New Revision: 549323
URL: http://svn.apache.org/viewvc?view=rev&rev=549323
Log:
Add more tests and better error reporting for the HTTP Binding.
Added:
incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties (with props)
incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java (with props)
incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java (with props)
incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java (with props)
Modified:
incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/IriDecoderHelper.java
incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java
incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/index.jaxb
Modified: incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/IriDecoderHelper.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/IriDecoderHelper.java?view=diff&rev=549323&r1=549322&r2=549323
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/IriDecoderHelper.java (original)
+++ incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/IriDecoderHelper.java Wed Jun 20 18:50:26 2007
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.ResourceBundle;
import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
@@ -33,19 +34,25 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import org.apache.cxf.common.i18n.BundleUtils;
+import org.apache.cxf.common.i18n.Message;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.service.model.SchemaInfo;
import org.apache.ws.commons.schema.XmlSchemaAnnotated;
import org.apache.ws.commons.schema.XmlSchemaComplexType;
import org.apache.ws.commons.schema.XmlSchemaElement;
import org.apache.ws.commons.schema.XmlSchemaSequence;
+import org.apache.ws.commons.schema.XmlSchemaSimpleType;
import org.apache.ws.commons.schema.XmlSchemaType;
+
/**
* @author <a href=""mailto:gnodet [at] gmail.com">Guillaume Nodet</a>
*/
public final class IriDecoderHelper {
+ private static final ResourceBundle BUNDLE = BundleUtils.getBundle(IriDecoderHelper.class);
private IriDecoderHelper() {
@@ -202,11 +209,13 @@
if (cplxType == null) {
cplxType = (XmlSchemaComplexType)findSchemaType(schemas, element.getSchemaTypeName());
}
- }
- if (schemaAnnotation instanceof XmlSchemaComplexType) {
+ } else if (schemaAnnotation instanceof XmlSchemaComplexType) {
cplxType = (XmlSchemaComplexType)schemaAnnotation;
qname = cplxType.getQName();
+ } else if (schemaAnnotation instanceof XmlSchemaSimpleType) {
+ throw new Fault(new Message("SIMPLE_TYPE", BUNDLE));
}
+
Document doc = DOMUtils.createDocument();
Added: incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties?view=auto&rev=549323
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties (added)
+++ incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties Wed Jun 20 18:50:26 2007
@@ -0,0 +1,21 @@
+#
+#
+# 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.
+#
+#
+SIMPLE_TYPE = You can not map a URI parameter to a simple type when in unwrapped mode!
\ No newline at end of file
Propchange: incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/Messages.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java?view=diff&rev=549323&r1=549322&r2=549323
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java (original)
+++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java Wed Jun 20 18:50:26 2007
@@ -31,6 +31,7 @@
import org.apache.cxf.binding.http.URIMapper;
import org.apache.cxf.customer.bare.CustomerService;
import org.apache.cxf.endpoint.ServerImpl;
+import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.junit.Test;
@@ -147,6 +148,64 @@
c.setRequestMethod("GET");
assertEquals("text/plain", c.getContentType());
+
+ svr.stop();
+ }
+
+ @Test
+ public void testGetOnBadUnwrappedParam() throws Exception {
+ BindingFactoryManager bfm = getBus().getExtension(BindingFactoryManager.class);
+ HttpBindingFactory factory = new HttpBindingFactory();
+ factory.setBus(getBus());
+ bfm.registerBindingFactory(HttpBindingFactory.HTTP_BINDING_ID, factory);
+
+ JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean();
+ sf.setBus(getBus());
+ sf.setBindingId(HttpBindingFactory.HTTP_BINDING_ID);
+ sf.setServiceBean(new TestService());
+ sf.getServiceFactory().setWrapped(false);
+ sf.setAddress("http://localhost:9001/test/");
+
+ ServerImpl svr = (ServerImpl) sf.create();
+
+ URL url = new URL("http://localhost:9001/test/topics/123");
+ HttpURLConnection c = (HttpURLConnection)url.openConnection();
+ c.setRequestMethod("GET");
+
+ assertEquals("text/xml", c.getContentType());
+
+ Document doc = DOMUtils.readXml(c.getErrorStream());
+ assertValid("//*[text()='You can not map a URI parameter to a "
+ + "simple type when in unwrapped mode!']", doc);
+
+ svr.stop();
+ }
+
+ @Test
+ public void testQueryParam() throws Exception {
+ BindingFactoryManager bfm = getBus().getExtension(BindingFactoryManager.class);
+ HttpBindingFactory factory = new HttpBindingFactory();
+ factory.setBus(getBus());
+ bfm.registerBindingFactory(HttpBindingFactory.HTTP_BINDING_ID, factory);
+
+ JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean();
+ sf.setBus(getBus());
+ sf.setBindingId(HttpBindingFactory.HTTP_BINDING_ID);
+ sf.setServiceBean(new TestService());
+ sf.getServiceFactory().setWrapped(false);
+ sf.setAddress("http://localhost:9001/test/");
+
+ ServerImpl svr = (ServerImpl) sf.create();
+
+ URL url = new URL("http://localhost:9001/test/rest/foo");
+ HttpURLConnection c = (HttpURLConnection)url.openConnection();
+ c.setRequestMethod("GET");
+
+ assertEquals("text/xml", c.getContentType());
+
+ Document doc = DOMUtils.readXml(c.getInputStream());
+ addNamespace("b", "http://bare.http.binding.cxf.apache.org/");
+ assertValid("//b:getDataResponse", doc);
svr.stop();
}
Added: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java?view=auto&rev=549323
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java (added)
+++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java Wed Jun 20 18:50:26 2007
@@ -0,0 +1,35 @@
+/**
+ * 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.cxf.binding.http.bare;
+
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType
+public class GetData {
+ private String xPathQuery;
+
+ public String getXPathQuery() {
+ return xPathQuery;
+ }
+
+ public void setXPathQuery(String pathQuery) {
+ xPathQuery = pathQuery;
+ }
+}
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetData.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java?view=auto&rev=549323
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java (added)
+++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java Wed Jun 20 18:50:26 2007
@@ -0,0 +1,24 @@
+/**
+ * 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.cxf.binding.http.bare;
+
+public class GetDataResponse {
+
+}
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/GetDataResponse.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java?view=auto&rev=549323
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java (added)
+++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java Wed Jun 20 18:50:26 2007
@@ -0,0 +1,41 @@
+/**
+ * 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.cxf.binding.http.bare;
+
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+import org.codehaus.jra.Get;
+import org.codehaus.jra.HttpResource;
+
+@WebService
+public class TestService {
+
+ @Get
+ @HttpResource(location = "/topics/{id}")
+ public String getTopics(@WebParam(name = "id") long id) {
+ return "";
+ }
+
+ @Get
+ @HttpResource(location = "/rest/{xPathQuery}")
+ public GetDataResponse getData(@WebParam(name = "GetData") GetData query) {
+ return new GetDataResponse();
+ }
+}
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/TestService.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/index.jaxb
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/index.jaxb?view=diff&rev=549323&r1=549322&r2=549323
==============================================================================
--- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/index.jaxb (original)
+++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/index.jaxb Wed Jun 20 18:50:26 2007
@@ -1 +1,2 @@
-Customer
\ No newline at end of file
+GetDataResponse
+GetData
\ No newline at end of file