From cxf-commits-return-3635-apmail-incubator-cxf-commits-archive=incubator.apache.org@incubator.apache.org Thu Nov 08 18:31:16 2007 Return-Path: Delivered-To: apmail-incubator-cxf-commits-archive@locus.apache.org Received: (qmail 21488 invoked from network); 8 Nov 2007 18:31:16 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 8 Nov 2007 18:31:16 -0000 Received: (qmail 50819 invoked by uid 500); 8 Nov 2007 18:31:03 -0000 Delivered-To: apmail-incubator-cxf-commits-archive@incubator.apache.org Received: (qmail 50769 invoked by uid 500); 8 Nov 2007 18:31:03 -0000 Mailing-List: contact cxf-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cxf-dev@incubator.apache.org Delivered-To: mailing list cxf-commits@incubator.apache.org Received: (qmail 50760 invoked by uid 99); 8 Nov 2007 18:31:03 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Nov 2007 10:31:03 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Nov 2007 18:31:03 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 05A821A9832; Thu, 8 Nov 2007 10:30:43 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r593243 - in /incubator/cxf/trunk: common/common/src/main/java/org/apache/cxf/staxutils/ parent/ rt/ rt/databinding/xmlbeans/ rt/databinding/xmlbeans/src/ rt/databinding/xmlbeans/src/main/ rt/databinding/xmlbeans/src/main/java/ rt/databindi... Date: Thu, 08 Nov 2007 18:30:40 -0000 To: cxf-commits@incubator.apache.org From: dkulp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071108183043.05A821A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dkulp Date: Thu Nov 8 10:30:36 2007 New Revision: 593243 URL: http://svn.apache.org/viewvc?rev=593243&view=rev Log: Start of xmlbeans databinding (doesn't handle much yet) Fix some issues with not generating imports into schemas Added: incubator/cxf/trunk/rt/databinding/xmlbeans/ (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansDataBinding.java (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/AbstractXmlBeansTest.java (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/BasicTest.java (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/TestService.java (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml (with props) incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd (with props) Modified: incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java incubator/cxf/trunk/parent/pom.xml incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java incubator/cxf/trunk/rt/pom.xml Modified: incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java?rev=593243&r1=593242&r2=593243&view=diff ============================================================================== --- incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java (original) +++ incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java Thu Nov 8 10:30:36 2007 @@ -254,6 +254,10 @@ * @throws XMLStreamException */ public static void copy(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException { + copy(reader, writer, false); + } + public static void copy(XMLStreamReader reader, XMLStreamWriter writer, + boolean fragment) throws XMLStreamException { // number of elements read in int read = 0; int event = reader.getEventType(); @@ -267,7 +271,7 @@ case XMLStreamConstants.END_ELEMENT: writer.writeEndElement(); read--; - if (read <= 0) { + if (read <= 0 && !fragment) { return; } break; Modified: incubator/cxf/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/parent/pom.xml?rev=593243&r1=593242&r2=593243&view=diff ============================================================================== --- incubator/cxf/trunk/parent/pom.xml (original) +++ incubator/cxf/trunk/parent/pom.xml Thu Nov 8 10:30:36 2007 @@ -46,7 +46,7 @@ 2.1 2.1.4 2.1.4 - 2.1 + 2.1-1 6.1.5 1.3 1.3 Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/ ------------------------------------------------------------------------------ --- svn:ignore (added) +++ svn:ignore Thu Nov 8 10:30:36 2007 @@ -0,0 +1,10 @@ +.pmd +.checkstyle +.ruleset +target +.settings +.classpath +.project +.wtpmodules + + Added: incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml Thu Nov 8 10:30:36 2007 @@ -0,0 +1,155 @@ + + + 4.0.0 + cxf-rt-databinding-xmlbeans + jar + Apache CXF Runtime XmlBeans DataBinding + http://cwiki.apache.org/CXF + + + org.apache.cxf + cxf-parent + 2.1-incubator-SNAPSHOT + ../../../parent/pom.xml + + + + + + junit + junit + test + + + + org.easymock + easymockclassextension + test + + + + org.apache.cxf + cxf-api + ${project.version} + + + + org.apache.cxf + cxf-rt-core + ${project.version} + + + + org.apache.cxf + cxf-tools-common + ${project.version} + + + + + org.apache.cxf + cxf-testutils + ${project.version} + test + + + + org.apache.xmlbeans + xmlbeans + 2.3.0 + + + stax + stax-api + + + + + + org.apache.geronimo.specs + geronimo-stax-api_1.0_spec + 1.0 + + + org.codehaus.woodstox + wstx-asl + + + + + + + + org.apache.cxf + cxf-rt-transports-local + ${project.version} + test + + + org.apache.cxf + cxf-rt-transports-http + ${project.version} + test + + + org.apache.cxf + cxf-rt-transports-http-jetty + ${project.version} + test + + + org.apache.cxf + cxf-rt-frontend-jaxws + ${project.version} + test + + + org.apache.cxf + cxf-rt-testsupport + ${project.version} + test + + + + + + + + + org.codehaus.mojo + xmlbeans-maven-plugin + + + + xmlbeans-test + + + + + src/test/xsd + ${project.build.directory}/generated/src/test/java + ${project.build.directory}/generated/src/test/resources + + 1.5 + + + + + Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/pom.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java Thu Nov 8 10:30:36 2007 @@ -0,0 +1,80 @@ +/** + * 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.xmlbeans; + +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamReader; +import javax.xml.validation.Schema; + +import org.apache.cxf.common.i18n.Message; +import org.apache.cxf.common.logging.LogUtils; +import org.apache.cxf.databinding.DataReader; +import org.apache.cxf.interceptor.Fault; +import org.apache.cxf.message.Attachment; +import org.apache.cxf.service.model.MessagePartInfo; +import org.apache.xmlbeans.XmlOptions; + + +public class DataReaderImpl implements DataReader { + private static final Logger LOG = LogUtils.getLogger(XmlBeansDataBinding.class); + + public DataReaderImpl() { + } + + public Object read(XMLStreamReader input) { + return read(null, input); + } + + public Object read(MessagePartInfo part, XMLStreamReader reader) { + Class cls[] = part.getTypeClass().getDeclaredClasses(); + for (Class c : cls) { + if ("Factory".equals(c.getSimpleName())) { + try { + XmlOptions options = new XmlOptions(); + options.setLoadReplaceDocumentElement(null); + Method meth = c.getMethod("parse", XMLStreamReader.class, XmlOptions.class); + return meth.invoke(null, reader, options); + } catch (Exception e) { + throw new Fault(new Message("UNMARSHAL_ERROR", LOG, part.getTypeClass()), e); + } + } + } + return null; + } + + public Object read(QName name, XMLStreamReader input, Class type) { + return null; + } + + + public void setAttachments(Collection attachments) { + } + + public void setProperty(String prop, Object value) { + } + + public void setSchema(Schema s) { + } + +} Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataReaderImpl.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java Thu Nov 8 10:30:36 2007 @@ -0,0 +1,95 @@ +/** + * 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.xmlbeans; + + +import java.util.Collection; +import java.util.logging.Logger; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; +import javax.xml.validation.Schema; + +import org.apache.cxf.common.i18n.Message; +import org.apache.cxf.common.logging.LogUtils; +import org.apache.cxf.databinding.DataWriter; +import org.apache.cxf.interceptor.Fault; +import org.apache.cxf.message.Attachment; +import org.apache.cxf.service.model.MessagePartInfo; +import org.apache.cxf.staxutils.StaxUtils; +import org.apache.ws.commons.schema.XmlSchemaElement; +import org.apache.xmlbeans.XmlOptions; +import org.apache.xmlbeans.XmlTokenSource; + +public class DataWriterImpl implements DataWriter { + private static final Logger LOG = LogUtils.getLogger(XmlBeansDataBinding.class); + + public DataWriterImpl() { + } + + public void write(Object obj, XMLStreamWriter output) { + write(obj, null, output); + } + + public void write(Object obj, MessagePartInfo part, XMLStreamWriter output) { + try { + if (obj != null + || !(part.getXmlSchema() instanceof XmlSchemaElement)) { + XmlTokenSource source = (XmlTokenSource)obj; + XmlOptions options = new XmlOptions(); + XMLStreamReader reader = source.newCursor().newXMLStreamReader(options); + output.writeStartElement(part.getConcreteName().getNamespaceURI(), + part.getConcreteName().getLocalPart()); + StaxUtils.copy(reader, output, true); + output.writeEndElement(); + } else if (obj == null && needToRender(obj, part)) { + output.writeStartElement(part.getConcreteName().getNamespaceURI(), + part.getConcreteName().getLocalPart()); + output.writeEndElement(); + } + } catch (XMLStreamException e) { + throw new Fault(new Message("MARSHAL_ERROR", LOG, obj), e); + } + } + + private boolean needToRender(Object obj, MessagePartInfo part) { + if (part != null && part.getXmlSchema() instanceof XmlSchemaElement) { + XmlSchemaElement element = (XmlSchemaElement)part.getXmlSchema(); + return element.isNillable() && element.getMinOccurs() > 0; + } + return false; + } + + public void setAttachments(Collection attachments) { + // TODO Auto-generated method stub + + } + + public void setProperty(String key, Object value) { + // TODO Auto-generated method stub + + } + + public void setSchema(Schema s) { + // TODO Auto-generated method stub + + } +} Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/DataWriterImpl.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties Thu Nov 8 10:30:36 2007 @@ -0,0 +1,22 @@ +# +# +# 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. +# +# +MARSHAL_ERROR = Marshalling Error: {0} +UNMARSHAL_ERROR = Unmarshalling Error: {0} \ No newline at end of file Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/Message.properties ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansDataBinding.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansDataBinding.java?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansDataBinding.java (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansDataBinding.java Thu Nov 8 10:30:36 2007 @@ -0,0 +1,109 @@ +/** + * 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.xmlbeans; + +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +import org.w3c.dom.Document; + +import org.apache.cxf.common.logging.LogUtils; +import org.apache.cxf.databinding.DataBinding; +import org.apache.cxf.databinding.DataReader; +import org.apache.cxf.databinding.DataWriter; +import org.apache.cxf.databinding.source.AbstractDataBinding; +import org.apache.cxf.service.Service; +import org.apache.cxf.service.model.ServiceInfo; +import org.apache.ws.commons.schema.XmlSchema; +import org.apache.ws.commons.schema.XmlSchemaCollection; + +/** + * + */ +public class XmlBeansDataBinding extends AbstractDataBinding implements DataBinding { + private static final Logger LOG = LogUtils.getLogger(XmlBeansDataBinding.class); + + private static final Class SUPPORTED_READER_FORMATS[] = new Class[] {XMLStreamReader.class}; + private static final Class SUPPORTED_WRITER_FORMATS[] = new Class[] {XMLStreamWriter.class}; + + + @SuppressWarnings("unchecked") + public DataWriter createWriter(Class c) { + if (c == XMLStreamWriter.class) { + return (DataWriter)new DataWriterImpl(); + } + return null; + } + + @SuppressWarnings("unchecked") + public DataReader createReader(Class c) { + DataReader dr = null; + if (c == XMLStreamReader.class) { + dr = (DataReader)new DataReaderImpl(); + } + return dr; + } + + + /** + * XmlBeans has no declared namespace prefixes. + * {@inheritDoc} + */ + public Map getDeclaredNamespaceMappings() { + return null; + } + + public Class[] getSupportedReaderFormats() { + return SUPPORTED_READER_FORMATS; + } + + public Class[] getSupportedWriterFormats() { + return SUPPORTED_WRITER_FORMATS; + } + + public void initialize(Service service) { + if (LOG.isLoggable(Level.FINER)) { + LOG.log(Level.FINER, "Creating XmlBeansDatabinding for " + service.getName()); + } + for (ServiceInfo serviceInfo : service.getServiceInfos()) { + XmlSchemaCollection col = serviceInfo.getXmlSchemaCollection(); + + if (col.getXmlSchemas().length > 1) { + // someone has already filled in the types + continue; + } + + XmlBeansSchemaInitializer schemaInit + = new XmlBeansSchemaInitializer(serviceInfo, col, this); + schemaInit.walk(); + } + } + + public XmlSchema addSchemaDocument(ServiceInfo serviceInfo, + XmlSchemaCollection col, + Document d, + String systemId) { + return super.addSchemaDocument(serviceInfo, col, d, systemId); + } +} Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansDataBinding.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansDataBinding.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java Thu Nov 8 10:30:36 2007 @@ -0,0 +1,145 @@ +/** + * 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.xmlbeans; + + +import java.io.InputStream; +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; + +import org.w3c.dom.Document; + + +import org.apache.cxf.common.logging.LogUtils; +import org.apache.cxf.helpers.XMLUtils; +import org.apache.cxf.service.ServiceModelVisitor; +import org.apache.cxf.service.model.MessagePartInfo; +import org.apache.cxf.service.model.ServiceInfo; +import org.apache.ws.commons.schema.XmlSchema; +import org.apache.ws.commons.schema.XmlSchemaCollection; +import org.apache.ws.commons.schema.XmlSchemaElement; +import org.apache.ws.commons.schema.XmlSchemaType; +import org.apache.xmlbeans.SchemaType; +import org.apache.xmlbeans.SchemaTypeSystem; + +/** + * Walks the service model and sets up the element/type names. + */ +class XmlBeansSchemaInitializer extends ServiceModelVisitor { + private static final Logger LOG = LogUtils.getLogger(XmlBeansSchemaInitializer.class); + private XmlSchemaCollection schemas; + private XmlBeansDataBinding dataBinding; + private Map schemaMap + = new HashMap(); + + public XmlBeansSchemaInitializer(ServiceInfo serviceInfo, + XmlSchemaCollection col, + XmlBeansDataBinding db) { + super(serviceInfo); + schemas = col; + dataBinding = db; + } + + + XmlSchema getSchema(SchemaTypeSystem sts, String file) { + if (schemaMap.containsKey(file)) { + return schemaMap.get(file); + } + InputStream ins = sts.getSourceAsStream(file); + try { + Document doc = XMLUtils.parse(ins); + XmlSchema schema = dataBinding.addSchemaDocument(serviceInfo, + schemas, + doc, + file); + schemaMap.put(file, schema); + return schema; + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + } + + @Override + public void begin(MessagePartInfo part) { + LOG.finest(part.getName().toString()); + // Check to see if the WSDL information has been filled in for us. + if (part.getTypeQName() != null || part.getElementQName() != null) { + checkForExistence(part); + return; + } + + Class clazz = part.getTypeClass(); + if (clazz == null) { + return; + } + + boolean isFromWrapper = part.getMessageInfo().getOperation().isUnwrapped(); + if (isFromWrapper && clazz.isArray() && !Byte.TYPE.equals(clazz.getComponentType())) { + clazz = clazz.getComponentType(); + } + try { + Field field = clazz.getField("type"); + SchemaType st = (SchemaType)field.get(null); + + SchemaTypeSystem sts = st.getTypeSystem(); + XmlSchema schema = getSchema(sts, st.getSourceName()); + + if (st.getComponentType() == SchemaType.ELEMENT) { + XmlSchemaElement sct = schema.getElementByName(st.getName()); + part.setXmlSchema(sct); + part.setElement(true); + } else { + XmlSchemaType sct = schema.getTypeByName(st.getName()); + part.setTypeQName(st.getName()); + part.setXmlSchema(sct); + part.setElement(false); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + public void checkForExistence(MessagePartInfo part) { + QName qn = part.getElementQName(); + if (qn != null) { + XmlSchemaElement el = schemas.getElementByQName(qn); + if (el == null) { + Class clazz = part.getTypeClass(); + if (clazz == null) { + return; + } + + boolean isFromWrapper = part.getMessageInfo().getOperation().isUnwrapped(); + if (isFromWrapper && clazz.isArray() && !Byte.TYPE.equals(clazz.getComponentType())) { + clazz = clazz.getComponentType(); + } + + //FIXME - find and set the part.setXmlSchema(....) info + } + } + } + +} Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/XmlBeansSchemaInitializer.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/AbstractXmlBeansTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/AbstractXmlBeansTest.java?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/AbstractXmlBeansTest.java (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/AbstractXmlBeansTest.java Thu Nov 8 10:30:36 2007 @@ -0,0 +1,201 @@ +/** + * 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.xmlbeans; + + +import java.util.ArrayList; +import java.util.Collection; + +import javax.wsdl.Definition; +import javax.wsdl.Import; +import javax.wsdl.WSDLException; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLWriter; +import javax.xml.namespace.QName; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +import org.apache.cxf.Bus; +import org.apache.cxf.BusException; +import org.apache.cxf.BusFactory; +import org.apache.cxf.binding.BindingFactoryManager; +import org.apache.cxf.binding.soap.SoapBindingFactory; +import org.apache.cxf.binding.soap.SoapTransportFactory; +import org.apache.cxf.bus.extension.ExtensionManagerBus; +import org.apache.cxf.common.util.SOAPConstants; +import org.apache.cxf.endpoint.Server; +import org.apache.cxf.endpoint.ServerRegistry; +import org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory; +import org.apache.cxf.frontend.ServerFactoryBean; +import org.apache.cxf.service.Service; +import org.apache.cxf.test.AbstractCXFTest; +import org.apache.cxf.transport.ConduitInitiatorManager; +import org.apache.cxf.transport.DestinationFactoryManager; +import org.apache.cxf.transport.local.LocalTransportFactory; +import org.apache.cxf.wsdl.WSDLManager; +import org.apache.cxf.wsdl11.ServiceWSDLBuilder; +import org.apache.cxf.wsdl11.WSDLDefinitionBuilder; +import org.apache.cxf.wsdl11.WSDLManagerImpl; +import org.junit.Before; + +public abstract class AbstractXmlBeansTest extends AbstractCXFTest { + protected LocalTransportFactory localTransport; + + + @Before + public void setUp() throws Exception { + super.setUpBus(); + + SoapBindingFactory bindingFactory = new SoapBindingFactory(); + + bus.getExtension(BindingFactoryManager.class) + .registerBindingFactory("http://schemas.xmlsoap.org/wsdl/soap/", bindingFactory); + + DestinationFactoryManager dfm = bus.getExtension(DestinationFactoryManager.class); + + SoapTransportFactory soapDF = new SoapTransportFactory(); + soapDF.setBus(bus); + dfm.registerDestinationFactory("http://schemas.xmlsoap.org/wsdl/soap/", soapDF); + dfm.registerDestinationFactory("http://schemas.xmlsoap.org/soap/", soapDF); + dfm.registerDestinationFactory("http://cxf.apache.org/transports/local", soapDF); + + localTransport = new LocalTransportFactory(); + dfm.registerDestinationFactory("http://schemas.xmlsoap.org/soap/http", localTransport); + dfm.registerDestinationFactory("http://schemas.xmlsoap.org/wsdl/soap/http", localTransport); + dfm.registerDestinationFactory("http://cxf.apache.org/bindings/xformat", localTransport); + dfm.registerDestinationFactory("http://cxf.apache.org/transports/local", localTransport); + + ConduitInitiatorManager extension = bus.getExtension(ConduitInitiatorManager.class); + extension.registerConduitInitiator(LocalTransportFactory.TRANSPORT_ID, localTransport); + extension.registerConduitInitiator("http://schemas.xmlsoap.org/wsdl/soap/", localTransport); + extension.registerConduitInitiator("http://schemas.xmlsoap.org/soap/http", localTransport); + extension.registerConduitInitiator("http://schemas.xmlsoap.org/soap/", localTransport); + + bus.setExtension(new WSDLManagerImpl(), WSDLManager.class); + + + addNamespace("wsdl", SOAPConstants.WSDL11_NS); + addNamespace("wsdlsoap", SOAPConstants.WSDL11_SOAP_NS); + addNamespace("xsd", SOAPConstants.XSD); + + + } + + @Override + protected Bus createBus() throws BusException { + ExtensionManagerBus bus = new ExtensionManagerBus(); + BusFactory.setDefaultBus(bus); + return bus; + } + + protected Node invoke(String service, String message) throws Exception { + return invoke("local://" + service, LocalTransportFactory.TRANSPORT_ID, message); + } + + public Server createService(Class serviceClass, QName name) { + return createService(serviceClass, null, name); + } + + public Server createService(Class serviceClass, Object serviceBean, QName name) { + return createService(serviceClass, serviceBean, serviceClass.getSimpleName(), name); + } + + protected Server createService(Class serviceClass, QName name, XmlBeansDataBinding binding) { + return createService(serviceClass, serviceClass.getSimpleName(), name, binding); + } + + protected Server createService(Class serviceClass, + String address, QName name, + XmlBeansDataBinding binding) { + ServerFactoryBean sf = createServiceFactory(serviceClass, null, address, name, binding); + return sf.create(); + } + + public Server createService(Class serviceClass, + Object serviceBean, + String address, + QName name) { + ServerFactoryBean sf = createServiceFactory(serviceClass, serviceBean, address, name, null); + return sf.create(); + } + + protected ServerFactoryBean createServiceFactory(Class serviceClass, + Object serviceBean, + String address, + QName name, + XmlBeansDataBinding binding) { + ServerFactoryBean sf = new ServerFactoryBean(); + sf.setServiceClass(serviceClass); + if (serviceBean != null) { + sf.setServiceBean(serviceBean); + } + sf.getServiceFactory().setServiceName(name); + sf.setAddress("local://" + address); + setupXmlBeans(sf, binding); + return sf; + } + protected void setupXmlBeans(AbstractWSDLBasedEndpointFactory sf) { + setupXmlBeans(sf, null); + } + protected void setupXmlBeans(AbstractWSDLBasedEndpointFactory sf, XmlBeansDataBinding binding) { + if (binding == null) { + binding = new XmlBeansDataBinding(); + } + sf.getServiceFactory().setDataBinding(binding); + } + + protected Collection getWSDLDocuments(String string) throws WSDLException { + WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter(); + + Collection docs = new ArrayList(); + Definition definition = getWSDLDefinition(string); + if (definition == null) { + return null; + } + docs.add(writer.getDocument(definition)); + + for (Import wsdlImport : WSDLDefinitionBuilder.getImports(definition)) { + docs.add(writer.getDocument(wsdlImport.getDefinition())); + } + return docs; + } + + protected Definition getWSDLDefinition(String string) throws WSDLException { + ServerRegistry svrMan = getBus().getExtension(ServerRegistry.class); + for (Server s : svrMan.getServers()) { + Service svc = s.getEndpoint().getService(); + if (svc.getName().getLocalPart().equals(string)) { + ServiceWSDLBuilder builder = new ServiceWSDLBuilder(bus, svc.getServiceInfos()); + return builder.build(); + } + } + return null; + + } + + protected Document getWSDLDocument(String string) throws WSDLException { + Definition definition = getWSDLDefinition(string); + if (definition == null) { + return null; + } + WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter(); + return writer.getDocument(definition); + } +} Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/AbstractXmlBeansTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/AbstractXmlBeansTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/BasicTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/BasicTest.java?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/BasicTest.java (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/BasicTest.java Thu Nov 8 10:30:36 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.xmlbeans.basic; + + +import org.w3c.dom.Node; + +import org.apache.cxf.xmlbeans.AbstractXmlBeansTest; +import org.junit.Before; +import org.junit.Test; + +public class BasicTest extends AbstractXmlBeansTest { + + @Before + public void setUp() throws Exception { + super.setUp(); + createService(TestService.class, null, "TestService", null); + } + + @Test + public void testBasicInvoke() throws Exception { + Node response = invoke("TestService", "bean11.xml"); + addNamespace("ns1", "http://basic.xmlbeans.cxf.apache.org/"); + assertValid("/s:Envelope/s:Body/ns1:echoAddressResponse", response); + assertValid("//ns1:echoAddressResponse/ns1:return", response); + assertValid("//ns1:echoAddressResponse/ns1:return/country", response); + assertValid("//ns1:echoAddressResponse/ns1:return/country[text()='Mars']", + response); + } + + @Test + public void testWSDL() throws Exception { + Node doc = getWSDLDocument("TestService"); + assertValid("/wsdl:definitions/wsdl:types/xsd:schema" + + "[@targetNamespace='http://cxf.apache.org/databinding/xmlbeans/test']", + doc); + + assertValid("/wsdl:definitions/wsdl:types/xsd:schema" + + "[@targetNamespace='http://cxf.apache.org/databinding/xmlbeans/test']" + + "/xsd:complexType[@name='Address']", + doc); + } + +} Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/BasicTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/BasicTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/TestService.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/TestService.java?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/TestService.java (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/TestService.java Thu Nov 8 10:30:36 2007 @@ -0,0 +1,42 @@ +/** + * 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.xmlbeans.basic; + +import org.apache.cxf.databinding.xmlbeans.test.Address; + + +/** + * + */ +public class TestService { + + public Address echoAddress(Address ad) { + + Address ret = Address.Factory.newInstance(); + ret.setAddressLine1(ad.getAddressLine1()); + ret.setAddressLine2(ad.getAddressLine2()); + ret.setCity(ad.getCity()); + ret.setCountry(ad.getCountry()); + ret.setZIPPostalCode(ad.getZIPPostalCode()); + ret.setStateProvinceRegion(ad.getStateProvinceRegion()); + return ret; + } + +} Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/TestService.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/TestService.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml Thu Nov 8 10:30:36 2007 @@ -0,0 +1,15 @@ + + + + + + 30 Foo Drive + + Bar + SN + 12345 + Mars + + + + \ No newline at end of file Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/basic/bean11.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd?rev=593243&view=auto ============================================================================== --- incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd (added) +++ incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd Thu Nov 8 10:30:36 2007 @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/rt/databinding/xmlbeans/src/test/xsd/XmlBeanTest.xsd ------------------------------------------------------------------------------ svn:mime-type = text/xml Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=593243&r1=593242&r2=593243&view=diff ============================================================================== --- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original) +++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Thu Nov 8 10:30:36 2007 @@ -706,6 +706,9 @@ if (!oldEl.getQName().equals(qname)) { el.setSchemaTypeName(oldEl.getSchemaTypeName()); el.setSchemaType(oldEl.getSchemaType()); + if (oldEl.getSchemaTypeName() != null) { + addImport(schema, oldEl.getSchemaTypeName().getNamespaceURI()); + } } mpi.setXmlSchema(el); mpi.setElementQName(qname); @@ -713,14 +716,7 @@ continue; } else { el.setSchemaTypeName(mpi.getTypeQName()); - String ns = mpi.getTypeQName().getNamespaceURI(); - if (!ns.equals(schema.getTargetNamespace()) && !ns.equals(WSDLConstants.NS_SCHEMA_XSD)) { - XmlSchemaImport is = new XmlSchemaImport(); - is.setNamespace(ns); - if (!isExistImport(schema, ns)) { - schema.getItems().add(is); - } - } + addImport(schema, mpi.getTypeQName().getNamespaceURI()); } schemaInfo.setSchema(schema); @@ -731,6 +727,16 @@ } } + private void addImport(XmlSchema schema, String ns) { + if (!ns.equals(schema.getTargetNamespace()) + && !ns.equals(WSDLConstants.NS_SCHEMA_XSD) + && !isExistImport(schema, ns)) { + + XmlSchemaImport is = new XmlSchemaImport(); + is.setNamespace(ns); + schema.getItems().add(is); + } + } private boolean isExistImport(XmlSchema schema, String ns) { boolean isExist = false; @@ -782,7 +788,7 @@ if (!isAnonymousWrapperTypes()) { ct.setName(wrapperName.getLocalPart()); - el.setSchemaTypeName(wrapperName); + el.setSchemaTypeName(wrapperName); schema.addType(ct); schema.getItems().add(ct); } @@ -797,9 +803,14 @@ el.setName(mpi.getName().getLocalPart()); el.setQName(mpi.getName()); if (mpi.isElement()) { + addImport(schema, mpi.getElementQName().getNamespaceURI()); el.setRefName(mpi.getElementQName()); } else { - el.setSchemaTypeName(mpi.getTypeQName()); + if (mpi.getTypeQName() != null) { + el.setSchemaTypeName(mpi.getTypeQName()); + addImport(schema, mpi.getTypeQName().getNamespaceURI()); + } + el.setSchemaType((XmlSchemaType)mpi.getXmlSchema()); if (schema.getElementFormDefault().getValue().equals(XmlSchemaForm.UNQUALIFIED)) { mpi.setConcreteName(new QName(null, mpi.getName().getLocalPart())); Modified: incubator/cxf/trunk/rt/pom.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/pom.xml?rev=593243&r1=593242&r2=593243&view=diff ============================================================================== --- incubator/cxf/trunk/rt/pom.xml (original) +++ incubator/cxf/trunk/rt/pom.xml Thu Nov 8 10:30:36 2007 @@ -36,6 +36,7 @@ transports/local testsupport databinding/jaxb + databinding/xmlbeans databinding/aegis bindings frontend/simple