Hey, I could fix and I created a PR: https://github.com/apache/tomee/pull/454
Could someone help me on how to create a test on this? Thank you. On Mon, Apr 1, 2019 at 1:01 PM Otávio Gonçalves de Santana < osant...@tomitribe.com> wrote: > > I tried a workaround to ignore at CdiScanner, however, even if this code > is still loading the class. > > if(!clazz.getName().equals("org.apache.geronimo.microprofile.openapi.cdi.GeronimoOpenAPIExtension")) > { > classes.add(clazz); > } > > > However, that still send the information to OpenWebBeans. My next step is > to try at the *OpenEJBLifecycle*. > > On Fri, Mar 29, 2019 at 5:45 PM Otávio Gonçalves de Santana < > osant...@tomitribe.com> wrote: > >> >> >> I created the TomEEOpenAPIExtension that wrapper the >> GeronimoOpenAPIExtension. >> >> My question is, how can I shut down the GeronimoOpenAPIExtension >> extension? >> >> I tried to append this value at system.properties: >> >> openejb.classloader.forced-skip=org.apache.geronimo.microprofile.openapi.cdi >> But it does not work. >> >> I need to ignore the GeronimoOpenAPIExtension, to avoid the duplicated >> creation of Bean at CDI. >> >> >> >> On Fri, Mar 29, 2019 at 9:52 AM Otávio Gonçalves de Santana < >> osant...@tomitribe.com> wrote: >> >>> Unfortunately, this approach does not work. >>> >>> >>> ProxyFactory proxyFactory = new ProxyFactory(); >>> proxyFactory.setSuperclass(Application.class); >>> proxyFactory.setFilter(new MethodFilter() { >>> public boolean isHandled(Method m) { >>> return !m.getName().equals("finalize"); >>> } >>> }); >>> Class aClass = proxyFactory.createClass(); >>> >>> MethodHandler mi = new MethodHandler() { >>> public Object invoke(Object self, Method m, Method proceed, >>> Object[] args) throws Throwable { >>> //wrap the getClass() >>> return proceed.invoke(self, args); >>> } >>> }; >>> Application foo = (Application)aClass.newInstance(); >>> ((ProxyObject)foo).setHandler(mi); >>> Class<? extends Application> aClass1 = foo.getClass(); >>> >>> >>> I'll try another strategy. >>> >>> >>> On Thu, Mar 28, 2019 at 2:39 PM Otávio Gonçalves de Santana < >>> osant...@tomitribe.com> wrote: >>> >>>> One possible solution is the Javassist <http://www.javassist.org/>. >>>> Therefore, I can create a proxy on a class. >>>> >>>> ProxyFactory factory = new ProxyFactory(); >>>> factory.setSuperclass(Application.class); >>>> factory.setFilter( >>>> new MethodFilter() { >>>> @Override >>>> public boolean isHandled(Method method) { >>>> return true; >>>> } >>>> } >>>> ); >>>> >>>> MethodHandler handler = new MethodHandler() { >>>> @Override >>>> public Object invoke(Object self, Method thisMethod, Method proceed, >>>> Object[] args) throws Throwable { >>>> //the logic here >>>> } >>>> }; >>>> >>>> Application application = (Application) factory.create(new Class<?>[0], >>>> new Object[0], handler); >>>> >>>> >>>> That is possible, but it does not look good. I'll try another option. >>>> Also, we need to include this library on the Server. >>>> >>>> Thoughts? >>>> >>>> On Thu, Mar 28, 2019 at 10:45 AM Otávio Gonçalves de Santana < >>>> osant...@tomitribe.com> wrote: >>>> >>>>> The InternalApplication is required, because, at RESTService it needs >>>>> to add classes as a wrapper. >>>>> My first thought is to create a proxy, however, Application is a class >>>>> and not an interface. >>>>> >>>>> On Thu, Mar 28, 2019 at 9:43 AM Otávio Gonçalves de Santana < >>>>> osant...@tomitribe.com> wrote: >>>>> >>>>>> Yes, there is this line that does not do this verification: >>>>>> >>>>>> application = !InternalApplication.class.isInstance(application) ? new >>>>>> InternalApplication(application) : application; >>>>>> >>>>>> >>>>>> >>>>>> https://github.com/apache/tomee/blob/master/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java#L224 >>>>>> >>>>>> On Thu, Mar 28, 2019 at 1:07 AM Daniel Cunha <daniels...@apache.org> >>>>>> wrote: >>>>>> >>>>>>> It is not injecting the config values for >>>>>>> org.microprofileext.openapi.swaggerui.Templates and yes, >>>>>>> using openejb.cxf-rs.cache-application=false the issue still >>>>>>> happening. >>>>>>> Interesting.. >>>>>>> >>>>>>> Em qua, 27 de mar de 2019 às 18:24, Otávio Gonçalves de Santana < >>>>>>> osant...@tomitribe.com> escreveu: >>>>>>> >>>>>>> > My maven configuration: >>>>>>> > >>>>>>> > <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> >>>>>>> > >>>>>>> > <groupId>org.superbiz</groupId> >>>>>>> > <artifactId>env-tomee</artifactId> >>>>>>> > <packaging>war</packaging> >>>>>>> > >>>>>>> > <name>OpenEJB</name> >>>>>>> > <description>OpenEJB :: Web Examples</description> >>>>>>> > <version>0.0.1-SNAPSHOT</version> >>>>>>> > <url>http://tomee.apache.org</url> >>>>>>> > >>>>>>> > <properties> >>>>>>> > >>>>>>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> >>>>>>> > <tomee.version>8.0.0-M2</tomee.version> >>>>>>> > </properties> >>>>>>> > >>>>>>> > <build> >>>>>>> > <finalName>env-tomee</finalName> >>>>>>> > <plugins> >>>>>>> > <plugin> >>>>>>> > <groupId>org.apache.maven.plugins</groupId> >>>>>>> > <artifactId>maven-compiler-plugin</artifactId> >>>>>>> > <version>3.5.1</version> >>>>>>> > <configuration> >>>>>>> > <source>1.8</source> >>>>>>> > <target>1.8</target> >>>>>>> > </configuration> >>>>>>> > </plugin> >>>>>>> > <plugin> >>>>>>> > <groupId>org.apache.maven.plugins</groupId> >>>>>>> > <artifactId>maven-war-plugin</artifactId> >>>>>>> > <version>3.1.0</version> >>>>>>> > </plugin> >>>>>>> > </plugins> >>>>>>> > </build> >>>>>>> > >>>>>>> > <repositories> >>>>>>> > <repository> >>>>>>> > <id>apache-m2-snapshot</id> >>>>>>> > <name>Apache Snapshot Repository</name> >>>>>>> > <url> >>>>>>> https://repository.apache.org/content/groups/snapshots >>>>>>> > </url> >>>>>>> > <snapshots> >>>>>>> > <enabled>true</enabled> >>>>>>> > </snapshots> >>>>>>> > </repository> >>>>>>> > </repositories> >>>>>>> > >>>>>>> > <pluginRepositories> >>>>>>> > <pluginRepository> >>>>>>> > <id>apache.snapshots</id> >>>>>>> > <url>http://repository.apache.org/snapshots/</url> >>>>>>> > </pluginRepository> >>>>>>> > </pluginRepositories> >>>>>>> > >>>>>>> > <dependencies> >>>>>>> > <dependency> >>>>>>> > <groupId>org.apache.tomee</groupId> >>>>>>> > <artifactId>javaee-api</artifactId> >>>>>>> > <version>8.0</version> >>>>>>> > <scope>provided</scope> >>>>>>> > </dependency> >>>>>>> > <dependency> >>>>>>> > <groupId>org.eclipse.microprofile.openapi</groupId> >>>>>>> > <artifactId>microprofile-openapi-api</artifactId> >>>>>>> > <version>1.1.2</version> >>>>>>> > <scope>provided</scope> >>>>>>> > </dependency> >>>>>>> > <dependency> >>>>>>> > <groupId>org.microprofile-ext.openapi-ext</groupId> >>>>>>> > <artifactId>swagger-ui</artifactId> >>>>>>> > <version>1.0.1</version> >>>>>>> > </dependency> >>>>>>> > </dependencies> >>>>>>> > </project> >>>>>>> > >>>>>>> > >>>>>>> > My code: >>>>>>> > >>>>>>> > @ApplicationPath("api")@OpenAPIDefinition(info = @Info( >>>>>>> > title = "Example application", >>>>>>> > version = "1.0.0", >>>>>>> > contact = @Contact( >>>>>>> > name = "Otavio", >>>>>>> > email = "ota...@otavio.com", >>>>>>> > url = "http://www.otaviojava.com.br") >>>>>>> > ), >>>>>>> > servers = { >>>>>>> > @Server(url = "/example", description = >>>>>>> "localhost") >>>>>>> > } >>>>>>> > )public class MVCApplication extends Application { >>>>>>> > } >>>>>>> > >>>>>>> > >>>>>>> @Path("envs")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)@Tag(name >>>>>>> > = "Config Retrieval service", description = "Get the value for a >>>>>>> > certain config")public class EnvironmentResource { >>>>>>> > >>>>>>> > @GET >>>>>>> > @Operation(description = "Get the envs") >>>>>>> > @APIResponses({ >>>>>>> > @APIResponse(responseCode = "200", description = >>>>>>> > "Successful, returning the value") >>>>>>> > }) >>>>>>> > public Map<String, String> getEnvs() { >>>>>>> > return System.getenv(); >>>>>>> > } >>>>>>> > >>>>>>> > @GET >>>>>>> > @Path("/{key}") >>>>>>> > @Operation(description = "Get the value for this key") >>>>>>> > @APIResponses({ >>>>>>> > @APIResponse(responseCode = "200", description = >>>>>>> > "Successful, returning the value") >>>>>>> > }) >>>>>>> > @Produces(MediaType.TEXT_PLAIN) >>>>>>> > public Response getConfigValue(@PathParam("key") String key) { >>>>>>> > return Response.ok(key).build(); >>>>>>> > } >>>>>>> > >>>>>>> > } >>>>>>> > >>>>>>> > >>>>>>> > On Wed, Mar 27, 2019 at 5:11 PM Daniel Cunha < >>>>>>> daniels...@apache.org> >>>>>>> > wrote: >>>>>>> > >>>>>>> > > Can you guys push your sample? >>>>>>> > > >>>>>>> > > On Wed, Mar 27, 2019, 4:58 PM Otávio Gonçalves de Santana < >>>>>>> > > osant...@tomitribe.com> wrote: >>>>>>> > > >>>>>>> > > > Hey Ivan. >>>>>>> > > > I tried something, and I saw the same issue. It seems this >>>>>>> by-pass does >>>>>>> > > not >>>>>>> > > > work. >>>>>>> > > > >>>>>>> > > > On Mon, Feb 11, 2019 at 11:18 AM Ivan Junckes Filho < >>>>>>> > > ivanjunc...@gmail.com >>>>>>> > > > > >>>>>>> > > > wrote: >>>>>>> > > > >>>>>>> > > > > It didn't seem to work for me adding the property to >>>>>>> > system.properties. >>>>>>> > > > Any >>>>>>> > > > > ideas what I am doing wrong? >>>>>>> > > > > >>>>>>> > > > > On Sat, Feb 9, 2019 at 10:21 AM Roberto Cortez < >>>>>>> radcor...@yahoo.com> >>>>>>> > > > > wrote: >>>>>>> > > > > >>>>>>> > > > > > Hi Ivan, >>>>>>> > > > > > >>>>>>> > > > > > Yes Romain is right, you should set >>>>>>> > openejb.cxf-rs.cache-application >>>>>>> > > = >>>>>>> > > > > > false and it should work. We had to set that for the TCK >>>>>>> to pass, >>>>>>> > but >>>>>>> > > > the >>>>>>> > > > > > config never reached the final distribution. I did notice >>>>>>> that and >>>>>>> > > I’ve >>>>>>> > > > > > added it in case a MP app is detected, but it was after M2 >>>>>>> was >>>>>>> > > > released. >>>>>>> > > > > > >>>>>>> > > > > > Cheers, >>>>>>> > > > > > Roberto >>>>>>> > > > > > >>>>>>> > > > > > On 8 Feb 2019, at 21:06, Ivan Junckes Filho < >>>>>>> ivanjunc...@gmail.com >>>>>>> > > >>>>>>> > > > > wrote: >>>>>>> > > > > > >>>>>>> > > > > > I will take a look thanks again Romain >>>>>>> > > > > > >>>>>>> > > > > > On Fri, Feb 8, 2019 at 4:38 PM Romain Manni-Bucau < >>>>>>> > > > rmannibu...@gmail.com >>>>>>> > > > > > >>>>>>> > > > > > wrote: >>>>>>> > > > > > >>>>>>> > > > > >> Hey, just recalled we had a flag about it, >>>>>>> > > > > >> >>>>>>> > > > > >> you can skip it setting >>>>>>> openejb.cxf-rs.cache-application=false >>>>>>> > > > > >> >>>>>>> > > > > >> Romain Manni-Bucau >>>>>>> > > > > >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>>>>>> > > > > >> <https://rmannibucau.metawerx.net/> | Old Blog >>>>>>> > > > > >> <http://rmannibucau.wordpress.com> | Github < >>>>>>> > > > > >> https://github.com/rmannibucau> | >>>>>>> > > > > >> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book >>>>>>> > > > > >> < >>>>>>> > > > > >> >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> https://www.packtpub.com/application-development/java-ee-8-high-performance >>>>>>> > > > > >> > >>>>>>> > > > > >> >>>>>>> > > > > >> >>>>>>> > > > > >> Le ven. 8 févr. 2019 à 19:01, Ivan Junckes Filho < >>>>>>> > > > ivanjunc...@gmail.com >>>>>>> > > > > > >>>>>>> > > > > >> a >>>>>>> > > > > >> écrit : >>>>>>> > > > > >> >>>>>>> > > > > >> > Interesting, ok thanks Romain. >>>>>>> > > > > >> > >>>>>>> > > > > >> > On Fri, Feb 8, 2019 at 3:29 PM Romain Manni-Bucau < >>>>>>> > > > > >> rmannibu...@gmail.com> >>>>>>> > > > > >> > wrote: >>>>>>> > > > > >> > >>>>>>> > > > > >> >> Hi Ivan, >>>>>>> > > > > >> >> >>>>>>> > > > > >> >> In a few cases - don't recall out of my head if it is >>>>>>> all - >>>>>>> > TomEE >>>>>>> > > > > wraps >>>>>>> > > > > >> >> user application in InternalApplication. IIRC it was >>>>>>> for >>>>>>> > caching >>>>>>> > > > > >> reason - >>>>>>> > > > > >> >> TomEE not being super cleanly aligned on CDI + to >>>>>>> avoid to get >>>>>>> > > > > multiple >>>>>>> > > > > >> >> instances between runtime and deployment which can >>>>>>> break user >>>>>>> > > code. >>>>>>> > > > > >> >> Enhancing TomEE to no do it anymore or not use a >>>>>>> wrapper when >>>>>>> > not >>>>>>> > > > > >> needed >>>>>>> > > > > >> >> can be a first step fixing that. >>>>>>> > > > > >> >> >>>>>>> > > > > >> >> Romain Manni-Bucau >>>>>>> > > > > >> >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>>>>>> > > > > >> >> <https://rmannibucau.metawerx.net/> | Old Blog >>>>>>> > > > > >> >> <http://rmannibucau.wordpress.com> | Github >>>>>>> > > > > >> >> <https://github.com/rmannibucau> | LinkedIn >>>>>>> > > > > >> >> <https://www.linkedin.com/in/rmannibucau> | Book >>>>>>> > > > > >> >> < >>>>>>> > > > > >> >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> https://www.packtpub.com/application-development/java-ee-8-high-performance >>>>>>> > > > > >> > >>>>>>> > > > > >> >> >>>>>>> > > > > >> >> >>>>>>> > > > > >> >> Le ven. 8 févr. 2019 à 18:14, Ivan Junckes Filho < >>>>>>> > > > > >> ivanjunc...@gmail.com> >>>>>>> > > > > >> >> a écrit : >>>>>>> > > > > >> >> >>>>>>> > > > > >> >>> The @OpenAPIDefinition is not being picked up by the >>>>>>> CDI >>>>>>> > > extension >>>>>>> > > > > >> >>> because it is only getting InternalApplication >>>>>>> instead of >>>>>>> > > picking >>>>>>> > > > up >>>>>>> > > > > >> my >>>>>>> > > > > >> >>> custom Application config. Any ideas why? >>>>>>> OpenAPIDefinition >>>>>>> > > > configs >>>>>>> > > > > >> are >>>>>>> > > > > >> >>> therefore not showing up in the openapi doc. >>>>>>> > > > > >> >>> >>>>>>> > > > > >> >>> >>>>>>> > > > > >> >>> @OpenAPIDefinition(info = >>>>>>> > > > > >> >>> @Info( >>>>>>> > > > > >> >>> title = "TEST", >>>>>>> > > > > >> >>> version = "2.0", >>>>>>> > > > > >> >>> description = "Pet Store App API", >>>>>>> > > > > >> >>> license = @License( >>>>>>> > > > > >> >>> name = "Apache 2.0", >>>>>>> > > > > >> >>> url = " >>>>>>> > > > > >> http://www.apache.org/licenses/LICENSE-2.0.html"), >>>>>>> > > > > >> >>> contact = @Contact( >>>>>>> > > > > >> >>> name = "PetStore API Support", >>>>>>> > > > > >> >>> url = " >>>>>>> > > > > >> https://github.com/eclipse/microprofile-open-api", >>>>>>> > > > > >> >>> email = "supp...@petstore.com >>>>>>> ") >>>>>>> > > > > >> >>> ), >>>>>>> > > > > >> >>> security = @SecurityRequirement(name = >>>>>>> "oauth2"), >>>>>>> > > > > >> >>> servers = @Server(url = "/test/")) >>>>>>> > > > > >> >>> @ApplicationPath("/api") >>>>>>> > > > > >> >>> @LoginConfig(authMethod = "MP-JWT") >>>>>>> > > > > >> >>> public class ApplicationConfiguration extends >>>>>>> Application { >>>>>>> > > > > >> >>> >>>>>>> > > > > >> >>> >>>>>>> > > > > >> >>>>>>> > > > > > >>>>>>> > > > > > >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Daniel "soro" Cunha >>>>>>> https://twitter.com/dvlc_ >>>>>>> >>>>>>