Author: dandiep
Date: Mon Aug 27 15:21:44 2007
New Revision: 570262
URL: http://svn.apache.org/viewvc?rev=570262&view=rev
Log:
Add support for <schemaLocations> in XML config.
Added:
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java
(with props)
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java
(with props)
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
(with props)
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/Messages.properties
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
Modified:
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java
(original)
+++
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java
Mon Aug 27 15:21:44 2007
@@ -123,9 +123,10 @@
public BindingOperationInfo getOperation(OperationInfo oi) {
for (BindingOperationInfo b : operations.values()) {
- if (b.getOperationInfo() == oi
- || (b.isUnwrappedCapable() &&
b.getUnwrappedOperation().getOperationInfo() == oi)) {
+ if (b.getOperationInfo() == oi) {
return b;
+ } else if (b.isUnwrappedCapable() &&
b.getUnwrappedOperation().getOperationInfo() == oi) {
+ return b.getUnwrappedOperation();
}
}
Added:
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java?rev=570262&view=auto
==============================================================================
---
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java
(added)
+++
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java
Mon Aug 27 15:21:44 2007
@@ -0,0 +1,39 @@
+/**
+ * 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.configuration.spring;
+
+import org.w3c.dom.Element;
+
+import org.apache.cxf.helpers.DOMUtils;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import
org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
+
+public class StringBeanDefinitionParser extends
AbstractSingleBeanDefinitionParser {
+
+ @Override
+ protected void doParse(Element element, BeanDefinitionBuilder builder) {
+ builder.addConstructorArg(DOMUtils.getContent(element));
+ }
+
+ @Override
+ protected Class getBeanClass(Element arg0) {
+ return String.class;
+ }
+
+}
Propchange:
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:executable = *
Propchange:
incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/StringBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java
(original)
+++
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/EndpointImpl.java
Mon Aug 27 15:21:44 2007
@@ -77,6 +77,7 @@
private QName serviceName;
private Class implementorClass;
+ private List<String> schemaLocations;
private List<AbstractFeature> features;
private List<Interceptor> in = new
ModCountCopyOnWriteArrayList<Interceptor>();
private List<Interceptor> out = new
ModCountCopyOnWriteArrayList<Interceptor>();
@@ -261,6 +262,7 @@
serverFactory.setBus(bus);
serverFactory.setFeatures(features);
serverFactory.setInvoker(invoker);
+ serverFactory.setSchemaLocations(schemaLocations);
// Be careful not to override any serverfactory settings as a user
might
// have supplied their own.
@@ -438,6 +440,14 @@
public BindingConfiguration getBindingConfig() {
return serverFactory.getBindingConfig();
+ }
+
+ public List<String> getSchemaLocations() {
+ return schemaLocations;
+ }
+
+ public void setSchemaLocations(List<String> schemaLocations) {
+ this.schemaLocations = schemaLocations;
}
/*
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java
(original)
+++
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/EndpointDefinitionParser.java
Mon Aug 27 15:21:44 2007
@@ -102,7 +102,7 @@
setFirstChildAsProperty((Element) n, ctx, bean,
"bindingConfig");
} else if ("inInterceptors".equals(name) ||
"inFaultInterceptors".equals(name)
|| "outInterceptors".equals(name) ||
"outFaultInterceptors".equals(name)
- || "features".equals(name)) {
+ || "features".equals(name) ||
"schemaLocations".equals(name)) {
List list = ctx.getDelegate().parseListElement((Element)
n, bean.getBeanDefinition());
bean.addPropertyValue(name, list);
} else if (IMPLEMENTOR.equals(name)) {
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java
(original)
+++
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spring/NamespaceHandler.java
Mon Aug 27 15:21:44 2007
@@ -18,6 +18,7 @@
*/
package org.apache.cxf.jaxws.spring;
+import org.apache.cxf.configuration.spring.StringBeanDefinitionParser;
import org.apache.cxf.frontend.spring.ServerFactoryBeanDefinitionParser;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
@@ -26,6 +27,7 @@
public void init() {
registerBeanDefinitionParser("client", new
JaxWsProxyFactoryBeanDefinitionParser());
registerBeanDefinitionParser("endpoint", new
EndpointDefinitionParser());
+ registerBeanDefinitionParser("schemaLocation", new
StringBeanDefinitionParser());
ServerFactoryBeanDefinitionParser parser = new
ServerFactoryBeanDefinitionParser();
parser.setBeanClass(JaxWsServerFactoryBean.class);
Added:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java?rev=570262&view=auto
==============================================================================
---
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java
(added)
+++
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java
Mon Aug 27 15:21:44 2007
@@ -0,0 +1,61 @@
+/**
+ * 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.jaxws;
+
+import org.w3c.dom.Document;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusException;
+import org.junit.Test;
+
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SchemaFirstXmlConfigTest extends AbstractJaxWsTest {
+
+
+ private ClassPathXmlApplicationContext ctx;
+
+ @Override
+ protected Bus createBus() throws BusException {
+
+ ctx = new ClassPathXmlApplicationContext(new String[] {
+ "classpath:org/apache/cxf/jaxws/schemaFirst.xml"});
+
+ return (Bus) ctx.getBean("cxf");
+ }
+
+ @Test
+ public void testEndpoint() throws Exception {
+
+ JaxWsServerFactoryBean serverFB = (JaxWsServerFactoryBean)
ctx.getBean("helloServer");
+
+ Document d = getWSDLDocument(serverFB.getServer());
+
+ // XmlSchema still isn't preserving all the extra info...
+ assertValid("//xsd:[EMAIL PROTECTED]'foo']/xsd:sequence", d);
+
+ EndpointImpl ep = (EndpointImpl) ctx.getBean("helloEndpoint");
+
+ d = getWSDLDocument(ep.getServer());
+
+ // XmlSchema still isn't preserving all the extra info...
+ assertValid("//xsd:[EMAIL PROTECTED]'foo']/xsd:sequence", d);
+ }
+}
Propchange:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java
------------------------------------------------------------------------------
svn:executable = *
Propchange:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/SchemaFirstXmlConfigTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml?rev=570262&view=auto
==============================================================================
---
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
(added)
+++
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
Mon Aug 27 15:21:44 2007
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:foo="http://cxf.apache.org/configuration/foo"
+ xmlns:jaxws="http://cxf.apache.org/jaxws"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
+http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
+ <import resource="classpath:META-INF/cxf/cxf.xml"/>
+ <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
+
+ <bean class="org.apache.cxf.transport.local.LocalTransportFactory"
lazy-init="false">
+ <property name="transportIds">
+ <list>
+ <value>http://cxf.apache.org/transports/local</value>
+ <value>http://schemas.xmlsoap.org/soap/http</value>
+ <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
+ </list>
+ </property>
+ </bean>
+
+ <jaxws:endpoint id="helloEndpoint"
+ implementor="org.apache.cxf.jaxws.service.EchoFoo"
+ address="http://localhost:9000/hello">
+ <jaxws:schemaLocations>
+
<jaxws:schemaLocation>/org/apache/cxf/jaxws/service/echoFoo.xsd</jaxws:schemaLocation>
+ </jaxws:schemaLocations>
+ </jaxws:endpoint>
+
+
+ <jaxws:server id="helloServer"
+ serviceClass="org.apache.cxf.jaxws.service.EchoFoo"
+ address="http://localhost:9000/helloServer">
+ <jaxws:schemaLocations>
+
<jaxws:schemaLocation>/org/apache/cxf/jaxws/service/echoFoo.xsd</jaxws:schemaLocation>
+ </jaxws:schemaLocations>
+ </jaxws:server>
+</beans>
\ No newline at end of file
Propchange:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/schemaFirst.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified:
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/Messages.properties
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/Messages.properties?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/Messages.properties
(original)
+++
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/Messages.properties
Mon Aug 27 15:21:44 2007
@@ -18,4 +18,5 @@
# under the License.
#
#
-COULD.NOT.RESOLVE.BINDING=Could not resolve a binding for {0}
\ No newline at end of file
+COULD.NOT.RESOLVE.BINDING=Could not resolve a binding for {0}
+ERROR_READING_SCHEMA=There was an error reading the schema {0}.
\ No newline at end of file
Modified:
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
(original)
+++
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
Mon Aug 27 15:21:44 2007
@@ -168,7 +168,8 @@
try {
d = DOMUtils.readXml(url.openStream());
} catch (Exception e) {
- throw new ServiceConstructionException(e);
+ throw new ServiceConstructionException(
+ new Message("ERROR_READING_SCHEMA", LOG, l), e);
}
schemas.add(new DOMSource(d, url.toString()));
}
Modified:
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
(original)
+++
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/NamespaceHandler.java
Mon Aug 27 15:21:44 2007
@@ -18,11 +18,13 @@
*/
package org.apache.cxf.frontend.spring;
+import org.apache.cxf.configuration.spring.StringBeanDefinitionParser;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
public class NamespaceHandler extends NamespaceHandlerSupport {
public void init() {
registerBeanDefinitionParser("client", new
ClientProxyFactoryBeanDefinitionParser());
- registerBeanDefinitionParser("server", new
ServerFactoryBeanDefinitionParser());
+ registerBeanDefinitionParser("server", new
ServerFactoryBeanDefinitionParser());
+ registerBeanDefinitionParser("schemaLocation", new
StringBeanDefinitionParser());
}
}
Modified:
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java?rev=570262&r1=570261&r2=570262&view=diff
==============================================================================
---
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
(original)
+++
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/spring/ServerFactoryBeanDefinitionParser.java
Mon Aug 27 15:21:44 2007
@@ -54,7 +54,7 @@
setFirstChildAsProperty(el, ctx, bean, "bindingConfig");
} else if ("inInterceptors".equals(name) ||
"inFaultInterceptors".equals(name)
|| "outInterceptors".equals(name) ||
"outFaultInterceptors".equals(name)
- || "features".equals(name)) {
+ || "features".equals(name) || "schemaLocations".equals(name)) {
List list = ctx.getDelegate().parseListElement(el,
bean.getBeanDefinition());
bean.addPropertyValue(name, list);
} else {