Hi
Tried with the 3.1.13 libs and now i fail on:
[exec] Caused by: java.lang.ClassNotFoundException:
org.apache.cxf.jaxrs.model.wadl.WadlGenerator
And i see it under cxf-rt-rs-service-description-3.1.13.jar
Not sure i will be able to "test" this locally so my next question is - do you
plan to add it to future release, and if so when can i expect it (give or take
:-) )?
Thanks,
Eyal
-----Original Message-----
From: Sergey Beryozkin [mailto:[email protected]]
Sent: 07 November, 2017 12:02
To: Eyal Weingart <[email protected]>; users
<[email protected]>
Subject: Re: cxf-java2wadl-plugin java2wadl questions
Hi
Well, something is going wrong there given this class in the cxf-core.
You only need to get the snapshot of the cxf-java2wadl-plugin, it will work OK
with other existing 3.1.13 libs
Sergey
On 07/11/17 07:52, Eyal Weingart wrote:
> Hi Sergey
>
> We've taken 3.1.14-20171106.085950 jars but still failing (see below).
> So for the use of "cxf-java2wadl-plugin" I've taken also
> "cxf-rt-rs-service-description" and "cxf-core" with same snapshot releases
> (just to make sure) but did not help.
> Ami i missing something?
>
> [exec] WARNING: Error injecting:
> org.apache.cxf.maven_plugin.javatowadl.Java2WADLMojo
> [exec] java.lang.NoClassDefFoundError: org/apache/cxf/Bus
> [exec] at java.lang.Class.getDeclaredMethods0(Native Method)
> [exec] at
> java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
> [exec] at java.lang.Class.getDeclaredMethods(Class.java:1975)
> [exec] at
> com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:664)
> [exec] at
> com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:358)
> [exec] at
> com.google.inject.internal.ConstructorBindingImpl.getInternalDependencies(ConstructorBindingImpl.java:155)
> [exec] at
> com.google.inject.internal.InjectorImpl.getInternalDependencies(InjectorImpl.java:585)
> [exec] at
> com.google.inject.internal.InjectorImpl.cleanup(InjectorImpl.java:542)
> [exec] at
> com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:528)
> [exec] at
> com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:833)
> [exec] at
> com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:758)
> [exec] at
> com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:255)
> [exec] at
> com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:204)
> [exec] at
> com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:954)
> [exec] at
> com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:987)
> [exec] at
> com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:950)
> [exec] at
> com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1000)
> [exec] at
> org.sonatype.guice.bean.reflect.AbstractDeferredClass.get(AbstractDeferredClass.java:45)
> [exec] at
> com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:84)
> [exec] at
> com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:52)
> [exec] at
> com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:70)
> [exec] at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:100)
> [exec] at
> org.sonatype.guice.plexus.lifecycles.PlexusLifecycleManager.onProvision(PlexusLifecycleManager.java:138)
> [exec] at
> com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:108)
> [exec] at
> com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:55)
> [exec] at
> com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:68)
> [exec] at
> com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
> [exec] at
> com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965)
> [exec] at
> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011)
> [exec] at
> com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961)
> [exec] at com.google.inject.Scopes$1$1.get(Scopes.java:59)
> [exec] at
> org.sonatype.guice.bean.locators.LazyBeanEntry.getValue(LazyBeanEntry.java:83)
> [exec] at
> org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:49)
> [exec] at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:253)
> [exec] at
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:245)
> [exec] at
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:455)
> [exec] at
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:92)
> [exec] at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
> [exec] at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
> [exec] at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
> [exec] at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
> [exec] at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
> [exec] at
> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
> [exec] at
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
> [exec] at
> org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
> [exec] at
> org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
> [exec] at
> org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
> [exec] at
> org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
> [exec] at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
> [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> [exec] at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> [exec] at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [exec] at java.lang.reflect.Method.invoke(Method.java:498)
> [exec] at
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
> [exec] at
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
> [exec] at
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
> [exec] at
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
> [exec] Caused by: java.lang.ClassNotFoundException:
> org.apache.cxf.Bus
> [exec] at
> org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
> [exec] at
> org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
> [exec] at
> org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
>
> Thanks,
> Eyal
>
> -----Original Message-----
> From: Sergey Beryozkin [mailto:[email protected]]
> Sent: 01 November, 2017 16:58
> To: Eyal Weingart <[email protected]>; users
> <[email protected]>
> Subject: Re: cxf-java2wadl-plugin java2wadl questions
>
> Hi
>
> You can get it from
>
> https://repository.apache.org/content/groups/snapshots/org/apache/cxf/
> cxf-java2wadl-plugin/3.1.14-SNAPSHOT/
>
> Sergey
> On 01/11/17 14:27, Eyal Weingart wrote:
>> Hi Sergey,
>>
>> I'm struggling here with downloading it thru the maven build (i was
>> told that in my local environment i'm connecting only to a local maven
>> repository) Is it possible to send me the jar for this snapshot version so
>> we can upload it to our local maven repository and then work with it?
>>
>>
>> Thanks,
>> Eyal
>>
>>
>> -----Original Message-----
>> From: Sergey Beryozkin [mailto:[email protected]]
>> Sent: 23 October, 2017 12:19
>> To: Eyal Weingart <[email protected]>; users
>> <[email protected]>
>> Subject: Re: cxf-java2wadl-plugin java2wadl questions
>>
>> Hi, I think you'll need to enable the snapshot repositories
>>
>> Sergey
>> On 22/10/17 09:14, Eyal Weingart wrote:
>>> Hi Sergey
>>>
>>> Should i download something manually for the 3.1.14-SNAPSHOT version (and
>>> if so how and from where)?
>>> Because i'm trying to do it thru the maven build (defining the version of
>>> the artifact as 3.1.14-SNAPSHOT) and it does not download this version.
>>>
>>> And it comes with the below error (of course) :
>>> Plugin org.apache.cxf:cxf-java2wadl-plugin:3.1.14-SNAPSHOT or one of
>>> its dependencies could not be resolved: Failed to read artifact descriptor
>>> for org.apache.cxf:cxf-java2wadl- plugin:jar:3.1.14-SNAPSHOT: Could
>>> not find artifact org.apache.cxf:cxf-java2wadl-plugin:pom:3.1.14-SNAPSHOT in
>>>
>>>
>>> Thanks,
>>> Eyal
>>>
>>>
>>> -----Original Message-----
>>> From: Sergey Beryozkin [mailto:[email protected]]
>>> Sent: 19 October, 2017 17:01
>>> To: Eyal Weingart <[email protected]>; users
>>> <[email protected]>
>>> Subject: Re: cxf-java2wadl-plugin java2wadl questions
>>>
>>> Np, by the way, the custom provider will need to have a constructor
>>> accepting 'Bus' which it can provide to the super...
>>>
>>> Sergey
>>> On 19/10/17 14:06, Eyal Weingart wrote:
>>>> Thanks a lot!
>>>> I will check this on Sunday (leaving for the weekend) and will let
>>>> you know Working currently with version 3.1.4 and not 3.1.14 so will need
>>>> to fix some dependencies so my build will not fail...
>>>>
>>>> Thanks,
>>>> Eyal
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: Sergey Beryozkin [mailto:[email protected]]
>>>> Sent: 19 October, 2017 15:20
>>>> To: Eyal Weingart <[email protected]>; users
>>>> <[email protected]>
>>>> Subject: Re: cxf-java2wadl-plugin java2wadl questions
>>>>
>>>> Hi Eyal
>>>> On 19/10/17 09:47, Eyal Weingart wrote:
>>>>> Hi Sergey
>>>>>
>>>>> 1. Do you see a future option to custom the WADL generator class
>>>>> during the maven build? If so, what is a reasonable timeline for this?
>>>>> (Just to know how to plan ahead)
>>>>>
>>>> I've added a 'customWadlGenerator' parameter, give 3.1.14-SNAPSHOT
>>>> or 3.2.1-SNAPSHOT a try
>>>>> 2. Regarding the "classResourceNames" and multiple WADL files question, i
>>>>> think i was misunderstood, it is not that each rest class holds 1
>>>>> service, i meant that each rest class holds
>>>>> 1 business with few operations.
>>>>> For example, 1 class holds books operations, another class holds
>>>>> teachers operations and another class will hold course operations - so
>>>>> our expectation is that we should have
>>>>> 3 separate WADLs generated - what do you think?
>>>>>
>>>> That is fine, it is just that it can't be really solved at the
>>>> WADLGenerator level - in your case the separation may be clean, in
>>>> other cases - may be not. And from the practical point of view it
>>>> will push the already very complex WADLGenerator code to the limit
>>>> if we started trying updating it to push the info to many files
>>>>
>>>> Thanks, Sergey
>>>>>
>>>>> Thanks,
>>>>> Eyal
>>>>>
>>>>>
>>>>> -----Original Message-----
>>>>> From: Eyal Weingart
>>>>> Sent: 18 October, 2017 13:47
>>>>> To: Sergey Beryozkin <[email protected]>; users
>>>>> <[email protected]>
>>>>> Subject: RE: cxf-java2wadl-plugin java2wadl questions
>>>>>
>>>>> Well, actually i was referring to applicative error codes (and
>>>>> their
>>>>> descriptions) - that might be useful by users so can they
>>>>> understand the exact issue
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Eyal
>>>>>
>>>>>
>>>>> -----Original Message-----
>>>>> From: Sergey Beryozkin [mailto:[email protected]]
>>>>> Sent: 18 October, 2017 12:44
>>>>> To: Eyal Weingart <[email protected]>; users
>>>>> <[email protected]>
>>>>> Subject: Re: cxf-java2wadl-plugin java2wadl questions
>>>>>
>>>>> That said, while customizing a response serialization in order to show
>>>>> the extra statuses can help users see them, one can document it as well.
>>>>>
>>>>> For example, I do not see how the information that a given response can
>>>>> return 405 can be practically used. Well, one can type for example a 405
>>>>> catch block on the client knowing 405 can be returned, but I'm not sure
>>>>> what difference it makes, where this 405 info is located in the response
>>>>> statuses or in the docs...
>>>>>
>>>>> Cheers, Sergey
>>>>> On 18/10/17 10:37, Sergey Beryozkin wrote:
>>>>>> I forgot it's really about using a Maven plugin.
>>>>>> Hmm...I guess we may need to support a custom class...
>>>>>>
>>>>>> Sergey
>>>>>> On 18/10/17 07:06, Eyal Weingart wrote:
>>>>>>> Thanks again.
>>>>>>> Regarding: "Create MyWadlGenerator extending WADLGenerator,
>>>>>>> override whatever is needed, and register MyWadlGenerator as a
>>>>>>> jaxrs:provider"
>>>>>>> Where exactly do i need to register the MyWadlGenerator as a
>>>>>>> jaxrs:provider? I saw it can be done in a spring file that
>>>>>>> serves cases for WADL Auto Generation at Runtime.
>>>>>>> But where/how should i do it in the pom.xml for the
>>>>>>> cxf-java2wadl-plugin in order for it to be activated during
>>>>>>> build time
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Eyal
>>>>>>>
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Sergey Beryozkin [mailto:[email protected]]
>>>>>>> Sent: 17 October, 2017 17:48
>>>>>>> To: Eyal Weingart <[email protected]>; users
>>>>>>> <[email protected]>
>>>>>>> Subject: Re: cxf-java2wadl-plugin java2wadl questions
>>>>>>>
>>>>>>> Hi,
>>>>>>> On 17/10/17 15:28, Eyal Weingart wrote:
>>>>>>>> Thanks Sergey for the quick response.
>>>>>>>>
>>>>>>>> 1. Regarding the customization option, one example i can think
>>>>>>>> of (and it relates to issue#2 below) is that we want to use
>>>>>>>> multiple DocTarget.RESPONSE in order to display multiple error
>>>>>>>> codes and since the generic code does not support it then this
>>>>>>>> logic could have been applied in the customization class.
>>>>>>>>
>>>>>>> Well, there are so many possible customization points that one
>>>>>>> can think of, some parts like the docs can be easier customized
>>>>>>> than others, but FYI, nearly all of if not all of methods in
>>>>>>> WADLGenerator are protected.
>>>>>>> Create MyWadlGenerator extending WADLGenerator, override
>>>>>>> whatever is needed, and register MyWadlGenerator as a
>>>>>>> jaxrs:provider
>>>>>>>
>>>>>>>> 3. Sorry, but did not understand the answer regarding
>>>>>>>> generating
>>>>>>>> 1 WADL per 1 Rest API class.
>>>>>>>> Each Rest API class is a different service so don't
>>>>>>>> you think it should have the option to have its own WADL file?
>>>>>>>>
>>>>>>> It depends. They can be part of the composite service, and quite
>>>>>>> often, they can share the same (XML) schema types. It's not
>>>>>>> something WADLGenerator should be concerned about, trying to
>>>>>>> push each service docs into a separate file, and thinking of how
>>>>>>> to avoid the schema duplication.
>>>>>>>
>>>>>>> If, in your case, each class does indeed represent a standalone
>>>>>>> service, then IMHO it would be better to create N
>>>>>>> jaxrs:endpoints, one per each class, as opposed to having 1
>>>>>>> endpoint with N classes
>>>>>>>
>>>>>>> Sergey
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Eyal
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Sergey Beryozkin [mailto:[email protected]]
>>>>>>>> Sent: 17 October, 2017 00:06
>>>>>>>> To: users <[email protected]>
>>>>>>>> Cc: Eyal Weingart <[email protected]>
>>>>>>>> Subject: Re: cxf-java2wadl-plugin java2wadl questions
>>>>>>>>
>>>>>>>> Hi
>>>>>>>> On 16/10/17 12:35, Eyal Weingart wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Not sure to whom i need to send my Questions so hopefully one
>>>>>>>>> of you can help me.
>>>>>>>>>
>>>>>>>> Forwarding to the CXF users list
>>>>>>>>
>>>>>>>>> I want to use the maven plugin cxf-java2wadl-plugin in order
>>>>>>>>> to generate WADL from Java rest APIs in build time but i found
>>>>>>>>> few issues with that:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 1. Is there a way to custom the generator class so i can
>>>>>>>>> apply some business code during the build? (is it the
>>>>>>>>> org.apache.cxf.jaxrs.model.wadl.WadlGenerator that generates
>>>>>>>>> it?)
>>>>>>>>
>>>>>>>> What do you need to customize in the generated WADL ?
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2. When i use multiple DocTarget.RESPONSE in the rest API
>>>>>>>>> annotations then it generates only the first one it finds
>>>>>>>>>
>>>>>>>> Right, because WADLGenerator only creates a single
>>>>>>>> wadl:response per a given operation
>>>>>>>>>
>>>>>>>>> 3. If i define more than 1 classResourceNames in the
>>>>>>>>> configuration in the pom.xml then it generates all services
>>>>>>>>> under
>>>>>>>>> 1 application.wadl file so if i want 1 WADL file per 1 rest
>>>>>>>>> API class then i need to define multiple <execution> (1
>>>>>>>>> execution per
>>>>>>>>> 1 Rest
>>>>>>>>> class) - is there a nicer way of doing it?
>>>>>>>>>
>>>>>>>> There's no way to auto-gen 1 wadl per 1 class resource - it
>>>>>>>> would be hard to achieve because most likely these class
>>>>>>>> resources will share the schema
>>>>>>>>
>>>>>>>> Sergey
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Example of how i configured it in the pom.xml:
>>>>>>>>>
>>>>>>>>> <plugin>
>>>>>>>>>
>>>>>>>>> <groupId>org.apache.cxf</groupId>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> <artifactId>cxf-java2wadl-plugin</artifactId>
>>>>>>>>>
>>>>>>>>> <version>3.1.4</version>
>>>>>>>>>
>>>>>>>>> <executions>
>>>>>>>>>
>>>>>>>>> <execution>
>>>>>>>>>
>>>>>>>>> <id>process-classes1</id>
>>>>>>>>>
>>>>>>>>> <phase>process-classes</phase>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> <goals>
>>>>>>>>>
>>>>>>>>> <goal>java2wadl</goal>
>>>>>>>>>
>>>>>>>>> </goals>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> <configuration>
>>>>>>>>>
>>>>>>>>> <classResourceNames>
>>>>>>>>>
>>>>>>>>> <classResourceName>com.exlibris.primo.webservices.rest.EShelfR
>>>>>>>>> e
>>>>>>>>> s
>>>>>>>>> t
>>>>>>>>> A
>>>>>>>>> p
>>>>>>>>> i<
>>>>>>>>> /
>>>>>>>>> classResourceName>
>>>>>>>>>
>>>>>>>>> </classResourceNames>
>>>>>>>>>
>>>>>>>>> <applicationTitle>Primo</applicationTitle>
>>>>>>>>>
>>>>>>>>> <attachWadl>true</attachWadl>
>>>>>>>>>
>>>>>>>>> </configuration>
>>>>>>>>>
>>>>>>>>> </execution>
>>>>>>>>>
>>>>>>>>> </executions>
>>>>>>>>>
>>>>>>>>> </plugin>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks in advance
>>>>>>>>>
>>>>>>>>> Eyal
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Sergey Beryozkin
>>>>>>>>
>>>>>>>> Talend Community Coders
>>>>>>>> http://coders.talend.com/
>>>>>>>>
>>>
>>>
>>> --
>>> Sergey Beryozkin
>>>
>>> Talend Community Coders
>>> http://coders.talend.com/
>>>