Hi
It is the problem with resolving ".." against the base URI, you can have
the schemas located in the same folder as the actual WADL or in child
folders, example, schemas/myschema.xsd.
I'll have a look later on and see if ".." can be supported too
Cheers, Sergey
On 02/04/13 16:45, Michael Lambert wrote:
The wadl2java tool does not seem to be able to handle relative paths to
schemas. When I try to execute: mvn generate-sources -X on a pom with the
following snippet:
<wadl:grammars>
<wadl:include href="store-locator-v1.xsd"/>
<!-- problem line.. note the elipses -->
<wadl:include href="../../common/faults-v1_0.xsd"/>
...
</wadl:grammers>
This exception stack is thrown:
[ERROR] Failed to execute goal
org.apache.cxf:cxf-wadl2java-plugin:2.5.2:wadl2java (generate-sources) on
project store-locator-rs-artifacts: java.lang.RuntimeException: Resource
jar:file:/home/lamberm/.m2/repository/com/dominos/ecommerce/schemas/0.0.1-SNAPSHOT/schemas-0.0.1-SNAPSHOT.jar!/services/store-locator/../../common/faults-v1_0.xsd
can not be read -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
goal org.apache.cxf:cxf-wadl2java-plugin:2.5.2:wadl2java (generate-sources)
on project store-locator-rs-artifacts: java.lang.RuntimeException: Resource
jar:file:/home/lamberm/.m2/repository/com/dominos/ecommerce/schemas/0.0.1-SNAPSHOT/schemas-0.0.1-SNAPSHOT.jar!/services/store-locator/../../common/faults-v1_0.xsd
can not be read
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException:
java.lang.RuntimeException: Resource
jar:file:/home/lamberm/.m2/repository/com/dominos/ecommerce/schemas/0.0.1-SNAPSHOT/schemas-0.0.1-SNAPSHOT.jar!/services/store-locator/../../common/faults-v1_0.xsd
can not be read
at
org.apache.cxf.maven_plugin.wadlto.AbstractCodeGeneratorMojo.callCodeGenerator(AbstractCodeGeneratorMojo.java:458)
at
org.apache.cxf.maven_plugin.wadlto.WADL2JavaMojo.execute(WADL2JavaMojo.java:101)
at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: org.apache.cxf.tools.common.ToolException:
java.lang.RuntimeException: Resource
jar:file:/home/lamberm/.m2/repository/com/dominos/ecommerce/schemas/0.0.1-SNAPSHOT/schemas-0.0.1-SNAPSHOT.jar!/services/store-locator/../../common/faults-v1_0.xsd
can not be read
at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:84)
at
org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
at org.apache.cxf.tools.wadlto.WADLToJava.run(WADLToJava.java:65)
at org.apache.cxf.tools.wadlto.WADLToJava.run(WADLToJava.java:57)
at
org.apache.cxf.maven_plugin.wadlto.AbstractCodeGeneratorMojo.callCodeGenerator(AbstractCodeGeneratorMojo.java:455)
... 22 more
Caused by: java.lang.RuntimeException: Resource
jar:file:/home/lamberm/.m2/repository/com/dominos/ecommerce/schemas/0.0.1-SNAPSHOT/schemas-0.0.1-SNAPSHOT.jar!/services/store-locator/../../common/faults-v1_0.xsd
can not be read
at
org.apache.cxf.jaxrs.ext.codegen.SourceGenerator.readIncludedDocument(SourceGenerator.java:1174)
at
org.apache.cxf.jaxrs.ext.codegen.SourceGenerator.getSchemaElements(SourceGenerator.java:1130)
at
org.apache.cxf.jaxrs.ext.codegen.SourceGenerator.generateSchemaCodeAndInfo(SourceGenerator.java:228)
at
org.apache.cxf.jaxrs.ext.codegen.SourceGenerator.generateSource(SourceGenerator.java:220)
at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.processWadl(JAXRSContainer.java:153)
at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:67)
at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:76)
If I place the problemed schema in the same directory as the wadl
everything behaves:
<wadl:grammars>
<wadl:include href="store-locator-v1.xsd"/>
<wadl:include href="faults-v1_0.xsd"/>
...
</wadl:grammers>
I am inlining the pom and wadl in case the list has problems with
attachments. I hope that is okay. Am I doing something wrong?
Thank you in Advance.
----
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>store-locator-rs-artifacts</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<artifactId>api-maven-base</artifactId>
<groupId>com.acme.ecommerce</groupId>
<version>0.1.4</version>
</parent>
<dependencies>
<dependency>
<groupId>com.acme.ecommerce</groupId>
<artifactId>schemas</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle-jaxrs</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-wadl2java-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
<wadlOptions>
<wadlOption>
<wadl>classpath:/services/store-locator/store-locator-wadl-v1.xml</wadl>
<extraargs>
<extraarg>-verbose</extraarg>
</extraargs>
<packagename>com.acme.ecommerce.store.locator.service.rs.version1</packagename>
<schemaPackagenames>
<schemaPackagename>urn:com:acme:ecommerce:wadl:store-locator:v1=com.acme.ecommerce.store.locator.service.rs.version1</schemaPackagename>
<schemaPackagename>urn:com:acme:ecommerce:schema:store-locator:v1=com.acme.ecommerce.store.locator.service.rs.version1</schemaPackagename>
</schemaPackagenames>
</wadlOption>
</wadlOptions>
</configuration>
<goals>
<goal>wadl2java</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only.
It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.cxf
</groupId>
<artifactId>
cxf-wadl2java-plugin
</artifactId>
<versionRange>
[2.5.1,)
</versionRange>
<goals>
<goal>wadl2java</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
----
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wadl:application
xmlns="urn:com:acme:ecommerce:wadl:store-locator:v1"
targetNamespace="urn:com:acme:ecommerce:wadl:store-locator:v1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:store-locator-v1="urn:com:acme:ecommerce:schema:store-locator:v1"
xmlns:wadl="http://wadl.dev.java.net/2009/02">
<wadl:doc xml:lang="en" title="Version 1.0"/>
<wadl:grammars>
<wadl:include href="store-locator-v1.xsd"/>
<wadl:include href="../../common/faults-v1_0.xsd"/>
<xsd:schema
xmlns="urn:com:acme:ecommerce:wadl:store-locator:v1"
targetNamespace="urn:com:acme:ecommerce:wadl:store-locator:v1">
<xsd:simpleType name="StoreLocatorQueryEnumType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="find_by_geocode"/>
<xsd:enumeration value="find_by_address"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wadl:grammars>
<wadl:resources base="http://store-locator.acme.com">
<wadl:resource path="/store" id="StoreLocator">
<wadl:method href="#findByQuery"/>
</wadl:resource>
</wadl:resources>
<wadl:method name="GET" id="findByQuery">
<wadl:request>
<wadl:doc xml:lang="en" title="Find by query parameters. Valid queries are
'find by geocode' and 'find by geographic address'"/>
<!-- query name -->
<wadl:param name="q" style="query" type="StoreLocatorQueryEnumType"
required="true" />
<!-- geocode -->
<wadl:param name="latitude" style="query" type="xsd:double"
required="false" />
<wadl:param name="longitude" style="query" type="xsd:double"
required="false" />
<!-- geographic address -->
<wadl:param name="address_line_1" style="query" required="false" />
<wadl:param name="address_line_2" style="query" required="false" />
<wadl:param name="address_line_3" style="query" required="false" />
<wadl:param name="city" style="query" required="false" />
<wadl:param name="region" style="query" required="false" />
<wadl:param name="postal_code" style="query" required="false" />
<wadl:param name="country" style="query" required="false" />
</wadl:request>
<wadl:response>
<wadl:representation status="200"
mediaType="application/vnd.com.acme.ecommerce.store-locator-result+json;version=1.0"
element="store-locator-v1:StoreLocatorResultList"/>
<!--
<wadl:fault id="BadOrMissingValue" status="400"
mediaType="application/vnd.com.acme.ecommerce.common+json;version=1.0"
element="faults-v1_0:ValidationFault"/>
<wadl:fault id="NotAuthorized" status="403"
mediaType="application/vnd.com.acme.ecommerce.common+json;version=1.0"
element="faults-v1_0:NotAuthorizedFault"/>
<wadl:fault id="NotFound" status="404"
mediaType="application/vnd.com.acme.ecommerce.common+json;version=1.0"
element="faults-v1_0:NoEntityFoundFault"/>
<wadl:fault id="CanNotPerform" status="500"
mediaType="application/vnd.com.acme.ecommerce.common+json;version=1.0"
element="faults-v1_0:CanNotPerformFault"/>
-->
</wadl:response>
</wadl:method>
</wadl:application>
----
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com