cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephanie Zohner" <stephanie.zoh...@gmx.at>
Subject HELP! Custom Action using AuthenticationContext
Date Mon, 19 Jul 2004 12:34:13 GMT

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(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/project[@name="+project+"]/admin")!=null)
			map.put("admin","true");
		else
			map.put("admin","false");
		
		if
(sessionContext.getSingleNode("authentication/rights/projects/project[@name="+project+"]/developer")!=null)
			map.put("developer","true");
		else
			map.put("developer","false");
			
		if
(sessionContext.getSingleNode("authentication/rights/projects/project[@name="+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>


--------------------------------------------------------------------------


Mime
View raw message