cziegeler    2002/10/04 05:00:38

  Modified:    src/java/org/apache/cocoon/components/source SourceUtil.java
               src/blocks/portal-fw/java/org/apache/cocoon/webapps/portal/components
                        PortalManager.java
               
src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components
                        AuthenticationManager.java Handler.java
               
src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/generation
                        ConfigurationGenerator.java
               src/blocks/portal-fw/samples sitemap.xmap
  Log:
  WARNING: This is an incompatible change!
  Separating user management from authentication handler. The user
  management is now an own application.
  
  Revision  Changes    Path
  1.7       +2 -1      
xml-cocoon2/src/java/org/apache/cocoon/components/source/SourceUtil.java
  
  Index: SourceUtil.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/source/SourceUtil.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SourceUtil.java   25 Sep 2002 11:45:34 -0000      1.6
  +++ SourceUtil.java   4 Oct 2002 12:00:37 -0000       1.7
  @@ -280,6 +280,7 @@
           Map resolverParameters = new java.util.HashMap();
           resolverParameters.put(URLSource.HTTP_METHOD, method);
           resolverParameters.put(URLSource.REQUEST_PARAMETERS, resourceParameters);
  +
           return resolver.resolveURI(uri, null, resolverParameters);
       }
   }
  
  
  
  1.2       +128 -6    
xml-cocoon2/src/blocks/portal-fw/java/org/apache/cocoon/webapps/portal/components/PortalManager.java
  
  Index: PortalManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/blocks/portal-fw/java/org/apache/cocoon/webapps/portal/components/PortalManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortalManager.java        27 Sep 2002 09:05:06 -0000      1.1
  +++ PortalManager.java        4 Oct 2002 12:00:37 -0000       1.2
  @@ -58,6 +58,8 @@
   import java.util.List;
   import java.util.Map;
   
  +import org.apache.excalibur.source.Source;
  +import org.apache.excalibur.source.SourceException;
   import org.apache.excalibur.source.SourceParameters;
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
  @@ -68,6 +70,7 @@
   
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.components.sax.XMLDeserializer;
  +import org.apache.cocoon.components.source.SourceUtil;
   import org.apache.excalibur.store.Store;
   import org.apache.cocoon.environment.Redirector;
   import org.apache.cocoon.environment.Session;
  @@ -553,16 +556,16 @@
   
               if (state.equals(PortalConstants.STATE_MAIN) == true) {
   
  -                DocumentFragment rolesDF = 
this.getAuthenticationManager().getRoles();
  -                Node             roles   = null;
  +                Document rolesDF = this.getRoles();
  +                Node     roles   = null;
                   if (rolesDF != null) roles = DOMUtil.getSingleNode(rolesDF, 
"roles");
                   IncludeXMLConsumer.includeNode(roles, consumer, consumer);
               }
   
               if (state.equals(PortalConstants.STATE_MAIN_ROLE) == true) {
   
  -                DocumentFragment rolesDF = 
this.getAuthenticationManager().getRoles();
  -                Node             roles   = null;
  +                Document rolesDF = this.getRoles();
  +                Node     roles   = null;
                   if (rolesDF != null) roles = DOMUtil.getSingleNode(rolesDF, 
"roles");
                   IncludeXMLConsumer.includeNode(roles, consumer, consumer);
   
  @@ -576,8 +579,8 @@
                       this.sendStartElementEvent(consumer, "name");
                       this.sendTextEvent(consumer, role);
                       this.sendEndElementEvent(consumer, "name");
  -                    DocumentFragment userDF = 
this.getAuthenticationManager().getUsers(role, null);
  -                    Node             users = null;
  +                    Document userDF = this.getUsers(role, null);
  +                    Node     users = null;
                       if (userDF != null) users = DOMUtil.getSingleNode(userDF, 
"users");
                       IncludeXMLConsumer.includeNode(users, consumer, consumer);
                       this.sendEndElementEvent(consumer, "roleusers");
  @@ -4174,6 +4177,125 @@
       public void sendEvents(XMLConsumer consumer, Node node)
       throws SAXException {
           IncludeXMLConsumer.includeNode(node, consumer, consumer);
  +    }
  +
  +    /**
  +     * Get all users in a document fragment with the following children:
  +     * <users>
  +     *     <user>
  +     *         <ID>...</ID>
  +     *         <role>...</role> <!-- optional -->
  +     *         <data>
  +     *         ...
  +     *         </data>
  +     *     </user>
  +     *     ....
  +     * </users>
  +     * The document fragment might contain further nodes at the root!
  +     * If <code>role</code> is <code>null</code> all users are fetched,
  +     * otherwise only the users for this role.
  +     * If also ID is not null only the single user is fetched.
  +     */
  +    private Document getUsers(String role, String ID)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN getUsers role="+role+", ID="+ID);
  +        }
  +        Document frag = null;
  +        Configuration conf = 
this.getAuthenticationManager().getModuleConfiguration("single-role-user-management");
  +        if (conf != null) {
  +
  +            // get load-users resource (optional)
  +            Configuration child = conf.getChild("load-users", false);
  +            if (child != null) {
  +                String loadUsersResource = child.getAttribute("uri", null);
  +                SourceParameters loadUsersResourceParameters = 
SourceParameters.create(child);
  +    
  +                if (loadUsersResource != null) {
  +                    SourceParameters parameters = (loadUsersResourceParameters == 
null) ? new SourceParameters()
  +                                                                             : 
loadUsersResourceParameters;
  +                    if (this.getAuthenticationManager().getApplicationName() != 
null)
  +                        parameters.setSingleParameterValue("application", 
this.getAuthenticationManager().getApplicationName());
  +                    if (ID != null) {
  +                        parameters.setSingleParameterValue("type", "user");
  +                        parameters.setSingleParameterValue("ID", ID);
  +                    } else {
  +                        parameters.setSingleParameterValue("type", "users");
  +                    }
  +                    if (role != null) parameters.setSingleParameterValue("role", 
role);
  +                    frag = this.loadResource(loadUsersResource, parameters);
  +        
  +                }
  +            }
  +        }
  +            
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END getUsers fragment="+(frag == null ? "null" 
: XMLUtils.serializeNodeToXML(frag)));
  +        }
  +        return frag;
  +    }
  +
  +    /**
  +     * Get all roles in a document fragment with the following children:
  +     * <roles>
  +     *     <role>...</role>
  +     *     ....
  +     * </roles>
  +     * The document fragment might contain further nodes at the root!
  +     */
  +    private Document getRoles()
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN getRoles");
  +        }
  +        Document frag = null;
  +
  +        Configuration conf = 
this.getAuthenticationManager().getModuleConfiguration("single-role-user-management");
  +        if (conf != null) {
  +
  +            // get load-roles resource (optional)
  +            Configuration child = conf.getChild("load-roles", false);
  +            if (child != null) {
  +                String loadRolesResource = child.getAttribute("uri", null);
  +                SourceParameters loadRolesResourceParameters = 
SourceParameters.create(child);
  +                if (loadRolesResource != null) {
  +                    SourceParameters parameters = (loadRolesResourceParameters == 
null) ? new SourceParameters()
  +                                                                           : 
loadRolesResourceParameters;
  +                    if (this.getAuthenticationManager().getApplicationName() != 
null)
  +                        parameters.setSingleParameterValue("application", 
this.getAuthenticationManager().getApplicationName());
  +                    parameters.setSingleParameterValue("type", "roles");
  +                    frag = this.loadResource(loadRolesResource, parameters);
  +                }
  +            }
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END getRoles fragment="+frag);
  +        }
  +        return frag;
  +    }
  +
  +    /**
  +     * Load XML resource
  +     */
  +    private Document loadResource(String resource,
  +                               SourceParameters parameters)
  +    throws IOException, ProcessingException, SAXException {
  +        Source source = null;
  +        try {
  +            source = SourceUtil.getSource(resource, 
  +                                          null, 
  +                                          parameters, 
  +                                          this.resolver, 
  +                                          this.objectModel);
  +            return SourceUtil.toDOM(source, this.manager);
  +        } catch (SourceException se) {
  +            throw SourceUtil.handle(se);
  +        } finally {
  +            this.resolver.release(source);
  +        }
       }
   
   }
  
  
  
  1.2       +4 -541    
xml-cocoon2/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/AuthenticationManager.java
  
  Index: AuthenticationManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/AuthenticationManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AuthenticationManager.java        27 Sep 2002 09:05:06 -0000      1.1
  +++ AuthenticationManager.java        4 Oct 2002 12:00:38 -0000       1.2
  @@ -108,14 +108,6 @@
       /** The Avalon Role */
       public static final String ROLE = AuthenticationManager.class.getName();
   
  -    /** Request parameter */
  -    public static final String REQ_PARAMETER_STATE = "authstate";
  -    public static final String REQ_PARAMETER_ROLE  = "authrole";
  -    public static final String REQ_PARAMETER_ID    = "authid";
  -    public static final String REQ_PARAMETER_USER  = "authuser";
  -
  -    private static final String SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE = 
"org.apache.cocoon.webapps.authentication.adminrole";
  -
       /** The handler manager */
       private HandlerManager handlerManager = new HandlerManager();
   
  @@ -298,290 +290,12 @@
       }
   
       /**
  -     * Show the configuration for the admin.
  -     * If <code>src</code> is "admin" or null the admin configuration is shown.
  -     * If <code>src</code> is "user" the configuration of the current user
  -     * is shown.
  +     * Return the name of the current application
        */
  -    public void showConfiguration(XMLConsumer consumer,
  -                                  String      src)
  -    throws ProcessingException, SAXException {
  -        // synchronized
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN showConfiguration consumer=" + consumer + 
", src="+src);
  -        }
  -        boolean isAdmin = (src == null || src.equals("admin"));
  -
  -        // now start producing xml:
  -        AttributesImpl attr = new AttributesImpl();
  -        consumer.startElement("", "configuration", "configuration", attr);
  -
  -        // set the conf uri:
  -        // This is a bug in the servlet 2.2 API!!!
  -        // It does not contain the context:  String uri = 
HttpUtils.getRequestURL(this.request).toString();
  -        // So: ABSOLUTELY USELESS
  -        String uri = this.response.encodeURL(this.request.getRequestURI());
  -        consumer.startElement("", "uri", "uri", attr);
  -        consumer.characters(uri.toCharArray(), 0, uri.length());
  -        consumer.endElement("", "uri", "uri");
  -
  -        if (isAdmin == true) {
  -            // build the menue
  -            consumer.startElement("", "menue", "menue", attr);
  -
  -            if (this.handler != null) {
  -                if (this.handler.getNewRoleResource() != null) {
  -                    consumer.startElement("", "addrole", "addrole", attr);
  -                    consumer.endElement("", "addrole", "addrole");
  -                }
  -                if (this.handler.getDeleteRoleResource() != null) {
  -                    consumer.startElement("", "delrole", "delrole", attr);
  -                    consumer.endElement("", "delrole", "delrole");
  -                }
  -            }
  -            consumer.endElement("", "menue", "menue");
  -        }
  -
  -        SessionContext context = this.getAuthenticationSessionContext(true);
  -
  -        synchronized (context) {
  -
  -            String state = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_STATE);
  -            if (state == null) {
  -                state = (isAdmin == true ? "main" : "seluser");
  -            }
  -
  -            if (state.equals("addrole") == true) {
  -                String role = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ROLE);
  -                if (role != null && role.trim().length() > 0) {
  -                    SourceParameters pars = new SourceParameters();
  -                    // first include all request parameters
  -                    Enumeration requestParameters = 
this.request.getParameterNames();
  -                    String current;
  -                    while (requestParameters.hasMoreElements() == true) {
  -                        current = (String)requestParameters.nextElement();
  -                        pars.setParameter(current, 
this.request.getParameter(current));
  -                    }
  -                    this.addRole(role, pars);
  -                } else {
  -                    role = null;
  -                }
  -                
context.setAttribute(AuthenticationManager.SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, null);
  -            }
  -
  -            if (state.equals("delrole") == true) {
  -                try {
  -                    String role = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ROLE);
  -                    if (role != null) {
  -                        // first delete user
  -                        DocumentFragment userDF = this.getUsers(role, null);
  -                        NodeList         users   = null;
  -                        if (userDF != null) users = DOMUtil.selectNodeList(userDF, 
"users/user");
  -                        if (users != null) {
  -                            for(int i = 0; i < users.getLength(); i++) {
  -                                this.deleteUser(role, 
DOMUtil.getValueOf(users.item(i), "ID"), null);
  -                            }
  -                        }
  -                        this.deleteRole(role, null);
  -                    }
  -                    
context.setAttribute(AuthenticationManager.SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, null);
  -                } catch (javax.xml.transform.TransformerException local) {
  -                    throw new ProcessingException("TransformerException: " + local, 
local);
  -                }
  -            }
  -
  -
  -            if (state.equals("chguser") == true) {
  -                String role;
  -                String id;
  -                String user;
  -
  -                if (isAdmin == false) {
  -                    SourceParameters pars = this.createParameters(null);
  -                    id = pars.getParameter("ID", null);
  -                    role = pars.getParameter("role", null);
  -                    user = "old";
  -                } else {
  -                    role = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ROLE);
  -                    id   = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ID);
  -                    user = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_USER);
  -                }
  -
  -                boolean addingNewUserFailed = false;
  -                if (role != null && id != null && user != null) {
  -                    if (user.equals("new") == true) {
  -                        SourceParameters pars = new SourceParameters();
  -                        // first include all request parameters
  -                        Enumeration requestParameters = 
this.request.getParameterNames();
  -                        String current;
  -                        while (requestParameters.hasMoreElements() == true) {
  -                            current = (String)requestParameters.nextElement();
  -                            pars.setParameter(current, 
this.request.getParameter(current));
  -                        }
  -                        addingNewUserFailed = !this.addUser(role, id, pars);
  -                        if (addingNewUserFailed == false) {
  -                            consumer.startElement("", "addeduser", "addeduser", 
attr);
  -                            consumer.characters(id.toCharArray(), 0, id.length());
  -                            consumer.endElement("", "addeduser", "addeduser");
  -                        }
  -                    } else {
  -                        String delete = this.request.getParameter("authdeluser");
  -                        if (delete != null && delete.equals("true") == true) {
  -                            this.deleteUser(role, id, null);
  -                        } else {
  -                            SourceParameters pars = new SourceParameters();
  -                            // first include all request parameters
  -                            Enumeration requestParameters = 
this.request.getParameterNames();
  -                            String current;
  -                            while (requestParameters.hasMoreElements() == true) {
  -                                current = (String)requestParameters.nextElement();
  -                                pars.setParameter(current, 
this.request.getParameter(current));
  -                            }
  -                            this.changeUser(role, id, pars);
  -                        }
  -                    }
  -                    
context.setAttribute(AuthenticationManager.SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, null);
  -                }
  -                if (addingNewUserFailed == false) {
  -                    state = (isAdmin == true ? "adduser" : "seluser");
  -                } else {
  -                    state = "erruser";
  -                }
  -            }
  -
  -            if (state.equals("seluser") == true) {
  -                String role;
  -                String id;
  -
  -                if (isAdmin == false) {
  -                    SourceParameters pars = this.createParameters(null);
  -                    id = pars.getParameter("ID", null);
  -                    role = pars.getParameter("role", null);
  -                } else {
  -                    role = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ROLE);
  -                    id   = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ID);
  -                }
  -                if (role != null && id != null) {
  -                    
context.setAttribute(AuthenticationManager.SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
  -
  -                    // include users
  -                    DocumentFragment userDF = this.getUsers(role, id);
  -                    Element          users   = null;
  -                    try {
  -                        if (userDF != null) users = 
(Element)DOMUtil.getSingleNode(userDF, "users/user");
  -                    } catch (javax.xml.transform.TransformerException local) {
  -                        throw new ProcessingException("TransformerException: " + 
local, local);
  -                    }
  -                    consumer.startElement("", "uservalues", "uservalues", attr);
  -                    if (users != null && users.hasChildNodes() == true) {
  -                        NodeList childs = users.getChildNodes();
  -                        for(int i = 0; i < childs.getLength(); i++) {
  -                            if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
  -                                IncludeXMLConsumer.includeNode(childs.item(i), 
consumer, consumer);
  -                        }
  -                    }
  -                    consumer.endElement("", "uservalues", "uservalues");
  -                }
  -                consumer.startElement("", "user", "user", attr);
  -                consumer.characters("old".toCharArray(), 0, 3);
  -                consumer.endElement("", "user", "user");
  -                if (isAdmin == false) {
  -                    consumer.startElement("", "role", "role", attr);
  -                    consumer.characters(role.toCharArray(), 0, role.length());
  -                    consumer.endElement("", "role", "role");
  -               }
  -            }
  -
  -            if (state.equals("erruser") == true) {
  -                String role;
  -                String id;
  -
  -                if (isAdmin == false) {
  -                    SourceParameters pars = this.createParameters(null);
  -                    id = pars.getParameter("ID", null);
  -                    role = pars.getParameter("role", null);
  -                } else {
  -                    role = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ROLE);
  -                    id   = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ID);
  -                }
  -                if (role != null && id != null) {
  -                    
context.setAttribute(AuthenticationManager.SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
  -
  -                    // include users
  -                    DocumentFragment userDF = this.getUsers(role, id);
  -                    Element          users   = null;
  -                    try {
  -                        if (userDF != null) users = 
(Element)DOMUtil.getSingleNode(userDF, "users/user");
  -                    } catch (javax.xml.transform.TransformerException local) {
  -                        throw new ProcessingException("TransformerException: " + 
local, local);
  -                    }
  -                    consumer.startElement("", "uservalues", "uservalues", attr);
  -                    if (users != null && users.hasChildNodes() == true) {
  -                        NodeList childs = users.getChildNodes();
  -                        for(int i = 0; i < childs.getLength(); i++) {
  -                            if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
  -                                IncludeXMLConsumer.includeNode(childs.item(i), 
consumer, consumer);
  -                        }
  -                    }
  -                    consumer.endElement("", "uservalues", "uservalues");
  -                }
  -                consumer.startElement("", "user", "user", attr);
  -                consumer.characters("error".toCharArray(), 0, 5);
  -                consumer.endElement("", "user", "user");
  -                if (isAdmin == false) {
  -                    consumer.startElement("", "role", "role", attr);
  -                    consumer.characters(role.toCharArray(), 0, role.length());
  -                    consumer.endElement("", "role", "role");
  -               }
  -            }
  -
  -            if (state.equals("adduser") == true) {
  -                consumer.startElement("", "user", "user", attr);
  -                consumer.characters("new".toCharArray(), 0, 3);
  -                consumer.endElement("", "user", "user");
  -            }
  -
  -            if (state.equals("selrole") == true) {
  -                String role = 
this.request.getParameter(AuthenticationManager.REQ_PARAMETER_ROLE);
  -                
context.setAttribute(AuthenticationManager.SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
  -                // include users
  -                DocumentFragment userDF = this.getUsers(role, null);
  -                Node             users   = null;
  -                try {
  -                    if (userDF != null) users = DOMUtil.getSingleNode(userDF, 
"users");
  -                } catch (javax.xml.transform.TransformerException local) {
  -                    throw new ProcessingException("TransformerException: " + local, 
local);
  -                }
  -                IncludeXMLConsumer.includeNode(users, consumer, consumer);
  -            }
  -
  -            if (isAdmin == true) {
  -                // include roles
  -                DocumentFragment rolesDF = this.getRoles();
  -                Node             roles   = null;
  -                try {
  -                    if (rolesDF != null) roles = DOMUtil.getSingleNode(rolesDF, 
"roles");
  -                } catch (javax.xml.transform.TransformerException local) {
  -                    throw new ProcessingException("TransformerException: " + local, 
local);
  -                }
  -                IncludeXMLConsumer.includeNode(roles, consumer, consumer);
  -
  -                // include selected role
  -                String role = 
(String)context.getAttribute(AuthenticationManager.SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
  -                if (role != null) {
  -                    consumer.startElement("", "role", "role", attr);
  -                    consumer.characters(role.toCharArray(), 0, role.length());
  -                    consumer.endElement("", "role", "role");
  -                }
  -            }
  -        } // end synchronized(context)
  -
  -        consumer.endElement("", "configuration", "configuration");
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END showConfiguration");
  -        }
  +    public String getApplicationName() {
  +        return this.applicationName;
       }
  -
  +    
       /**
        * Is the current user authenticated for the given handler?
        */
  @@ -1068,257 +782,6 @@
               this.getLogger().debug("END createHandlerContext context="+context);
           }
           return context;
  -    }
  -
  -    /**
  -     * Get all users in a document fragment with the following children:
  -     * <users>
  -     *     <user>
  -     *         <ID>...</ID>
  -     *         <role>...</role> <!-- optional -->
  -     *         <data>
  -     *         ...
  -     *         </data>
  -     *     </user>
  -     *     ....
  -     * </users>
  -     * The document fragment might contain further nodes at the root!
  -     * If <code>role</code> is <code>null</code> all users are fetched,
  -     * otherwise only the users for this role.
  -     * If also ID is not null only the single user is fetched.
  -     */
  -    public DocumentFragment getUsers(String role, String ID)
  -    throws ProcessingException {
  -        // calling method is syned
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN getUsers role="+role+", ID="+ID);
  -        }
  -        DocumentFragment frag = null;
  -
  -        if (this.handler != null && this.handler.getLoadUsersResource() != null) {
  -            final Resource loadUsersResource = this.handler.getLoadUsersResource();
  -            final SourceParameters loadParameters = 
loadUsersResource.getResourceParameters();
  -            SourceParameters parameters = (loadParameters == null) ? new 
SourceParameters()
  -                                                                     : 
(SourceParameters)loadParameters.clone();
  -            if (this.applicationName != null)
  -                parameters.setSingleParameterValue("application", 
this.applicationName);
  -            if (ID != null) {
  -                parameters.setSingleParameterValue("type", "user");
  -                parameters.setSingleParameterValue("ID", ID);
  -            } else {
  -                parameters.setSingleParameterValue("type", "users");
  -            }
  -            if (role != null) parameters.setSingleParameterValue("role", role);
  -            frag = 
this.getResourceConnector().loadXML(loadUsersResource.getResourceType(), null,
  -                                                       
loadUsersResource.getResourceIdentifier(), parameters);
  -        }
  -
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END getUsers fragment="+(frag == null ? "null" 
: XMLUtils.serializeNodeToXML(frag)));
  -        }
  -        return frag;
  -    }
  -
  -    /**
  -     * Get all roles in a document fragment with the following children:
  -     * <roles>
  -     *     <role>...</role>
  -     *     ....
  -     * </roles>
  -     * The document fragment might contain further nodes at the root!
  -     */
  -    public DocumentFragment getRoles()
  -    throws ProcessingException {
  -        // calling method is syned
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN getRoles");
  -        }
  -        DocumentFragment frag = null;
  -
  -        if (this.handler != null && this.handler.getLoadRolesResource() != null) {
  -            final Resource loadRolesResource = this.handler.getLoadRolesResource();
  -            final SourceParameters loadParameters = 
loadRolesResource.getResourceParameters();
  -            SourceParameters parameters = (loadParameters == null) ? new 
SourceParameters()
  -                                                                     : 
(SourceParameters)loadParameters.clone();
  -            if (this.applicationName != null)
  -                parameters.setSingleParameterValue("application", 
this.applicationName);
  -            parameters.setSingleParameterValue("type", "roles");
  -            frag = 
this.getResourceConnector().loadXML(loadRolesResource.getResourceType(), null,
  -                                                       
loadRolesResource.getResourceIdentifier(), parameters);
  -        }
  -
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END getRoles fragment="+frag);
  -        }
  -        return frag;
  -    }
  -
  -    /**
  -     * Add a role
  -     */
  -    private void addRole(String name, SourceParameters parameters)
  -    throws ProcessingException {
  -        // calling method is syned
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN addRole role="+name+", 
parameters="+parameters);
  -        }
  -        if (this.handler != null && this.handler.getNewRoleResource() != null) {
  -            final Resource newRoleResource = this.handler.getNewRoleResource();
  -            final SourceParameters handlerPars = 
newRoleResource.getResourceParameters();
  -            if (parameters == null) parameters = new SourceParameters();
  -            parameters.add(handlerPars);
  -
  -            if (this.applicationName != null)
  -                parameters.setSingleParameterValue("application", 
this.applicationName);
  -            parameters.setSingleParameterValue("type", "role");
  -            parameters.setSingleParameterValue("role", name);
  -
  -            this.getResourceConnector().loadXML(newRoleResource.getResourceType(), 
null,
  -                                                
newRoleResource.getResourceIdentifier(), parameters);
  -        }
  -
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END addRole");
  -        }
  -    }
  -
  -    /**
  -     * Add a user.
  -     * @return If a user with ID already exists <code>false</code> is returned.
  -     */
  -    public boolean addUser(String role, String ID, SourceParameters parameters)
  -    throws ProcessingException {
  -        // calling method is syned
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN addUser role="+role+", ID="+ID+", 
parameters="+parameters);
  -        }
  -        boolean result = false;
  -
  -        if (this.handler != null
  -            && this.handler.getNewUserResource() != null
  -            && ID != null
  -            && ID.trim().length() > 0) {
  -            // first test if a user with this ID already exists
  -            DocumentFragment user = this.getUsers(null, null);
  -            Node node = null;
  -            if (user != null) {
  -                try {
  -                    node = DOMUtil.getSingleNode(user, 
"users/user/ID[text()='"+ID+"']");
  -                } catch (javax.xml.transform.TransformerException local) {
  -                    throw new ProcessingException("Transformer exception: " + 
local, local);
  -                }
  -            }
  -            if (user == null || node == null) {
  -                final Resource newUserResource = this.handler.getNewUserResource();
  -                final SourceParameters newUsersPars = 
newUserResource.getResourceParameters();
  -                if (parameters == null) parameters = new SourceParameters();
  -                parameters.add(newUsersPars);
  -
  -                if (this.applicationName != null)
  -                    parameters.setSingleParameterValue("application", 
this.applicationName);
  -                parameters.setSingleParameterValue("type", "user");
  -                parameters.setSingleParameterValue("role", role);
  -                parameters.setSingleParameterValue("ID", ID);
  -
  -                
this.getResourceConnector().loadXML(newUserResource.getResourceType(), null,
  -                                                    
newUserResource.getResourceIdentifier(), parameters);
  -                result = true;
  -            }
  -        }
  -
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END addUser success="+result);
  -        }
  -        return result;
  -    }
  -
  -    /**
  -     * Delete a role
  -     */
  -    private void deleteRole(String name, SourceParameters parameters)
  -    throws ProcessingException {
  -        // calling method is syned
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN deleteRole role="+name+", 
parameters="+parameters);
  -        }
  -        if (this.handler != null && this.handler.getDeleteRoleResource() != null) {
  -            final Resource deleteRoleResource = 
this.handler.getDeleteRoleResource();
  -            final SourceParameters handlerPars = 
deleteRoleResource.getResourceParameters();
  -            if (parameters == null) parameters = new SourceParameters();
  -            parameters.add(handlerPars);
  -
  -            if (this.applicationName != null)
  -                parameters.setSingleParameterValue("application", 
this.applicationName);
  -            parameters.setSingleParameterValue("type", "role");
  -            parameters.setSingleParameterValue("role", name);
  -
  -            
this.getResourceConnector().loadXML(deleteRoleResource.getResourceType(), null,
  -                                                
deleteRoleResource.getResourceIdentifier(), parameters);
  -        }
  -
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END deleteRole");
  -        }
  -    }
  -
  -    /**
  -     * Delete a user
  -     */
  -    private void deleteUser(String role, String name, SourceParameters parameters)
  -    throws ProcessingException {
  -        // calling method is syned
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN deleteUser role="+role+", ID="+name+", 
parameters="+parameters);
  -        }
  -        if (this.handler != null && this.handler.getDeleteUserResource() != null) {
  -            final Resource deleteUserResource = 
this.handler.getDeleteUserResource();
  -            final SourceParameters handlerPars = 
deleteUserResource.getResourceParameters();
  -            if (parameters == null) parameters = new SourceParameters();
  -            parameters.add(handlerPars);
  -
  -            if (this.applicationName != null)
  -                parameters.setSingleParameterValue("application", 
this.applicationName);
  -            parameters.setSingleParameterValue("type", "user");
  -            parameters.setSingleParameterValue("role", role);
  -            parameters.setSingleParameterValue("ID", name);
  -
  -            
this.getResourceConnector().loadXML(deleteUserResource.getResourceType(), null,
  -                                                
deleteUserResource.getResourceIdentifier(), parameters);
  -        }
  -
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END deleteUser");
  -        }
  -    }
  -
  -    /**
  -     * Change a user
  -     */
  -    private void changeUser(String role, String name, SourceParameters parameters)
  -    throws ProcessingException {
  -        // calling method is syned
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("BEGIN changeUser role="+role+", ID="+name+", 
parameters="+parameters);
  -        }
  -        if (this.handler != null && this.handler.getChangeUserResource() != null) {
  -            final Resource changeUserResource = 
this.handler.getChangeUserResource();
  -            final SourceParameters handlerPars = 
changeUserResource.getResourceParameters();
  -            if (parameters == null) parameters = new SourceParameters();
  -            parameters.add(handlerPars);
  -
  -            if (this.applicationName != null)
  -                parameters.setSingleParameterValue("application", 
this.applicationName);
  -            parameters.setSingleParameterValue("type", "user");
  -            parameters.setSingleParameterValue("role", role);
  -            parameters.setSingleParameterValue("ID", name);
  -
  -            
this.getResourceConnector().loadXML(changeUserResource.getResourceType(), null,
  -                                                
changeUserResource.getResourceIdentifier(), parameters);
  -        }
  -
  -        if (this.getLogger().isDebugEnabled() == true) {
  -            this.getLogger().debug("END changeUser");
  -        }
       }
   
       /**
  
  
  
  1.2       +0 -106    
xml-cocoon2/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/Handler.java
  
  Index: Handler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/Handler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Handler.java      27 Sep 2002 09:05:06 -0000      1.1
  +++ Handler.java      4 Oct 2002 12:00:38 -0000       1.2
  @@ -94,27 +94,6 @@
       /** The ApplicationHandler */
       private Map applications = new Hashtable(3, 2);
   
  -    /** The load-users resource */
  -    private Resource loadUsersResource;
  -
  -    /** The load-roles resource */
  -    private Resource loadRolesResource;
  -
  -    /** The new-user resource */
  -    private Resource newUserResource;
  -
  -    /** The new-role resource */
  -    private Resource newRoleResource;
  -
  -    /** The delete-role resource */
  -    private Resource deleteRoleResource;
  -
  -    /** The delete-user resource */
  -    private Resource deleteUserResource;
  -
  -    /** The change-user resource */
  -    private Resource changeUserResource;
  -
       /** The handler contexts */
       private List handlerContexts = new ArrayList(2);
   
  @@ -138,13 +117,6 @@
           copy.authenticationResource = this.authenticationResource;
           copy.loadResource = this.loadResource;
           copy.saveResource = this.saveResource;
  -        copy.loadUsersResource = this.loadUsersResource;
  -        copy.loadRolesResource = this.loadRolesResource;
  -        copy.newUserResource = this.newUserResource;
  -        copy.newRoleResource = this.newRoleResource;
  -        copy.deleteUserResource = this.deleteUserResource;
  -        copy.deleteRoleResource = this.deleteRoleResource;
  -        copy.changeUserResource = this.changeUserResource;
           Iterator iter = this.applications.keySet().iterator();
           while (iter.hasNext()) {
               final String name = (String)iter.next();
  @@ -200,55 +172,6 @@
               this.saveResource.setResourceParameters(SourceParameters.create(child));
           }
   
  -        // get load-users resource (optional)
  -        child = conf.getChild("load-users", false);
  -        if (child != null) {
  -            this.loadUsersResource = new Resource(resolver, 
child.getAttribute("uri"));
  -            
this.loadUsersResource.setResourceParameters(SourceParameters.create(child));
  -        }
  -
  -        // get load-roles resource (optional)
  -        child = conf.getChild("load-roles", false);
  -        if (child != null) {
  -            this.loadRolesResource = new Resource(resolver, 
child.getAttribute("uri"));
  -            
this.loadRolesResource.setResourceParameters(SourceParameters.create(child));
  -        }
  -
  -        // get new user resource (optional)
  -        child = conf.getChild("new-user", false);
  -        if (child != null) {
  -            this.newUserResource = new Resource(resolver, 
child.getAttribute("uri"));
  -            
this.newUserResource.setResourceParameters(SourceParameters.create(child));
  -        }
  -
  -        // get new role resource (optional)
  -        child = conf.getChild("new-role", false);
  -        if (child != null) {
  -            this.newRoleResource = new Resource(resolver, 
child.getAttribute("uri"));
  -            
this.newRoleResource.setResourceParameters(SourceParameters.create(child));
  -        }
  -
  -        // get delete user resource (optional)
  -        child = conf.getChild("delete-user", false);
  -        if (child != null) {
  -            this.deleteUserResource = new Resource(resolver, 
child.getAttribute("uri"));
  -            
this.deleteUserResource.setResourceParameters(SourceParameters.create(child));
  -        }
  -
  -        // get delete role resource (optional)
  -        child = conf.getChild("delete-role", false);
  -        if (child != null) {
  -            this.deleteRoleResource = new Resource(resolver, 
child.getAttribute("uri"));
  -            
this.deleteRoleResource.setResourceParameters(SourceParameters.create(child));
  -        }
  -
  -        // get change user resource (optional)
  -        child = conf.getChild("change-user", false);
  -        if (child != null) {
  -            this.changeUserResource = new Resource(resolver, 
child.getAttribute("uri"));
  -            
this.changeUserResource.setResourceParameters(SourceParameters.create(child));
  -        }
  -
           // And now: Applications
           child = conf.getChild("applications", false);
           if (child != null) {
  @@ -307,35 +230,6 @@
       public Resource getAuthenticationResource() {
           return this.authenticationResource;
       }
  -
  -    /**
  -     * Get the load users resource
  -     */
  -    public Resource getLoadUsersResource() { return loadUsersResource; }
  -
  -    /**
  -     * Get the load roles resource
  -     */
  -    public Resource getLoadRolesResource() { return loadRolesResource; }
  -
  -    /**
  -     * Get the new user resource
  -     */
  -    public Resource getNewUserResource() { return this.newUserResource; }
  -
  -    /**
  -     * Get the new role resource
  -     */
  -    public Resource getNewRoleResource() { return this.newRoleResource; }
  -
  -    /** Get the delete user resource */
  -    public Resource getDeleteUserResource() { return this.deleteUserResource; }
  -
  -    /** Get the delete role resource */
  -    public Resource getDeleteRoleResource() { return this.deleteRoleResource; }
  -
  -    /** Get the change user resource */
  -    public Resource getChangeUserResource() { return this.changeUserResource; }
   
       /** Get the save resource */
       public Resource getSaveResource() { return this.saveResource; }
  
  
  
  1.2       +759 -2    
xml-cocoon2/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/generation/ConfigurationGenerator.java
  
  Index: ConfigurationGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/generation/ConfigurationGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ConfigurationGenerator.java       27 Sep 2002 09:05:18 -0000      1.1
  +++ ConfigurationGenerator.java       4 Oct 2002 12:00:38 -0000       1.2
  @@ -52,12 +52,37 @@
   
   
   import java.io.IOException;
  +import java.util.Enumeration;
  +
  +import org.w3c.dom.Document;
  +import org.w3c.dom.DocumentFragment;
  +import org.w3c.dom.Element;
  +import org.w3c.dom.Node;
  +import org.w3c.dom.NodeList;
   import org.xml.sax.SAXException;
  +import org.xml.sax.helpers.AttributesImpl;
  +import org.xml.sax.helpers.DefaultHandler;
   
   import org.apache.avalon.framework.component.ComponentException;
  +import org.apache.avalon.framework.configuration.Configuration;
  +import org.apache.avalon.framework.configuration.ConfigurationException;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.components.source.SourceUtil;
  +import org.apache.cocoon.environment.ObjectModelHelper;
  +import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.Response;
  +import org.apache.cocoon.environment.Session;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.ComposerGenerator;
   import org.apache.cocoon.webapps.authentication.components.AuthenticationManager;
  +import org.apache.cocoon.xml.AbstractXMLConsumer;
  +import org.apache.cocoon.xml.IncludeXMLConsumer;
  +import org.apache.cocoon.xml.XMLConsumer;
  +import org.apache.cocoon.xml.XMLUtils;
  +import org.apache.cocoon.xml.dom.DOMUtil;
  +import org.apache.excalibur.source.Source;
  +import org.apache.excalibur.source.SourceException;
  +import org.apache.excalibur.source.SourceParameters;
   
   /**
    *  This is the authentication Configuration Generator.
  @@ -68,6 +93,17 @@
   public final class ConfigurationGenerator
   extends ComposerGenerator {
   
  +    /** Request parameter */
  +    public static final String REQ_PARAMETER_STATE = "authstate";
  +    public static final String REQ_PARAMETER_ROLE  = "authrole";
  +    public static final String REQ_PARAMETER_ID    = "authid";
  +    public static final String REQ_PARAMETER_USER  = "authuser";
  +
  +    private static final String SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE = 
"org.apache.cocoon.webapps.generation.ConfigurationGenerator.simple-role";
  +
  +    /**
  +     * Generate the configuration
  +     */
       public void generate()
       throws IOException, SAXException, ProcessingException {
   
  @@ -77,10 +113,18 @@
               authManager = 
(AuthenticationManager)this.manager.lookup(AuthenticationManager.ROLE);
   
               if (authManager.isAuthenticated() == true) {
  -                authManager.showConfiguration(this.xmlConsumer, this.source);
  +                Configuration conf = 
authManager.getModuleConfiguration("single-role-user-management");
  +                if (conf == null) {
  +                    throw new ProcessingException("Module configuration 
'single-role-user-management' for authentication user management generator not 
found.");
  +                }
  +                UserManagementHandler handler = new UserManagementHandler(conf,
  +                                                                          
authManager.getApplicationName());
  +                this.showConfiguration(this.xmlConsumer, this.source, handler, 
authManager);
               }
  +        } catch (ConfigurationException ex) {
  +            throw new ProcessingException("ConfigurationException: " + ex, ex);
           } catch (ComponentException ex) {
  -            throw new ProcessingException("ComponentManagerException: " + ex, ex);
  +            throw new ProcessingException("ComponentException: " + ex, ex);
           } finally {
               this.manager.release( authManager );
           }
  @@ -88,4 +132,717 @@
           this.xmlConsumer.endDocument();
       }
   
  +
  +    /**
  +     * Show the configuration for the admin.
  +     * If <code>src</code> is "admin" or null the admin configuration is shown.
  +     * If <code>src</code> is "user" the configuration of the current user
  +     * is shown.
  +     */
  +    public void showConfiguration(XMLConsumer consumer,
  +                                   String      src,
  +                                   UserManagementHandler handler,
  +                                   AuthenticationManager authManager)
  +    throws ProcessingException, SAXException, IOException {
  +        // synchronized
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN showConfiguration consumer=" + consumer + 
", src="+src);
  +        }
  +
  +        // get some important information
  +        Request request = ObjectModelHelper.getRequest(this.objectModel);
  +        Response response = ObjectModelHelper.getResponse(this.objectModel);
  +        Session session = request.getSession();
  +        
  +        boolean isAdmin = (src == null || src.equals("admin"));
  +
  +        // now start producing xml:
  +        AttributesImpl attr = new AttributesImpl();
  +        consumer.startElement("", "configuration", "configuration", attr);
  +
  +        // set the conf uri:
  +        // This is a bug in the servlet 2.2 API!!!
  +        // It does not contain the context:  String uri = 
HttpUtils.getRequestURL(this.request).toString();
  +        // So: ABSOLUTELY USELESS
  +        String uri = response.encodeURL(request.getRequestURI());
  +        consumer.startElement("", "uri", "uri", attr);
  +        consumer.characters(uri.toCharArray(), 0, uri.length());
  +        consumer.endElement("", "uri", "uri");
  +
  +        if (isAdmin == true) {
  +            // build the menue
  +            consumer.startElement("", "menue", "menue", attr);
  +
  +            if (handler.getNewRoleResource() != null) {
  +                consumer.startElement("", "addrole", "addrole", attr);
  +                consumer.endElement("", "addrole", "addrole");
  +            }
  +            if (handler.getDeleteRoleResource() != null) {
  +                consumer.startElement("", "delrole", "delrole", attr);
  +                consumer.endElement("", "delrole", "delrole");
  +            }
  +
  +            consumer.endElement("", "menue", "menue");
  +        }
  +
  +
  +        synchronized (session) { 
  +
  +            String state = request.getParameter(REQ_PARAMETER_STATE);
  +            if (state == null) {
  +                state = (isAdmin == true ? "main" : "seluser");
  +            }
  +
  +            if (state.equals("addrole") == true) {
  +                String role = request.getParameter(REQ_PARAMETER_ROLE);
  +                if (role != null && role.trim().length() > 0) {
  +                    SourceParameters pars = new SourceParameters();
  +                    // first include all request parameters
  +                    Enumeration requestParameters = request.getParameterNames();
  +                    String current;
  +                    while (requestParameters.hasMoreElements() == true) {
  +                        current = (String)requestParameters.nextElement();
  +                        pars.setParameter(current, request.getParameter(current));
  +                    }
  +                    this.addRole(role, pars, handler);
  +                } else {
  +                    role = null;
  +                }
  +                session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
  +            }
  +
  +            if (state.equals("delrole") == true) {
  +                try {
  +                    String role = request.getParameter(REQ_PARAMETER_ROLE);
  +                    if (role != null) {
  +                        // first delete user
  +                        Document userDF = this.getUsers(role, null, handler);
  +                        NodeList users   = null;
  +                        if (userDF != null) users = DOMUtil.selectNodeList(userDF, 
"users/user");
  +                        if (users != null) {
  +                            for(int i = 0; i < users.getLength(); i++) {
  +                                this.deleteUser(role, 
DOMUtil.getValueOf(users.item(i), "ID"), null, handler);
  +                            }
  +                        }
  +                        this.deleteRole(role, null, handler);
  +                    }
  +                    session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
  +                } catch (javax.xml.transform.TransformerException local) {
  +                    throw new ProcessingException("TransformerException: " + local, 
local);
  +                }
  +            }
  +
  +
  +            if (state.equals("chguser") == true) {
  +                String role;
  +                String id;
  +                String user;
  +
  +                if (isAdmin == false) {
  +                    SourceParameters pars = authManager.createParameters(null);
  +                    id = pars.getParameter("ID", null);
  +                    role = pars.getParameter("role", null);
  +                    user = "old";
  +                } else {
  +                    role = request.getParameter(REQ_PARAMETER_ROLE);
  +                    id   = request.getParameter(REQ_PARAMETER_ID);
  +                    user = request.getParameter(REQ_PARAMETER_USER);
  +                }
  +
  +                boolean addingNewUserFailed = false;
  +                if (role != null && id != null && user != null) {
  +                    if (user.equals("new") == true) {
  +                        SourceParameters pars = new SourceParameters();
  +                        // first include all request parameters
  +                        Enumeration requestParameters = request.getParameterNames();
  +                        String current;
  +                        while (requestParameters.hasMoreElements() == true) {
  +                            current = (String)requestParameters.nextElement();
  +                            pars.setParameter(current, 
request.getParameter(current));
  +                        }
  +                        addingNewUserFailed = !this.addUser(role, id, pars, 
handler);
  +                        if (addingNewUserFailed == false) {
  +                            consumer.startElement("", "addeduser", "addeduser", 
attr);
  +                            consumer.characters(id.toCharArray(), 0, id.length());
  +                            consumer.endElement("", "addeduser", "addeduser");
  +                        }
  +                    } else {
  +                        String delete = request.getParameter("authdeluser");
  +                        if (delete != null && delete.equals("true") == true) {
  +                            this.deleteUser(role, id, null, handler);
  +                        } else {
  +                            SourceParameters pars = new SourceParameters();
  +                            // first include all request parameters
  +                            Enumeration requestParameters = 
request.getParameterNames();
  +                            String current;
  +                            while (requestParameters.hasMoreElements() == true) {
  +                                current = (String)requestParameters.nextElement();
  +                                pars.setParameter(current, 
request.getParameter(current));
  +                            }
  +                            this.changeUser(role, id, pars, handler);
  +                        }
  +                    }
  +                    session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
  +                }
  +                if (addingNewUserFailed == false) {
  +                    state = (isAdmin == true ? "adduser" : "seluser");
  +                } else {
  +                    state = "erruser";
  +                }
  +            }
  +
  +            if (state.equals("seluser") == true) {
  +                String role;
  +                String id;
  +
  +                if (isAdmin == false) {
  +                    SourceParameters pars = authManager.createParameters(null);
  +                    id = pars.getParameter("ID", null);
  +                    role = pars.getParameter("role", null);
  +                } else {
  +                    role = request.getParameter(REQ_PARAMETER_ROLE);
  +                    id   = request.getParameter(REQ_PARAMETER_ID);
  +                }
  +                if (role != null && id != null) {
  +                    session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, 
role);
  +
  +                    // include users
  +                    Document userDF = this.getUsers(role, id, handler);
  +                    Element  users   = null;
  +                    try {
  +                        if (userDF != null) users = 
(Element)DOMUtil.getSingleNode(userDF, "users/user");
  +                    } catch (javax.xml.transform.TransformerException local) {
  +                        throw new ProcessingException("TransformerException: " + 
local, local);
  +                    }
  +                    consumer.startElement("", "uservalues", "uservalues", attr);
  +                    if (users != null && users.hasChildNodes() == true) {
  +                        NodeList childs = users.getChildNodes();
  +                        for(int i = 0; i < childs.getLength(); i++) {
  +                            if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
  +                                IncludeXMLConsumer.includeNode(childs.item(i), 
consumer, consumer);
  +                        }
  +                    }
  +                    consumer.endElement("", "uservalues", "uservalues");
  +                }
  +                consumer.startElement("", "user", "user", attr);
  +                consumer.characters("old".toCharArray(), 0, 3);
  +                consumer.endElement("", "user", "user");
  +                if (isAdmin == false) {
  +                    consumer.startElement("", "role", "role", attr);
  +                    consumer.characters(role.toCharArray(), 0, role.length());
  +                    consumer.endElement("", "role", "role");
  +               }
  +            }
  +
  +            if (state.equals("erruser") == true) {
  +                String role;
  +                String id;
  +
  +                if (isAdmin == false) {
  +                    SourceParameters pars = authManager.createParameters(null);
  +                    id = pars.getParameter("ID", null);
  +                    role = pars.getParameter("role", null);
  +                } else {
  +                    role = request.getParameter(REQ_PARAMETER_ROLE);
  +                    id   = request.getParameter(REQ_PARAMETER_ID);
  +                }
  +                if (role != null && id != null) {
  +                    session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, 
role);
  +
  +                    // include users
  +                    Document userDF = this.getUsers(role, id, handler);
  +                    Element  users   = null;
  +                    try {
  +                        if (userDF != null) users = 
(Element)DOMUtil.getSingleNode(userDF, "users/user");
  +                    } catch (javax.xml.transform.TransformerException local) {
  +                        throw new ProcessingException("TransformerException: " + 
local, local);
  +                    }
  +                    consumer.startElement("", "uservalues", "uservalues", attr);
  +                    if (users != null && users.hasChildNodes() == true) {
  +                        NodeList childs = users.getChildNodes();
  +                        for(int i = 0; i < childs.getLength(); i++) {
  +                            if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
  +                                IncludeXMLConsumer.includeNode(childs.item(i), 
consumer, consumer);
  +                        }
  +                    }
  +                    consumer.endElement("", "uservalues", "uservalues");
  +                }
  +                consumer.startElement("", "user", "user", attr);
  +                consumer.characters("error".toCharArray(), 0, 5);
  +                consumer.endElement("", "user", "user");
  +                if (isAdmin == false) {
  +                    consumer.startElement("", "role", "role", attr);
  +                    consumer.characters(role.toCharArray(), 0, role.length());
  +                    consumer.endElement("", "role", "role");
  +               }
  +            }
  +
  +            if (state.equals("adduser") == true) {
  +                consumer.startElement("", "user", "user", attr);
  +                consumer.characters("new".toCharArray(), 0, 3);
  +                consumer.endElement("", "user", "user");
  +            }
  +
  +            if (state.equals("selrole") == true) {
  +                String role = request.getParameter(REQ_PARAMETER_ROLE);
  +                session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
  +                // include users
  +                Document userDF = this.getUsers(role, null, handler);
  +                Node     users   = null;
  +                try {
  +                    if (userDF != null) users = DOMUtil.getSingleNode(userDF, 
"users");
  +                } catch (javax.xml.transform.TransformerException local) {
  +                    throw new ProcessingException("TransformerException: " + local, 
local);
  +                }
  +                IncludeXMLConsumer.includeNode(users, consumer, consumer);
  +            }
  +
  +            if (isAdmin == true) {
  +                // include roles
  +                Document rolesDF = this.getRoles(handler);
  +                Node     roles   = null;
  +                try {
  +                    if (rolesDF != null) roles = DOMUtil.getSingleNode(rolesDF, 
"roles");
  +                } catch (javax.xml.transform.TransformerException local) {
  +                    throw new ProcessingException("TransformerException: " + local, 
local);
  +                }
  +                IncludeXMLConsumer.includeNode(roles, consumer, consumer);
  +
  +                // include selected role
  +                String role = 
(String)session.getAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
  +                if (role != null) {
  +                    consumer.startElement("", "role", "role", attr);
  +                    consumer.characters(role.toCharArray(), 0, role.length());
  +                    consumer.endElement("", "role", "role");
  +                }
  +            }
  +        } // end synchronized(context)
  +
  +        consumer.endElement("", "configuration", "configuration");
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END showConfiguration");
  +        }
  +    }
  +
  +    /**
  +     * Get all users in a document fragment with the following children:
  +     * <users>
  +     *     <user>
  +     *         <ID>...</ID>
  +     *         <role>...</role> <!-- optional -->
  +     *         <data>
  +     *         ...
  +     *         </data>
  +     *     </user>
  +     *     ....
  +     * </users>
  +     * The document fragment might contain further nodes at the root!
  +     * If <code>role</code> is <code>null</code> all users are fetched,
  +     * otherwise only the users for this role.
  +     * If also ID is not null only the single user is fetched.
  +     */
  +    public Document getUsers(String role, String ID, UserManagementHandler handler)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN getUsers role="+role+", ID="+ID);
  +        }
  +        Document frag = null;
  +
  +        if (handler.getLoadUsersResource() != null) {
  +            final String loadUsersResource = handler.getLoadUsersResource();
  +            final SourceParameters loadParameters = 
handler.getLoadUsersResourceParameters();
  +            SourceParameters parameters = (loadParameters == null) ? new 
SourceParameters()
  +                                                                     : 
(SourceParameters)loadParameters;
  +            if (handler.getApplicationName() != null) {
  +                parameters.setSingleParameterValue("application", 
handler.getApplicationName());
  +            }
  +            if (ID != null) {
  +                parameters.setSingleParameterValue("type", "user");
  +                parameters.setSingleParameterValue("ID", ID);
  +            } else {
  +                parameters.setSingleParameterValue("type", "users");
  +            }
  +            if (role != null) parameters.setSingleParameterValue("role", role);
  +            frag = this.loadResource(loadUsersResource, parameters);
  +
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END getUsers fragment="+(frag == null ? "null" 
: XMLUtils.serializeNodeToXML(frag)));
  +        }
  +        return frag;
  +    }
  +
  +    /**
  +     * Get all roles in a document fragment with the following children:
  +     * <roles>
  +     *     <role>...</role>
  +     *     ....
  +     * </roles>
  +     * The document fragment might contain further nodes at the root!
  +     */
  +    public Document getRoles(UserManagementHandler handler)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN getRoles");
  +        }
  +        Document frag = null;
  +
  +        if (handler.getLoadRolesResource() != null) {
  +            final String loadRolesResource = handler.getLoadRolesResource();
  +            final SourceParameters loadParameters = 
handler.getLoadRolesResourceParameters();
  +            SourceParameters parameters = (loadParameters == null) ? new 
SourceParameters()
  +                                                                     : 
(SourceParameters)loadParameters.clone();
  +            if (handler.getApplicationName() != null)
  +                parameters.setSingleParameterValue("application", 
handler.getApplicationName());
  +            parameters.setSingleParameterValue("type", "roles");
  +            frag = this.loadResource(loadRolesResource, parameters);
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END getRoles fragment="+frag);
  +        }
  +        return frag;
  +    }
  +
  +    /**
  +     * Add a role
  +     */
  +    private void addRole(String name, SourceParameters parameters, 
UserManagementHandler handler)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN addRole role="+name+", 
parameters="+parameters);
  +        }
  +        if (handler.getNewRoleResource() != null) {
  +            final String newRoleResource = handler.getNewRoleResource();
  +            final SourceParameters handlerPars = 
handler.getNewRoleResourceParameters();
  +            if (parameters == null) parameters = new SourceParameters();
  +            parameters.add(handlerPars);
  +
  +            if (handler.getApplicationName() != null)
  +                parameters.setSingleParameterValue("application", 
handler.getApplicationName());
  +            parameters.setSingleParameterValue("type", "role");
  +            parameters.setSingleParameterValue("role", name);
  +
  +            this.invokeResource(newRoleResource, parameters);
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END addRole");
  +        }
  +    }
  +
  +    /**
  +     * Add a user.
  +     * @return If a user with ID already exists <code>false</code> is returned.
  +     */
  +    public boolean addUser(String role, String ID, SourceParameters parameters, 
UserManagementHandler handler)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN addUser role="+role+", ID="+ID+", 
parameters="+parameters);
  +        }
  +        boolean result = false;
  +
  +        if (handler.getNewUserResource() != null
  +            && ID != null
  +            && ID.trim().length() > 0) {
  +            // first test if a user with this ID already exists
  +            Document user = this.getUsers(null, null, handler);
  +            Node node = null;
  +            if (user != null) {
  +                try {
  +                    node = DOMUtil.getSingleNode(user, 
"users/user/ID[text()='"+ID+"']");
  +                } catch (javax.xml.transform.TransformerException local) {
  +                    throw new ProcessingException("Transformer exception: " + 
local, local);
  +                }
  +            }
  +            if (user == null || node == null) {
  +                final String newUserResource = handler.getNewUserResource();
  +                final SourceParameters newUsersPars = 
handler.getNewUserResourceParameters();
  +                if (parameters == null) parameters = new SourceParameters();
  +                parameters.add(newUsersPars);
  +
  +                if (handler.getApplicationName() != null)
  +                    parameters.setSingleParameterValue("application", 
handler.getApplicationName());
  +                parameters.setSingleParameterValue("type", "user");
  +                parameters.setSingleParameterValue("role", role);
  +                parameters.setSingleParameterValue("ID", ID);
  +
  +                this.invokeResource(newUserResource, parameters);
  +                result = true;
  +            }
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END addUser success="+result);
  +        }
  +        return result;
  +    }
  +
  +    /**
  +     * Delete a role
  +     */
  +    private void deleteRole(String name, SourceParameters parameters, 
UserManagementHandler handler)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN deleteRole role="+name+", 
parameters="+parameters);
  +        }
  +        if (handler.getDeleteRoleResource() != null) {
  +            final String deleteRoleResource = handler.getDeleteRoleResource();
  +            final SourceParameters handlerPars = 
handler.getDeleteRoleResourceParameters();
  +            if (parameters == null) parameters = new SourceParameters();
  +            parameters.add(handlerPars);
  +
  +            if (handler.getApplicationName() != null)
  +                parameters.setSingleParameterValue("application", 
handler.getApplicationName());
  +            parameters.setSingleParameterValue("type", "role");
  +            parameters.setSingleParameterValue("role", name);
  +
  +            this.invokeResource(deleteRoleResource, parameters);
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END deleteRole");
  +        }
  +    }
  +
  +    /**
  +     * Delete a user
  +     */
  +    private void deleteUser(String role, String name, SourceParameters parameters, 
UserManagementHandler handler)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN deleteUser role="+role+", ID="+name+", 
parameters="+parameters);
  +        }
  +        if (handler.getDeleteUserResource() != null) {
  +            final String deleteUserResource = handler.getDeleteUserResource();
  +            final SourceParameters handlerPars = 
handler.getDeleteUserResourceParameters();
  +            if (parameters == null) parameters = new SourceParameters();
  +            parameters.add(handlerPars);
  +
  +            if (handler.getApplicationName() != null)
  +                parameters.setSingleParameterValue("application", 
handler.getApplicationName());
  +            parameters.setSingleParameterValue("type", "user");
  +            parameters.setSingleParameterValue("role", role);
  +            parameters.setSingleParameterValue("ID", name);
  +
  +            this.invokeResource(deleteUserResource, parameters);
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END deleteUser");
  +        }
  +    }
  +
  +    /**
  +     * Change a user
  +     */
  +    private void changeUser(String role, String name, SourceParameters parameters, 
UserManagementHandler handler)
  +    throws IOException, ProcessingException, SAXException {
  +        // calling method is syned
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("BEGIN changeUser role="+role+", ID="+name+", 
parameters="+parameters);
  +        }
  +        if (handler.getChangeUserResource() != null) {
  +            final String changeUserResource = handler.getChangeUserResource();
  +            final SourceParameters handlerPars = 
handler.getChangeUserResourceParameters();
  +            if (parameters == null) parameters = new SourceParameters();
  +            parameters.add(handlerPars);
  +
  +            if (handler.getApplicationName() != null)
  +                parameters.setSingleParameterValue("application", 
handler.getApplicationName());
  +            parameters.setSingleParameterValue("type", "user");
  +            parameters.setSingleParameterValue("role", role);
  +            parameters.setSingleParameterValue("ID", name);
  +
  +            this.invokeResource(changeUserResource, parameters);
  +        }
  +
  +        if (this.getLogger().isDebugEnabled() == true) {
  +            this.getLogger().debug("END changeUser");
  +        }
  +    }
  +
  +    /**
  +     * Invoke resource
  +     */
  +    private void invokeResource(String resource,
  +                                 SourceParameters parameters)
  +    throws IOException, ProcessingException, SAXException {
  +        Source source = null;
  +        try {
  +            source = SourceUtil.getSource(resource, 
  +                                          null, 
  +                                          parameters, 
  +                                          this.resolver, 
  +                                          this.objectModel);
  +            this.resolver.toSAX(source, new DefaultHandler());
  +        } catch (SourceException se) {
  +            throw SourceUtil.handle(se);
  +        } finally {
  +            this.resolver.release(source);
  +        }
  +    }
  +    
  +    /**
  +     * Load XML resource
  +     */
  +    private Document loadResource(String resource,
  +                                   SourceParameters parameters)
  +    throws IOException, ProcessingException, SAXException {
  +        Source source = null;
  +        try {
  +            source = SourceUtil.getSource(resource, 
  +                                          null, 
  +                                          parameters, 
  +                                          this.resolver, 
  +                                          this.objectModel);
  +            return SourceUtil.toDOM(source, this.manager);
  +        } catch (SourceException se) {
  +            throw SourceUtil.handle(se);
  +        } finally {
  +            this.resolver.release(source);
  +        }
  +    }
  +}
  +
  +final class UserManagementHandler {
  +
  +    /** The name of the current application */
  +    private String applicationName;
  +    
  +    /** The load-users resource */
  +    private String loadUsersResource;
  +    private SourceParameters loadUsersResourceParameters;
  +    
  +    /** The load-roles resource */
  +    private String loadRolesResource;
  +    private SourceParameters loadRolesResourceParameters;
  +
  +    /** The new-user resource */
  +    private String newUserResource;
  +    private SourceParameters newUserResourceParameters;
  +
  +    /** The new-role resource */
  +    private String newRoleResource;
  +    private SourceParameters newRoleResourceParameters;
  +
  +    /** The delete-role resource */
  +    private String deleteRoleResource;
  +    private SourceParameters deleteRoleResourceParameters;
  +
  +    /** The delete-user resource */
  +    private String deleteUserResource;
  +    private SourceParameters deleteUserResourceParameters;
  +
  +    /** The change-user resource */
  +    private String changeUserResource;
  +    private SourceParameters changeUserResourceParameters;
  +
  +    /**
  +     * Create a new handler object.
  +     */
  +    public UserManagementHandler(Configuration   conf,
  +                                  String          appName)
  +    throws ProcessingException, SAXException, IOException, ConfigurationException {
  +        Configuration child;
  +        
  +        this.applicationName = appName;
  +        
  +        // get load-users resource (optional)
  +        child = conf.getChild("load-users", false);
  +        if (child != null) {
  +            this.loadUsersResource = child.getAttribute("uri");
  +            this.loadUsersResourceParameters = SourceParameters.create(child);
  +        }
  +
  +        // get load-roles resource (optional)
  +        child = conf.getChild("load-roles", false);
  +        if (child != null) {
  +            this.loadRolesResource = child.getAttribute("uri");
  +            this.loadRolesResourceParameters = SourceParameters.create(child);
  +        }
  +
  +        // get new user resource (optional)
  +        child = conf.getChild("new-user", false);
  +        if (child != null) {
  +            this.newUserResource = child.getAttribute("uri");
  +            this.newUserResourceParameters = SourceParameters.create(child);
  +        }
  +
  +        // get new role resource (optional)
  +        child = conf.getChild("new-role", false);
  +        if (child != null) {
  +            this.newRoleResource = child.getAttribute("uri");
  +            this.newRoleResourceParameters = SourceParameters.create(child);
  +        }
  +
  +        // get delete user resource (optional)
  +        child = conf.getChild("delete-user", false);
  +        if (child != null) {
  +            this.deleteUserResource = child.getAttribute("uri");
  +            this.deleteUserResourceParameters = SourceParameters.create(child);
  +        }
  +
  +        // get delete role resource (optional)
  +        child = conf.getChild("delete-role", false);
  +        if (child != null) {
  +            this.deleteRoleResource = child.getAttribute("uri");
  +            this.deleteRoleResourceParameters = SourceParameters.create(child);
  +        }
  +
  +        // get change user resource (optional)
  +        child = conf.getChild("change-user", false);
  +        if (child != null) {
  +            this.changeUserResource = child.getAttribute("uri");
  +            this.changeUserResourceParameters = SourceParameters.create(child);
  +        }
  +    }
  +
  +    /**
  +     * Get the name of the current application
  +     */
  +    public String getApplicationName() { return this.applicationName; }
  +    
  +    /**
  +     * Get the load users resource
  +     */
  +    public String getLoadUsersResource() { return this.loadUsersResource; }
  +    public SourceParameters getLoadUsersResourceParameters() { return 
this.loadUsersResourceParameters; }
  +
  +    /**
  +     * Get the load roles resource
  +     */
  +    public String getLoadRolesResource() { return this.loadRolesResource; }
  +    public SourceParameters getLoadRolesResourceParameters() { return 
this.loadRolesResourceParameters; }
  +
  +    /**
  +     * Get the new user resource
  +     */
  +    public String getNewUserResource() { return this.newUserResource; }
  +    public SourceParameters getNewUserResourceParameters() { return 
this.newUserResourceParameters; }
  +
  +    /**
  +     * Get the new role resource
  +     */
  +    public String getNewRoleResource() { return this.newRoleResource; }
  +    public SourceParameters getNewRoleResourceParameters() { return 
this.newRoleResourceParameters; }
  +
  +    /** Get the delete user resource */
  +    public String getDeleteUserResource() { return this.deleteUserResource; }
  +    public SourceParameters getDeleteUserResourceParameters() { return 
this.deleteUserResourceParameters; }
  +
  +    /** Get the delete role resource */
  +    public String getDeleteRoleResource() { return this.deleteRoleResource; }
  +    public SourceParameters getDeleteRoleResourceParameters() { return 
this.deleteRoleResourceParameters; }
  +
  +    /** Get the change user resource */
  +    public String getChangeUserResource() { return this.changeUserResource; }
  +    public SourceParameters getChangeUserResourceParameters() { return 
this.changeUserResourceParameters; }
   }
  
  
  
  1.2       +13 -7     xml-cocoon2/src/blocks/portal-fw/samples/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/blocks/portal-fw/samples/sitemap.xmap,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sitemap.xmap      27 Sep 2002 12:11:17 -0000      1.1
  +++ sitemap.xmap      4 Oct 2002 12:00:38 -0000       1.2
  @@ -23,13 +23,6 @@
         <handler name="portalhandler">
                <redirect-to uri="cocoon:/sunspotdemoportal"/>
                <authentication uri="cocoon:raw:/sunrise-authuser"/>
  -             <load-users uri="cocoon:raw:/sunrise-loaduser"/>
  -             <load-roles uri="cocoon:raw:/sunrise-roles"/>
  -             <new-user uri="cocoon:raw:/sunrise-newuser"/>
  -             <new-role uri="cocoon:raw:/sunrise-newrole"/>
  -             <change-user uri="cocoon:raw:/sunrise-changeuser"/>
  -             <delete-role uri="cocoon:raw:/sunrise-delrole"/>
  -             <delete-user uri="cocoon:raw:/sunrise-deluser"/>
                <applications>
                        <application loadondemand="true" name="sunspotdemo">
                                <configuration name="portal">
  @@ -54,6 +47,15 @@
                                                <user-status-save 
uri="cocoon:raw:/sunspotdemoresource-saveuserstatus"/>
                                        </profile>
                                </configuration>
  +                             <configuration name="single-role-user-management">
  +                    <load-users uri="cocoon:raw:/sunrise-loaduser"/>
  +                    <load-roles uri="cocoon:raw:/sunrise-roles"/>
  +                    <new-user uri="cocoon:raw:/sunrise-newuser"/>
  +                    <new-role uri="cocoon:raw:/sunrise-newrole"/>
  +                    <change-user uri="cocoon:raw:/sunrise-changeuser"/>
  +                    <delete-role uri="cocoon:raw:/sunrise-delrole"/>
  +                    <delete-user uri="cocoon:raw:/sunrise-deluser"/>
  +                             </configuration>
                        </application>
                </applications>
         </handler>
  @@ -165,6 +167,7 @@
                        <map:match pattern="sunspotdemosunletconf-*"> 
                                <map:generate 
src="resources/auth/sunletconfig-{1}.xml"/>
                                <map:transform type="session"/>
  +                         <map:transform type="cinclude"/>
                                <map:transform src="styles/sunletconf.xsl"/>
                                <map:serialize type="xml"/>
                        </map:match>
  @@ -237,6 +240,7 @@
                        <map:match pattern="sunspotdemo-*">
                                <map:generate src="resources/auth/{1}.xml"/>
                                <map:transform type="session"/>
  +                             <map:transform type="cinclude"/>
                                <map:transform type="write-source"/>
                                <map:transform src="styles/TO-html.xsl"/>
                                <map:transform type="encodeURL"/>
  @@ -262,6 +266,7 @@
                <map:match pattern="sunrise-changeuser">
                        <map:generate src="resources/sunrise-changeuser.xml"/>
                        <map:transform type="session"/>
  +                     <map:transform type="cinclude"/>
                        <map:transform src="styles/changeuser.xsl"/>
                        <map:transform type="write-source"/>
                        <map:transform src="styles/portal.xsl"/>
  @@ -271,6 +276,7 @@
                <map:match pattern="sunrise*">
                        <map:generate src="resources/sunrise{1}.xml"/>
                        <map:transform type="session"/>
  +                     <map:transform type="cinclude"/>
                        <map:transform type="write-source"/>
                        <map:transform src="styles/portal.xsl"/>
                        <map:serialize type="xml"/>
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to