You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/05/16 14:53:40 UTC

svn commit: r1103721 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/ tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/ tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/ tools/wadlto/jaxrs/...

Author: sergeyb
Date: Mon May 16 12:53:39 2011
New Revision: 1103721

URL: http://svn.apache.org/viewvc?rev=1103721&view=rev
Log:
[CXF-3948] Initial support for external JAXB bindings

Added:
    cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/
    cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java   (with props)
    cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml   (with props)
    cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml   (with props)
Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
    cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
    cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
    cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java?rev=1103721&r1=1103720&r2=1103721&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java Mon May 16 12:53:39 2011
@@ -125,12 +125,13 @@ public class SourceGenerator {
     private boolean generateImpl;
     private String resourcePackageName;
     private String resourceName;
-    private String baseWadlPath;
+    private String wadlPath;
     
     private Map<String, String> properties; 
     
     private List<String> generatedServiceClasses = new ArrayList<String>(); 
     private List<String> generatedTypeClasses = new ArrayList<String>();
+    private List<InputSource> bindingFiles = Collections.emptyList();
     private Bus bus;
     
     public SourceGenerator() {
@@ -744,7 +745,7 @@ public class SourceGenerator {
         List<Element> schemasEls = DOMUtils.getChildrenWithName(grammarEls.get(0), 
              XmlSchemaConstants.XSD_NAMESPACE_URI, "schema");
         for (Element schemaEl : schemasEls) {
-            schemas.add(createSchemaInfo(schemaEl, baseWadlPath));
+            schemas.add(createSchemaInfo(schemaEl, wadlPath));
         }
         List<Element> includeEls = DOMUtils.getChildrenWithName(grammarEls.get(0), 
              WadlGenerator.WADL_NS, "include");
@@ -753,7 +754,7 @@ public class SourceGenerator {
             
             String schemaURI = resolveLocationWithCatalog(href);
             if (schemaURI == null) {
-                schemaURI = baseWadlPath != null ? baseWadlPath + href : href;
+                schemaURI = wadlPath != null ? getBaseWadlPath() + href : href;
             }
             schemas.add(createSchemaInfo(readIncludedSchema(schemaURI),
                                             schemaURI));
@@ -761,6 +762,11 @@ public class SourceGenerator {
         return schemas;
     }
     
+    private String getBaseWadlPath() {
+        int lastSep = wadlPath.lastIndexOf("/");
+        return lastSep != -1 ? wadlPath.substring(0, lastSep + 1) : wadlPath;
+    }
+    
     private SchemaInfo createSchemaInfo(Element schemaEl, String systemId) { 
         SchemaInfo info = new SchemaInfo(schemaEl.getAttribute("targetNamespace"));
         info.setElement(schemaEl);
@@ -803,7 +809,9 @@ public class SourceGenerator {
 
         SchemaCompiler compiler = createCompiler(type);
         addSchemas(schemaElements, compiler);
-        
+        for (InputSource is : bindingFiles) {
+            compiler.getOptions().addBindFile(is);
+        }
         
         Object elForRun = ReflectionInvokationHandler
             .createProxyWrapper(new InnerErrorListener(),
@@ -876,8 +884,12 @@ public class SourceGenerator {
         this.resourceName = name;
     }
     
-    public void setBaseWadlPath(String name) {
-        this.baseWadlPath = name;
+    public void setWadlPath(String name) {
+        this.wadlPath = name;
+    }
+    
+    public void setBindingFiles(List<InputSource> files) {
+        this.bindingFiles = files;
     }
     
     public void setBus(Bus bus) {

Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java?rev=1103721&r1=1103720&r2=1103721&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java Mon May 16 12:53:39 2011
@@ -35,16 +35,13 @@ public final class WadlToolConstants {
     public static final String CFG_TYPES = ToolConstants.CFG_TYPES;
     public static final String CFG_PACKAGENAME = ToolConstants.CFG_PACKAGENAME;
     public static final String CFG_RESOURCENAME = "resourcename";
+    
     public static final String CFG_CATALOG = ToolConstants.CFG_CATALOG;
+    public static final String CFG_BINDING = ToolConstants.CFG_BINDING;
+    
     public static final String CFG_WADLURL = "wadl";
     
-    //public static final String CFG_NO_TYPES = ToolConstants.CFG_NO_TYPES;
-    //public static final String CFG_XJC_ARGS = ToolConstants.CFG_XJC_ARGS;
-    //public static final String CFG_BINDING = ToolConstants.CFG_BINDING;
-        
-    //public static final String CFG_CMD_ARG = ToolConstants.CFG_CMD_ARG;
-    //public static final String CFG_INSTALL_DIR = ToolConstants.CFG_INSTALL_DIR;
-    //public static final String CFG_PLATFORM_VERSION = ToolConstants.CFG_PLATFORM_VERSION;
+    
     
     private WadlToolConstants() {
         //utility class

Added: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java?rev=1103721&view=auto
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java (added)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java Mon May 16 12:53:39 2011
@@ -0,0 +1,153 @@
+/**
+ * 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.tools.wadlto.jaxb;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.w3c.dom.Element;
+
+import org.xml.sax.InputSource;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.catalog.OASISCatalogManager;
+import org.apache.cxf.catalog.OASISCatalogManagerHelper;
+import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.helpers.FileUtils;
+import org.apache.cxf.helpers.XMLUtils;
+import org.apache.cxf.resource.URIResolver;
+import org.apache.cxf.staxutils.StaxUtils;
+import org.apache.cxf.tools.common.ToolConstants;
+import org.apache.cxf.tools.common.ToolContext;
+import org.apache.cxf.tools.common.ToolException;
+import org.apache.cxf.tools.util.URIParserUtil;
+import org.apache.cxf.tools.wadlto.WadlToolConstants;
+
+public final class CustomizationParser {
+    private static final Logger LOG = LogUtils.getL7dLogger(CustomizationParser.class);
+    private final List<InputSource> jaxbBindings = new ArrayList<InputSource>();
+    private Bus bus;
+    private String[] bindingFiles = new String[]{};
+    private String wadlPath;
+    
+    public CustomizationParser(ToolContext env) {
+        bus = (Bus)env.get(Bus.class);
+        Object files = env.get(WadlToolConstants.CFG_BINDING);
+        if (files != null) {
+            bindingFiles = files instanceof String ? new String[]{(String)files}
+                                                   : (String[])files;
+        }
+        wadlPath = (String)env.get(WadlToolConstants.CFG_WADLURL);
+    }
+
+    public void parse() {
+        for (int i = 0; i < bindingFiles.length; i++) {
+            try {
+                addBinding(bindingFiles[i]);
+            } catch (XMLStreamException xse) {
+                Message msg = new Message("STAX_PARSER_ERROR", LOG);
+                throw new ToolException(msg, xse);
+            }
+        }
+    }
+
+    private void addBinding(String bindingFile) throws XMLStreamException {
+
+        Element root = null;
+        try {
+            URIResolver resolver = new URIResolver(bindingFile);
+            root = DOMUtils.readXml(resolver.getInputStream()).getDocumentElement();
+        } catch (Exception e1) {
+            Message msg = new Message("CAN_NOT_READ_AS_ELEMENT", LOG, new Object[] {bindingFile});
+            throw new ToolException(msg, e1);
+        }
+        XMLStreamReader reader = StaxUtils.createXMLStreamReader(root);
+        StaxUtils.toNextTag(reader);
+        if (isValidJaxbBindingFile(reader)) {
+            String schemaLocation = root.getAttribute("schemaLocation");
+            String resolvedSchemaLocation = resolveByCatalog(schemaLocation);
+            if (resolvedSchemaLocation == null) {
+                resolvedSchemaLocation = schemaLocation.length() == 0 
+                    ? wadlPath : getBaseWadlPath() + schemaLocation;
+            }
+            InputSource tmpIns = null;
+            try {
+                tmpIns = convertToTmpInputSource(root, resolvedSchemaLocation);
+            } catch (Exception e1) {
+                Message msg = new Message("FAILED_TO_ADD_SCHEMALOCATION", LOG, bindingFile);
+                throw new ToolException(msg, e1);
+            }
+            jaxbBindings.add(tmpIns);
+             
+        }
+    }
+
+    private String getBaseWadlPath() {
+        int lastSep = wadlPath.lastIndexOf("/");
+        return lastSep != -1 ? wadlPath.substring(0, lastSep + 1) : wadlPath;
+    }
+    
+    private InputSource convertToTmpInputSource(Element ele, String schemaLoc) throws Exception {
+        InputSource result = null;
+        ele.setAttribute("schemaLocation", schemaLoc);
+        File tmpFile = FileUtils.createTempFile("jaxbbinding", ".xml");
+        XMLUtils.writeTo(ele, new FileOutputStream(tmpFile));
+        result = new InputSource(URIParserUtil.getAbsoluteURI(tmpFile.getAbsolutePath()));
+        tmpFile.deleteOnExit();
+        return result;
+    }
+
+    private String resolveByCatalog(String url) {
+        if (StringUtils.isEmpty(url)) {
+            return null;
+        }
+        OASISCatalogManager catalogResolver = OASISCatalogManager.getCatalogManager(bus);
+        
+        try {
+            return new OASISCatalogManagerHelper().resolve(catalogResolver, 
+                                                           url, null);
+        } catch (Exception e1) {
+            Message msg = new Message("FAILED_RESOLVE_CATALOG", LOG, url);
+            throw new ToolException(msg, e1);
+        }
+    }
+    
+    private boolean isValidJaxbBindingFile(XMLStreamReader reader) {
+        if (ToolConstants.JAXB_BINDINGS.equals(reader.getName())) {
+
+            return true;
+        }
+        return false;
+    }
+
+    public List<InputSource> getJaxbBindings() {
+        return this.jaxbBindings;
+    }
+
+
+}

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java?rev=1103721&r1=1103720&r2=1103721&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java Mon May 16 12:53:39 2011
@@ -24,6 +24,8 @@ import java.io.IOException;
 import java.net.URL;
 import java.util.List;
 
+import org.xml.sax.InputSource;
+
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.ext.codegen.SourceGenerator;
 import org.apache.cxf.tools.common.AbstractCXFToolContainer;
@@ -34,6 +36,7 @@ import org.apache.cxf.tools.common.tools
 import org.apache.cxf.tools.util.ClassCollector;
 import org.apache.cxf.tools.util.URIParserUtil;
 import org.apache.cxf.tools.wadlto.WadlToolConstants;
+import org.apache.cxf.tools.wadlto.jaxb.CustomizationParser;
 
 public class JAXRSContainer extends AbstractCXFToolContainer {
     
@@ -98,10 +101,12 @@ public class JAXRSContainer extends Abst
         sg.setResourceName((String)context.get(WadlToolConstants.CFG_RESOURCENAME));
 
         // find the base path
-        int lastSep = wadlURL.lastIndexOf("/");
-        if (lastSep != -1) {
-            sg.setBaseWadlPath(wadlURL.substring(0, lastSep + 1));
-        }
+        sg.setWadlPath(wadlURL);
+                
+        CustomizationParser parser = new CustomizationParser(context);
+        parser.parse();
+        List<InputSource> bindingFiles = parser.getJaxbBindings();
+        sg.setBindingFiles(bindingFiles);
         
         // generate
         String codeType = context.optionSet(WadlToolConstants.CFG_TYPES)
@@ -144,6 +149,8 @@ public class JAXRSContainer extends Abst
     
     protected String getAbsoluteWadlURL() {
         String wadlURL = (String)context.get(WadlToolConstants.CFG_WADLURL);
-        return URIParserUtil.getAbsoluteURI(wadlURL);
+        String absoluteWadlURL = URIParserUtil.getAbsoluteURI(wadlURL);
+        context.put(WadlToolConstants.CFG_WADLURL, absoluteWadlURL);
+        return absoluteWadlURL;
     }
 }

Modified: cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java?rev=1103721&r1=1103720&r2=1103721&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java Mon May 16 12:53:39 2011
@@ -57,6 +57,31 @@ public class JAXRSContainerTest extends 
     }
     
     @Test    
+    public void testCodeGenInterfacesWithBinding() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_BINDING, getLocation("/wadl/jaxbBinding.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+            
+            verifyFiles("java", true, false, "org.apache.cxf.jaxrs.model.wadl");
+            verifyFiles("class", true, false, "org.apache.cxf.jaxrs.model.wadl");
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+    
+    @Test    
     public void testCodeGenWithImportedSchema() {
         try {
             JAXRSContainer container = new JAXRSContainer(null);
@@ -81,6 +106,31 @@ public class JAXRSContainerTest extends 
     }
     
     @Test    
+    public void testCodeGenWithImportedSchemaAndBinding() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstoreImport.xml"));
+            context.put(WadlToolConstants.CFG_BINDING, getLocation("/wadl/jaxbBindingWithSchemaLoc.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+            
+            verifyFiles("java", false, false, "org.apache.cxf.jaxrs.model.wadl");
+            verifyFiles("class", false, false, "org.apache.cxf.jaxrs.model.wadl");
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+    
+    @Test    
     public void testCodeGenWithImportedSchemaAndCatalog() {
         try {
             JAXRSContainer container = new JAXRSContainer(null);

Added: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml?rev=1103721&view=auto
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml (added)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml Mon May 16 12:53:39 2011
@@ -0,0 +1,25 @@
+<!--
+  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.
+-->
+<jaxb:bindings version="2.0"
+	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	node="//xs:complexType[@name='book2']/xs:sequence/xs:element[@name='id']">
+	<jaxb:property name="book2Id"/>
+</jaxb:bindings>
+

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBinding.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml?rev=1103721&view=auto
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml (added)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml Mon May 16 12:53:39 2011
@@ -0,0 +1,26 @@
+<!--
+  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.
+-->
+<jaxb:bindings version="2.0"
+	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	schemaLocation="schemas/book.xsd"
+	node="//xs:complexType[@name='book2']/xs:sequence/xs:element[@name='id']">
+	<jaxb:property name="book2Id"/>
+</jaxb:bindings>
+

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/jaxbBindingWithSchemaLoc.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml