Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2005, JBoss Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jbpm.identity.xml;
 
 import java.util.List;
 import java.util.Map;
 
 
 public class IdentityXmlParser {
   
   List entities = new ArrayList();
   Map users = new HashMap();
   Map groups = new HashMap();
 
   public static Entity[] parseEntitiesResource(String resource) {
     return new IdentityXmlParser().parse(resource);
   }
 
   public static Entity[] parseEntitiesResource(InputStream inputStream) {
     return new IdentityXmlParser().parse(inputStream);
   }
 
   public Entity[] parse(String resource) {
     return parse(ClassLoaderUtil.getStream(resource));
   }
 
   public Entity[] parse(InputStream inputStream) {
     Document document;
     try {
       document = new SAXReader().read(inputStream);
     } catch (DocumentException e) {
       throw new RuntimeException("couldn't parse identities from stream '"+inputStream+"'"); 
     }
     Element identitiesRootElement = document.getRootElement();
     
     readUsers(identitiesRootElement.elements("user"));
     readGroups(identitiesRootElement.elements("group"));
     readParentGroups(identitiesRootElement.elements("group"));
     readMemberships(identitiesRootElement.elements("membership"));
 
     return (Entity[]) .toArray(new Entity[.size()]);
   }
 
   private void readUsers(List userElements) {
     Iterator iter = userElements.iterator();
     while (iter.hasNext()) {
       Element userElement = (Elementiter.next();
       String name = userElement.attributeValue("name");
       String email = userElement.attributeValue("email");
       String password = userElement.attributeValue("password");
       
       User user = new User(name);
       user.setEmail(email);
       user.setPassword(password);
       .put(nameuser);
       .add(user);
     }
   }
 
   private void readGroups(List groupElements) {
     Iterator iter = groupElements.iterator();
     while (iter.hasNext()) {
       Element groupElement = (Elementiter.next();
       String name = groupElement.attributeValue("name");
       String type = groupElement.attributeValue("type");
       
       Group group = new Group(name);
      group.setType(type);
      .add(group);
      .put(namegroup);
    }
  }
  private void readParentGroups(List groupElements) {
    Iterator iter = groupElements.iterator();
    while (iter.hasNext()) {
      Element groupElement = (Elementiter.next();
      String childName = groupElement.attributeValue("name");
      String parentName = groupElement.attributeValue("parent");
      
      if (parentName!=null) {
        Group parent = (Group.get(parentName);
        if (parent==nullthrow new RuntimeException("unexisting parent group '"+parentName+"'");
        Group child = (Group.get(childName);
        
        parent.addChild(child);
      }
    }
  }
  private void readMemberships(List membershipElements) {
    Iterator iter = membershipElements.iterator();
    while (iter.hasNext()) {
      Element membershipElement = (Elementiter.next();
      String role = membershipElement.attributeValue("role");
      String userName = membershipElement.attributeValue("user");
      User user = (User.get(userName);
      if (user==nullthrow new RuntimeException("unexisting membership user '"+userName+"'");
      String groupName = membershipElement.attributeValue("group");
      Group group = (Group.get(groupName);
      if (group==nullthrow new RuntimeException("unexisting membership group '"+groupName+"'");
      
      Membership membership = new Membership();
      membership.setRole(role);
      group.addMembership(membership);
      user.addMembership(membership);
      
      .add(membership);
    }
  }
New to GrepCode? Check out our FAQ X