incubator-agila-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mr...@apache.org
Subject svn commit: r165042 [24/30] - in /incubator/agila/trunk: ./ config/ modules/ modules/bpel/ modules/bpel/client/ modules/bpel/client/api/ modules/bpel/client/api/src/ modules/bpel/client/api/src/conf/ modules/bpel/client/api/src/java/ modules/bpel/client/api/src/java/org/ modules/bpel/client/api/src/java/org/apache/ modules/bpel/client/api/src/java/org/apache/agila/ modules/bpel/client/api/src/java/org/apache/agila/bpel/ modules/bpel/client/api/src/java/org/apache/agila/bpel/client/ modules/bpel/client/api/src/test/ modules/bpel/client/api/src/test/junit/ modules/bpel/client/api/src/test/junit/org/ modules/bpel/client/api/src/test/junit/org/apache/ modules/bpel/client/api/src/test/junit/org/apache/agila/ modules/bpel/client/api/src/test/junit/org/apache/agila/bpel/ modules/bpel/client/api/src/test/junit/org/apache/agila/bpel/client/ modules/bpel/client/web/ modules/bpel/client/web/src/ modules/bpel/client/web/src/conf/ modules/bpel/client/web/src/java/ modules/bpel/client/web/src/java/org/ modules/bpel/client/web/src/java/org/apache/ modules/bpel/client/web/src/java/org/apache/agila/ modules/bpel/client/web/src/java/org/apache/agila/bpel/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/common/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/deployer/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/deployer/action/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/deployer/form/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/engine/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/engine/action/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/engine/form/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/global/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/global/action/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/security/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/security/action/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/security/form/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/user/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/user/action/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/user/form/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/util/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/worklist/ modules/bpel/client/web/src/java/org/apache/agila/bpel/web/worklist/action/ modules/bpel/client/web/src/webapp/ modules/bpel/client/web/src/webapp/META-INF/ modules/bpel/client/web/src/webapp/WEB-INF/ modules/bpel/client/web/src/webapp/WEB-INF/classes/ modules/bpel/client/web/src/webapp/images/ modules/bpel/client/web/src/webapp/images/audit/ modules/bpel/client/web/src/webapp/style/ modules/bpel/common/ modules/bpel/common/src/ modules/bpel/common/src/aspect/ modules/bpel/common/src/conf/ modules/bpel/common/src/java/ modules/bpel/common/src/java/org/ modules/bpel/common/src/java/org/apache/ modules/bpel/common/src/java/org/apache/agila/ modules/bpel/common/src/java/org/apache/agila/bpel/ modules/bpel/common/src/java/org/apache/agila/bpel/common/ modules/bpel/common/src/java/org/apache/agila/bpel/common/aspect/ modules/bpel/common/src/java/org/apache/agila/bpel/common/configuration/ modules/bpel/common/src/java/org/apache/agila/bpel/common/util/ modules/bpel/common/src/java/org/apache/agila/bpel/common/util/logger/ modules/bpel/common/src/test/ modules/bpel/common/src/test/junit/ modules/bpel/common/src/test/junit/org/ modules/bpel/common/src/test/junit/org/apache/ modules/bpel/common/src/test/junit/org/apache/agila/ modules/bpel/common/src/test/junit/org/apache/agila/bpel/ modules/bpel/common/src/test/junit/org/apache/agila/bpel/common/ modules/bpel/common/src/test/junit/org/apache/agila/bpel/common/util/ modules/bpel/dist/ modules/bpel/dist/src/ modules/bpel/dist/src/java/ modules/bpel/dist/src/java/org/ modules/bpel/dist/src/java/org/apache/ modules/bpel/dist/src/java/org/apache/agila/ modules/bpel/dist/src/java/org/apache/agila/bpel/ modules/bpel/dist/src/java/org/apache/agila/bpel/util/ modules/bpel/dist/src/script/ modules/bpel/engine/ modules/bpel/engine/common/ modules/bpel/engine/common/src/ modules/bpel/engine/common/src/aspect/ modules/bpel/engine/common/src/hibernate/ modules/bpel/engine/common/src/hibernate/org/ modules/bpel/engine/common/src/hibernate/org/apache/ modules/bpel/engine/common/src/hibernate/org/apache/agila/ modules/bpel/engine/common/src/hibernate/org/apache/agila/bpel/ modules/bpel/engine/common/src/hibernate/org/apache/agila/bpel/engine/ modules/bpel/engine/common/src/hibernate/org/apache/agila/bpel/engine/common/ modules/bpel/engine/common/src/java/ modules/bpel/engine/common/src/java/org/ modules/bpel/engine/common/src/java/org/apache/ modules/bpel/engine/common/src/java/org/apache/agila/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/aspect/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/event/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/event/execution/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/event/execution/impl/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/event/lifecycle/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/event/lifecycle/dao/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/lifecycle/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/monitoring/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/persistence/ modules/bpel/engine/common/src/java/org/apache/agila/bpel/engine/common/transaction/ modules/bpel/engine/common/src/test/ modules/bpel/engine/common/src/test/junit/ modules/bpel/engine/common/src/test/junit/org/ modules/bpel/engine/common/src/test/junit/org/apache/ modules/bpel/engine/common/src/test/junit/org/apache/agila/ modules/bpel/engine/common/src/test/junit/org/apache/agila/bpel/ modules/bpel/engine/common/src/test/junit/org/apache/agila/bpel/engine/ modules/bpel/engine/common/src/test/junit/org/apache/agila/bpel/engine/common/ modules/bpel/engine/common/src/test/junit/org/apache/agila/bpel/engine/common/event/ modules/bpel/engine/common/src/test/resources/ modules/bpel/engine/core/ modules/bpel/engine/core/src/ modules/bpel/engine/core/src/aspect/ modules/bpel/engine/core/src/hibernate/ modules/bpel/engine/core/src/hibernate/org/ modules/bpel/engine/core/src/hibernate/org/apache/ modules/bpel/engine/core/src/hibernate/org/apache/agila/ modules/bpel/engine/core/src/hibernate/org/apache/agila/bpel/ modules/bpel/engine/core/src/hibernate/org/apache/agila/bpel/engine/ modules/bpel/engine/core/src/java/ modules/bpel/engine/core/src/java/org/ modules/bpel/engine/core/src/java/org/apache/ modules/bpel/engine/core/src/java/org/apache/agila/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/exception/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/definition/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/definition/impl/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/definition/impl/dao/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/dynamic/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/dynamic/impl/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/dynamic/impl/dao/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/core/dynamic/impl/xao/ modules/bpel/engine/core/src/java/org/apache/agila/bpel/engine/priv/expression/ modules/bpel/engine/core/s
Date Wed, 27 Apr 2005 20:28:07 GMT
Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUser.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUser.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUser.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUser.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+import java.util.Collection;
+
+import org.apache.agila.bpel.engine.common.persistence.CreationException;
+import org.apache.agila.bpel.engine.common.persistence.FinderException;
+import org.apache.agila.bpel.user.exception.AgilaUserException;
+
+/**
+ * Defines service methods for user, group and role management. Mostly CRUD and finders.
+ * Any implementation of Agila's users/group service (if not using the default one) should
+ * comply to this interface.
+ */
+public interface AgilaUser {
+
+    public boolean authenticate(String username, String password) throws AgilaUserException;
+    public Role createRole(Role role) throws CreationException, AgilaUserException;
+    public Role updateRole(Role role) throws AgilaUserException;
+    public Collection findAllRoles() throws AgilaUserException;
+    public Role findRoleById(Long id) throws AgilaUserException, FinderException;
+    public Role findRoleByName(String rolename) throws AgilaUserException, FinderException;
+    public void deleteRole(Long id) throws AgilaUserException;
+
+    public Group createGroup(Group group) throws CreationException, AgilaUserException;
+    public Group updateGroup(Group group) throws AgilaUserException;
+    public Collection findAllGroups() throws AgilaUserException;
+    public Group findGroupById(Long id) throws AgilaUserException, FinderException;
+    public Group findGroupByName(String groupname) throws AgilaUserException, FinderException;
+    public void deleteGroup(Group group) throws AgilaUserException;
+    public void deleteGroup(Long id) throws AgilaUserException;
+
+    public User createUser(User user) throws CreationException,AgilaUserException;
+    public User updateUser(User user) throws AgilaUserException;
+    public Collection findAllUsers() throws AgilaUserException;
+    public User findUserById(Long id) throws AgilaUserException, FinderException;
+    public User findUserByName(String username) throws AgilaUserException, FinderException;
+    public void deleteUser(User user) throws AgilaUserException;
+    public void deleteUser(Long id) throws AgilaUserException;
+    /**
+     * @deprecated
+     * @param username
+     * @throws AgilaUserException
+     */
+    public void deleteUser(String username) throws AgilaUserException;
+
+    public boolean doesRoleExist(String rolename) throws AgilaUserException;
+
+    public Collection findUsersInGroup(String groupname) throws AgilaUserException;
+    public Collection findUsersInRole(String rolename) throws AgilaUserException;
+
+    public Collection findRolesForUser(String username) throws AgilaUserException;
+    public Collection findRolesForUser(Long userId) throws AgilaUserException;
+    public Collection findGroupsForUser(String username) throws AgilaUserException;
+    public Collection findGroupsForUser(Long userId) throws AgilaUserException;
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUserFactory.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUserFactory.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUserFactory.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/AgilaUserFactory.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+import org.apache.agila.bpel.user.priv.AgilaUserImpl;
+
+/**
+ * Factory class for the Agila User Service interface.
+ */
+public class AgilaUserFactory {
+
+    public static AgilaUser getAgilaUser() {
+        return new AgilaUserImpl();
+    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Group.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Group.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Group.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Group.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+import java.util.Set;
+
+public interface Group {
+    Long getId();
+
+    String getName();
+
+//    Set getUsers();
+
+    Set getRoles();
+
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Role.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Role.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Role.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/Role.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+
+public interface Role {
+    Long getId();
+
+    String getName();
+
+//    Set getUsers();
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/User.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/User.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/User.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/User.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+import java.util.Set;
+
+public interface User {
+    Long getId();
+
+    String getName();
+
+    String getPassword();
+
+    Set getGroups();
+
+//    Set getRoles();
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/exception/AgilaUserException.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/exception/AgilaUserException.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/exception/AgilaUserException.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/exception/AgilaUserException.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user.exception;
+
+public class AgilaUserException extends Exception {
+    public AgilaUserException(String message) {
+        super(message);    //To change body of overriden methods use Options | File Templates.
+    }
+
+    public AgilaUserException(Throwable cause) {
+        super(cause);    //To change body of overriden methods use Options | File Templates.
+    }
+
+    public AgilaUserException(String message, Throwable cause) {
+        super(message, cause);    //To change body of overriden methods use Options | File Templates.
+    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/AgilaUserImpl.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/AgilaUserImpl.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/AgilaUserImpl.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/AgilaUserImpl.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,522 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user.priv;
+
+import org.apache.log4j.Logger;
+
+import org.apache.agila.bpel.engine.common.persistence.CreationException;
+import org.apache.agila.bpel.engine.common.persistence.DBSessionException;
+import org.apache.agila.bpel.engine.common.persistence.FinderException;
+import org.apache.agila.bpel.engine.common.persistence.PersistentDataAccess;
+import org.apache.agila.bpel.engine.common.transaction.TransactionException;
+import org.apache.agila.bpel.user.Group;
+import org.apache.agila.bpel.user.Role;
+import org.apache.agila.bpel.user.AgilaUser;
+import org.apache.agila.bpel.user.User;
+import org.apache.agila.bpel.user.exception.AgilaUserException;
+import org.apache.agila.bpel.user.priv.dao.UserDAO;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public class AgilaUserImpl implements AgilaUser {
+
+    private Logger log = Logger.getLogger(AgilaUserImpl.class);
+
+    public boolean authenticate(String username, String password) throws AgilaUserException {
+        User user = null;
+        try {
+            user = findUserByName(username);
+            if (user.getPassword().equals(password)) {
+                return true;
+            } else {
+                log.info("User with username " + username + " couldn't be authenticated, wrong password.");
+                return false;
+            }
+        } catch (FinderException e) {
+            log.info("User with username " + username + " couldn't be authenticated, user not found.");
+            return false;
+        }
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Role createRole(Role role) throws CreationException, AgilaUserException {
+        if (role == null || role.getName() == null || "".equals(role.getName())) {
+            log.error("Invalid Role name");
+            throw new CreationException("Invalid Role Name!");
+        }
+        if (doesRoleExist(role.getName()) == true) {
+            log.error("Role already exists !");
+            throw new CreationException("Role already exists !");
+        }
+        RoleImpl roleImpl;
+        try {
+            roleImpl = new RoleImpl();
+            roleImpl.setName(role.getName());
+            roleImpl = (RoleImpl) createOrUpdatePO(roleImpl, true);
+        } catch (Exception e) {
+            throw new CreationException(e);
+        }
+        return roleImpl;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Role updateRole(Role role) throws AgilaUserException {
+        if (role == null || role.getName() == null || "".equals(role.getName())
+                || role.getId() == null || role.getId().longValue() == 0) {
+            log.error("Invalid Role");
+            throw new AgilaUserException("Invalid Role !");
+        }
+        RoleImpl roleImpl;
+        try {
+            roleImpl = new RoleImpl();
+            roleImpl.setId(role.getId());
+            roleImpl.setName(role.getName());
+            roleImpl = (RoleImpl) createOrUpdatePO(roleImpl, false);
+        } catch (Exception e) {
+            throw new AgilaUserException(e);
+        }
+        return roleImpl;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findAllRoles() throws AgilaUserException {
+        Collection result = PersistentDataAccess.findAll(RoleImpl.class);
+        return result;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Role findRoleById(Long id) throws AgilaUserException, FinderException {
+        Role role = (Role) PersistentDataAccess.findById(id, RoleImpl.class);
+        return role;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Role findRoleByName(String rolename) throws AgilaUserException, FinderException {
+        Role role = null;
+        try {
+            role = UserDAO.findRoleByName(rolename);
+        } catch (DBSessionException e) {
+            throw  new AgilaUserException(e);
+        }
+        return role;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public void deleteRole(Long id) throws AgilaUserException {
+        try {
+            Collection groups = UserDAO.findGroupsInRole(id);
+
+            for (Iterator it = groups.iterator(); it.hasNext();) {
+                GroupImpl group = (GroupImpl) it.next();
+                Collection roles = group.getRoles();
+                for (Iterator it1 = roles.iterator(); it1.hasNext();) {
+                    RoleImpl r = (RoleImpl) it1.next();
+                    if (r.getId().equals(id)) {
+                        roles.remove(r);
+                        break;
+                    }
+                }
+                updateGroup(group);
+            }
+        } catch (DBSessionException e) {
+            throw  new AgilaUserException(e);
+        } catch (FinderException e) {
+            // it's ok
+        }
+        RoleImpl r = new RoleImpl();
+        r.setId(id);
+        PersistentDataAccess.remove(r);
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Group createGroup(Group group) throws CreationException, AgilaUserException {
+        return createOrUpdate(group, true);
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Group updateGroup(Group group) throws AgilaUserException {
+        Group g = null;
+        try {
+            g = createOrUpdate(group, false);
+        } catch (CreationException e) {// Should not be rised for update
+            throw new AgilaUserException(e);
+        }
+        return g;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findAllGroups() throws AgilaUserException {
+        Collection result = PersistentDataAccess.findAll(GroupImpl.class);
+        return result;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Group findGroupById(Long id) throws AgilaUserException, FinderException {
+        Group group = (Group) PersistentDataAccess.findById(id, GroupImpl.class);
+        return group;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+   public Group findGroupByName(String groupname) throws AgilaUserException, FinderException {
+        Group group = null;
+        try {
+            group = UserDAO.findGroupByName(groupname);
+        } catch (DBSessionException e) {
+            throw new AgilaUserException(e);
+        }
+        return group;
+    }
+
+   /**
+    * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+    */
+    public void deleteGroup(Group group) throws AgilaUserException {
+        deleteGroup(group.getId());
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+   public void deleteGroup(Long id) throws AgilaUserException {
+        GroupImpl g = new GroupImpl();
+        g.setId(id);
+        g.setRoles(new HashSet());
+        PersistentDataAccess.remove(g);
+    }
+
+   /**
+    * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+    */
+    public User createUser(User user) throws CreationException, AgilaUserException {
+        return createOrUdpate(user, true);
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public User updateUser(User user) throws AgilaUserException {
+        User u = null;
+        try {
+            u = createOrUdpate(user, false);
+        } catch (CreationException e) {// Should not be rised for update
+        }
+        return u;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findAllUsers() throws AgilaUserException {
+        Collection result = PersistentDataAccess.findAll(UserImpl.class);
+        return result;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public User findUserById(Long id) throws AgilaUserException, FinderException {
+        User user = (User) PersistentDataAccess.findById(id, UserImpl.class);
+        return user;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+   public User findUserByName(String username) throws AgilaUserException, FinderException {
+        User user = null;
+        try {
+            user = UserDAO.findUserByName(username);
+        } catch (DBSessionException e) {
+            throw new AgilaUserException(e);
+        }
+        return user;
+    }
+
+   /**
+    * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+    */
+    public void deleteUser(User user) throws AgilaUserException {
+        deleteUser(user.getId());
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public void deleteUser(String username) throws AgilaUserException {
+        UserImpl user = null;
+        try {
+            user = UserDAO.findUserByName(username);
+            PersistentDataAccess.remove(user);
+        } catch (Exception e) {
+            throw new AgilaUserException(e);
+        }
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public void deleteUser(Long id) throws AgilaUserException {
+        UserImpl u = new UserImpl();
+        u.setId(id);
+        u.setGroups(new HashSet());
+        PersistentDataAccess.remove(u);
+    }
+
+    private Group createOrUpdate(Group group, boolean create) throws CreationException, AgilaUserException {
+        validateGroup(group, create);
+
+        GroupImpl groupImpl = null;
+        try {
+            groupImpl = new GroupImpl();
+            groupImpl.setId(group.getId());
+            groupImpl.setName(group.getName());
+
+            groupImpl = (GroupImpl) fetchRoles(group.getRoles(), groupImpl);
+
+            groupImpl = (GroupImpl) createOrUpdatePO(groupImpl, create);
+
+        } catch (Exception e) {
+            throw new CreationException(e);
+        }
+        return groupImpl;
+    }
+
+    private void validateGroup(Group group, boolean create) throws CreationException, AgilaUserException {
+        if (group == null ||
+                group.getName() == null || group.getName().equals("") ||
+                group.getRoles() == null || group.getRoles().size() == 0) {
+            if (create) {
+                throw new CreationException("Group must have at least one role !");
+            } else {
+                throw new AgilaUserException("Group must have at least one role !");
+            }
+        }
+        if (doesGroupExist(group.getName()) == true && create) {
+            log.error("Group already exists !");
+            throw new CreationException("Group already exists !");
+        }
+    }
+
+    private User createOrUdpate(User user, boolean create) throws CreationException, AgilaUserException {
+        if (user.getGroups() == null || user.getGroups().size() == 0)
+            if (create)
+                throw new CreationException("User must have at least one group!");
+            else
+                throw new AgilaUserException("User must have at least one group!");
+
+        UserImpl userImpl = null;
+        try {
+            userImpl = new UserImpl();
+            userImpl.setId(user.getId());
+            userImpl.setName(user.getName());
+            userImpl.setPassword(user.getPassword());
+
+            if (create == true) {
+                userImpl = fetchGroups(user.getGroups(), userImpl);
+                userImpl = (UserImpl) createOrUpdatePO(userImpl, create);
+            } else {
+                userImpl = fetchGroups(user.getGroups(), userImpl);
+                userImpl = (UserImpl) createOrUpdatePO(userImpl, create);
+            }
+        } catch (Exception e) {
+            throw new CreationException(e);
+        }
+        return userImpl;
+    }
+
+    private UserImpl fetchGroups(Set groups, UserImpl userImpl) throws DBSessionException {
+        if (groups != null)
+            for (Iterator groupsIter = groups.iterator(); groupsIter.hasNext();) {
+                Group group = (GroupImpl) groupsIter.next();
+                try {
+                    GroupImpl groupImpl = (GroupImpl) PersistentDataAccess.findById(group.getId(), GroupImpl.class);
+                    userImpl.addGroup(groupImpl);
+                } catch (FinderException e) {// Should not happen
+                }
+            }
+        return userImpl;
+    }
+
+    private GroupImpl fetchRoles(Set roles, GroupImpl groupImpl) throws DBSessionException {
+        if (roles != null)
+            for (Iterator rolesIter = roles.iterator(); rolesIter.hasNext();) {
+                Role role = (Role) rolesIter.next();
+                try {
+                    RoleImpl roleImpl = (RoleImpl) PersistentDataAccess.findById(role.getId(), RoleImpl.class);
+                    groupImpl.addRole(roleImpl);
+                } catch (FinderException e) {// Should not happen
+                }
+            }
+        return groupImpl;
+    }
+
+    private Object createOrUpdatePO(Object o, boolean create) throws TransactionException, DBSessionException {
+        Object res;
+        if (create == true)
+            res = PersistentDataAccess.create(o);
+        else
+            res = PersistentDataAccess.update(o);
+        return res;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public boolean doesRoleExist(String rolename) throws AgilaUserException {
+        boolean result = true;
+        try {
+            result = UserDAO.doesRoleExist(rolename);
+        } catch (DBSessionException e) {
+            throw new AgilaUserException(e);
+        }
+        return result;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public boolean doesGroupExist(String groupname) throws AgilaUserException {
+        boolean result = true;
+        try {
+            result = UserDAO.doesGroupExist(groupname);
+        } catch (DBSessionException e) {
+            throw  new AgilaUserException(e);
+        }
+        return result;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findUsersInRole(String rolename) throws AgilaUserException {
+        Collection res = null;
+        try {
+            res = UserDAO.findUsersInRole(rolename);
+        } catch (DBSessionException e) {
+            throw  new AgilaUserException(e);
+        } catch (FinderException e) {
+            throw  new AgilaUserException(e);
+        }
+        return res;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findRolesForUser(String username) throws AgilaUserException {
+        User userByName = null;
+        try {
+            userByName = findUserByName(username);
+        } catch (FinderException e) {
+            throw new AgilaUserException(e);
+        }
+        Collection roles = getAllRoles(userByName);
+        return roles;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findRolesForUser(Long userId) throws AgilaUserException {
+        User userByName = null;
+        try {
+            userByName = findUserById(userId);
+        } catch (FinderException e) {
+            throw new AgilaUserException(e);
+        }
+        Collection roles = getAllRoles(userByName);
+        return roles;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    private Collection getAllRoles(User user) {
+        Set groups = user.getGroups();
+        Collection roles = new HashSet();
+        for (Iterator it = groups.iterator(); it.hasNext();) {
+            GroupImpl group = (GroupImpl) it.next();
+            roles.addAll(group.getRoles());
+        }
+        return roles;
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findGroupsForUser(String username) throws AgilaUserException {
+        User userByName = null;
+        try {
+            userByName = findUserByName(username);
+        } catch (FinderException e) {
+            throw new AgilaUserException(e);
+        }
+        return userByName.getGroups();
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findGroupsForUser(Long userId) throws AgilaUserException {
+        User userByName = null;
+        try {
+            userByName = findUserById(userId);
+        } catch (FinderException e) {
+            throw new AgilaUserException(e);
+        }
+        return userByName.getGroups();
+    }
+
+    /**
+     * @@org.apache.agila.bpel.engine.common.aspect.Transactional
+     */
+    public Collection findUsersInGroup(String groupname) throws AgilaUserException {
+        Collection res = null;
+        try {
+            res = UserDAO.findUsersInGroup(groupname);
+        } catch (DBSessionException e) {
+            throw  new AgilaUserException(e);
+        } catch (FinderException e) {
+            throw  new AgilaUserException(e);
+        }
+        return res;
+    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/GroupImpl.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/GroupImpl.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/GroupImpl.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/GroupImpl.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user.priv;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.agila.bpel.user.Group;
+
+
+/**
+ * @hibernate.jcs-cache usage="read-write"
+ * @hibernate.class table="T_GROUP"
+ */
+public class GroupImpl implements Group {
+    private Long id;
+    private String name;
+//    private Set users = new HashSet();
+    private Set roles = new HashSet();
+
+    public GroupImpl() {
+        super();
+    }
+
+    /**
+     * @hibernate.id generator-class="hilo" type="long"
+     * @hibernate.generator-param name="table" value="T_GROUP_ID"
+     * @hibernate.generator-param name="column" value="NEXT_ID"
+     */
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String username) {
+        this.name = username;
+    }
+
+//    /**
+//     * @hibernate.set role="users" table="T_USER_GROUP" lazy="false"
+//     * @hibernate.collection-key column="GROUP_ID"
+//     * @hibernate.collection-many-to-many class="org.apache.agila.bpel.user.priv.UserImpl" column="USER_ID"
+//     */
+//    public Set getUsers() {
+//        return users;
+//    }
+//
+//    public void setUsers(Set users) {
+//        this.users = users;
+//    }
+//
+//    public void addUser(UserImpl user) {
+//        users.add(user);
+//    }
+    /**
+     * @hibernate.set role="roles" table="T_GROUP_ROLE"
+     * @hibernate.collection-key column="GROUP_ID"
+     * @hibernate.collection-many-to-many class="org.apache.agila.bpel.user.priv.RoleImpl" column="ROLE_ID"
+     */
+    public Set getRoles() {
+        return roles;
+    }
+
+    public void setRoles(Set roles) {
+            this.roles = roles;
+    }
+
+    public void addRole(RoleImpl role) {
+        this.roles.add(role);
+    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/RoleImpl.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/RoleImpl.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/RoleImpl.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/RoleImpl.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user.priv;
+
+import org.apache.agila.bpel.user.Role;
+
+/**
+ * @hibernate.jcs-cache usage="read-write"
+ * @hibernate.class table="T_ROLE"
+ */
+public class RoleImpl implements Role {
+    private Long id;
+    private String name;
+//    private Set users;
+
+    public RoleImpl() {
+    }
+
+    /**
+     * @hibernate.id generator-class="hilo" type="long"
+     * @hibernate.generator-param name="table" value="T_ROLE_ID"
+     * @hibernate.generator-param name="column" value="NEXT_ID"
+     */
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String toString() {
+        return "Role : " + name;
+    }
+
+//    /**
+//     * @hibernate.set role="users" table="T_USER_ROLE" lazy="false"
+//     * @hibernate.collection-key column="ROLE_ID"
+//     * @hibernate.collection-many-to-many class="org.apache.agila.bpel.user.priv.UserImpl" column="USER_ID"
+//     */
+//    public Set getUsers() {
+//        return users;
+//    }
+//
+//    public void setUsers(Set users) {
+//        this.users = users;
+//    }
+//
+//    public void addUser(UserImpl user) {
+//        users.add(user);
+//    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserConverter.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserConverter.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserConverter.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserConverter.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user.priv;
+
+import org.apache.agila.bpel.user.User;
+
+/**
+ *
+ */
+public class UserConverter {
+
+    public static UserImpl userVO2userPO(User user) {
+        UserImpl userImpl = new UserImpl();
+        userImpl.setId(user.getId());
+        userImpl.setName(user.getName());
+        userImpl.setPassword(user.getPassword());
+//        for (Iterator rolesIter = user.getRoles().iterator(); rolesIter.hasNext();) {
+//            Role role = (Role) rolesIter.next();
+//            RoleImpl roleImpl = roleVO2rolePO(role);
+//            userImpl.addRole(roleImpl);
+//        }
+        return userImpl;
+    }
+/*
+    public static RoleImpl roleVO2rolePO(Role role) {
+        RoleImpl roleImpl = new RoleImpl();
+        roleImpl.setId(role.getId());
+        roleImpl.setName(role.getName());
+        return roleImpl;
+    }
+
+    public static User userPO2userVO(UserImpl userImpl) {
+        User user = new User();
+        user.setUsername(userImpl.getName());
+        user.setPassword(userImpl.getPassword());
+        user.setRoles(rolePOs2roleVOs(userImpl.getRoles(), user));
+        return user;
+    }
+
+    public static Role rolePO2roleVO(RoleImpl roleImpl) {
+        Role role = new Role();
+        role.setRolename(roleImpl.getRolename());
+        role.setUser(userPO2userVO(roleImpl.getUser()));
+        return role;
+    }
+
+    public static Collection rolePOs2roleVOs(Collection rolePOs, User user) {
+        Collection res = new HashSet();
+        Iterator it = rolePOs.iterator();
+        while (it.hasNext()) {
+            RoleImpl roleImpl = (RoleImpl) it.next();
+            Role role = new Role();
+            role.setRolename(roleImpl.getRolename());
+            role.setUser(user);
+            res.add(role);
+        }
+        return res;
+    }
+
+    public static Collection roleVOs2rolePOs(Collection roleVOs, UserImpl userImpl) {
+        Collection res = new HashSet();
+        Iterator it = roleVOs.iterator();
+        while (it.hasNext()) {
+            Role role = (Role) it.next();
+            RoleImpl roleImpl = new RoleImpl();
+            roleImpl.setRolename(role.getRolename());
+            roleImpl.setUser(userImpl);
+            res.add(roleImpl);
+        }
+        return res;
+    }
+
+    public static Collection userPOs2userVOs(Collection userPOs) {
+        Collection res = new HashSet();
+        Iterator it = userPOs.iterator();
+        while (it.hasNext()) {
+            UserImpl userImpl = (UserImpl) it.next();
+            User user = new User();
+            user.setUsername(userImpl.getName());
+            user.setPassword(userImpl.getPassword());
+            Collection roles = rolePOs2roleVOs(userImpl.getRoles(), user);
+            user.setRoles(roles);
+            res.add(user);
+        }
+        return res;
+    }
+*/
+/*
+    public static Collection fetchRolesPO(Collection roles) throws FinderException, DBSessionException {
+        Iterator it = roles.iterator();
+        List roleNames = new ArrayList();
+        while (it.hasNext()) {
+            Role role = (Role) it.next();
+            roleNames.add(role.getRolename());
+        }
+        return UserDAO.findRolesByNames(roleNames);
+    }
+*/
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserImpl.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserImpl.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserImpl.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/UserImpl.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user.priv;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.agila.bpel.user.Group;
+import org.apache.agila.bpel.user.User;
+
+/**
+ * @hibernate.jcs-cache usage="read-write"
+// * @hibernate.class table="T_USER" discriminator-value="U"
+ * @hibernate.class table="T_USER"
+// * @hibernate.discriminator column="TYPE" type="character" length="1"
+ */
+public class UserImpl implements User {
+
+    private Long id;
+    private String name;
+    private String password;
+//    private Set roles = new HashSet();
+    private Set groups = new HashSet();
+
+
+    public UserImpl() {
+    }
+
+    /**
+     * @hibernate.id generator-class="hilo" type="long"
+     * @hibernate.generator-param name="table" value="T_USER_ID"
+     * @hibernate.generator-param name="column" value="NEXT_ID"
+     */
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String username) {
+        this.name = username;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    /**
+     * @hibernate.set role="groups" table="T_USER_GROUP"
+     * @hibernate.collection-key column="USER_ID"
+     * @hibernate.collection-many-to-many class="org.apache.agila.bpel.user.priv.GroupImpl" column="GROUP_ID"
+     */
+    public Set getGroups() {
+        return groups;
+    }
+
+    public void setGroups(Set groups) {
+            this.groups = groups;
+    }
+
+    public void addGroup(Group group) {
+        groups.add(group);
+    }
+
+//    /**
+//     * @hibernate.set role="roles" table="T_USER_ROLE"
+//     * @hibernate.collection-key column="USER_ID"
+//     * @hibernate.collection-many-to-many class="org.apache.agila.bpel.user.priv.RoleImpl" column="ROLE_ID"
+//     */
+//    public Set getRoles() {
+//        return roles;
+//    }
+//
+//    public void setRoles(Set roles) {
+//            this.roles = roles;
+//    }
+//
+//    public void addRole(Role role) {
+//        roles.add(role);
+//    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/dao/UserDAO.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/dao/UserDAO.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/dao/UserDAO.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/java/org/apache/agila/bpel/user/priv/dao/UserDAO.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user.priv.dao;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import net.sf.hibernate.Hibernate;
+import net.sf.hibernate.HibernateException;
+import net.sf.hibernate.Query;
+import net.sf.hibernate.Session;
+
+import org.apache.agila.bpel.engine.common.persistence.DBSessionException;
+import org.apache.agila.bpel.engine.common.persistence.DBSessionManager;
+import org.apache.agila.bpel.engine.common.persistence.FinderException;
+import org.apache.agila.bpel.engine.common.persistence.PersistentDataAccess;
+import org.apache.agila.bpel.user.priv.GroupImpl;
+import org.apache.agila.bpel.user.priv.RoleImpl;
+import org.apache.agila.bpel.user.priv.UserImpl;
+
+public class UserDAO extends PersistentDataAccess {
+    private static String FIND_ROLES_BY_USERNAME =
+            "FROM org.apache.agila.bpel.user.priv.RoleImpl as role " +
+            "WHERE role.username = ?";
+
+    private static String FIND_ROLES_BY_ROLENAMES =
+            "FROM org.apache.agila.bpel.user.priv.RoleImpl as role " +
+            "WHERE role.rolename in (:roleNames)";
+
+    private static String FIND_ROLE_BY_ROLENAME =
+            "FROM org.apache.agila.bpel.user.priv.RoleImpl as role " +
+            "WHERE role.name = (:rolename)";
+
+    private static final String FIND_GROUP_BY_GROUPNAME =
+            "FROM org.apache.agila.bpel.user.priv.GroupImpl as g " +
+            "WHERE g.name = ?";
+
+    private static String FIND_USER_BY_NAME =
+            "FROM org.apache.agila.bpel.user.priv.UserImpl as user " +
+            "WHERE user.name = (:username)";
+
+    private static final String FIND_ALL_ROLENAMES =
+            "SELECT distinct role.rolename " +
+            "FROM org.apache.agila.bpel.user.priv.RoleImpl as role ";
+
+    private static final String FIND_USERS_IN_ROLE = "SELECT u FROM " +
+                        "org.apache.agila.bpel.user.priv.UserImpl as u " +
+                        "join u.groups as g " +
+                        "join g.roles as r " +
+                        "WHERE r.name=?";
+
+    private static final String FIND_USERS_IN_GROUP = "SELECT u FROM " +
+                        "org.apache.agila.bpel.user.priv.UserImpl as u " +
+                        "join u.groups as g " +
+                        "WHERE g.name=?";
+
+    private static final String FIND_GROUPS_IN_ROLE = "SELECT g FROM " +
+                        "org.apache.agila.bpel.user.priv.GroupImpl as g " +
+                        "join g.roles as r " +
+                        "WHERE r.id=?";
+
+
+    /**
+     * @deprecated
+     * @param username
+     * @return
+     * @throws DBSessionException
+     * @throws FinderException
+     */
+    public static UserImpl findUserByUsername(String username) throws DBSessionException, FinderException {
+        Session session = DBSessionManager.getDBReadSession();
+        List results = null;
+        try {
+            results = session.find(FIND_USER_BY_NAME, username, Hibernate.STRING);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        } finally{
+            DBSessionManager.closeDBReadSession(session);
+        }
+        if (results.size() == 0) {
+            throw new FinderException("User " + username + " doesn't exists !");
+        }
+        return (UserImpl) results.get(0);
+
+    }
+
+    public static UserImpl findUserByName(String username) throws DBSessionException, FinderException {
+        Session session = DBSessionManager.getDBReadSession();
+
+        List results = null;
+        try {
+            results = session.find(FIND_USER_BY_NAME, username, Hibernate.STRING);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        } finally{
+            DBSessionManager.closeDBReadSession(session);
+        }
+        if (results.size() == 0) {
+            throw new FinderException("User " + username + " doesn't exists !");
+        }
+        return (UserImpl) results.get(0);
+
+    }
+
+    public static Collection findRolesByNames(List names) throws DBSessionException{
+        Session session = DBSessionManager.getActiveSession();
+
+        List roles = null;
+        try {
+            Query byProperties = session.createQuery(FIND_ROLES_BY_ROLENAMES);
+
+            byProperties.setParameterList("roleNames", names);
+
+            roles = byProperties.list();
+        } catch (net.sf.hibernate.HibernateException e) {
+            throw new DBSessionException(e);
+        }
+
+        return roles;
+    }
+
+    public static Collection findRolesByUsername(String username) throws DBSessionException {
+        Session session = DBSessionManager.getActiveSession();
+
+        List results = null;
+        try {
+            results = session.find(FIND_ROLES_BY_USERNAME, username, Hibernate.STRING);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        }
+        return results;
+    }
+
+/*
+    public static List findAllUsers() throws DBSessionException {
+        return findAll(UserImpl.class);
+    }
+*/
+
+    public static List findAllRoles() throws DBSessionException {
+            Session session = DBSessionManager.getActiveSession();
+            List results = new ArrayList();
+            try {
+                List rolenames = session.find(FIND_ALL_ROLENAMES);
+                for (int i = 0; i < rolenames.size(); i++) {
+                    String rolename = (String) rolenames.get(i);
+                    RoleImpl role = new RoleImpl();
+                    role.setName(rolename);
+//                    role.setUsers(null);
+                    results.add(role);
+                }
+            } catch (HibernateException e) {
+                throw new DBSessionException(e);
+            }
+            return results;
+    }
+
+    public static RoleImpl findRoleByName(String rolename) throws DBSessionException, FinderException {
+        Session session = DBSessionManager.getActiveSession();
+
+        List results = null;
+        try {
+            results = session.find(FIND_ROLE_BY_ROLENAME, rolename, Hibernate.STRING);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        }
+        if (results.size() == 0) {
+            throw new FinderException("No role exists for rolename : " + rolename);
+        }
+        return (RoleImpl) results.get(0);
+
+    }
+
+    public static boolean doesRoleExist(String rolename) throws DBSessionException {
+
+        List results = null;
+        try {
+            Session session = DBSessionManager.getDBReadSession();
+            results = session.find(FIND_ROLE_BY_ROLENAME, rolename, Hibernate.STRING);
+            DBSessionManager.closeDBReadSession(session);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        }
+        if (results.size() == 0) {
+            return false;
+        }
+        return true;
+
+    }
+
+    public static boolean doesGroupExist(String groupname) throws DBSessionException {
+        try {
+            findGroupByName(groupname);
+        } catch (FinderException e) {
+            return false;
+        }
+        return true;
+    }
+
+    public static GroupImpl findGroupByName(String groupname) throws DBSessionException, FinderException {
+        Session session = DBSessionManager.getDBReadSession();
+
+        List results = null;
+        try {
+            results = session.find(FIND_GROUP_BY_GROUPNAME, groupname, Hibernate.STRING);
+            DBSessionManager.closeDBReadSession(session);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        }
+        if (results.size() == 0) {
+            throw new FinderException("No role exists for groupname : " + groupname);
+        }
+        return (GroupImpl) results.get(0);
+
+    }
+
+    public static Collection findUsersInRole(String rolename) throws DBSessionException, FinderException {
+        Session session = DBSessionManager.getDBReadSession();
+
+        List results = null;
+        try {
+            results = session.find(FIND_USERS_IN_ROLE, rolename, Hibernate.STRING);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        } finally {
+            DBSessionManager.closeDBReadSession(session);
+        }
+        if (results.size() == 0) {
+            throw new FinderException("No User exists for rolename : " + rolename);
+        }
+        return results;
+
+    }
+
+    public static Collection findGroupsInRole(Long id) throws DBSessionException, FinderException {
+        Session session = DBSessionManager.getDBReadSession();
+
+        List results = null;
+        try {
+            results = session.find(FIND_GROUPS_IN_ROLE, id, Hibernate.LONG);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        } finally {
+            DBSessionManager.closeDBReadSession(session);
+        }
+        if (results.size() == 0) {
+            throw new FinderException("No Groups exists for role : " + id);
+        }
+        return results;
+
+    }
+
+    public static Collection findUsersInGroup(String groupname) throws DBSessionException, FinderException {
+        Session session = DBSessionManager.getDBReadSession();
+
+        List results = null;
+        try {
+            results = session.find(FIND_USERS_IN_GROUP, groupname, Hibernate.STRING);
+        } catch (HibernateException e) {
+            throw new DBSessionException(e);
+        } finally {
+            DBSessionManager.closeDBReadSession(session);
+        }
+
+        if (results.size() == 0) {
+            throw new FinderException("No User exists for rolename : " + groupname);
+        }
+        return results;
+    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/HibernateUtil.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/HibernateUtil.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/HibernateUtil.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/HibernateUtil.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+import net.sf.hibernate.HibernateException;
+import net.sf.hibernate.Session;
+import net.sf.hibernate.SessionFactory;
+import net.sf.hibernate.cfg.Configuration;
+
+public class HibernateUtil {
+
+    private static final SessionFactory sessionFactory;
+
+    static {
+        try {
+            sessionFactory = new Configuration().configure().buildSessionFactory();
+        } catch (HibernateException ex) {
+            throw new RuntimeException("Exception building SessionFactory: " + ex.getMessage(), ex);
+        }
+    }
+
+    public static final ThreadLocal session = new ThreadLocal();
+
+    public static Session currentSession() throws HibernateException {
+        Session s = (Session) session.get();
+        // Open a new Session, if this Thread has none yet
+        if (s == null) {
+            s = sessionFactory.openSession();
+            session.set(s);
+        }
+        return s;
+    }
+
+    public static void closeSession() throws HibernateException {
+        Session s = (Session) session.get();
+        session.set(null);
+        if (s != null)
+            s.close();
+    }
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestAgilaUserLdapImpl.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestAgilaUserLdapImpl.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestAgilaUserLdapImpl.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestAgilaUserLdapImpl.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+import junit.framework.TestCase;
+
+import org.apache.agila.bpel.engine.common.lifecycle.LifecycleManager;
+
+/**
+ * LDAP has to be configurated (agila-configuration-ldap.xml),  
+ * @author grofcik
+ * @version $Id: TestAgilaUserLdapImpl.java,v 1.1 2004/12/29 14:52:39 chudikm Exp $
+ */
+public class TestAgilaUserLdapImpl extends TestCase {
+
+	AgilaUser agilaUser = null;
+
+	protected void setUp() throws Exception {
+
+		LifecycleManager.getLifecycleManager(
+				Class.class
+						.getResourceAsStream("/agila-configuration-ldap.xml"))
+				.createResources();
+		LifecycleManager.getLifecycleManager().startResources();
+
+		agilaUser = AgilaUserFactory.getAgilaUser();
+
+	}
+
+	protected void tearDown() throws Exception {
+		LifecycleManager.getLifecycleManager().stopResources();
+		LifecycleManager.getLifecycleManager().destroyResources();
+		agilaUser = null;
+	}
+
+	/*
+	 *  ROLES
+	 */
+	public void testFindAllRoles() throws Exception {
+		agilaUser.findAllRoles();
+	}
+
+	public void testFindRoleById() throws Exception {
+		Role r = agilaUser.findRoleById( new Long( "1"));
+		assertEquals("admin", r.getName());		
+	}
+
+	public void testFindRoleByName() throws Exception {
+		Role r = agilaUser.findRoleByName( "admin");
+		assertEquals( new Long(1), r.getId());
+	}
+	
+	/*
+	 * GROUPS
+	 */
+	public void testFindAllGroups() throws Exception {
+		agilaUser.findAllGroups();
+	}
+	
+	public void testFindGroupById() throws Exception {
+		Group r = agilaUser.findGroupById( new Long( "1"));
+		assertEquals("admin", r.getName());		
+	}
+
+	public void testFindGroupByName() throws Exception {
+		Group r = agilaUser.findGroupByName( "admin");
+		assertEquals( new Long(1), r.getId());
+	}
+
+	/*
+	 * USERS
+	 */
+	public void testFindAllUsers() throws Exception {
+		agilaUser.findAllUsers();
+	}
+	
+	public void testFindUserById() throws Exception {
+		User r = agilaUser.findUserById( new Long( "1"));
+		assertEquals("admin", r.getName());		
+	}
+
+	public void testFindUserByName() throws Exception {
+		User r = agilaUser.findUserByName( "admin");
+		assertEquals( new Long(1), r.getId());
+	}
+	
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestUser.java
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestUser.java?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestUser.java (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/test/junit/org/apache/agila/bpel/user/TestUser.java Wed Apr 27 13:27:43 2005
@@ -0,0 +1,522 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.agila.bpel.user;
+
+import junit.framework.TestCase;
+import net.sf.hibernate.HibernateException;
+import net.sf.hibernate.Session;
+import net.sf.hibernate.Transaction;
+import net.sf.hibernate.cfg.Configuration;
+import net.sf.hibernate.tool.hbm2ddl.SchemaExport;
+import org.apache.agila.bpel.engine.common.lifecycle.LifecycleManager;
+import org.apache.agila.bpel.engine.common.persistence.CreationException;
+import org.apache.agila.bpel.engine.common.persistence.DBSessionManager;
+import org.apache.agila.bpel.user.exception.AgilaUserException;
+import org.apache.agila.bpel.user.priv.GroupImpl;
+import org.apache.agila.bpel.user.priv.RoleImpl;
+import org.apache.agila.bpel.user.priv.UserImpl;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public class TestUser extends TestCase {
+
+    AgilaUser agilaUser = null;
+
+    private DBSessionManager session = null;
+
+    protected void setUp() throws Exception {
+        SchemaExport schemaExport = new SchemaExport(new Configuration().configure());
+        schemaExport.create(true, true);
+
+        LifecycleManager.getLifecycleManager().createResources();
+        LifecycleManager.getLifecycleManager().startResources();
+
+        agilaUser = AgilaUserFactory.getAgilaUser();
+
+    }
+
+    protected void tearDown() throws Exception {
+        LifecycleManager.getLifecycleManager().stopResources();
+        LifecycleManager.getLifecycleManager().destroyResources();
+        agilaUser = null;
+    }
+
+
+    public void testCreateRole() throws Exception {
+        RoleImpl role = createAdminRole();
+        agilaUser.findRoleById(role.getId());
+    }
+
+    public void testCreateExistingRole() throws Exception {
+        createAdminRole();
+        try {
+            createAdminRole();
+            fail("Should rise a CreationException");
+        } catch (CreationException e) {
+            // it's OK!
+        }
+    }
+
+    public void testUpdateRole() throws Exception {
+        RoleImpl role = createAdminRole();
+        role.setName("test");
+        Role r = agilaUser.updateRole(role);
+        r = agilaUser.findRoleById(r.getId());
+        assertEquals("role name should be equals", "test", r.getName());
+    }
+
+    public void testUpdateUnexistingRole() throws Exception {
+        RoleImpl role = new RoleImpl();
+        role.setId(new Long(-1));
+        try {
+            agilaUser.updateRole(role);
+            fail("Should rise a AgilaUserException");
+        } catch (AgilaUserException e) {
+            // it's OK!
+        }
+    }
+
+    public void testUpdateRoleWithExistingRolename() throws Exception {
+        RoleImpl role = createAdminRole();
+        try {
+            agilaUser.updateRole(role);
+            fail("Should rise a AgilaUserException");
+        } catch (AgilaUserException e) {
+            // it's OK
+        }
+    }
+
+    public void testCreateGroup() throws Exception {
+        GroupImpl group = createAdminGroup();
+        agilaUser.findGroupById(group.getId());
+    }
+
+    public void testCreateExistingGroup() throws Exception {
+        createAdminGroup();
+        try {
+            createAdminGroup();
+            fail("Should rise a CreationException");
+        } catch (CreationException e) {
+            // it's OK!
+        }
+    }
+
+    public void testUpdateGroup() throws Exception {
+        GroupImpl group = createAdminGroup();
+        group.setName("test");
+        Group g = agilaUser.updateGroup(group);
+        g = agilaUser.findGroupById(g.getId());
+        assertEquals("group name should be equals", "test", g.getName());
+    }
+
+    public void testUpdateUnexistingGroup() throws Exception {
+        GroupImpl g = new GroupImpl();
+        g.setId(new Long(-1));
+        try {
+            agilaUser.updateGroup(g);
+            fail("Should rise a AgilaUserException");
+        } catch (AgilaUserException e) {
+            // it's OK!
+        }
+    }
+
+    public void testUpdateGroupWithExistingGroupname() throws Exception {
+        GroupImpl group = createAdminGroup();
+        System.out.println(group.getName());
+        try {
+            group = (GroupImpl) agilaUser.updateGroup(group);
+            System.out.println(group.getName());
+            fail("Should rise a AgilaUserException");
+        } catch (AgilaUserException e) {
+            // it's OK
+        }
+    }
+
+
+    public void testCreateUser() throws Exception {
+//        Set adminDevGroups = new HashSet();
+//        adminDevGroups.add(adminGroup);
+//        homerUser.setGroups(adminDevGroups);
+//        agilaUser.createUser(homerUser);
+    }
+
+    public void _testCreateUser1() throws Exception {
+//        createRoles();
+//        createGroups();
+
+        Set adminDevGroups = new HashSet();
+//        adminDevGroups.add(adminGroup);
+//        adminDevGroups.add(devGroup);
+//        homerUser.setGroups(adminDevGroups);
+//        agilaUser.createUser(homerUser);
+
+        Set devGroups = new HashSet();
+//        devGroups.add(devGroup);
+//        joeUser.setGroups(devGroups);
+//        agilaUser.createUser(joeUser);
+
+        Collection usersRoles = agilaUser.findRolesForUser("homerUser");
+        for (Iterator it = usersRoles.iterator(); it.hasNext();) {
+            RoleImpl role = (RoleImpl) it.next();
+            System.out.println(role);
+        }
+
+        System.out.println("");
+        usersRoles = agilaUser.findRolesForUser("joeUser");
+        for (Iterator it = usersRoles.iterator(); it.hasNext();) {
+            RoleImpl role = (RoleImpl) it.next();
+            System.out.println(role);
+        }
+
+        Collection usersInGroup = null;
+        usersInGroup = agilaUser.findUsersInGroup("devGroup");
+        for (Iterator it = usersInGroup.iterator(); it.hasNext();) {
+            UserImpl user = (UserImpl) it.next();
+            System.out.println(user.getName());
+        }
+
+        Collection usersInRole = null;
+        usersInRole = agilaUser.findUsersInRole("adminRole");
+        for (Iterator it = usersInRole.iterator(); it.hasNext();) {
+            UserImpl user = (UserImpl) it.next();
+            System.out.println(user.getName());
+        }
+
+        Collection usersInRole1 = null;
+        usersInRole1 = agilaUser.findUsersInRole("devRole");
+        for (Iterator it = usersInRole1.iterator(); it.hasNext();) {
+            UserImpl user = (UserImpl) it.next();
+            System.out.println(user.getName());
+        }
+
+//        agilaUser.deleteRole(devRole);
+    }
+
+    private GroupImpl createGroup(String groupName, Set roles) throws Exception {
+        GroupImpl group = null;
+        group = new GroupImpl();
+        group.setName(groupName);
+
+        group.setRoles(roles);
+        group = (GroupImpl) agilaUser.createGroup(group);
+        return group;
+
+    }
+
+    private GroupImpl createAdminGroup() throws Exception {
+        Set adminRole = new HashSet();
+        adminRole.add(createAdminRole());
+        return createGroup("adminGroup", adminRole);
+
+    }
+
+    private GroupImpl createDevGroup() throws Exception {
+        Set devRoles = new HashSet();
+        devRoles.add(createDevRole());
+        return createGroup("devGroup", devRoles);
+    }
+
+    private GroupImpl createManagerGroup() throws Exception {
+        Set devManagerRoles = new HashSet();
+        devManagerRoles.add(createDevRole());
+        devManagerRoles.add(createManagerRole());
+        return createGroup("managerGroup", devManagerRoles);
+    }
+
+    private RoleImpl createRole(String rolename) throws Exception {
+        RoleImpl role = null;
+        role = new RoleImpl();
+        role.setName(rolename);
+        role = (RoleImpl) agilaUser.createRole(role);
+        return role;
+    }
+
+    private RoleImpl createAdminRole() throws Exception {
+        return createRole("adminRole");
+    }
+
+    private RoleImpl createDevRole() throws Exception {
+        return createRole("devRole");
+    }
+
+    private RoleImpl createManagerRole() throws Exception {
+        return createRole("managerRole");
+    }
+
+//    public void _testFindUserByName() throws Exception {
+//        adminRole = (RoleImpl) agilaUser.createRole(adminRole);
+//        Set rs = new HashSet();
+//        rs.add(adminRole);
+//        homerUser.setRoles(rs);
+//        agilaUser.createUser(homerUser);
+//        agilaUser.findUserByUsername("fred");
+//    }
+
+//    public void _testCreateRole() throws Exception {
+//        agilaUser.createRole(adminRole);
+//    }
+//
+//    public void _testCreateRoleBis() throws Exception {
+//        try {
+//            agilaUser.createRole(adminRole);
+//            agilaUser.createRole(adminRole);
+//            fail("should rise an exception");
+//        } catch (CreationException e) {
+//             it's OK
+//        }
+//    }
+
+//    public void _testAB() throws Exception {
+//        RoleImpl admin = new RoleImpl();
+//        admin.setName("admin");
+//        create(admin);
+//
+//        RoleImpl manager = new RoleImpl();
+//        manager.setName("manager");
+//        create(manager);
+//
+//        RoleImpl dev = new RoleImpl();
+//        dev.setName("dev");
+//        create(dev);
+//
+//        GroupImpl agila = new GroupImpl();
+//        agila.setName("agila");
+//        agila.setPassword("agila");
+//        Set roles = new HashSet();
+//        roles.add(dev);
+//        agila.setRoles(roles);
+//        create(agila);
+//
+//        UserImpl fred = new UserImpl();
+//        fred.setName("fred");
+//        fred.setPassword("fred");
+//        Set groups = new HashSet();
+//        groups.add(agila);
+//        fred.setGroups(groups);
+//        Set rs = new HashSet();
+//        rs.add(admin);
+//        rs.add(dev);
+//        fred.setRoles(rs);
+//        create(fred);
+
+//        RoleImpl r = new RoleImpl();
+//        r.setId(dev.getId());
+//        delete(r);
+//    }
+
+    private void delete(Object o) throws HibernateException {
+        Session sess = HibernateUtil.currentSession();
+        Transaction tx = sess.beginTransaction();
+        sess.delete(o);
+        tx.commit();
+        HibernateUtil.closeSession();
+    }
+
+    private void create(Object o) throws HibernateException {
+        Session sess = HibernateUtil.currentSession();
+        Transaction tx = sess.beginTransaction();
+        sess.save(o);
+        tx.commit();
+        HibernateUtil.closeSession();
+    }
+
+    private void update(Object o) throws HibernateException {
+        Session sess = HibernateUtil.currentSession();
+        Transaction tx = sess.beginTransaction();
+        sess.update(o);
+        tx.commit();
+        HibernateUtil.closeSession();
+    }
+//        String FIND_ROLE_BY_ROLENAME =
+//                "FROM org.apache.agila.bpel.user.priv.RoleImpl as role " +
+//                "WHERE role.name = :rolename";
+//        List results = null;
+//        results = HibernateUtil.currentSession().find(FIND_ROLE_BY_ROLENAME, "admin", Hibernate.STRING);
+//        RoleImpl r;
+//        System.out.println(r=(RoleImpl) results.get(0));
+//        rs = r.getUsers();
+//        for (Iterator it = rs.iterator(); it.hasNext();) {
+//            UserImpl user = (UserImpl) it.next();
+//            System.out.println(user);
+//        }
+
+//        fred.setGroups(new HashSet());
+//        fred.setId(new Long(666));
+//        rs.clear();
+//        rs.add(manager);
+//        fred.setRoles(rs);
+//        update(fred);
+
+
+/*
+    private Role createAdminRole(User user) throws Exception {
+        if (adminRole == null) {
+            Role res = new Role();
+            res.setRolename("admin");
+            res.setUser(user);
+            adminRole = res;
+        }
+        return adminRole;
+    }
+
+    private Role createManagerRole(User user) throws Exception {
+        if (managerRole == null) {
+            Role res = new Role();
+            res.setRolename("manager");
+            res.setUser(user);
+            managerRole = res;
+        }
+        return managerRole;
+    }
+
+    private Role createDeveloperRole(User user) throws Exception {
+        if (devRole == null) {
+            Role res = new Role();
+            res.setRolename("developer");
+            res.setUser(user);
+            devRole = res;
+        }
+        return devRole;
+    }
+
+    public void testAB() throws Exception {
+    }
+
+    public void testInitDB() throws Exception {
+        User user = new User();
+        user.setUsername("fred");
+        user.setPassword("fred");
+        HashSet roles = new HashSet();
+        roles.add(createAdminRole(user));
+        roles.add(createManagerRole(user));
+        roles.add(createDeveloperRole(user));
+        user.setRoles(roles);
+        agilaUser.createUser(user);
+        user = new User();
+        user.setUsername("matt");
+        user.setPassword("matt");
+        roles = new HashSet();
+        roles.add(createAdminRole(user));
+        roles.add(createManagerRole(user));
+        roles.add(createDeveloperRole(user));
+        user.setRoles(roles);
+        agilaUser.createUser(user);
+    }
+
+    public void testFindAllUsers() throws Exception {
+        testInitDB();
+        Collection users = agilaUser.findAllUsers();
+        for (Iterator it = users.iterator(); it.hasNext();) {
+            User user = (User) it.next();
+            System.out.println(user);
+        }
+    }
+
+    public void testCreateUserWithoutRole() throws Exception {
+        User user1 = new User();
+        user1.setUsername("user1");
+        user1.setPassword("password1");
+        try {
+            agilaUser.createUser(user1);
+            fail("Should throw CreationException");
+        } catch (CreationException e) {
+        }
+    }
+
+    public void testCreateUser() throws Exception {
+        User user1 = new User();
+        user1.setUsername("user1");
+        user1.setPassword("password1");
+        HashSet roles = new HashSet();
+        roles.add(createAdminRole(user1));
+        roles.add(createDeveloperRole(user1));
+        user1.setRoles(roles);
+        User createdUser = agilaUser.createUser(user1);
+        assertTrue("invalid username", createdUser.getName().equals("user1"));
+        assertTrue("invalid password", createdUser.getPassword().equals("password1"));
+        assertTrue("The 2 collections of roles are different", createdUser.getRoles().equals(roles));
+    }
+
+    public void testFindUserByUsername() throws Exception {
+        User user1 = new User();
+        user1.setUsername("user1");
+        user1.setPassword("password1");
+        HashSet roles = new HashSet();
+        roles.add(createAdminRole(user1));
+        roles.add(createDeveloperRole(user1));
+        user1.setRoles(roles);
+        agilaUser.createUser(user1);
+        User user2 = agilaUser.findUserByUsername("user1");
+        assertTrue("invalid username", user2.getName().equals("user1"));
+        assertTrue("invalid password", user2.getPassword().equals("password1"));
+//        assertEquals("users are different", user1, user2);
+    }
+
+    public void testCreateUserAlreadyExists() throws Exception {
+        User user1 = new User();
+        user1.setUsername("user1");
+        user1.setPassword("password1");
+        HashSet roles = new HashSet();
+        roles.add(createAdminRole(user1));
+        user1.setRoles(roles);
+        agilaUser.createUser(user1);
+        try {
+            agilaUser.createUser(user1);
+            fail("Should throw CreationException");
+        } catch (CreationException e) {
+        }
+    }
+
+//    public void testFindUsersInRole() throws Exception {
+//        User user1 = new User();
+//        user1.setName("user1");
+//        user1.setPassword("password1");
+//        HashSet roles = new HashSet();
+//        Role adminRole = createAdminRole(user1);
+//        Role mgrRole = createManagerRole(user1);
+//        roles.add(adminRole);
+//        roles.add(mgrRole);
+//        adminRole.setUser(user1);
+//        mgrRole.setUser(user1);
+//        user1.setRoles(roles);
+//        agilaUser.createUser(user1);
+//
+//        User user2 = new User();
+//        user2.setName("user2");
+//        user2.setPassword("password2");
+//        HashSet roles2 = new HashSet();
+//        Role adminRole2 = createAdminRole(user2);
+//        Role devRole2 = createDeveloperRole(user2);
+//        roles2.add(adminRole2);
+//        roles2.add(devRole2);
+//        adminRole2.setUser(user2);
+//        devRole2.setUser(user2);
+//        user2.setRoles(roles2);
+//        agilaUser.createUser(user2);
+//
+//        Collection usersInAdmin = agilaUser.findUsersInRole("admin");
+//        Collection usersInDeveloper = agilaUser.findUsersInRole("developer");
+//        Collection usersInManager = agilaUser.findUsersInRole("manager");
+//
+//        assertTrue("Size of usersInAdmin collection should be 2", usersInAdmin.size() == 2);
+//        assertTrue("Size of usersInDeveloper collection should be 1", usersInDeveloper.size() == 1);
+//        assertTrue("Size of usersInManager collection should be 1", usersInManager.size() == 1);
+//    }
+*/
+}

Added: incubator/agila/trunk/modules/bpel/engine/user/src/test/resource/agila-configuration.xml
URL: http://svn.apache.org/viewcvs/incubator/agila/trunk/modules/bpel/engine/user/src/test/resource/agila-configuration.xml?rev=165042&view=auto
==============================================================================
--- incubator/agila/trunk/modules/bpel/engine/user/src/test/resource/agila-configuration.xml (added)
+++ incubator/agila/trunk/modules/bpel/engine/user/src/test/resource/agila-configuration.xml Wed Apr 27 13:27:43 2005
@@ -0,0 +1,121 @@
+<agila>
+    <lifecycle>
+        <resource>org.apache.agila.bpel.engine.common.transaction.TransactionManager</resource>
+        <resource>org.apache.agila.bpel.engine.common.event.EventManager</resource>
+        <resource>org.apache.agila.bpel.engine.priv.timer.EngineTimer</resource>
+    </lifecycle>
+    <transaction>
+        <resource>org.apache.agila.bpel.engine.common.persistence.DBSessionManager</resource>
+        <resource>org.apache.agila.bpel.engine.common.persistence.XMLSessionManager</resource>
+    </transaction>
+    <event-listeners>
+        <listener>org.apache.agila.bpel.engine.common.event.DebuggingListener</listener>
+    </event-listeners>
+    <tools>
+        <xindice>
+            <url>xmldb:xindice://localhost:8080/db</url>
+        </xindice>
+    </tools>
+    <deployer>
+        <namespaces>
+            <map remote-url="http://www.apache.org/agila/examples/loop/service/"
+                 local-url="loop-defs.xml"/>
+            <map remote-url="http://www.apache.org/agila/examples/process-defs.xml"
+                 local-url="process-defs.xml"/>
+            <map remote-url="http://www.apache.org/agila/test/flow/service/"
+                 local-url="test-flow-defs.xml"/>
+            <map remote-url="http://www.apache.org/agila/test/pick/service/"
+                 local-url="test-pick-defs.xml"/>
+            <map remote-url="http://www.apache.org/agila/test/reply/service/"
+                 local-url="test-reply-defs.xml"/>
+            <ignore>http://schemas.xmlsoap.org/ws/2003/03/business-process/</ignore>
+        </namespaces>
+    </deployer>
+    <engine>
+        <history>
+            <sent-messages>true</sent-messages>
+        </history>
+        <implementations>
+            <message-broker impl="org.apache.agila.bpel.engine.priv.messaging.impl.DefaultMessageBrokerImpl"/>
+
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Assign"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.AssignImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Empty"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.EmptyImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Flow"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.FlowImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Invoke"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.InvokeImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Pick"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.PickImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Receive"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.ReceiveImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Reply"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.ReplyImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Sequence"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.SequenceImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Scope"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.ScopeImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Switch"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.SwitchImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Terminate"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.TerminateImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Wait"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.WaitImpl"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.While"
+                impl="org.apache.agila.bpel.engine.priv.core.definition.impl.WhileImpl"/>
+
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.AssignEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.AssignECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.EmptyEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.EmptyECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.FlowEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.FlowECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.InvokeEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.InvokeECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.PickEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.PickECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.ReceiveEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.ReceiveECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.ReplyEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.ReplyECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.SequenceEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.SequenceECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.SwitchEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.SwitchECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.TerminateEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.TerminateECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.WaitEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.WaitECImpl"/>
+            <execution-context interface="org.apache.agila.bpel.engine.priv.core.dynamic.WhileEC"
+                impl="org.apache.agila.bpel.engine.priv.core.dynamic.impl.WhileECImpl"/>
+        </implementations>
+
+        <executions>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Assign"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.AssignEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Empty"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.EmptyEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Flow"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.FlowEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Invoke"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.InvokeEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Pick"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.PickEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Receive"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.ReceiveEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Reply"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.ReplyEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Sequence"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.SequenceEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Switch"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.SwitchEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Terminate"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.TerminateEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.Wait"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.WaitEC"/>
+            <activity interface="org.apache.agila.bpel.engine.priv.core.definition.While"
+                execution="org.apache.agila.bpel.engine.priv.core.dynamic.WhileEC"/>
+        </executions>
+    </engine>
+</agila>
\ No newline at end of file



Mime
View raw message