Mark, did you write test cases for this? Thanks;
/Gurkan ________________________________ From: Mark Struberg <[email protected]> To: [email protected] Sent: Wednesday, January 28, 2009 3:36:06 PM Subject: Re: level of resource injection it's done. please review the patch in https://issues.apache.org/jira/browse/OWB-71 Regarding JPAUtil#getPersistenceUnit I'm in favour to implement those functions for the basic systems directly in our code for now and think about what to implement via an SPI later in a 2nd round. This will give us more time to learn what we really need first. LieGrue, strub --- Gurkan Erdogdu <[email protected]> schrieb am Di, 27.1.2009: > Von: Gurkan Erdogdu <[email protected]> > Betreff: Re: level of resource injection > An: [email protected] > Datum: Dienstag, 27. Januar 2009, 15:55 > Ok, Mark. > > ________________________________ > From: Mark Struberg <[email protected]> > To: [email protected] > Sent: Tuesday, January 27, 2009 4:04:26 PM > Subject: Re: level of resource injection > > Hi Gurkan! > > Thanks for the tips! > > Currently I'm only looking at the injection of > resources which do not need any XML. So I started with > implementing @PersistenceUnit and looking forward to wrap > all the necessary PersistenceManagerFactory stuff in > JPAUtil.java (currently empty, but I think that's what > you've intended it for, isn't it?). > > I'll post a patch for review in the afternoon > (hopefully) and commit it after you've checked it. > > @PersistenceContext will be a bit trickier, since it is not > thread save and we have to do kind of 'scoping' > ourself. > > The @CustomerDataservice with the whole XML stuff will be > the next step after we've solved this problem. > > > LieGrue, > strub > > > --- Gurkan Erdogdu <[email protected]> schrieb > am Di, 27.1.2009: > > > Von: Gurkan Erdogdu <[email protected]> > > Betreff: Re: level of resource injection > > An: [email protected] > > Datum: Dienstag, 27. Januar 2009, 12:47 > > Hi Mark; > > > > Do you try to implement resource injections via XML > > definitions, right? Below sketch is the summary of how > you > > can proceed with the current implementation. > > > > For XML defined webbeans, the main entry point is the > > *WebBeansXMLConfigurator* class. Java EE Resources are > only > > defined in the xml file, according to the *9.5.2 > Type-Level > > metadata for a bean*. This part is handled in the > > *WebBeansXMLConfigurator#configureTypeLevelMetaData* > method. > > > > > > For injectable resources, you can create another class > like > > *XMLResourceInjectableField* in the *inject/xml* > package and > > add the *Map<Field,XMLInjectionPointModel> > > injectedResources* instance variable into the > > *XMLComponentImpl.java* to hold the injectable > resource > > fields. > > > > After that you will have to add the resource injection > > fields that are declared in the XML into the resource > > injection map in the *XMLComponentImpl* class. You can > > create another method for this in the > > *WebBeansXMLConfigurator* class, for example > > *configureInjectableResources()*, and call this method > from > > *configureTypeLevelMetaData()* method. > > > > Skeletons of the codes may like the followings; > > > > WebBeansXMLConfigurator.java > > ---------------------------------------------- > > ........ > > > > //Update this method > > public <T> void configureTypeLevelMetaData() > > { > > //Add this method call > > configureInjectableResources(); > > > > } > > //This is the new method that is responsible for > adding > > resource injection fields to the component > > public <T> void configureInjectableResources() > > { > > //Find fields from resource decleration in XML > > //Create XMLInjectionPointModel for each field > > //Add field and related model into the > > > XMLComponentImpl#Map<Field,XMLInjectionPointModel> > > } > > > > XMLComponentImpl.java > > --------------------------------- > > After that in XMLComponentImpl class, update > injectFields > > method to inject resources, > > > > //Update this method for adding resource injection > support > > > > protected void injectFields(T instance) > > { > > ...... > > //For each resource injection map entry > > //Create new *XMLResourceInjectableField* instance > > //Set field with calling the > > AbstractInjectable#inject(....) > > } > > AbstractInjectable class > > --------------------------------- > > public Object inject() > > { > > //If resource, create injection object with method > > injectResource > > if (isResource(annotations)) > > { > > return injectResource(type, > annotations); > > } > > } > > > > WDYT? > > > > /Gurkan > > > > > > > > ________________________________ > > From: Mark Struberg <[email protected]> > > To: [email protected] > > Sent: Tuesday, January 27, 2009 12:35:02 PM > > Subject: level of resource injection > > > > Gurkan, > > another question about resources: where should I > actually > > inject the resources finally? > > > > This is the stack trace so far: > > > > InjectionResolver.implResolveByType(Class<?>, > Type[], > > Annotation...) line: 94 > > > InjectableField(AbstractInjectable).inject(Class<T>, > > Type[], Annotation...) line: 83 > > InjectableField.doInjection() line: 92 > > > > > > My thoughts: > > Resources can be handled in a very high layer, since > the > > 'accessors' already hide all the underlying > > complexity of having classloader hierarchies etc, > isn't? > > > > So in the > > AbstractInjectable#inject > > I'd like to add something like: > > > > if (isResource(annotations)) > > { > > return injectResource(type, > annotations); > > } > > > > LieGrü, > > strub
