Hi all,
I get a NullPointerException in my GetRolesAction, hope somebody of you guys
can help me.
With my action I want to make the user roles of a cwertain project 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(AuthenticationConstants.SESSION_CONTEXT_NAME)){
sessionContext = (AuthenticationContext)
contextProvider.getSessionContext(AuthenticationConstants.SESSION_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.AuthenticationContextProvider.getSessionContext(AuthenticationContextProvider.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.AbstractParentProcessingNode.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>
--------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]