[wildfly-dev] Pending core split

Jason Greene jason.greene at redhat.com
Tue Jul 1 10:26:53 EDT 2014


On Jul 1, 2014, at 9:03 AM, Stan Silvert <ssilvert at redhat.com> wrote:

> On 7/1/2014 9:55 AM, Bill Burke wrote:
>> 
>> On 7/1/2014 9:51 AM, Stan Silvert wrote:
>>> On 7/1/2014 9:46 AM, Bill Burke wrote:
>>>> On 7/1/2014 9:36 AM, Stan Silvert wrote:
>>>>>> "All this stuff" is really just Apache Http Client, Jackson and
>>>>>> Bouncycastle.
>>>>>> 
>>>>>> 
>>>>> Resteasy got pulled in as well.  Maybe that was an error on my part?
>>>> Resteasy is not required for the adapter.
>>>> 
>>>> 
>>> Then we've got a problem in a module.xml somwhere.
>>> 
>>> jackson-jaxrs depends on javax.ws.rs.ap depends on resteasy-jaxrs
>> Adapter doesn't depend on jackson-jaxrs either.
>> 
>> <module xmlns="urn:jboss:module:1.1"
>> name="org.keycloak.keycloak-undertow-adapter">
>>     <resources>
>>         <!-- Insert resources here -->
>>     </resources>
>>     <dependencies>
>>         <module name="javax.api"/>
>>         <module name="org.bouncycastle"/>
>>         <module name="org.codehaus.jackson.jackson-core-asl"/>
>>         <module name="org.codehaus.jackson.jackson-mapper-asl"/>
>>         <module name="org.codehaus.jackson.jackson-xc"/>
>>         <module name="org.apache.httpcomponents" />
>>         <module name="javax.servlet.api"/>
>>         <module name="org.jboss.logging"/>
>>         <module name="io.undertow.core"/>
>>         <module name="io.undertow.servlet"/>
>>         <module name="org.keycloak.keycloak-adapter-core"/>
>>         <module name="org.keycloak.keycloak-core"/>
>>     </dependencies>
>> 
>> </module>
>> 
>> 
>> I think you did some work to refactor the undertow adapter right?  So it
>> didn't need the servlet dependency?
> Right.  But it looks like I moved too many of the jackson dependencies 
> from build to core-build.  I'll clean this up and come up with a 
> proposal based on the minimum that needs to be moved.

Please also keep in mind the relative complexity of what this does to the dependency set it brings in. For example, I imagine you essentially have a small number of cookie cutter HTTP requests, with the most complex aspect being processing a token. Do you really need jackson object bindings for that? I realize this argument may seem counter-intuitive because its basically an argument against reuse, but thats the challenge we have in core. 

Here are some other options already in core that you could potentially use:

- DMR - While it’s primary purpose is not JSON processing it gives you a detyped map like API that can be used for this purpose
- JDK URL connections - While not the best API, it can get the job done
- Undertow HTTP Client API - this was really just created for the proxy code, so it will be lacking compared to httpclient, but it or the former option might meet your needs.
- FlexBase64 - This is a one class base64 encoder/decoder that is already in core, is fast, and can be used with buffers, streams, and arrays.

As mentioned in another email, there is really no replacement for bouncy castle, and so is a good candidate to be added.

Again, I totally get it if you don’t want to hack something together *just* for wildfly to be in wildfly core, but thats not a bad thing IMO.

--
Jason T. Greene
WildFly Lead / JBoss EAP Platform Architect
JBoss, a division of Red Hat




More information about the wildfly-dev mailing list