keycloak-memoizeit

upgrade picketlink

8/1/2013 8:16:07 PM

Details

diff --git a/services/src/main/java/org/keycloak/services/resources/Transaction.java b/services/src/main/java/org/keycloak/services/resources/Transaction.java
index e80692f..03bb3b7 100755
--- a/services/src/main/java/org/keycloak/services/resources/Transaction.java
+++ b/services/src/main/java/org/keycloak/services/resources/Transaction.java
@@ -2,9 +2,12 @@ package org.keycloak.services.resources;
 
 import org.jboss.resteasy.spi.ResteasyProviderFactory;
 import org.keycloak.services.models.KeycloakSession;
+import org.keycloak.services.models.KeycloakSessionFactory;
 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>
  * @version $Revision: 1 $
  */
@@ -13,10 +16,21 @@ public class Transaction {
     protected KeycloakTransaction transaction;
     protected boolean closeSession;
 
+    /**
+     * Pull KeycloakSession from @Context
+     *
+     * Will close session after finished
+     *
+     */
     public Transaction() {
         this(true);
     }
 
+    /**
+     *  Pull KeycloakSession from @Context
+     *
+     * @param close whether to close the session or not after completion
+     */
     public Transaction(boolean close) {
         this.session = ResteasyProviderFactory.getContextData(KeycloakSession.class);
         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() {
 
     }
 
+    /**
+     * Will not begin or end a transaction or close a session if the transaction was already active when called
+     *
+     */
     public void run() {
         boolean wasActive = transaction.isActive();
         if (!wasActive) transaction.begin();
@@ -46,6 +75,10 @@ public class Transaction {
         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() {
         boolean wasActive = transaction.isActive();
         if (!wasActive) transaction.begin();