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/10 18:17:36 UTC

svn commit: r1101526 - 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/jaxrs/ tools/wadlto/jaxrs...

Author: sergeyb
Date: Tue May 10 16:17:36 2011
New Revision: 1101526

URL: http://svn.apache.org/viewvc?rev=1101526&view=rev
Log:
[CXF-3498] Support for various default options

Added:
    cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/singleResource.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=1101526&r1=1101525&r2=1101526&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 Tue May 10 16:17:36 2011
@@ -84,6 +84,8 @@ public class SourceGenerator {
     
     private static final Logger LOG = LogUtils.getL7dLogger(SourceGenerator.class);
     
+    private static final String DEFAULT_PACKAGE_NAME = "application";
+    private static final String DEFAULT_RESOURCE_NAME = "Resource";
     private static final String TAB = "    "; 
     
     private static final Map<String, Class<?>> HTTP_METHOD_ANNOTATIONS;
@@ -108,6 +110,8 @@ public class SourceGenerator {
     private Comparator<String> importsComparator;
     private boolean generateInterfaces = true;
     private boolean generateImpl;
+    private String resourcePackageName;
+    private String resourceName;
     
     private Map<String, String> properties; 
     
@@ -119,6 +123,16 @@ public class SourceGenerator {
         this.properties = properties;
     }
     
+    private String getClassPackageName(String wadlPackageName) {
+        if (resourcePackageName != null) {
+            return resourcePackageName;
+        } else if (wadlPackageName != null && wadlPackageName.length() > 0) {
+            return wadlPackageName;
+        } else {
+            return DEFAULT_PACKAGE_NAME;
+        }
+    }
+    
     private String getLineSep() {
         String value = properties.get(LINE_SEP_PROPERTY);
         return value == null ? System.getProperty(LINE_SEP_PROPERTY) : value;
@@ -134,7 +148,7 @@ public class SourceGenerator {
         
         Set<String> typeClassNames = new HashSet<String>();
         List<Element> schemaElements = getSchemaElements(appElement);
-        if (!schemaElements.isEmpty()) {
+        if (schemaElements != null && !schemaElements.isEmpty()) {
             // generate classes from schema
             JCodeModel codeModel = createCodeModel(schemaElements, typeClassNames);
             if (codeModel != null) {
@@ -162,11 +176,15 @@ public class SourceGenerator {
         }
         
         GrammarInfo gInfo = getGrammarInfo(appElement, schemaElements);
-        for (Element resource : resourceEls) {
+        for (int i = 0; i < resourceEls.size(); i++) {
+            Element resource = resourceEls.get(i);
             writeResourceClass(resource, typeClassNames, gInfo, src, generateInterfaces);
             if (generateInterfaces && generateImpl) {
                 writeResourceClass(resource, typeClassNames, gInfo, src, false);
             }
+            if (resourceName != null) {
+                break;
+            }
         }
         
         generateMainClass(resourcesEls.get(0), src);
@@ -175,7 +193,7 @@ public class SourceGenerator {
     
     private GrammarInfo getGrammarInfo(Element appElement, List<Element> schemaElements) {
         
-        if (schemaElements.isEmpty()) {
+        if (schemaElements == null || schemaElements.isEmpty()) {
             return null;
         }
         
@@ -210,12 +228,12 @@ public class SourceGenerator {
     
     private void writeResourceClass(Element rElement, Set<String> typeClassNames, 
                                     GrammarInfo gInfo, File src, boolean interfaceIsGenerated) {
-        String resourceId = rElement.getAttribute("id");
-        String path = rElement.getAttribute("path");
+        String resourceId = resourceName != null 
+            ? resourceName : rElement.getAttribute("id");
         if (resourceId.length() == 0) {
-            LOG.warning("Resource with path " + path + " can not be mapped to a class");
-            return;
+            resourceId = DEFAULT_RESOURCE_NAME;
         }
+        String path = rElement.getAttribute("path");
         
         
         QName qname = JAXRSUtils.convertStringToQName(resourceId);
@@ -228,14 +246,17 @@ public class SourceGenerator {
         StringBuilder sbCode = new StringBuilder();
         Set<String> imports = createImports();
         
+        final String classPackage = getClassPackageName(qname.getNamespaceURI());
+        final String className = getClassName(qname.getLocalPart(), interfaceIsGenerated);
+        
         sbImports.append(getClassComment()).append(getLineSep());
-        sbImports.append("package " + qname.getNamespaceURI())
+        sbImports.append("package " + classPackage)
             .append(";").append(getLineSep()).append(getLineSep());
         
         if (writeAnnotations(interfaceIsGenerated)) {
             writeAnnotation(sbCode, imports, Path.class, path, true, false);
         }
-        String className = getClassName(qname.getLocalPart(), interfaceIsGenerated);
+                
         sbCode.append("public " + getClassType(interfaceIsGenerated) + " " + className);
         writeImplementsInterface(sbCode, qname.getLocalPart(), interfaceIsGenerated);              
         sbCode.append(" {" + getLineSep() + getLineSep());
@@ -253,9 +274,9 @@ public class SourceGenerator {
             }
         }
         sbCode.append("}");
-        writeImports(sbImports, imports);
+        writeImports(sbImports, imports, classPackage);
         
-        createJavaSourceFile(src, new QName(qname.getNamespaceURI(), className), sbCode, sbImports);
+        createJavaSourceFile(src, new QName(classPackage, className), sbCode, sbImports);
         
         for (Element subEl : childEls) {
             String id = subEl.getAttribute("id");
@@ -339,8 +360,12 @@ public class SourceGenerator {
         }
     }
     
-    private void writeImports(StringBuilder sbImports, Set<String> imports) {
+    private void writeImports(StringBuilder sbImports, Set<String> imports, String classPackage) {
         for (String clsName : imports) {
+            int index = clsName.lastIndexOf(".");
+            if (index != -1 && clsName.substring(0, index).equals(classPackage)) {
+                continue;
+            }
             sbImports.append("import " + clsName).append(";").append(getLineSep());
         }
     }
@@ -349,8 +374,11 @@ public class SourceGenerator {
                                      Set<String> imports, StringBuilder sbCode, 
                                      Set<String> typeClassNames, GrammarInfo gInfo,
                                      boolean interfaceIsGenerated) {
-        String id = methodEl.getAttribute("id");
         String methodName = methodEl.getAttribute("name");
+        String id = methodEl.getAttribute("id");
+        if (id.length() == 0) {
+            id = methodName.toLowerCase();
+        }
         
         List<Element> responseEls = DOMUtils.getChildrenWithName(methodEl, 
                                                                  WadlGenerator.WADL_NS, "response");
@@ -359,14 +387,8 @@ public class SourceGenerator {
         
         
         if (writeAnnotations(interfaceIsGenerated)) {
-            String path = resourceEl.getAttribute("path");
-            if (id.length() == 0) {
-                LOG.warning("Method with path " + path + " can not be mapped to a class method");
-                return;
-            }
             sbCode.append(TAB);
-            writeAnnotation(sbCode, imports, Path.class, path, true, true);
-        
+            
             if (methodName.length() > 0) {
                 if (HTTP_METHOD_ANNOTATIONS.containsKey(methodName.toLowerCase())) {
                     writeAnnotation(sbCode, imports, 
@@ -378,6 +400,10 @@ public class SourceGenerator {
                 writeFormatAnnotations(requestEls, sbCode, imports, true);
                 writeFormatAnnotations(responseEls, sbCode, imports, false);
             }
+            
+            String path = resourceEl.getAttribute("path");
+            writeAnnotation(sbCode, imports, Path.class, path, true, true);
+            
         } else {
             sbCode.append(getLineSep()).append(TAB);
         }
@@ -396,11 +422,14 @@ public class SourceGenerator {
                                                       typeClassNames);
             String localName = clsSimpleName == null ? qname.getLocalPart() 
                 : clsSimpleName.substring(packageName.length() + 1);
+            String subResponseNs = clsSimpleName == null ? getClassPackageName(qname.getNamespaceURI()) 
+                : clsSimpleName.substring(0, packageName.length());
             String parentId = ((Element)resourceEl.getParentNode()).getAttribute("id");
-            writeSubResponseType(id.equals(parentId), clsSimpleName == null ? qname.getNamespaceURI() 
-                : clsSimpleName.substring(0, packageName.length()), localName, sbCode, imports);
+            writeSubResponseType(id.equals(parentId), subResponseNs, localName, sbCode, imports);
+            
             // TODO : we need to take care of multiple subresource locators with diff @Path
             // returning the same type; also we might have ids like "{org.apache.cxf}Book#getName" 
+            
             sbCode.append("get" + localName);
         }
         
@@ -429,7 +458,7 @@ public class SourceGenerator {
         sbCode.append("}");
     }
     
-    private void addFormParameters(List<Element> inParamElements, Element requestEl) {
+    private boolean addFormParameters(List<Element> inParamElements, Element requestEl) {
         List<Element> repElements = 
             DOMUtils.getChildrenWithName(requestEl, WadlGenerator.WADL_NS, "representation");
  
@@ -438,8 +467,10 @@ public class SourceGenerator {
             if (MediaType.APPLICATION_FORM_URLENCODED.equals(mediaType)) { 
                 inParamElements.addAll(DOMUtils.getChildrenWithName(repElements.get(0), 
                                                                 WadlGenerator.WADL_NS, "param"));
+                return true;
             }
         }
+        return false;
     }
     
     private boolean writeResponseType(List<Element> responseEls, StringBuilder sbCode,
@@ -481,8 +512,7 @@ public class SourceGenerator {
         if (requestEls.size() == 1 && inParamEls.size() == 0) {
             inParamEls.addAll(DOMUtils.getChildrenWithName(requestEls.get(0), 
                  WadlGenerator.WADL_NS, "param"));
-            addFormParameters(inParamEls, requestEls.get(0));
-            form = true;
+            form = addFormParameters(inParamEls, requestEls.get(0));
         }
         
         String elementName = null;
@@ -717,7 +747,8 @@ public class SourceGenerator {
     }
 
     private Set<String> createImports() {
-        return importsComparator == null ? new TreeSet<String>() : new TreeSet<String>(importsComparator);
+        return importsComparator == null ? new TreeSet<String>(new DefaultImportsComparator()) 
+            : new TreeSet<String>(importsComparator);
     }
 
     public void setGenerateInterfaces(boolean generateInterfaces) {
@@ -728,6 +759,14 @@ public class SourceGenerator {
         this.generateImpl = generate;
     }
     
+    public void setPackageName(String name) {
+        this.resourcePackageName = name;
+    }
+    
+    public void setResourceName(String name) {
+        this.resourceName = name;
+    }
+    
     private static class GrammarInfo {
         private Map<String, String> nsMap;
         private Map<String, String> elementTypeMap;
@@ -746,6 +785,22 @@ public class SourceGenerator {
         }
     }
 
+    private static class DefaultImportsComparator implements Comparator<String> {
+        private static final String JAVAX_PREFIX = "javax";
+        public int compare(String s1, String s2) {
+            boolean javax1 = s1.startsWith(JAVAX_PREFIX);
+            boolean javax2 = s1.startsWith(JAVAX_PREFIX);
+            if (javax1 && !javax2) {
+                return -1;
+            } else if (!javax1 && javax2) {
+                return 1;
+            } else { 
+                return s1.compareTo(s2);
+            }
+        }
+        
+    }
+    
     static class InnerErrorListener {
 
         public void error(SAXParseException ex) {

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=1101526&r1=1101525&r2=1101526&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 Tue May 10 16:17:36 2011
@@ -35,7 +35,7 @@ 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_INTERFACENAME = "interfacename";
+    public static final String CFG_RESOURCENAME = "resourcename";
     
     public static final String CFG_WADLURL = "wadl";
     

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=1101526&r1=1101525&r2=1101526&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 Tue May 10 16:17:36 2011
@@ -89,6 +89,8 @@ public class JAXRSContainer extends Abst
             sg.setGenerateInterfaces(isInterface);
             sg.setGenerateImplementation(true);
         }
+        sg.setPackageName((String)context.get(WadlToolConstants.CFG_PACKAGENAME));
+        sg.setResourceName((String)context.get(WadlToolConstants.CFG_RESOURCENAME));
         
         // generate
         String codeType = context.optionSet(WadlToolConstants.CFG_TYPES)

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=1101526&r1=1101525&r2=1101526&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 Tue May 10 16:17:36 2011
@@ -36,11 +36,60 @@ public class JAXRSContainerTest extends 
     public void testCodeGenInterfaces() {
         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_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+            
+            verifyFiles("java", false, "org.apache.cxf.jaxrs.model.wadl");
+            //verifyFiles("class");
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+    
+    @Test    
+    public void testCodeGenNoIds() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
 
+            ToolContext context = new ToolContext();
             context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/singleResource.xml"));
+            context.put(WadlToolConstants.CFG_RESOURCENAME, "CustomResource");
+            
+            container.setContext(context);
+            container.execute();
 
+            assertNotNull(output.list());
+            
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+            assertEquals(1, files.size());
+            assertTrue(checkContains(files, "application.CustomResource.java"));
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+    
+    @Test    
+    public void testCodeGenInterfacesCustomPackage() {
+        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_PACKAGENAME, "custom.books");
             //context.put(WadlToolConstants.CFG_COMPILE, "true");
 
             container.setContext(context);
@@ -48,7 +97,7 @@ public class JAXRSContainerTest extends 
 
             assertNotNull(output.list());
             
-            verifyFiles("java", false);
+            verifyFiles("java", false, "custom.books");
             //verifyFiles("class");
             
         } catch (Exception e) {
@@ -61,10 +110,9 @@ public class JAXRSContainerTest extends 
     public void testCodeGenImpl() {
         try {
             JAXRSContainer container = new JAXRSContainer(null);
-            ToolContext context = new ToolContext();
 
+            ToolContext context = new ToolContext();
             context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
-
             context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
             context.put(WadlToolConstants.CFG_SERVER, "true");
             //context.put(WadlToolConstants.CFG_COMPILE, "true");
@@ -74,7 +122,7 @@ public class JAXRSContainerTest extends 
 
             assertNotNull(output.list());
             
-            verifyFiles("java", false);
+            verifyFiles("java", false, "org.apache.cxf.jaxrs.model.wadl");
             //verifyFiles("classes");
         } catch (Exception e) {
             fail();
@@ -86,10 +134,9 @@ public class JAXRSContainerTest extends 
     public void testCodeGenInterfaceAndImpl() {
         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_INTERFACE, "true");
             context.put(WadlToolConstants.CFG_SERVER, "true");
@@ -100,7 +147,7 @@ public class JAXRSContainerTest extends 
 
             assertNotNull(output.list());
             
-            verifyFiles("java", true);
+            verifyFiles("java", true, "org.apache.cxf.jaxrs.model.wadl");
             //verifyFiles("classes");
         } catch (Exception e) {
             fail();
@@ -112,10 +159,9 @@ public class JAXRSContainerTest extends 
     public void testCodeGenTypesOnly() {
         try {
             JAXRSContainer container = new JAXRSContainer(null);
-            ToolContext context = new ToolContext();
 
+            ToolContext context = new ToolContext();
             context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
-
             context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
             context.put(WadlToolConstants.CFG_TYPES, "true");
 
@@ -132,25 +178,26 @@ public class JAXRSContainerTest extends 
         }
     }
     
-    private void verifyFiles(String ext, boolean interfacesAndImpl) {
+    private void verifyFiles(String ext, boolean interfacesAndImpl, String resourcePackage) {
         List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
         assertEquals(interfacesAndImpl ? 9 : 7, files.size());
-        assertTrue(checkContains(files, "superbooks.Book." + ext));
-        assertTrue(checkContains(files, "superbooks.Book2." + ext));
-        assertTrue(checkContains(files, "superbooks.Chapter." + ext));
-        assertTrue(checkContains(files, "superbooks.ObjectFactory." + ext));
-        assertTrue(checkContains(files, "superbooks.package-info." + ext));
-        assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl.FormInterface." + ext));
-        assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl.BookStore." + ext));
+        doVerifyTypes(files, ext);
+        
+        assertTrue(checkContains(files, resourcePackage + ".FormInterface." + ext));
+        assertTrue(checkContains(files, resourcePackage + ".BookStore." + ext));
         if (interfacesAndImpl) {
-            assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl.FormInterfaceImpl." + ext));
-            assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl.BookStoreImpl." + ext));
+            assertTrue(checkContains(files, resourcePackage + ".FormInterfaceImpl." + ext));
+            assertTrue(checkContains(files, resourcePackage + ".BookStoreImpl." + ext));
         }
     }
     
     private void verifyTypes(String ext) {
         List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
         assertEquals(5, files.size());
+        doVerifyTypes(files, ext);
+    }
+    
+    private void doVerifyTypes(List<File> files, String ext) {
         assertTrue(checkContains(files, "superbooks.Book." + ext));
         assertTrue(checkContains(files, "superbooks.Book2." + ext));
         assertTrue(checkContains(files, "superbooks.Chapter." + ext));

Added: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/singleResource.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/singleResource.xml?rev=1101526&view=auto
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/singleResource.xml (added)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/singleResource.xml Tue May 10 16:17:36 2011
@@ -0,0 +1,16 @@
+<application xmlns="http://wadl.dev.java.net/2009/02" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:prefix1="http://superbooks">
+
+ <resources base="http://localhost:8080/baz">
+   <param name="id" style="template" type="xs:long"/>
+   <resource path="/bookstore/{id}">
+     <method name="GET">
+      <request/>
+      <response>
+       <representation mediaType="text/plain">
+        <param name="result" style="plain" type="xs:string"/>
+       </representation>
+      </response>
+    </method>
+   </resource>
+ </resources>  
+</application>

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

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

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