upgrade picketlink

This commit is contained in:
Bill Burke 2013-08-01 19:16:07 -04:00
parent c9ec2bb2c5
commit 5c9a3a730c

View file

@ -2,9 +2,12 @@ package org.keycloak.services.resources;
import org.jboss.resteasy.spi.ResteasyProviderFactory; import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.keycloak.services.models.KeycloakSession; import org.keycloak.services.models.KeycloakSession;
import org.keycloak.services.models.KeycloakSessionFactory;
import org.keycloak.services.models.KeycloakTransaction; import org.keycloak.services.models.KeycloakTransaction;
/** /**
* Meant to be used as an inner class wrapper (I forget the pattern name, its been awhile).
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $ * @version $Revision: 1 $
*/ */
@ -13,10 +16,21 @@ public class Transaction {
protected KeycloakTransaction transaction; protected KeycloakTransaction transaction;
protected boolean closeSession; protected boolean closeSession;
/**
* Pull KeycloakSession from @Context
*
* Will close session after finished
*
*/
public Transaction() { public Transaction() {
this(true); this(true);
} }
/**
* Pull KeycloakSession from @Context
*
* @param close whether to close the session or not after completion
*/
public Transaction(boolean close) { public Transaction(boolean close) {
this.session = ResteasyProviderFactory.getContextData(KeycloakSession.class); this.session = ResteasyProviderFactory.getContextData(KeycloakSession.class);
transaction = session.getTransaction(); transaction = session.getTransaction();
@ -24,10 +38,25 @@ public class Transaction {
} }
/**
* Creates and manages its own session.
*
* @param factory
*/
public Transaction(KeycloakSessionFactory factory) {
this.closeSession = true;
this.session = factory.createSession();
this.transaction = session.getTransaction();
}
protected void runImpl() { protected void runImpl() {
} }
/**
* Will not begin or end a transaction or close a session if the transaction was already active when called
*
*/
public void run() { public void run() {
boolean wasActive = transaction.isActive(); boolean wasActive = transaction.isActive();
if (!wasActive) transaction.begin(); if (!wasActive) transaction.begin();
@ -46,6 +75,10 @@ public class Transaction {
return null; return null;
} }
/**
* Will not begin or end a transaction or close a session if the transaction was already active when called
*
*/
public <T> T call() { public <T> T call() {
boolean wasActive = transaction.isActive(); boolean wasActive = transaction.isActive();
if (!wasActive) transaction.begin(); if (!wasActive) transaction.begin();