OpenLiberty / open-liberty

Open Liberty is a highly composable, fast to start, dynamic application server runtime environment
https://openliberty.io
Eclipse Public License 2.0
1.15k stars 591 forks source link

JakartaEE: Transformer: Share jakarta-direct-properties with WildFly #14995

Open scottmarlow opened 3 years ago

scottmarlow commented 3 years ago

https://github.com/scottmarlow/open-liberty contains an initial change that syncs up with https://github.com/wildfly-extras/batavia/blob/master/impl/ecl/src/main/resources/org/wildfly/extras/transformer/eclipse/jakarta-direct.properties changes from https://github.com/wildfly-extras/batavia/pull/92.

https://github.com/wildfly-extras/batavia is an integration project that is now used in WildFly for integrating with the Eclipse Transformer.

The idea of this issue is for sharing jakarta-direct-properties settings. Make sense?

Note that Batavia is Apache License 2.0.

kwsutter commented 3 years ago

FYI, @scottmarlow is our community Jakarta EE 9 TCK lead. He's also been working with his Wildfly team to get them to 100%, much like I have been working with @brideck on our side. Through our conversations and his own investigations, he's found some differences on how Wildfly is using the Transformer versus the Open Liberty usage. This Issue is furthering that conversation. Is there someone on the Open Liberty side that could work with Scott to see if there's any synergy between these two Transformer usage scenarios? Maybe @tbitonti? @bjhargrave? Or, one of the OL developers?

volosied commented 3 years ago

Hi @scottmarlow, I'm Vlad. I've been working on the new EE9 Faces, Pages, Expression Language, and Servlet features of liberty with my team. We're updated the jakarta-direct-properties quite a few times, and I'd be help with this issue.

volosied commented 3 years ago

Hi again,

Just to confirm, I investigated the differences between the two jakarta-direct.properties files

I looked at the commit you linked. I see there are many additional transformations added for Jakarta Server Pages, Jakarta Expression Language, and Jakarta Servlet.

We pulled in the official Jakarta APIs, and the only transformations we have are for our IBM integration bundles and the implementations.

Not all the source code is visible in the projects (since our classes are pulled from various jars), so I decompiled our bundles and searched only for the javax.* strings constants. That’s how I made our list, so I can see how may appear incomplete since there are other constants, but I didn’t see them used in the code. Therefore, we didn’t include them. Some transformations are just the internal attributes, I believe.

Expression Langauge We pull in both the API and Implementation, and I didn’t see any need for transformations. However, I’m not sure about the Jasper generation code constants you included. That’s new to me.

Pages We transform the 2.3 implementation.

Servlet We transform the 4.0 implementation.

Since I wasn’t involved with Jakarta Persistence and Jakarta Messaging, I can’t comment on those transformations, but I can ask that team.

As a side note, the jakarta-direct.properties file is used for string constants, while jakarta-renames.properties can be used for both the class references and string constants. I think for the transformations we don't have in one file, the other one covers them.

volosied commented 3 years ago

@scottmarlow I may have misunderstood the request. I'm not following it will be shared. Are you looking to port the changes from Wildfly to Open Liberty so this file is synchronized? Can you elaborate? Thanks!

scottmarlow commented 3 years ago

Hi @volosied

Thanks for your response so far, I do appreciate the help! :+1:

@scottmarlow I may have misunderstood the request. I'm not following it will be shared. Are you looking to port the changes from Wildfly to Open Liberty so this file is synchronized? Can you elaborate? Thanks!

Thanks for asking. I'm thinking of being able to move changes in either direction, when either team feels like pulling recent changes from the other team. For example, if we missed adding some jakarta.servlet property name but later hit a problem that a javax.servlet.something property didn't get translated, we might look to see if Open Liberty handled that property and what other properties Open Liberty might of added to jakarta-direct-properties that we could use in the WildFly jakarta-direct-properties.

Any synchronizing of the jakarta-direct-properties file between WildFly and Open Liberty would only be done manually by us engineers, when we feel like doing so (perhaps in response to resolving application deployment issues or TCK failures).

If there is interest in having a pull request for the mentioned commit, I will look into what I need to do for getting approved to create pull requests.