Author: lahiru
Date: Mon Nov 26 16:21:55 2012
New Revision: 1413707

URL: http://svn.apache.org/viewvc?rev=1413707&view=rev
Log:
committing amilas patch for https://issues.apache.org/jira/browse/AIRAVATA-658.

Added:
    
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/
    
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
    
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java

Added: 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java?rev=1413707&view=auto
==============================================================================
--- 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
 (added)
+++ 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
 Mon Nov 26 16:21:55 2012
@@ -0,0 +1,26 @@
+package org.apache.airavata.common.context;
+
+/**
+ * The request context class. This will be local to a thread.
+ * User data that needs to propagate relevant to a request will be stored here.
+ * We use thread local globals to store request data.
+ * Currently we only store user identity.
+ */
+public class RequestContext {
+
+    public String getUserIdentity() {
+        return userIdentity;
+    }
+
+    public void setUserIdentity(String userIdentity) {
+        this.userIdentity = userIdentity;
+    }
+
+    /**
+     * User associated with current request.
+     */
+    private String userIdentity;
+
+
+
+}

Added: 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java
URL: 
http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java?rev=1413707&view=auto
==============================================================================
--- 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java
 (added)
+++ 
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java
 Mon Nov 26 16:21:55 2012
@@ -0,0 +1,51 @@
+package org.apache.airavata.common.context;
+
+/**
+ * The workflow context class. This will be local to a thread.
+ * Workflow data that needs to propagate relevant to a request will be stored 
here.
+ * We use thread local globals to store request data.
+ * Currently we only store user identity.
+ */
+public class WorkflowContext {
+
+    private static final ThreadLocal userThreadLocal = new ThreadLocal();
+
+    /**
+     * Sets the context.
+     * @param context The context to be set. - Careful when calling this.
+     *                Make sure other data relevant to context is preserved.
+     */
+    public static void set(RequestContext context) {
+        userThreadLocal.set(context);
+    }
+
+    /**
+     * Clears the context
+     */
+    public static void unset() {
+        userThreadLocal.remove();
+    }
+
+    /**
+     * Gets the context associated with current context.
+     * @return The context associated with current thread.
+     */
+    public static RequestContext get() {
+        return (RequestContext) userThreadLocal.get();
+    }
+
+    /**
+     * Gets the user associated with current user.
+     * @return User id associated with current request.
+     */
+    public static synchronized String getRequestUser() {
+
+        RequestContext requestContext = (RequestContext) userThreadLocal.get();
+
+        if (requestContext != null) {
+            return requestContext.getUserIdentity();
+        }
+
+        return null;
+    }
+}


Reply via email to