Another idea might be to provide an ApplicationWrapper which overwrites getProjectStage() and returns the DeltaSpike ProjectStage mapped to JSF. Any opinions on this?
LieGrue, strub >________________________________ > From: Mark Struberg <[email protected]> >To: "[email protected]" <[email protected]> >Sent: Tuesday, 26 November 2013, 10:11 >Subject: Re: Project Stage in JSF and DeltaSpike - 2nd > > >Hi Rainer! > >Well, if I understood your original post correctly, then you try to set the >values into JNDI in a @Singleton @Startup EJBs @PostConstruct method? > >The problem is that this is _way_ too late! > >Please debug into the following locations to get more details about what's >going on: > >ProjectStageProducer#resolveProjectStage() >ConfigResolver#getPropertyValue(String key) > >You will see that those methods will get invoked long before you hit the >@Startup breakpoint. >The reason is that the ProjectStage already gets evaluated during the CDI >Container boot (via the registered CDI Extensions) and thus any JNDI value you >set later will simply not get picked up. > >You could e.g. even add an annotation >@Exclude(ifProjectStage=ProjectStage.Production.class) to your @Startup bean - >I hope this explains why we need to resolve the ProjectStage much earlier. > >Could you please try to take the 0.6-SNAPSHOT from >https://repository.apache.org/content/groups/snapshots/ >or you just simply compile DeltaSpike locally yourself. This is really easy, >see [1][2]. >We've added some pickup of a few known locations like faces.PROJECT_STAGE and >javax.faces.PROJECT_STAGE. >Will ask Ed if Mojarra does also pick up the ProjectStage from the environment. > > >Please don't hesitate to ping back about your progress, txs! > > >LieGrue, >strub > > >[1] http://deltaspike.apache.org/source.html >[2] http://deltaspike.apache.org/build.html > > > >>________________________________ > >> From: Rainer Schön <[email protected]> >>To: [email protected] >>Sent: Monday, 25 November 2013, 15:46 >>Subject: Re: Project Stage in JSF and DeltaSpike - 2nd >> >> >>I think, there is a missunderstanding. My problem is not the timing. As I >>wrote, the @Startup bean does the job for the JSF project stage. The problem >>is here, that DS does n o t pick up the ProjectStage at start up from JNDI >>(please see again my reply beneath). >> >>Regrads, Rainer >> >> >>Am 25.11.2013 15:33, schrieb Mark Struberg: >>> timing issue. >>> >>> At the time @Startup beans get triggered, all the CDI booting is long time >>> done already! >>> >>> LieGrue, >>> strub >>> >>> >>> >>> >>>> ________________________________ >>>> From: Rainer Schön <[email protected]> >>>> To: [email protected] >>>> Sent: Monday, 25 November 2013, 12:20 >>>> Subject: Re: Project Stage in JSF and DeltaSpike - 2nd >>>> >>>> >>>> Hi Mark >>>> >>>> Thanks for your reply. I fiddled a little bit about this problem. The best >>>> way I think, is to set the values for ProjectStage (DS + JSF) into the >>>> JNDI environment. There you have both at the same place. I tried to set >>>> then the desired value programmatically before the JSF app is startet but >>>> in the web tier (ConextListener or "StartupServlet" with priority 1 and >>>> JSF servlet with priority 2) one is always to late to set the value in >>>> time. The solution is to set up a @Singleton @Startup ejb and set the JNDI >>>> value for the JSF ProjectStage in its @PostConstruct method (works in WAR >>>> and EAR deployments to GF4). This solution has the advantage to have >>>> control which DS stage should comply to which JSF stage. >>>> >>>> But Alas, the devil is in the details! DS does not pick up its >>>> ProjectStage from JNDI (java:comp/env/deltaspike/ProjectStage). Where >>>> could be the problem here? >>>> >>>> Regards, Rainer >>>> >>>> >>>> Am 21.11.2013 13:09, schrieb Mark Struberg: >>>> >>>>> >>>>> >>>>> Hi! >>>>> >>>>> The JSF spec does not really define environment properties for defining >>>>> the ProjectStage. As per the JSF spec (parts are only documented in the >>>>> API!) there are only the following 2 ways to define the JSF ProjectStage: >>>>> * JNDI java:comp/env/jsf/ProjectStage >>>>> * web.xml servlet param javax.faces.PROJECT_STAGE >>>>> >>>>> Apache MyFaces does also pick up the ProjectStage from the environment >>>>> via '-Dfaces.PROJECT_STAGE=..' and via JNDI. See [1] for more info. >>>>> I'm not sure whether Mojarra picks up those settings as well. >>>>> >>>>> >>>>> >>>>> The configuration which gets picked up in DeltaSpike itself is: >>>>> >>>>> * all ConfigResolver locations (JNDI + env + system + deltaspike >>>>> properties, + custom ConfigResolvers) >>>>> >>>>> >>>>> Currently only the following configuration gets picked up >>>>> * org.apache.deltaspike.ProjectStage >>>>> >>>>> I'm not sure if we already have a JIRA issue for it, but the plan is to >>>>> 'extend' this behaviour within the ds-jsf-impl to also pick up the JSF >>>>> locations (except web.xml I'd say). I bet there is some hacking needed on >>>>> the core-impl to allow for this to happen. >>>>> Any opinions? >>>>> >>>>> LieGrue, >>>>> strub >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> [1] https://issues.apache.org/jira/browse/MYFACES-2545 >>>>> >>>>> >>>>>> ________________________________ >>>>>> From: Rainer Schön <[email protected]> >>>>>> To: [email protected] >>>>>> Sent: Thursday, 21 November 2013, 11:42 >>>>>> Subject: Project Stage in JSF and DeltaSpike - 2nd >>>>>> >>>>>> >>>>>> As a follower of the DRY principle, I would like to support Harald >>>>>> Wellmann's post of October 10th, to which there was no answer: >>>>>> >>>>>>>> >>>>>> Is there an easy way to propagate the JSF project stage into >>>>>> DeltaSpike, or vice versa? >>>>>> << >>>>>> >>>>>> Any idea is appreciated. >>>>>> >>>>>> Thanks and regards, Rainer >>>>>> >>>>>> >>>>>> >>>>>> >>>> >>>> >>>> >> >> >> > >
