Please keep @Typed annotation available outside of core.
I use @Typed annotation in one of my (private) core extensions where I
need a class to implement an interface but not make that interface
visible for injection in other components.
--
Regards,
Igor
On 2/13/2014, 9:43, Jason van Zyl wrote:
On Feb 13, 2014, at 8:44 AM, Stuart McCulloch <mccu...@gmail.com> wrote:
On 13 Feb 2014, at 13:30, Jason van Zyl <ja...@takari.io> wrote:
I would consider something like SFL4J as something which is now part of our API
think it's fine to expose something like that. I'm not sure the same holds true
for CDI. Wouldn't it be better just to completely hide it?
As mentioned in http://wiki.eclipse.org/Sisu/PlexusMigration#Type_Override, the
@javax.enterprise.inject.Typed annotation can be used to restrict the type
visibility of components.
Hiding this package means you wouldn’t be able to use this feature outside of
Maven core - so I guess it depends whether you consider CDI’s @Typed part of
the component API like JSR330’s @Inject.
I would say I don't consider it part of our API, so I'd be inclined to hide it
and strictly stick to JSR330. Will Sisu not load without it? I think we keep
running into these issues with App Servers because people are trying to run
their App Server in Maven's runtime environment which doesn't really make
sense. For any of these strange conflicts that arise with SLF4J or other APIs I
think we should just encourage people to run any sort of test for your App
Server with an environment akin to production in that you should fork once with
your own classpath and whatever else you need. Maven's APIs and runtime
environment are for build related activities. Where we have this cross over
like like the jetty/tomcat/wildfly-maven-plugin I think we should just tell
people the best thing to do is fork once and do what you like.
The CDI API is at least standardised (one of the reasons why the container
respects @Typed rather than creating it’s own ad-hoc annotation which wouldn’t
be as portable).
Why would we need it? You have any use cases at hand?
On Feb 13, 2014, at 5:56 AM, Stuart McCulloch <mccu...@gmail.com> wrote:
On 13 Feb 2014, at 07:28, Kristian Rosenvold <kristian.rosenv...@gmail.com>
wrote:
Stuart,
We're seeing java.lang.LinkageError: loader constraint violation: loader
(instance of org/codehaus/plexus/classworlds/realm/ClassRealm) previously
initiated loading for a different type with name
"javax/enterprise/util/TypeLiteral" using the maven-jetty-plugin on 3.1. I
can't really see this seeping through in DefaultClassRealmManager, but
google shows me https://java.net/jira/browse/GLASSFISH-20802
Is this something you understand ?
DefaultClassRealmManager currently exposes the complete javax.enterprise.inject
package from CDI-API:
imports.put( "javax.enterprise.inject.*", coreRealm );
This package contains annotations, exceptions, and one interface - and it looks
like the interface pulls in a type from javax.enterprise.util:
http://docs.oracle.com/javaee/6/api/javax/enterprise/inject/Instance.html#select(javax.enterprise.util.TypeLiteral,%20java.lang.annotation.Annotation...)
Which means that while javax.enterprise.inject.Instance is loaded and exposed
from the core realm, javax.enterprise.util.TypeLiteral will be loaded from core
but not exposed - this is likely the cause of the constraint violation.
There are two solutions - first we could narrow the exposure in
DefaultClassRealmManager to:
imports.put( "javax.enterprise.inject.Typed", coreRealm );
since that is the only CDI annotation we’re really interested in, and it has no
dependencies to other types.
Alternatively we could widen the exposure to include the javax.enterprise.util
package:
imports.put( "javax.enterprise.inject.*", coreRealm );
imports.put( "javax.enterprise.util.*", coreRealm );
which should also fix the loader constraint while not introducing other issues.
WDYT?
Kristian
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org
Thanks,
Jason
----------------------------------------------------------
Jason van Zyl
Founder, Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
---------------------------------------------------------
Selfish deeds are the shortest path to self destruction.
-- The Seven Samuari, Akira Kurosawa
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org
Thanks,
Jason
----------------------------------------------------------
Jason van Zyl
Founder, Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
---------------------------------------------------------
Simplex sigillum veri. (Simplicity is the seal of truth.)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org