Hi, you have to lookup the components using Avalon; you never should instantiate them yourself. Search around the code where ContextManager is used and you will see what I mean.
Carsten > -----Original Message----- > From: Stephanie Zohner [mailto:[EMAIL PROTECTED] > Sent: Monday, July 19, 2004 5:00 PM > To: [EMAIL PROTECTED] > Subject: RE: HELP! Custom Action using AuthenticationContext > > I substituted the AuthenticationContextProvider with the > ContextManager as proposed by you, but unfortunately I still > get a NullPointerException. > > the stacktrace is: > > java.lang.NullPointerException > at > org.apache.cocoon.components.ContextHelper.getRequest(ContextH > elper.java:88) > at > org.apache.cocoon.webapps.session.components.DefaultContextMan > ager.getSession(DefaultContextManager.java:113) > at > org.apache.cocoon.webapps.session.components.DefaultContextMan > ager.existsContext(DefaultContextManager.java:337) > at > archivesystem.roles.GetRolesAction.act(GetRolesAction.java:60) > .... > > The exception in my Action occurs in this > line: > > if(contextManager.existsContext(AuthenticationConstants.SESSIO > N_CONTEXT_NAME)) > > > This time the problem seems to be the context object in > DefaultContextManager, which seems to be null. > > What I've done wrong? > > Is it a good idea to implement the initializable interface > and intitialize the DefaultContextManager there? > > Here's my changed source code: > -------------------------------------------------------------------- > > public class GetRolesAction extends AbstractAction implements > ThreadSafe, Initializable{ > > protected ContextManager contextManager; > > public void initialize() throws Exception { > contextManager = new DefaultContextManager(); > } > > > public Map act( > Redirector redirector, > SourceResolver sourceResolver, > Map objectModel, > String src, > Parameters parameters) > throws Exception { > > Map map = null; > > //check parameter > final String project = > parameters.getParameter("project"); > if(project == null){ > throw new > ProcessingException("GetRolesAction requires the parameter > 'project'."); > } > if (contextManager == null){ > throw new NullPointerException("Can't > get contextManager."); > } > SessionContext sessionContext = > null; > > > if(contextManager.existsContext(AuthenticationConstants.SESSIO > N_CONTEXT_NAME)){ > > sessionContext = > contextManager.getContext(AuthenticationConstants.SESSION_CONT > EXT_NAME); > } > else{ > throw new > NullPointerException("Can't get sessionContext"); > } > > map = new HashMap(3); > //check roles > if > (sessionContext.getSingleNode("authentication/rights/projects/ > [EMAIL PROTECTED]"+project+"]/admin")!=null) > map.put("admin","true"); > else > map.put("admin","false"); > > /*......*/ > } > > } > > -------------------------------------------------------------------- > > > Thanks a lot for your help in advance, > > Regards, > > Stephanie > > > > > > You should access the context using the ContextManager (in > the session > > block). The provider classes are internal "plugins" for the context > > manager to make such custom contexts, like the > authentication context, > > available. > > > > HTH > > Carsten > > > > > -----Original Message----- > > > From: Stephanie Zohner [mailto:[EMAIL PROTECTED] > > > Sent: Monday, July 19, 2004 2:34 PM > > > To: [EMAIL PROTECTED] > > > Subject: HELP! Custom Action using AuthenticationContext > > > > > > > > > Hi all, > > > > > > > > > Sorry for double posting but I got no anwers in the users > list, so I > > > hope that one of you java gurus can help me. > > > > > > > > > I get a NullPointerException in my GetRolesAction. > > > > > > With my action I want to make the user roles available to the > > > sitemap. The roles are stored in the Authentication Context. > > > > > > All I want to do is read out the roles from the Authentication > > > context and put it in the map that is returned to the sitemap. > > > > > > However I get a NullPointerException when retrieving the > > > authentication context. > > > I "followed" the exception to the Class > > > AuthenticationContextProvider. I guess the problem is that the > > > ServiceManager is not initialized, but is null. > > > > > > How can I make my Code working? Do I have to call the > > > service() method of the AuthenticationContextProvider to set the > > > serviceManager instance?? > > > > > > Thanks alot for bringing light into my darkness, > > > > > > Regards, > > > > > > Stephanie > > > > > > P.S.: Code and Exception Text see below: > > > > > > ______________________________________________________________ > > > __________ > > > > > > public class GetRolesAction extends AbstractAction implements > > > ThreadSafe, Initializable{ > > > > > > protected AuthenticationContextProvider contextProvider; > > > > > > public void initialize() throws Exception { > > > contextProvider = new AuthenticationContextProvider(); > > > } > > > > > > > > > public Map act( > > > Redirector redirector, > > > SourceResolver sourceResolver, > > > Map objectModel, > > > String src, > > > Parameters parameters) > > > throws Exception { > > > > > > Map map = null; > > > > > > //check parameter > > > final String project = > > > parameters.getParameter("project"); > > > if(project == null){ > > > throw new > > > ProcessingException("GetRolesAction requires the parameter > > > 'project'."); > > > } > > > if (contextProvider == null){ > > > throw new NullPointerException("Can't > get contextProvider."); > > > } > > > AuthenticationContext > > > sessionContext > > > = > > > null; > > > > > > > > > if(contextProvider.existsSessionContext(AuthenticationConstant > > > s.SESSION_CONTEXT_NAME)){ > > > > > > sessionContext > > > = > > > (AuthenticationContext) > > > contextProvider.getSessionContext(AuthenticationConstants.SESS > > > ION_CONTEXT_NAME); > > > } > > > else{ > > > throw new > > > NullPointerException("Can't get sessionContext"); > > > } > > > > > > map = new > > > HashMap(3); > > > //check > > > roles > > > if > > > (sessionContext.getSingleNode("authentication/rights/projects/ > > > [EMAIL PROTECTED]"+project+"]/admin")!=null) > > > map.put("admin","true"); > > > else > > > map.put("admin","false"); > > > > > > if > > > (sessionContext.getSingleNode("authentication/rights/projects/ > > > [EMAIL PROTECTED]"+project+"]/developer")!=null) > > > map.put("developer","true"); > > > else > > > map.put("developer","false"); > > > > > > if > > > (sessionContext.getSingleNode("authentication/rights/projects/ > > > [EMAIL PROTECTED]"+project+"]/guest")!=null) > > > map.put("guest","true"); > > > else > > > map.put("guest","false"); > > > > > > return > > > map; > > > } > > > > > > } > > > -------------------------------------------------------------- > > > ---------- > > > > > > > > > java.lang.NullPointerException > > > > > > at > > > org.apache.cocoon.webapps.authentication.context.Authenticatio > > > nContextProvider.getSessionContext(AuthenticationContextProvid > > > er.java:97) > > > > > > at > > > archivesystem.roles.GetRolesAction.act(GetRolesAction.java:57) > > > > > > at > > > org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode > > > .invoke(ActTypeNode.java:152) > > > > > > at > > > org.apache.cocoon.components.treeprocessor.AbstractParentProce > > > ssingNode.invokeNodes(AbstractParentProcessingNode.java:84) > > > > > > .... > > > -------------------------------------------------------------- > > > ------------ > > > > > > My Sitemap snippet > > > > > > <map:match pattern="protected-*"> > > > <map:act type="auth-protect"> > > > <map:match pattern="protected-delivery"> > > > <map:generate type="request"/> > > > <map:act type="getRoles"> > > > <map:parameter name="project" > > > value="{session-attr:project}"/> > > > <map:select type="parameter"> > > > <map:parameter name="parameter-selector-test" > > > value="{admin}"/> > > > <map:when test="true"> > > > <map:transform type="xslt" > > > src="stylesheets/deliveries.xsl"/> > > > </map:when> > > > <map:otherwise> > > > <map:transform type="xslt" > > > src="stylesheets/deliveries-readonly.xsl"/> > > > </map:otherwise> > > > </map:select> > > > <map:serialize type="html"/> > > > </map:act> > > > </map:match> > > > </map:act> > > > </map:match> > > > > > > > > > -------------------------------------------------------------- > > > ------------ > > > > > > > > > > -- > > >
