cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eyal Weingart <Eyal.Weing...@exlibrisgroup.com>
Subject RE: cxf-java2wadl-plugin java2wadl questions
Date Tue, 07 Nov 2017 12:07:49 GMT
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:sberyozkin@gmail.com] 
Sent: 07 November, 2017 12:02
To: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>; users <users@cxf.apache.org>
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:sberyozkin@gmail.com]
> Sent: 01 November, 2017 16:58
> To: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>; users 
> <users@cxf.apache.org>
> 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:sberyozkin@gmail.com]
>> Sent: 23 October, 2017 12:19
>> To: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>; users 
>> <users@cxf.apache.org>
>> 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:sberyozkin@gmail.com]
>>> Sent: 19 October, 2017 17:01
>>> To: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>; users 
>>> <users@cxf.apache.org>
>>> 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:sberyozkin@gmail.com]
>>>> Sent: 19 October, 2017 15:20
>>>> To: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>; users 
>>>> <users@cxf.apache.org>
>>>> 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 <sberyozkin@gmail.com>; users 
>>>>> <users@cxf.apache.org>
>>>>> 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:sberyozkin@gmail.com]
>>>>> Sent: 18 October, 2017 12:44
>>>>> To: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>; users 
>>>>> <users@cxf.apache.org>
>>>>> 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:sberyozkin@gmail.com]
>>>>>>> Sent: 17 October, 2017 17:48
>>>>>>> To: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>; users

>>>>>>> <users@cxf.apache.org>
>>>>>>> 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:sberyozkin@gmail.com]
>>>>>>>> Sent: 17 October, 2017 00:06
>>>>>>>> To: users <users@cxf.apache.org>
>>>>>>>> Cc: Eyal Weingart <Eyal.Weingart@exlibrisgroup.com>
>>>>>>>> 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/
>>>
Mime
View raw message