/** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ 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 InheritableThreadLocal(); /** * 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; } public static synchronized String getGatewayId() { RequestContext requestContext = (RequestContext) userThreadLocal.get(); if (requestContext != null) { return requestContext.getGatewayId(); } return null; } }