That looks good.
On Sep 17, 2010, at 5:35 PM, Gurkan Erdogdu wrote:
> Hello David;
>
> What I am thinking is that
>
> 1- Supress checkings in "AutoConfig" class
>
> private void processJndiRefs(String moduleId, JndiConsumer jndiConsumer,
> AppResources appResources, ClassLoader loader) throws OpenEJBException {
> // Resource reference
> for (ResourceRef ref : jndiConsumer.getResourceRef()) {
>
> try {
> Class clazz = Class.forName(ref.getType(),true,loader);
> if(clazz.isAnnotationPresent(ManagedBean.class)){
> continue;
> }
> } catch (ClassNotFoundException e) {
> throw new OpenEJBException("Class not found : " +
> ref.getType(),e);
> }
> ....
> }
>
> 2- Updating JndiEncBuilder for ResourceReferenceInfo processing. If @Resource
> type is annotated with @ManagedBean, we can directly add "location" info to
> the
> resource reference info. Because, managed beans are bound to
> java:module/bean_name and java:app/module/bean_name contexts. Therefore it
> has
> always been resolved correctly whether or not "lookup" defined on @Resource.
>
> for (ResourceReferenceInfo referenceInfo : jndiEnc.resourceRefs) {
> Reference reference = null;
>
> String refType = referenceInfo.referenceType;
> boolean mb = false;
> Class clazz;
> try {
> clazz = Class.forName(refType, true, classLoader);
> mb = clazz.isAnnotationPresent(ManagedBean.class);
> } catch (ClassNotFoundException e) {
> throw new OpenEJBException("Class not found : " + refType,e);
> }
>
> if(mb){
> String location = referenceInfo.location.jndiName;
> if(location == null){
> ManagedBean managedBean =
> (ManagedBean)clazz.getAnnotation(ManagedBean.class);
> String name = managedBean.value();
> if(name == null || name.equals("")){
> name = clazz.getSimpleName();
> }
> referenceInfo.location = new ReferenceLocationInfo();
>
>
>
> referenceInfo.location.jndiName = "module/" + name;
> }
> }
>
>
> WDYT?
>
> --Gurkan
>
>
>
> ----- Original Message ----
> From: David Blevins <[email protected]>
> To: [email protected]
> Sent: Sat, September 18, 2010 12:19:50 AM
> Subject: Re: Managed Bean Support
>
>
> On Sep 17, 2010, at 9:28 AM, Gurkan Erdogdu wrote:
>
>> Hi;
>>
>> I am looking the ManagedBean implementation. I think that currently it does
>> not
>>
>> support the injection of managed beans via @Resource? Is it correct or I am
>> wrong?
>
> I don't think that's in there yet, but referring to them via @EJB does work
> as a
> side affect of us treating @ManagedBean as a kind of session bean. Up for
> grabs
> if you want to work on it.
>
> Definitely feel encouraged to throw out implementation ideas before digging.
> I
> imagine that we'll not want a second copy of "resolve by interface" code and
> will want to somehow leverage the EjbResolver code we have.
>
> We could probably make it so you can refer to any EJB via @Resource to keep
> things consistent. Maybe we just detect that the @Resource ref is a bean ref
> and internally record it as a org.apache.openejb.jee.EjbLocalRef.
>
>
> -David
>
>
>