Index: continuum-model/src/main/mdo/continuum.mdo =================================================================== --- continuum-model/src/main/mdo/continuum.mdo (revision 433466) +++ continuum-model/src/main/mdo/continuum.mdo (working copy) @@ -863,6 +863,7 @@ + + + + NotificationAddress Index: continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java =================================================================== --- continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java (revision 0) +++ continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java (revision 0) @@ -0,0 +1,103 @@ +package org.apache.maven.continuum.model.system; + +/* + * Copyright 2006 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. + */ + +import org.apache.maven.user.model.User; + +/** + * @author Henry Isidro + */ +public class ContinuumUser + extends User +{ + /* + public String getPassword() + { + return super.getPassword(); + } + + public void setPassword( String password ) + { + setEncodedPassword( crypt( password ) ); + } + */ + + public boolean equalsPassword( String password ) + { + if ( getEncodedPassword() == null && password == null ) + { + return true; + } + + if ( ( getEncodedPassword() == null && password != null ) || ( getEncodedPassword() == null && password != null ) ) + { + return false; + } + + return getEncodedPassword().equals( crypt( password ) ); + } + + private String crypt( String data ) + { + try + { + java.security.MessageDigest digester = java.security.MessageDigest.getInstance( "SHA-1" ); + digester.reset(); + digester.update( data.getBytes() ); + return encode( digester.digest() ); + } + catch( Exception e ) + { + return data; + } + } + + /** + * Encodes a 128 bit or 160-bit byte array into a String. + * + * @param binaryData Array containing the digest + * @return Encoded hex string, or null if encoding failed + */ + + private String encode( byte[] binaryData ) + { + if ( binaryData.length != 16 && binaryData.length != 20 ) + { + int bitLength = binaryData.length * 8; + throw new IllegalArgumentException( "Unrecognised length for binary data: " + bitLength + " bits" ); + } + + String retValue = ""; + + for ( int i = 0; i < binaryData.length; i++ ) + { + String t = Integer.toHexString( binaryData[i] & 0xff ); + + if ( t.length() == 1 ) + { + retValue += ( "0" + t ); + } + else + { + retValue += t; + } + } + + return retValue.trim(); + } + +} Property changes on: continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java ___________________________________________________________________ Name: svn:keywords + "Author Date Id Revision" Name: svn:eol-style + native Index: continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java =================================================================== --- continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java (revision 0) +++ continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java (revision 0) @@ -0,0 +1,26 @@ +package org.apache.maven.continuum.model.system; + +/* + * Copyright 2006 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. + */ + +/** + * @author Henry Isidro + */ +public class Permission + extends org.apache.maven.user.model.Permission +{ + +} Property changes on: continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java ___________________________________________________________________ Name: svn:keywords + "Author Date Id Revision" Name: svn:eol-style + native Index: continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java =================================================================== --- continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java (revision 0) +++ continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java (revision 0) @@ -0,0 +1,26 @@ +package org.apache.maven.continuum.model.system; + +/* + * Copyright 2006 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. + */ + +/** + * @author Henry Isidro + */ +public class UserGroup + extends org.apache.maven.user.model.UserGroup +{ + +} Property changes on: continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java ___________________________________________________________________ Name: svn:keywords + "Author Date Id Revision" Name: svn:eol-style + native Index: continuum-model/src/main/resources/META-INF/package.jdo =================================================================== --- continuum-model/src/main/resources/META-INF/package.jdo (revision 0) +++ continuum-model/src/main/resources/META-INF/package.jdo (revision 0) @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: continuum-model/pom.xml =================================================================== --- continuum-model/pom.xml (revision 433466) +++ continuum-model/pom.xml (working copy) @@ -21,7 +21,7 @@ java - jpox-jdo-mapping + @@ -45,4 +45,11 @@ + + + + org.apache.maven.shared.user + maven-user-model + + Index: continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java =================================================================== --- continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java (revision 433466) +++ continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java (working copy) @@ -86,6 +86,6 @@ ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder(); String shaPassword = passwordEncoder.encodePassword( "admin", null ); - assertEquals( continuumUser.getHashedPassword(), shaPassword ); + assertEquals( continuumUser.getEncodedPassword(), shaPassword ); } } Index: continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java =================================================================== --- continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java (revision 433466) +++ continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java (working copy) @@ -19,6 +19,7 @@ import java.util.Iterator; import java.util.List; +import javax.persistence.EntityNotFoundException; import org.acegisecurity.GrantedAuthority; import org.acegisecurity.GrantedAuthorityImpl; @@ -28,8 +29,7 @@ import org.acegisecurity.userdetails.UsernameNotFoundException; import org.apache.maven.continuum.model.system.ContinuumUser; import org.apache.maven.continuum.model.system.Permission; -import org.apache.maven.continuum.store.ContinuumStore; -import org.apache.maven.continuum.store.ContinuumStoreException; +import org.apache.maven.user.model.UserManager; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessResourceFailureException; @@ -46,36 +46,21 @@ /** * @plexus.requirement */ - private ContinuumStore store; + private UserManager userManager; public ContinuumUserDetailsService() { } - public void setStore( ContinuumStore store ) - { - this.store = store; - } - - /** - * {@link ContinuumStore} to load the user from. - * - * @return the store - */ - public ContinuumStore getStore() - { - return store; - } - public UserDetails loadUserByUsername( String username ) throws UsernameNotFoundException, DataAccessException { ContinuumUser user; try { - user = getStore().getUserByUsername( username ); + user = ( ContinuumUser ) userManager.getUser( username ); } - catch ( ContinuumStoreException e ) + catch ( EntityNotFoundException e ) { throw new DataAccessResourceFailureException( e.getMessage(), e ); } @@ -106,7 +91,7 @@ i++; } String username = user.getUsername(); - String password = user.getHashedPassword(); + String password = user.getEncodedPassword(); boolean enabled = true; boolean accountNonExpired = true; boolean credentialsNonExpired = true; Index: pom.xml =================================================================== --- pom.xml (revision 433466) +++ pom.xml (working copy) @@ -327,7 +327,7 @@ jpox jpox-dbcp - 1.1.0-rc-1 + 1.1.1 jpox @@ -426,6 +426,18 @@ plexus-security-summit 1.0-alpha-3 + + + org.apache.maven.shared.user + maven-user-model + 1.0-SNAPSHOT + + + javax.persistence + persistence-api + 1.0 + + Index: continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java =================================================================== --- continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java (revision 433466) +++ continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java (working copy) @@ -24,11 +24,15 @@ import org.apache.maven.continuum.security.ContinuumSecurity; import org.apache.maven.continuum.store.ContinuumStore; import org.apache.maven.continuum.store.ContinuumStoreException; +import org.apache.maven.user.model.PasswordRuleViolationException; +import org.apache.maven.user.model.UserManager; import org.codehaus.plexus.logging.AbstractLogEnabled; import java.util.ArrayList; import java.util.List; +import javax.persistence.EntityExistsException; + /** * @author Jason van Zyl * @version $Id$ @@ -65,6 +69,11 @@ * @plexus.requirement */ private ContinuumStore store; + + /** + * @plexus.requirement + */ + private UserManager userManager; // ---------------------------------------------------------------------- // @@ -168,7 +177,7 @@ private Permission createPermission( String name, String description ) throws ContinuumStoreException { - Permission perm = store.getPermission( name ); + Permission perm = ( Permission ) userManager.getPermission( name ); if ( perm == null ) { @@ -178,7 +187,7 @@ perm.setDescription( description ); - perm = store.addPermission( perm ); + perm = ( Permission ) userManager.addPermission( perm ); } return perm; @@ -188,9 +197,9 @@ throws ContinuumStoreException { // Continuum Administrator - if ( store.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) == null ) + if ( userManager.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) == null ) { - List adminPermissions = store.getPermissions(); + List adminPermissions = userManager.getPermissions(); UserGroup adminGroup = new UserGroup(); @@ -200,11 +209,11 @@ adminGroup.setPermissions( adminPermissions ); - store.addUserGroup( adminGroup ); + userManager.addUserGroup( adminGroup ); } // Continuum Guest - if ( store.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) == null ) + if ( userManager.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) == null ) { UserGroup guestGroup = new UserGroup(); @@ -214,20 +223,20 @@ List guestPermissions = new ArrayList(); - guestPermissions.add( store.getPermission( "buildProject" ) ); + guestPermissions.add( userManager.getPermission( "buildProject" ) ); - guestPermissions.add( store.getPermission( "showProject" ) ); + guestPermissions.add( userManager.getPermission( "showProject" ) ); guestGroup.setPermissions( guestPermissions ); - store.addUserGroup( guestGroup ); + userManager.addUserGroup( guestGroup ); } } private void createGuestUser() throws ContinuumStoreException { - if ( store.getGuestUser() == null ) + if ( userManager.getGuestUser() == null ) { ContinuumUser guest = new ContinuumUser(); @@ -235,18 +244,29 @@ guest.setFullName( "Anonymous User" ); - guest.setGroup( store.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) ); + guest.setGroup( userManager.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) ); guest.setGuest( true ); - store.addUser( guest ); + try + { + userManager.addUser( guest ); + } + catch ( EntityExistsException eee ) + { + throw new ContinuumStoreException( "Error adding user, the user already exists.", eee ); + } + catch ( PasswordRuleViolationException pre ) + { + throw new ContinuumStoreException( "There was a password rule violation.", pre ); + } } } private void createAdminUser() throws ContinuumStoreException { - if ( store.getUserByUsername( "admin" ) == null ) + if ( userManager.getUser( "admin" ) == null ) { ContinuumUser admin = new ContinuumUser(); @@ -254,11 +274,22 @@ admin.setFullName( "Administrator" ); - admin.setGroup( store.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) ); + admin.setGroup( userManager.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) ); admin.setPassword( "admin" ); - store.addUser( admin ); + try + { + userManager.addUser( admin ); + } + catch ( EntityExistsException eee ) + { + throw new ContinuumStoreException( "The user already exists.", eee ); + } + catch ( PasswordRuleViolationException pre ) + { + throw new ContinuumStoreException( "There was a password rule violation.", pre ); + } } } } Index: continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java =================================================================== --- continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (revision 433466) +++ continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (working copy) @@ -50,6 +50,8 @@ import org.apache.maven.continuum.utils.PlexusContainerManager; import org.apache.maven.continuum.utils.ProjectSorter; import org.apache.maven.continuum.utils.WorkingDirectoryService; +import org.apache.maven.user.model.PasswordRuleViolationException; +import org.apache.maven.user.model.UserManager; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.action.Action; @@ -82,6 +84,9 @@ import java.util.Map; import java.util.Properties; +import javax.persistence.EntityExistsException; +import javax.persistence.EntityNotFoundException; + /** * @author Jason van Zyl * @author Trygve Laugstøl @@ -105,6 +110,11 @@ * @plexus.requirement */ private ContinuumStore store; + + /** + * @plexus.requirement + */ + private UserManager userManager; /** * @plexus.requirement @@ -1634,9 +1644,9 @@ { try { - return store.getUsers(); + return userManager.getUsers(); } - catch ( ContinuumStoreException ex ) + catch ( EntityNotFoundException ex ) { throw logAndCreateException( "Error while getting users.", ex ); } @@ -1645,11 +1655,22 @@ public void addUser( ContinuumUser user ) throws ContinuumException { - if ( StringUtils.isEmpty( user.getHashedPassword() ) ) + if ( StringUtils.isEmpty( user.getPassword() ) ) { throw new ContinuumException( "Password can't be null" ); } - store.addUser( user ); + try + { + userManager.addUser( user ); + } + catch ( EntityExistsException eee ) + { + throw new ContinuumException( "Error adding " + user.getUsername() + ", the user already exists.", eee ); + } + catch ( PasswordRuleViolationException pre ) + { + throw new ContinuumException( "There was a password rule violation.", pre ); + } } public void addUser( Map configuration ) @@ -1673,18 +1694,25 @@ public void updateUser( ContinuumUser user ) throws ContinuumException { - if ( StringUtils.isEmpty( user.getHashedPassword() ) ) + if ( StringUtils.isEmpty( user.getEncodedPassword() ) ) { ContinuumUser u = getUser( user.getAccountId() ); - user.setHashedPassword( u.getHashedPassword() ); + user.setEncodedPassword( u.getEncodedPassword() ); } try { - store.updateUser( user ); + try + { + userManager.updateUser( user ); + } + catch ( PasswordRuleViolationException pre ) + { + throw new ContinuumException( "There was a password rule violation.", pre ); + } } - catch ( ContinuumStoreException ex ) + catch ( EntityNotFoundException ex ) { throw logAndCreateException( "Error while storing user.", ex ); } @@ -1713,7 +1741,7 @@ { try { - return store.getUser( userId ); + return ( ContinuumUser ) userManager.getUser( userId ); } catch ( Exception ex ) { @@ -1724,9 +1752,7 @@ public void removeUser( int userId ) throws ContinuumException { - ContinuumUser user = getUser( userId ); - - store.removeUser( user ); + userManager.removeUser( userId ); } // ---------------------------------------------------------------------- @@ -1738,9 +1764,9 @@ { try { - return store.getUserGroups(); + return userManager.getUserGroups(); } - catch ( ContinuumStoreException ex ) + catch ( EntityNotFoundException ex ) { throw logAndCreateException( "Error while getting user groups.", ex ); } @@ -1748,7 +1774,7 @@ public void addUserGroup( UserGroup userGroup ) { - store.addUserGroup( userGroup ); + userManager.addUserGroup( userGroup ); } public void addUserGroup( Map configuration ) @@ -1804,72 +1830,72 @@ if ( convertBoolean( (String) configuration.get( "group.permission.addProject" ) ) ) { - perms.add( store.getPermission( "addProject" ) ); + perms.add( userManager.getPermission( "addProject" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.editProject" ) ) ) { - perms.add( store.getPermission( "editProject" ) ); + perms.add( userManager.getPermission( "editProject" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.deleteProject" ) ) ) { - perms.add( store.getPermission( "deleteProject" ) ); + perms.add( userManager.getPermission( "deleteProject" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.buildProject" ) ) ) { - perms.add( store.getPermission( "buildProject" ) ); + perms.add( userManager.getPermission( "buildProject" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.showProject" ) ) ) { - perms.add( store.getPermission( "showProject" ) ); + perms.add( userManager.getPermission( "showProject" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.addBuildDefinition" ) ) ) { - perms.add( store.getPermission( "addBuildDefinition" ) ); + perms.add( userManager.getPermission( "addBuildDefinition" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.editBuildDefinition" ) ) ) { - perms.add( store.getPermission( "editBuildDefinition" ) ); + perms.add( userManager.getPermission( "editBuildDefinition" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.deleteBuildDefinition" ) ) ) { - perms.add( store.getPermission( "deleteBuildDefinition" ) ); + perms.add( userManager.getPermission( "deleteBuildDefinition" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.addNotifier" ) ) ) { - perms.add( store.getPermission( "addNotifier" ) ); + perms.add( userManager.getPermission( "addNotifier" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.editNotifier" ) ) ) { - perms.add( store.getPermission( "editNotifier" ) ); + perms.add( userManager.getPermission( "editNotifier" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.deleteNotifier" ) ) ) { - perms.add( store.getPermission( "deleteNotifier" ) ); + perms.add( userManager.getPermission( "deleteNotifier" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.manageConfiguration" ) ) ) { - perms.add( store.getPermission( "manageConfiguration" ) ); + perms.add( userManager.getPermission( "manageConfiguration" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.manageSchedule" ) ) ) { - perms.add( store.getPermission( "manageSchedule" ) ); + perms.add( userManager.getPermission( "manageSchedule" ) ); } if ( convertBoolean( (String) configuration.get( "group.permission.manageUsers" ) ) ) { - perms.add( store.getPermission( "manageUsers" ) ); + perms.add( userManager.getPermission( "manageUsers" ) ); } return perms; @@ -1880,9 +1906,9 @@ { try { - store.updateUserGroup( userGroup ); + userManager.updateUserGroup( userGroup ); } - catch ( ContinuumStoreException e ) + catch ( EntityNotFoundException e ) { throw logAndCreateException( "Error while storing user group.", e ); } @@ -1893,7 +1919,7 @@ { try { - return store.getUserGroup( userGroupId ); + return ( UserGroup ) userManager.getUserGroup( userGroupId ); } catch ( Exception ex ) { @@ -1904,9 +1930,7 @@ public void removeUserGroup( int userGroupId ) throws ContinuumException { - UserGroup group = getUserGroup( userGroupId ); - - store.removeUserGroup( group ); + userManager.removeUserGroup( userGroupId ); } // ---------------------------------------------------------------------- Index: continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java =================================================================== --- continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java (revision 433466) +++ continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java (working copy) @@ -18,10 +18,10 @@ */ import java.util.Map; +import javax.persistence.EntityNotFoundException; import org.apache.maven.continuum.model.system.ContinuumUser; -import org.apache.maven.continuum.store.ContinuumStore; -import org.apache.maven.continuum.store.ContinuumStoreException; +import org.apache.maven.user.model.UserManager; import org.codehaus.plexus.security.Authentication; import org.codehaus.plexus.security.Authenticator; import org.codehaus.plexus.security.exception.AuthenticationException; @@ -37,10 +37,11 @@ public class ContinuumAuthenticator implements Authenticator { + /** * @plexus.requirement */ - private ContinuumStore store; + private UserManager userManager; // ---------------------------------------------------------------------- // Authenticator Implementation @@ -85,9 +86,9 @@ { try { - return store.getUserByUsername( username ); + return ( ContinuumUser ) userManager.getUserByUsername( username ); } - catch ( ContinuumStoreException e ) + catch ( EntityNotFoundException e ) { throw new AuthenticationException( "Error while retreiving user.", e ); } Index: continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java =================================================================== --- continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java (revision 433466) +++ continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java (working copy) @@ -19,11 +19,11 @@ import org.apache.maven.continuum.model.system.ContinuumUser; import org.apache.maven.continuum.model.system.Permission; import org.apache.maven.continuum.model.system.UserGroup; -import org.apache.maven.continuum.store.ContinuumStore; -import org.apache.maven.continuum.store.ContinuumStoreException; +import org.apache.maven.user.model.UserManager; import java.util.Iterator; import java.util.List; +import javax.persistence.EntityNotFoundException; /** * @author Emmanuel Venisse @@ -35,7 +35,7 @@ /** * @plexus.requirement */ - private ContinuumStore store; + private UserManager userManager; public List getPermissions( ContinuumUser user ) throws ContinuumSecurityException @@ -47,7 +47,7 @@ u = getGuestUser(); } - return getPermissions( u.getGroup() ); + return getPermissions( ( UserGroup ) u.getGroup() ); } public List getPermissions( UserGroup group ) @@ -100,9 +100,9 @@ { try { - return store.getGuestUser(); + return ( ContinuumUser ) userManager.getGuestUser(); } - catch ( ContinuumStoreException e ) + catch ( EntityNotFoundException e ) { throw new ContinuumSecurityException( "Can't obtain guest user.", e ); } Index: continuum-core/src/main/resources/META-INF/plexus/components.xml =================================================================== --- continuum-core/src/main/resources/META-INF/plexus/components.xml (revision 433466) +++ continuum-core/src/main/resources/META-INF/plexus/components.xml (working copy) @@ -22,6 +22,10 @@ org.apache.maven.continuum.build.settings.SchedulesActivator + + org.apache.maven.user.model.UserManager + userManager + org.codehaus.plexus.taskqueue.TaskQueue @@ -63,7 +67,7 @@ org.apache.maven.continuum.security.DefaultContinuumSecurity - org.apache.maven.continuum.store.ContinuumStore + org.apache.maven.user.model.UserManager @@ -779,5 +783,23 @@ + + + + org.apache.maven.user.model.UserManager + org.apache.maven.user.model.impl.DefaultUserManager + + + org.codehaus.plexus.jdo.JdoFactory + jdoFactory + + + + + Index: continuum-core/pom.xml =================================================================== --- continuum-core/pom.xml (revision 433466) +++ continuum-core/pom.xml (working copy) @@ -158,5 +158,9 @@ plexus-mail-sender-simple test + + javax.persistence + persistence-api + Index: continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java =================================================================== --- continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java (revision 433466) +++ continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java (working copy) @@ -1065,17 +1065,26 @@ } } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public ContinuumUser addUser( ContinuumUser user ) { return (ContinuumUser) addObject( user ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public void updateUser( ContinuumUser user ) throws ContinuumStoreException { updateObject( user ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public ContinuumUser getGuestUser() throws ContinuumStoreException { @@ -1114,18 +1123,27 @@ } } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public List getUsers() throws ContinuumStoreException { return getAllObjectsDetached( ContinuumUser.class ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public ContinuumUser getUser( int userId ) throws ContinuumObjectNotFoundException, ContinuumStoreException { return (ContinuumUser) getObjectById( ContinuumUser.class, userId ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public ContinuumUser getUserByUsername( String username ) throws ContinuumStoreException { @@ -1168,17 +1186,26 @@ } } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public void removeUser( ContinuumUser user ) { removeObject( user ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public List getPermissions() throws ContinuumStoreException { return getAllObjectsDetached( Permission.class ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public Permission getPermission( String name ) throws ContinuumStoreException { @@ -1221,34 +1248,52 @@ } } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public Permission addPermission( Permission perm ) { return (Permission) addObject( perm ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public UserGroup addUserGroup( UserGroup group ) { return (UserGroup) addObject( group ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public void updateUserGroup( UserGroup group ) throws ContinuumStoreException { updateObject( group ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public List getUserGroups() throws ContinuumStoreException { return getAllObjectsDetached( UserGroup.class ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public UserGroup getUserGroup( int userGroupId ) throws ContinuumObjectNotFoundException, ContinuumStoreException { return (UserGroup) getObjectById( UserGroup.class, userGroupId ); } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public UserGroup getUserGroup( String name ) { PersistenceManager pm = getPersistenceManager(); @@ -1299,6 +1344,9 @@ return pm; } + /** + * @deprecated This functionality has been moved to org.apache.maven.user.model.UserManager + */ public void removeUserGroup( UserGroup group ) { removeObject( group ); Index: continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/DeleteUserAction.java =================================================================== --- continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/DeleteUserAction.java (revision 433466) +++ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/DeleteUserAction.java (working copy) @@ -1,87 +0,0 @@ -package org.apache.maven.continuum.web.action; - -/* - * Copyright 2006 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. - */ - -import org.apache.maven.continuum.Continuum; -import org.apache.maven.continuum.ContinuumException; - -import org.codehaus.plexus.xwork.action.PlexusActionSupport; - -/** - * @author Henry Isidro - * @version $Id$ - * - * @plexus.component - * role="com.opensymphony.xwork.Action" - * role-hint="deleteUser" - */ -public class DeleteUserAction - extends PlexusActionSupport -{ - /** - * @plexus.requirement - */ - private Continuum continuum; - - private int accountId; - - private String username; - - public String execute() - throws Exception - { - try - { - continuum.removeUser( accountId ); - } - catch ( ContinuumException e ) - { - addActionMessage( "Can't delete user (id=" + accountId + ") : " + e.getMessage() ); - - e.printStackTrace(); - - return ERROR; - } - - return SUCCESS; - } - - public String doDelete() - { - return "delete"; - } - - public int getAccountId() - { - return accountId; - } - - public void setAccountId( int accountId ) - { - this.accountId = accountId; - } - - public String getUsername() - { - return username; - } - public void setUsername( String username ) - { - this.username = username; - } - -} Index: continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/UsersAction.java =================================================================== --- continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/UsersAction.java (revision 433466) +++ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/UsersAction.java (working copy) @@ -1,67 +0,0 @@ -package org.apache.maven.continuum.web.action; - -/* - * Copyright 2006 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. - */ - -import org.apache.maven.continuum.Continuum; -import org.apache.maven.continuum.ContinuumException; - -import java.util.Collection; - -import org.codehaus.plexus.xwork.action.PlexusActionSupport; - -/** - * @author Henry Isidro - * @version $Id$ - * - * @plexus.component - * role="com.opensymphony.xwork.Action" - * role-hint="users" - */ -public class UsersAction - extends PlexusActionSupport -{ - /** - * @plexus.requirement - */ - private Continuum continuum; - - private Collection users; - - public String execute() - { - try - { - users = continuum.getUsers(); - } - catch ( ContinuumException ce ) - { - addActionError( "Can't get continuum users: " + ce.getMessage() ); - - ce.printStackTrace(); - - return ERROR; - } - - return SUCCESS; - } - - public Collection getUsers() - { - return users; - } - -} Index: continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddUserRoleAction.java =================================================================== --- continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddUserRoleAction.java (revision 433466) +++ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddUserRoleAction.java (working copy) @@ -1,115 +0,0 @@ -package org.apache.maven.continuum.web.action; - -/* - * Copyright 2006 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. - */ - -import java.util.List; - -import org.apache.maven.continuum.Continuum; -import org.apache.maven.continuum.ContinuumException; -import org.apache.maven.continuum.model.system.ContinuumUser; -import org.apache.maven.continuum.model.system.Permission; -import org.apache.maven.continuum.store.ContinuumStore; - -import org.codehaus.plexus.xwork.action.PlexusActionSupport; - -/** - * @author Teody Cue - * @version $Id$ - * - * @plexus.component - * role="com.opensymphony.xwork.Action" - * role-hint="addUserRole" - */ -public class AddUserRoleAction - extends PlexusActionSupport -{ - - private Continuum continuum; - - private ContinuumStore store; - - private ContinuumUser user; - - private List permissions; - - private Permission permission; - - private int accountId; - - private String permissionName; - - public String execute() - throws Exception - { - try - { - user = continuum.getUser( accountId ); - permissions = store.getPermissions(); - int i; - for ( i = 0; i < permissions.size(); i++ ) - { - permission = (Permission) permissions.get( i ); - if ( permission.getName().equalsIgnoreCase( permissionName ) ) - { - break; - } - } - if ( i < permissions.size() ) - { - user.getGroup().addPermission( permission ); - continuum.updateUser( user ); - } - else - { - addActionMessage( "Can't add user role (id=" + accountId + ", role=" + permissionName - + ") : Role does not exist." ); - } - } - catch ( ContinuumException e ) - { - addActionMessage( "Can't add user role (id=" + accountId + ", role=" + permissionName + ") : " - + e.getMessage() ); - - e.printStackTrace(); - - return ERROR; - } - - return SUCCESS; - } - - public int getAccountId() - { - return accountId; - } - - public void setAccountId( int accountId ) - { - this.accountId = accountId; - } - - public String getPermissionName() - { - return permissionName; - } - - public void setPermissionName( String permissionName ) - { - this.permissionName = permissionName; - } - -} Index: continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/EditUserAction.java =================================================================== --- continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/EditUserAction.java (revision 433466) +++ continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/EditUserAction.java (working copy) @@ -1,403 +0,0 @@ -package org.apache.maven.continuum.web.action; - -/* - * Copyright 2006 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. - */ - -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.apache.maven.continuum.Continuum; -import org.apache.maven.continuum.ContinuumException; -import org.apache.maven.continuum.model.system.ContinuumUser; -import org.apache.maven.continuum.model.system.Permission; -import org.apache.maven.continuum.model.system.UserGroup; -import org.apache.maven.continuum.store.ContinuumStore; -import org.apache.maven.continuum.store.ContinuumStoreException; - -import com.opensymphony.webwork.interceptor.ServletRequestAware; - -import org.codehaus.plexus.xwork.action.PlexusActionSupport; - -/** - * @author Henry Isidro - * @version $Id$ - * - * @plexus.component - * role="com.opensymphony.xwork.Action" - * role-hint="editUser" - */ -public class EditUserAction - extends PlexusActionSupport - implements ServletRequestAware -{ - - /** - * @plexus.requirement - */ - private ContinuumStore store; - - /** - * @plexus.requirement - */ - private Continuum continuum; - - private ContinuumUser user; - - private UserGroup userGroup; - - private List staticPermissions; - - private List availablePermissions; - - private Permission staticPermission; - - private Permission permission; - - private String permissionName; - - private boolean addMode = false; - - private int accountId; - - private String username; - - private String password; - - private String email; - - private List permissions; - - private HttpServletRequest request; - - public String execute() - throws Exception - { - permissions = (List) request.getSession().getAttribute( "permissions" ); - try - { - username = username.substring( 0, username.indexOf( "," ) ); - password = password.substring( 0, password.indexOf( "," ) ); - email = email.substring( 0, email.indexOf( "," ) ); - } - catch ( StringIndexOutOfBoundsException e ) - { - } - if ( addMode ) - { - try - { - userGroup = new UserGroup(); - userGroup.setName( username ); - userGroup.setPermissions( permissions ); - - user = new ContinuumUser(); - user.setUsername( username ); - user.setPassword( password ); - user.setEmail( email ); - user.setGroup( userGroup ); - continuum.addUser( user ); - } - catch ( ContinuumException e ) - { - // TODO Auto-generated catch block - e.printStackTrace(); - - return ERROR; - } - } - else - { - try - { - user = continuum.getUser( accountId ); - user.setUsername( username ); - user.setPassword( password ); - user.setEmail( email ); - user.getGroup().setPermissions( permissions ); - } - catch ( ContinuumException e ) - { - // TODO Auto-generated catch block - e.printStackTrace(); - - return ERROR; - } - - try - { - continuum.updateUser( user ); - } - catch ( ContinuumException e ) - { - // TODO Auto-generated catch block - e.printStackTrace(); - - return ERROR; - } - } - - request.getSession().removeAttribute( "addMode" ); - request.getSession().removeAttribute( "accountId" ); - request.getSession().removeAttribute( "username" ); - request.getSession().removeAttribute( "password" ); - request.getSession().removeAttribute( "email" ); - request.getSession().removeAttribute( "permissions" ); - - return SUCCESS; - } - - public String doAdd() - throws Exception - { - addMode = true; - return INPUT; - } - - public String doEdit() - throws Exception - { - try - { - addMode = false; - user = continuum.getUser( accountId ); - username = user.getUsername(); - password = user.getPassword(); - email = user.getEmail(); - permissions = user.getGroup().getPermissions(); - if ( permissions.size() == 1 ) - { - permissionName = ( (Permission) permissions.get( 0 ) ).getName(); - } - } - catch ( ContinuumException e ) - { - // TODO Auto-generated catch block - e.printStackTrace(); - - return ERROR; - } - - return INPUT; - } - - public String doGetAvailablePermissions() - throws Exception - { - try - { - int i, j; - availablePermissions = new ArrayList(); - staticPermissions = store.getPermissions(); - permissions = (List) request.getSession().getAttribute( "permissions" ); - if ( permissions == null || permissions.size() == 0 ) - { - availablePermissions.addAll( staticPermissions ); - } - else - { - for ( i = 0; i < staticPermissions.size(); i++ ) - { - staticPermission = (Permission) staticPermissions.get( i ); - for ( j = 0; j < permissions.size(); j++ ) - { - permission = (Permission) permissions.get( j ); - if ( permission.getName().equalsIgnoreCase( staticPermission.getName() ) ) - { - break; - } - } - if ( j >= permissions.size() ) - { - availablePermissions.add( staticPermission ); - } - } - } - } - catch ( ContinuumStoreException e ) - { - // TODO Auto-generated catch block - e.printStackTrace(); - - return ERROR; - } - - request.getSession().setAttribute( "addMode", Boolean.valueOf( addMode ) ); - request.getSession().setAttribute( "accountId", new Integer( accountId ) ); - request.getSession().setAttribute( "username", username ); - request.getSession().setAttribute( "password", password ); - request.getSession().setAttribute( "email", email ); - - return "permissions"; - } - - public String doAddPermission() - throws Exception - { - try - { - staticPermissions = store.getPermissions(); - int i, j; - for ( i = 0; i < staticPermissions.size(); i++ ) - { - permission = (Permission) staticPermissions.get( i ); - if ( permission.getName().equalsIgnoreCase( permissionName ) ) - { - permissions = (List) request.getSession().getAttribute( "permissions" ); - if ( permissions == null ) - { - permissions = new ArrayList(); - permissions.add( permission ); - } - else - { - for ( j = 0; j < permissions.size(); j++ ) - { - Permission permission = (Permission) permissions.get( j ); - if ( permission.getName().equalsIgnoreCase( permissionName ) ) - { - break; - } - } - if ( j >= permissions.size() ) - { - permissions.add( permission ); - } - } - if ( permissions.size() == 1 ) - { - permissionName = ( (Permission) permissions.get( 0 ) ).getName(); - } - break; - } - } - } - catch ( ContinuumStoreException e ) - { - // TODO Auto-generated catch block - e.printStackTrace(); - - return ERROR; - } - - addMode = ( (Boolean) request.getSession().getAttribute( "addMode" ) ).booleanValue(); - accountId = ( (Integer) request.getSession().getAttribute( "accountId" ) ).intValue(); - username = (String) request.getSession().getAttribute( "username" ); - password = (String) request.getSession().getAttribute( "password" ); - email = (String) request.getSession().getAttribute( "email" ); - - return INPUT; - } - - public String doDeletePermission() - throws Exception - { - int i = 0; - permissions = (List) request.getSession().getAttribute( "permissions" ); - for ( ; i < permissions.size(); i++ ) - { - permission = (Permission) permissions.get( i ); - if ( permission.getName().equalsIgnoreCase( permissionName ) ) - { - permissions.remove( i ); - break; - } - if ( permissions.size() == 1 ) - { - permissionName = ( (Permission) permissions.get( 0 ) ).getName(); - } - } - - return INPUT; - } - - public List getAvailablePermissions() - { - return availablePermissions; - } - - public String getPermissionName() - { - return permissionName; - } - - public void setPermissionName( String permissionName ) - { - this.permissionName = permissionName; - } - - public boolean isAddMode() - { - return addMode; - } - - public void setAddMode( boolean addMode ) - { - this.addMode = addMode; - } - - public int getAccountId() - { - return accountId; - } - - public void setAccountId( int accountId ) - { - this.accountId = accountId; - } - - public String getUsername() - { - return username; - } - - public void setUsername( String username ) - { - this.username = username; - } - - public String getPassword() - { - return password; - } - - public void setPassword( String password ) - { - this.password = password; - } - - public String getEmail() - { - return email; - } - - public void setEmail( String email ) - { - this.email = email; - } - - public List getPermissions() - { - return this.permissions; - } - - public void setServletRequest( HttpServletRequest request ) - { - this.request = request; - } - -} Index: continuum-webapp/src/main/resources/META-INF/plexus/application.xml =================================================================== --- continuum-webapp/src/main/resources/META-INF/plexus/application.xml (revision 433466) +++ continuum-webapp/src/main/resources/META-INF/plexus/application.xml (working copy) @@ -348,9 +348,8 @@ org.acegisecurity.userdetails.UserDetailsService org.apache.maven.continuum.security.acegi.ContinuumUserDetailsService - - org.apache.maven.continuum.store.ContinuumStore - + org.apache.maven.user.model.UserManager + userManager @@ -734,6 +733,87 @@ + + + org.apache.maven.user.model.UserManager + org.apache.maven.user.model.impl.DefaultUserManager + + + org.codehaus.plexus.jdo.JdoFactory + jdoFactory + + + org.apache.maven.user.model.PasswordEncoder + sha256 + passwordEncoder + + + + Step doog ekam Skravdraa + + + + + com.opensymphony.xwork.Action + users + org.apache.maven.user.controller.action.UsersAction + per-lookup + + + + org.apache.maven.user.model.UserManager + userManager + + + + + com.opensymphony.xwork.Action + editUser + org.apache.maven.user.controller.action.EditUserAction + per-lookup + + + + org.apache.maven.user.model.UserManager + userManager + + + + + com.opensymphony.xwork.Action + deleteUser + org.apache.maven.user.controller.action.DeleteUserAction + per-lookup + + + + org.apache.maven.user.model.UserManager + userManager + + + + + + org.apache.maven.continuum.initialization.ContinuumInitializer + org.apache.maven.continuum.initialization.DefaultContinuumInitializer + + + org.apache.maven.continuum.store.ContinuumStore + store + + + org.apache.maven.user.model.UserManager + userManager + + + + + + org.apache.maven.user.model.PasswordEncoder + sha256 + org.apache.maven.user.model.impl.SHA256PasswordEncoder + + Index: continuum-webapp/src/main/webapp/editUser.jsp =================================================================== --- continuum-webapp/src/main/webapp/editUser.jsp (revision 433466) +++ continuum-webapp/src/main/webapp/editUser.jsp (working copy) @@ -1,98 +0,0 @@ -<%@ taglib uri="/webwork" prefix="ww" %> -<%@ taglib uri="/tld/extremecomponents" prefix="ec" %> -<%@ taglib uri="continuum" prefix="c1" %> - - - - - - <ww:text name="addUser.page.title"/> - - - <ww:text name="editUser.page.title"/> - - - -
- -

-
- -

-
-
- - - - - - - - - -
-
- -
-
-
-

- - - - - - - - - - - - -
 
- - - - - - - "> - - -
-
-
- - - - - - - - -
-
-
- -
- \ No newline at end of file Index: continuum-webapp/src/main/webapp/addUser.jsp =================================================================== --- continuum-webapp/src/main/webapp/addUser.jsp (revision 433466) +++ continuum-webapp/src/main/webapp/addUser.jsp (working copy) @@ -1,29 +0,0 @@ -<%@ taglib uri="/webwork" prefix="ww" %> -<%@ taglib uri="continuum" prefix="c1" %> - - - - <ww:text name="addUser.page.title"/> - - -
-

- -
- - - - - - - -
-
- -
-
-
-
- -
- Index: continuum-webapp/src/main/webapp/deleteUser.jsp =================================================================== --- continuum-webapp/src/main/webapp/deleteUser.jsp (revision 433466) +++ continuum-webapp/src/main/webapp/deleteUser.jsp (working copy) @@ -1,30 +0,0 @@ -<%@ taglib uri="/webwork" prefix="ww" %> -<%@ taglib uri="continuum" prefix="c1" %> - - - - <ww:text name="deleteUser.page.title"/> - - -
-

- -
-

- - - - - -

-
-
- - - - -
-
- -
- Index: continuum-webapp/src/main/webapp/users.jsp =================================================================== --- continuum-webapp/src/main/webapp/users.jsp (revision 433466) +++ continuum-webapp/src/main/webapp/users.jsp (working copy) @@ -1,47 +0,0 @@ -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib uri="/webwork" prefix="ww" %> -<%@ taglib uri="/tld/extremecomponents" prefix="ec" %> - - - - <ww:text name="users.page.title"/> - - -
-

- - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
- -
- Index: continuum-webapp/src/main/webapp/addUserRole.jsp =================================================================== --- continuum-webapp/src/main/webapp/addUserRole.jsp (revision 433466) +++ continuum-webapp/src/main/webapp/addUserRole.jsp (working copy) @@ -1,34 +0,0 @@ -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib uri="/webwork" prefix="ww" %> -<%@ taglib uri="/tld/extremecomponents" prefix="ec" %> - - - - <ww:text name="role.page.title"/> - - -
-

- - - - - - - - - - > - - - -
- -
- Index: continuum-webapp/pom.xml =================================================================== --- continuum-webapp/pom.xml (revision 433466) +++ continuum-webapp/pom.xml (working copy) @@ -343,5 +343,15 @@ + + org.apache.maven.shared.user + maven-user-webapp + 1.0-SNAPSHOT + war + + + javax.persistence + persistence-api +