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