Hi, IMHO shared code ist just as private as myfaces-impl code. Not more, not less.
Adding the all-in-one-jar is not a change, but an improvement. It is just an additional (non-OSGi-ready) distribution form of MyFaces code and thus does not affect the problems we're having with myfaces-shared and OSGi. Regards, Jakob 2010/11/8 Leonardo Uribe <lu4...@gmail.com>: > Hi > > 2010/11/8 Jakob Korherr <jakob.korh...@gmail.com> >> >> Hi, >> >> Last week I created a branch (see [1]) to test the shade module >> integration of shared and also implee6 for MyFaces core. >> Coincidentally, Leonardo committed a similar solution to MyFaces core >> trunk, however only for the implee6 integration. >> >> The branch at [1] uses the shade plugin to include shared and implee6. >> For shared it uses a dependency to myfaces-shared-core (NOT >> shared-impl), which will then be shaded to org.apache.myfaces.* >> (without the shared-package) - however this is only a prototype. To >> make this work I had to rename all imports in myfaces-impl from >> "shared_impl" to "shared". Everything works pretty well expect for the >> OSGi-issues mentioned by Leonardo. >> >> Using this branch you are able to work on MyFaces shared classes in >> the context of MyFaces core and not having to do a whole maven build >> when testing it, because your IDE uses shared directly as a >> dependency. Thus it really is an improvement to what we have now and >> we should try to fix the OSGi issues in some way to really make this >> work. I already did some work in this direction and I think that a >> ResourceTransformer implementation for shade that creates the Manifest >> file for OSGi is the way to go, but we certainly have to discuss this >> (maybe also with the bundle-plugin team). WDYT Leo? >> > > Well, before try to do something like that (a ResourceTransformer > implementation) > it is good to ask if it is really necessary to do that. On a previous mail I > said that > "shared" code should be private, so there should not be used for users > outside > myfaces impl. There are exceptions (DelegateServlet), so we have to identify > first > which code could not be relocated. The effect on maven bundle plugin is > shared packages are excluded from Export-Package header, but as long as > users > don't have code importing shared_impl package it is ok to ignore this side > effect. > >> >> However, please take a look at the branch at [1] and try to use it in >> your IDE - I think it's really great! (... and furthermore I think >> it's much easier to understand for every myfaces-developer). >> >> >> I also totally agree with Gerhard that we should provide this >> all-in-one jar, even if it may cause problems in OSGi, because our >> OSGi users will most certainly know that. It's really easy to do this >> using the shade plugin and it provides a very convenient way for >> developers to use MyFaces (especially when they're not using maven). >> As Gerhard mentioned, Mojarra will do the same and furthermore other >> projects like e.g. Weld also provide this all-in-one solution (--> >> weld-servlet). >> > > I disagree. Our first priority should be myfaces usage in different > environments, > and then enhance IDE support. Only if the two previous objections can be > solved, > the change can be made. > > regards, > > Leonardo Uribe > >> >> Regards, >> Jakob >> >> [1] >> http://svn.apache.org/repos/asf/myfaces/core/branches/2_0_3_snapshot_shade_test/ >> >> 2010/11/8 Leonardo Uribe <lu4...@gmail.com>: >> > Hi >> > >> > 2010/11/8 Gerhard <gerhard.petra...@gmail.com> >> >> >> >> hi, >> >> @ide-support: >> >> since you get an additional all-in-one sources jar file, it should >> >> work. >> >> i've created external codi examples which use the all-in-one jar of >> >> codi >> >> and the ide support works perfectly. >> > >> > Yes, that's true (I checked that code) but in shared you need to change >> > the >> > package name to org.apache.myfaces.shared_impl. >> > >> > Really that package renaming is questionable. Why? It exists since 1.1.x >> > but >> > I don't know why this is necessary. In theory, the code inside shared >> > should >> > be "private", but the truth is we have one class that could be consumed >> > by >> > users: >> > org.apache.myfaces.shared_impl.webapp.webxml.DelegatedFacesServlet. >> > That is the main reason why I moved the code proposed on >> > https://issues.apache.org/jira/browse/MYFACES-2944 to myfaces-impl >> > package. >> > >> >> >> >> @osgi: >> >> if there are restrictions, we should improve the shade plugin. >> >> (for now: osgi users just can't use this optional all-in-one jar file - >> >> if >> >> we document it, it shouldn't be a problem.) >> > >> > There is a discussion of this issue here: >> > >> > https://issues.apache.org/jira/browse/FELIX-1184 >> > >> > It was reported here too: >> > >> > http://jira.codehaus.org/browse/MSHADE-51 >> > >> > The issue in maven is here: >> > >> > http://jira.codehaus.org/browse/MNG-2258 >> > >> > Unfortunately, the only hack I can see to make this work correctly is >> > create >> > a plugin with a maven lifecycle extension, and do that is very nasty, >> > because we need to create a plugin just to do that. >> > >> >> >> >> @use-case: >> >> we should really get rid of the shared module. >> > >> > I agree. First we need a more explicit plan to do it. Suggestions are >> > welcome. >> > >> > regards, >> > >> > Leonardo Uribe >> > >> >> >> >> regards, >> >> gerhard >> >> http://www.irian.at >> >> >> >> Your JSF powerhouse - >> >> JSF Consulting, Development and >> >> Courses in English and German >> >> >> >> Professional Support for Apache MyFaces >> >> >> >> >> >> >> >> 2010/11/8 Leonardo Uribe <lu4...@gmail.com> >> >>> >> >>> Hi >> >>> >> >>> Unfortunately, maven-shade-plugin has some unwanted side effects. >> >>> >> >>> - The source jar file is not updated too, so if we "shade" shared, the >> >>> sources are not updated. In theory, the source jar is used by IDEs >> >>> like >> >>> Eclipse or Netbeans to show the source file of a .class. >> >>> - It does not play well with osgi bundle plugin (the one that create >> >>> manifest.mf). The problem is the manifest is generated before "shade", >> >>> and >> >>> we need the later. Really that one is a problem related to maven >> >>> itself. >> >>> >> >>> The only valid use case I found where maven-shade-plugin fits well is >> >>> with implee6 module, but anyway it was required to do some hacks to >> >>> make >> >>> bundle plugin works well. >> >>> >> >>> regards, >> >>> >> >>> Leonardo Uribe >> >> >> > >> > >> >> >> >> -- >> Jakob Korherr >> >> blog: http://www.jakobk.com >> twitter: http://twitter.com/jakobkorherr >> work: http://www.irian.at > > -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at