Changing transaction handling
This commit is contained in:
parent
8d9f47436e
commit
8fd7112762
@ -32,7 +32,7 @@
|
|||||||
<property name="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)" />
|
<property name="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)" />
|
||||||
<property name="openjpa.jdbc.MappingDefaults"
|
<property name="openjpa.jdbc.MappingDefaults"
|
||||||
value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/>
|
value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/>
|
||||||
<property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=TRACE, Tool=INFO"/>
|
<property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=TRACE, Tool=INFO, SQL=TRACE"/>
|
||||||
</properties>
|
</properties>
|
||||||
</persistence-unit>
|
</persistence-unit>
|
||||||
</persistence>
|
</persistence>
|
||||||
|
@ -53,6 +53,11 @@
|
|||||||
<artifactId>openjpa</artifactId>
|
<artifactId>openjpa</artifactId>
|
||||||
<version>${openjpa.version}</version>
|
<version>${openjpa.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-tx</artifactId>
|
||||||
|
<version>${springVersion}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.hsqldb</groupId>
|
<groupId>org.hsqldb</groupId>
|
||||||
|
@ -23,12 +23,14 @@
|
|||||||
import org.apache.archiva.redback.users.*;
|
import org.apache.archiva.redback.users.*;
|
||||||
import org.apache.archiva.redback.users.jpa.model.JpaUser;
|
import org.apache.archiva.redback.users.jpa.model.JpaUser;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
import javax.persistence.criteria.CriteriaBuilder;
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
@ -102,6 +104,7 @@ public List<User> getUsers(boolean orderAscending) throws UserManagerException {
|
|||||||
return q.getResultList();
|
return q.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public User addUser(User user) throws UserManagerException {
|
public User addUser(User user) throws UserManagerException {
|
||||||
EntityManager em = getEm();
|
EntityManager em = getEm();
|
||||||
@ -133,12 +136,14 @@ public User addUser(User user) throws UserManagerException {
|
|||||||
{
|
{
|
||||||
user.setPasswordChangeRequired( true );
|
user.setPasswordChangeRequired( true );
|
||||||
}
|
}
|
||||||
em.getTransaction().begin();
|
if (user.getLastPasswordChange()==null) {
|
||||||
|
user.setLastPasswordChange(new Date());
|
||||||
|
}
|
||||||
em.persist((JpaUser)user);
|
em.persist((JpaUser)user);
|
||||||
em.getTransaction().commit();
|
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public User updateUser(User user) throws UserNotFoundException, UserManagerException {
|
public User updateUser(User user) throws UserNotFoundException, UserManagerException {
|
||||||
return updateUser(user, false);
|
return updateUser(user, false);
|
||||||
@ -254,6 +259,7 @@ public boolean userExists(String principal) throws UserManagerException {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public void deleteUser(String username) throws UserNotFoundException, UserManagerException {
|
public void deleteUser(String username) throws UserNotFoundException, UserManagerException {
|
||||||
final EntityManager em = getEm();
|
final EntityManager em = getEm();
|
||||||
@ -261,12 +267,11 @@ public void deleteUser(String username) throws UserNotFoundException, UserManage
|
|||||||
if (u.isPermanent()) {
|
if (u.isPermanent()) {
|
||||||
throw new PermanentUserException("User "+username+" cannot be deleted");
|
throw new PermanentUserException("User "+username+" cannot be deleted");
|
||||||
}
|
}
|
||||||
em.getTransaction().begin();
|
|
||||||
em.remove(u);
|
em.remove(u);
|
||||||
em.getTransaction().commit();
|
|
||||||
fireUserManagerUserRemoved(u);
|
fireUserManagerUserRemoved(u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public void addUserUnchecked(User user) throws UserManagerException {
|
public void addUserUnchecked(User user) throws UserManagerException {
|
||||||
log.info("addUserUnchecked "+user.getUsername());
|
log.info("addUserUnchecked "+user.getUsername());
|
||||||
@ -282,21 +287,19 @@ public void addUserUnchecked(User user) throws UserManagerException {
|
|||||||
Messages.getString( "user.manager.cannot.add.user.without.username" ) ); //$NON-NLS-1$
|
Messages.getString( "user.manager.cannot.add.user.without.username" ) ); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
em.getTransaction().begin();
|
|
||||||
TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u", JpaUser.class);
|
TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u", JpaUser.class);
|
||||||
for (JpaUser u : q.getResultList()) {
|
for (JpaUser u : q.getResultList()) {
|
||||||
log.info("USER FOUND: "+u.getUsername());
|
log.info("USER FOUND: "+u.getUsername());
|
||||||
}
|
}
|
||||||
log.info("NEW USER "+user.getUsername());
|
log.info("NEW USER "+user.getUsername());
|
||||||
em.persist((JpaUser)user);
|
em.persist((JpaUser)user);
|
||||||
em.getTransaction().commit();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public void eraseDatabase() {
|
public void eraseDatabase() {
|
||||||
EntityManager em = getEm();
|
EntityManager em = getEm();
|
||||||
em.getTransaction().begin();
|
|
||||||
TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u", JpaUser.class);
|
TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u", JpaUser.class);
|
||||||
for (JpaUser u : q.getResultList()) {
|
for (JpaUser u : q.getResultList()) {
|
||||||
u.getPreviousEncodedPasswords().clear();
|
u.getPreviousEncodedPasswords().clear();
|
||||||
@ -304,23 +307,27 @@ public void eraseDatabase() {
|
|||||||
em.flush();
|
em.flush();
|
||||||
Query qd = em.createQuery("DELETE FROM JpaUser u");
|
Query qd = em.createQuery("DELETE FROM JpaUser u");
|
||||||
qd.executeUpdate();
|
qd.executeUpdate();
|
||||||
em.getTransaction().commit();
|
|
||||||
em.clear();
|
em.clear();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public User updateUser(User user, boolean passwordChangeRequired) throws UserNotFoundException, UserManagerException {
|
public User updateUser(User user, boolean passwordChangeRequired) throws UserNotFoundException, UserManagerException {
|
||||||
|
if ( !( user instanceof JpaUser ) )
|
||||||
|
{
|
||||||
|
throw new UserManagerException( "Unable to update user. User object " + user.getClass().getName() +
|
||||||
|
" is not an instance of " + JpaUser.class.getName() );
|
||||||
|
}
|
||||||
if ( StringUtils.isNotEmpty( user.getPassword() ) )
|
if ( StringUtils.isNotEmpty( user.getPassword() ) )
|
||||||
{
|
{
|
||||||
userSecurityPolicy.extensionChangePassword( user, passwordChangeRequired );
|
userSecurityPolicy.extensionChangePassword( user, passwordChangeRequired );
|
||||||
}
|
}
|
||||||
|
JpaUser jpaUser = (JpaUser) user;
|
||||||
final EntityManager em = getEm();
|
final EntityManager em = getEm();
|
||||||
em.getTransaction().begin();
|
jpaUser = em.merge(jpaUser);
|
||||||
em.persist((JpaUser)user);
|
fireUserManagerUserUpdated(jpaUser);
|
||||||
em.getTransaction().commit();
|
return jpaUser;
|
||||||
fireUserManagerUserUpdated(user);
|
|
||||||
return user;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -131,7 +131,7 @@ public Date getLastPasswordChange() {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setLastPasswordChange(Date passwordChangeDate) {
|
public void setLastPasswordChange(Date passwordChangeDate) {
|
||||||
this.lastPasswordChange = lastPasswordChange;
|
this.lastPasswordChange = passwordChangeDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -222,6 +222,6 @@ public void setLastLoginDate(Date date) {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUserManagerId() {
|
public String getUserManagerId() {
|
||||||
return null;
|
return "jpa";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user