/*
* 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.ambari.view.hive20.internal;
import org.apache.ambari.view.AmbariStreamProvider;
import org.apache.ambari.view.DataStore;
import org.apache.ambari.view.HttpImpersonator;
import org.apache.ambari.view.ImpersonatorSetting;
import org.apache.ambari.view.ResourceProvider;
import org.apache.ambari.view.SecurityException;
import org.apache.ambari.view.URLConnectionProvider;
import org.apache.ambari.view.URLStreamProvider;
import org.apache.ambari.view.ViewContext;
import org.apache.ambari.view.ViewController;
import org.apache.ambari.view.ViewDefinition;
import org.apache.ambari.view.ViewInstanceDefinition;
import org.apache.ambari.view.cluster.Cluster;
import java.util.Collection;
import java.util.Map;
/**
* Wrapper to ViewContext. This delegates all the method calls to wrapped ViewContext object excepting for
* #getUsername() and #getLoggedinUser(). At the creation time, the username and loggedinuser are store
* in instance variable. This was done to bypass the ThreadLocal variables implicitly used in actual viewContext.
* So, object of this class should be used in the ActorSystem.
*/
public class SafeViewContext implements ViewContext {
private final ViewContext viewContext;
private final String username;
private final String loggedinUser;
public SafeViewContext(ViewContext viewContext) {
this.viewContext = viewContext;
username = viewContext.getUsername();
loggedinUser = viewContext.getLoggedinUser();
}
@Override
public String getUsername() {
return username;
}
@Override
public String getLoggedinUser() {
return loggedinUser;
}
@Override
public void hasPermission(String userName, String permissionName) throws SecurityException {
viewContext.hasPermission(userName, permissionName);
}
@Override
public String getViewName() {
return viewContext.getViewName();
}
@Override
public ViewDefinition getViewDefinition() {
return viewContext.getViewDefinition();
}
@Override
public String getInstanceName() {
return viewContext.getInstanceName();
}
@Override
public ViewInstanceDefinition getViewInstanceDefinition() {
return viewContext.getViewInstanceDefinition();
}
@Override
public Map<String, String> getProperties() {
return viewContext.getProperties();
}
@Override
public void putInstanceData(String key, String value) {
viewContext.putInstanceData(key, value);
}
@Override
public String getInstanceData(String key) {
return viewContext.getInstanceData(key);
}
@Override
public Map<String, String> getInstanceData() {
return viewContext.getInstanceData();
}
@Override
public void removeInstanceData(String key) {
viewContext.removeInstanceData(key);
}
@Override
public String getAmbariProperty(String key) {
return viewContext.getAmbariProperty(key);
}
@Override
public ResourceProvider<?> getResourceProvider(String type) {
return viewContext.getResourceProvider(type);
}
@Override
public URLStreamProvider getURLStreamProvider() {
return viewContext.getURLStreamProvider();
}
@Override
public URLConnectionProvider getURLConnectionProvider() {
return viewContext.getURLConnectionProvider();
}
@Override
public AmbariStreamProvider getAmbariStreamProvider() {
return viewContext.getAmbariStreamProvider();
}
@Override
public AmbariStreamProvider getAmbariClusterStreamProvider() {
return viewContext.getAmbariClusterStreamProvider();
}
@Override
public DataStore getDataStore() {
return viewContext.getDataStore();
}
@Override
public Collection<ViewDefinition> getViewDefinitions() {
return viewContext.getViewDefinitions();
}
@Override
public Collection<ViewInstanceDefinition> getViewInstanceDefinitions() {
return viewContext.getViewInstanceDefinitions();
}
@Override
public ViewController getController() {
return viewContext.getController();
}
@Override
public HttpImpersonator getHttpImpersonator() {
return viewContext.getHttpImpersonator();
}
@Override
public ImpersonatorSetting getImpersonatorSetting() {
return viewContext.getImpersonatorSetting();
}
@Override
public Cluster getCluster() {
return viewContext.getCluster();
}
}