[jbpm-commits] JBoss JBPM SVN: r6377 - in jbpm3/branches/jbpm-3.2-soa/modules/identity/src: main/java/org/jbpm/identity/xml and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue May 25 21:22:02 EDT 2010


Author: alex.guizar at jboss.com
Date: 2010-05-25 21:22:01 -0400 (Tue, 25 May 2010)
New Revision: 6377

Modified:
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/ant/LoadIdentitiesTask.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/xml/IdentityXmlParser.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/xml/IdentityXmlParsingTest.java
Log:
clean up identity xml parsing

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/ant/LoadIdentitiesTask.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/ant/LoadIdentitiesTask.java	2010-05-26 01:02:24 UTC (rev 6376)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/ant/LoadIdentitiesTask.java	2010-05-26 01:22:01 UTC (rev 6377)
@@ -27,41 +27,45 @@
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
-import org.hibernate.Session;
 import org.jbpm.JbpmConfiguration;
 import org.jbpm.JbpmContext;
 import org.jbpm.ant.AntHelper;
 import org.jbpm.identity.Entity;
+import org.jbpm.identity.hibernate.IdentitySession;
 import org.jbpm.identity.xml.IdentityXmlParser;
 
 public class LoadIdentitiesTask extends Task {
 
-  private File file = null;
-  private String jbpmCfg = null;
+  private File file;
+  private String jbpmCfg;
 
   public void execute() throws BuildException {
     // get the JbpmSessionFactory
     JbpmConfiguration jbpmConfiguration = AntHelper.getJbpmConfiguration(jbpmCfg);
-    
+
     // if attribute file is set, deploy that file file
-    if (file==null) throw new BuildException("no file specified in the loadidentities task");
+    if (file == null) throw new BuildException("no file specified in the loadidentities task");
 
-    log( "loading identities from "+file+" ..." );
-    FileInputStream fileInputStream = null;
+    log("loading identities from " + file + " ...");
+    FileInputStream fileInputStream;
     try {
       fileInputStream = new FileInputStream(file);
-    } catch (FileNotFoundException e) {
-      throw new BuildException("identities file '"+file+"' not found");
     }
+    catch (FileNotFoundException e) {
+      throw new BuildException("identities file '" + file + "' not found");
+    }
     Entity[] entities = IdentityXmlParser.parseEntitiesResource(fileInputStream);
-    
+
     JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
     try {
-      Session session = jbpmContext.getSession();
-      for (int i=0; i<entities.length; i++) {
-        session.save(entities[i]);
+      IdentitySession identitySession = (IdentitySession) jbpmContext.getServices()
+        .getPersistenceService()
+        .getCustomSession(IdentitySession.class);
+      for (int i = 0; i < entities.length; i++) {
+        identitySession.saveEntity(entities[i]);
       }
-    } finally {
+    }
+    finally {
       jbpmContext.close();
     }
   }
@@ -69,6 +73,7 @@
   public void setFile(File file) {
     this.file = file;
   }
+
   public void setJbpmCfg(String jbpmCfg) {
     this.jbpmCfg = jbpmCfg;
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/xml/IdentityXmlParser.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/xml/IdentityXmlParser.java	2010-05-26 01:02:24 UTC (rev 6376)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/xml/IdentityXmlParser.java	2010-05-26 01:22:01 UTC (rev 6377)
@@ -22,6 +22,7 @@
 package org.jbpm.identity.xml;
 
 import java.io.InputStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -32,6 +33,7 @@
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
+import org.jbpm.JbpmException;
 import org.jbpm.identity.Entity;
 import org.jbpm.identity.Group;
 import org.jbpm.identity.Membership;
@@ -39,11 +41,11 @@
 import org.jbpm.util.ClassLoaderUtil;
 
 public class IdentityXmlParser {
-  
-  List entities = new ArrayList();
-  Map users = new HashMap();
-  Map groups = new HashMap();
 
+  private List entities = new ArrayList();
+  private Map users = new HashMap();
+  private Map groups = new HashMap();
+
   public static Entity[] parseEntitiesResource(String resource) {
     return new IdentityXmlParser().parse(resource);
   }
@@ -53,34 +55,42 @@
   }
 
   public Entity[] parse(String resource) {
-    return parse(ClassLoaderUtil.getStream(resource));
+    try {
+      URL resourceUrl = ClassLoaderUtil.getClassLoader().getResource(resource);
+      return parse(new SAXReader().read(resourceUrl));
+    }
+    catch (DocumentException e) {
+      throw new JbpmException("could not read identity resource: " + resource, e);
+    }
   }
 
   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+"'"); 
+      return parse(new SAXReader().read(inputStream));
     }
-    Element identitiesRootElement = document.getRootElement();
-    
-    readUsers(identitiesRootElement.elements("user"));
-    readGroups(identitiesRootElement.elements("group"));
-    readParentGroups(identitiesRootElement.elements("group"));
-    readMemberships(identitiesRootElement.elements("membership"));
+    catch (DocumentException e) {
+      throw new JbpmException("could not read identity document", e);
+    }
+  }
 
+  private Entity[] parse(Document document) {
+    Element identitiesElement = document.getRootElement();
+
+    readUsers(identitiesElement.elements("user"));
+    readGroups(identitiesElement.elements("group"));
+    readParentGroups(identitiesElement.elements("group"));
+    readMemberships(identitiesElement.elements("membership"));
+
     return (Entity[]) entities.toArray(new Entity[entities.size()]);
   }
 
   private void readUsers(List userElements) {
-    Iterator iter = userElements.iterator();
-    while (iter.hasNext()) {
+    for (Iterator iter = userElements.iterator(); iter.hasNext();) {
       Element userElement = (Element) iter.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);
@@ -90,12 +100,11 @@
   }
 
   private void readGroups(List groupElements) {
-    Iterator iter = groupElements.iterator();
-    while (iter.hasNext()) {
+    for (Iterator iter = groupElements.iterator(); iter.hasNext();) {
       Element groupElement = (Element) iter.next();
       String name = groupElement.attributeValue("name");
       String type = groupElement.attributeValue("type");
-      
+
       Group group = new Group(name);
       group.setType(type);
       entities.add(group);
@@ -104,39 +113,45 @@
   }
 
   private void readParentGroups(List groupElements) {
-    Iterator iter = groupElements.iterator();
-    while (iter.hasNext()) {
+    for (Iterator iter = groupElements.iterator(); iter.hasNext();) {
       Element groupElement = (Element) iter.next();
       String childName = groupElement.attributeValue("name");
       String parentName = groupElement.attributeValue("parent");
-      
-      if (parentName!=null) {
+
+      if (parentName != null) {
         Group parent = (Group) groups.get(parentName);
-        if (parent==null) throw new RuntimeException("unexisting parent group '"+parentName+"'");
+        if (parent == null) {
+          throw new JbpmException("no such group: " + parentName);
+        }
+
         Group child = (Group) groups.get(childName);
-        
         parent.addChild(child);
       }
     }
   }
 
   private void readMemberships(List membershipElements) {
-    Iterator iter = membershipElements.iterator();
-    while (iter.hasNext()) {
+    for (Iterator iter = membershipElements.iterator(); iter.hasNext();) {
       Element membershipElement = (Element) iter.next();
+
       String role = membershipElement.attributeValue("role");
+      Membership membership = new Membership();
+      membership.setRole(role);
+
       String userName = membershipElement.attributeValue("user");
       User user = (User) users.get(userName);
-      if (user==null) throw new RuntimeException("unexisting membership user '"+userName+"'");
+      if (user == null) {
+        throw new JbpmException("no such user: " + userName);
+      }
+      user.addMembership(membership);
+
       String groupName = membershipElement.attributeValue("group");
       Group group = (Group) groups.get(groupName);
-      if (group==null) throw new RuntimeException("unexisting membership group '"+groupName+"'");
-      
-      Membership membership = new Membership();
-      membership.setRole(role);
+      if (group == null) {
+        throw new JbpmException("no such group: " + groupName);
+      }
       group.addMembership(membership);
-      user.addMembership(membership);
-      
+
       entities.add(membership);
     }
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/xml/IdentityXmlParsingTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/xml/IdentityXmlParsingTest.java	2010-05-26 01:02:24 UTC (rev 6376)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/xml/IdentityXmlParsingTest.java	2010-05-26 01:22:01 UTC (rev 6377)
@@ -21,50 +21,63 @@
  */
 package org.jbpm.identity.xml;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
-import junit.framework.TestCase;
-
+import org.jbpm.AbstractJbpmTestCase;
+import org.jbpm.identity.Entity;
 import org.jbpm.identity.Group;
 import org.jbpm.identity.User;
 
-public class IdentityXmlParsingTest extends TestCase {
+public class IdentityXmlParsingTest extends AbstractJbpmTestCase {
   
-  IdentityXmlParser identityXmlParser;
-  
+  private Map users = new HashMap();
+  private Map groups = new HashMap();
+
   public void setUp() {
-    identityXmlParser = new IdentityXmlParser();
-    identityXmlParser.parse("org/jbpm/identity/xml/identity.xml");
+    IdentityXmlParser identityXmlParser = new IdentityXmlParser();
+    Entity[] entities = identityXmlParser.parse("org/jbpm/identity/xml/identity.xml");
+    for (int i = 0; i < entities.length; i++) {
+      Entity entity = entities[i];
+      if (entity instanceof User) {
+        users.put(entity.getName(), entity);
+      }
+      else if (entity instanceof Group) {
+        groups.put(entity.getName(), entity);
+      }
+    }
   }
 
   public void testUser() {
-    User sampleManager = (User) identityXmlParser.users.get("manager");
+    User sampleManager = (User) users.get("manager");
     assertEquals("manager", sampleManager.getName());
     assertEquals("sample.manager at sample.domain", sampleManager.getEmail());
     assertEquals("manager", sampleManager.getPassword());
   }
 
   public void testGroup() {
-    Group bananalovers = (Group) identityXmlParser.groups.get("bananalovers");
+    Group bananalovers = (Group) groups.get("bananalovers");
     assertEquals("bananalovers", bananalovers.getName());
     assertEquals("fruitpreference", bananalovers.getType());
   }
 
   public void testGroupParent() {
-    Group residents = (Group) identityXmlParser.groups.get("residents");
-    Group bananalovers = (Group) identityXmlParser.groups.get("bananalovers");
+    Group residents = (Group) groups.get("residents");
+    Group bananalovers = (Group) groups.get("bananalovers");
     assertSame(residents, bananalovers.getParent());
     assertEquals(1, residents.getChildren().size());
     assertSame(bananalovers, residents.getChildren().iterator().next());
   }
 
   public void testUserMembership() {
-    User sampleManager = (User) identityXmlParser.users.get("manager");
-    Group bananalovers = (Group) identityXmlParser.groups.get("bananalovers");
+    User sampleManager = (User) users.get("manager");
+    Group bananalovers = (Group) groups.get("bananalovers");
     Set sampleManagersMemberships = sampleManager.getMemberships();
     assertEquals(1, sampleManagersMemberships.size());
     Set bananaloversMemberships = bananalovers.getMemberships();
     assertEquals(1, bananaloversMemberships.size());
-    assertSame(bananaloversMemberships.iterator().next(), sampleManagersMemberships.iterator().next());
+    assertSame(bananaloversMemberships.iterator().next(), sampleManagersMemberships.iterator()
+      .next());
   }
 }



More information about the jbpm-commits mailing list