[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