/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller.impl.smis;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.net.URI;
import java.util.HashMap;
import java.util.List;
import javax.cim.CIMArgument;
import javax.cim.CIMInstance;
import javax.cim.CIMObjectPath;
import javax.cim.CIMProperty;
import javax.wbem.CloseableIterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.db.client.model.BlockObject;
import com.emc.storageos.db.client.model.ExportMask;
import com.emc.storageos.db.client.model.RemoteDirectorGroup;
import com.emc.storageos.db.client.model.StoragePool;
import com.emc.storageos.db.client.model.StorageSystem;
/**
* This class implements the CIMObjectPathFactory interface and delegates all calls to
* a dynamic proxy.
*
*/
public class CIMObjectPathFactoryAdapter implements CIMObjectPathFactory {
private final static Logger log = LoggerFactory.getLogger(CIMObjectPathFactoryAdapter.class);
private CIMObjectPathFactory proxy;
private InvocationHandler handler;
public void setHandler(InvocationHandler handler) {
this.handler = handler;
}
/**
* Initialize
*/
public void init() {
log.info("Initializing CIMObjectPathFactory proxy..");
proxy = (CIMObjectPathFactory) Proxy.newProxyInstance(CIMObjectPathFactory.class.getClassLoader(),
new Class<?>[] { CIMObjectPathFactory.class }, handler);
}
@Override
public String prefixWithSystemName(String str) {
return proxy.prefixWithSystemName(str);
}
@Override
public String prefixWithParamName(String str) {
return proxy.prefixWithParamName(str);
}
@Override
public CIMObjectPath getCimObjectPathFromOutputArgs(CIMArgument[] outputArguments, String key) {
return proxy.getCimObjectPathFromOutputArgs(outputArguments, key);
}
@Override
public Object getFromOutputArgs(CIMArgument[] outputArguments, String key) {
return proxy.getFromOutputArgs(outputArguments, key);
}
@Override
public CIMObjectPath[] getProtocolControllersFromOutputArgs(CIMArgument[] outputArguments) {
return proxy.getProtocolControllersFromOutputArgs(outputArguments);
}
@Override
public CIMObjectPath getElementCompositionSvcPath(StorageSystem storageDevice) {
return proxy.getElementCompositionSvcPath(storageDevice);
}
@Override
public CIMObjectPath getConfigSvcPath(StorageSystem storageDevice) {
return proxy.getConfigSvcPath(storageDevice);
}
@Override
public CIMObjectPath getStorageSynchronized(StorageSystem sourceSystem, BlockObject source, StorageSystem targetSystem,
BlockObject target) {
return proxy.getStorageSynchronized(sourceSystem, source, targetSystem, target);
}
@Override
public CIMObjectPath getGroupSynchronized(CIMObjectPath sourceGroup, CIMObjectPath targetGroup) {
return proxy.getGroupSynchronized(sourceGroup, targetGroup);
}
@Override
public CIMObjectPath getStorageGroupObjectPath(String storageGroupName, StorageSystem storage) throws Exception {
return proxy.getStorageGroupObjectPath(storageGroupName, storage);
}
@Override
public CIMObjectPath getControllerConfigSvcPath(StorageSystem storageDevice) {
return proxy.getControllerConfigSvcPath(storageDevice);
}
@Override
public CIMObjectPath getTierPolicySvcPath(StorageSystem storageDevice) {
return proxy.getTierPolicySvcPath(storageDevice);
}
@Override
public CIMObjectPath getTierPolicyRulePath(StorageSystem storageDevice, String policyName) {
return proxy.getTierPolicyRulePath(storageDevice, policyName);
}
@Override
public CIMObjectPath getControllerReplicationSvcPath(StorageSystem storageDevice) {
return proxy.getControllerReplicationSvcPath(storageDevice);
}
@Override
public CIMObjectPath getStorageProtectionSvcPath(StorageSystem storageDevice) {
return proxy.getStorageProtectionSvcPath(storageDevice);
}
@Override
public CIMObjectPath getReplicationServiceCapabilitiesPath(StorageSystem storageDevice) {
return proxy.getReplicationServiceCapabilitiesPath(storageDevice);
}
@Override
public CIMObjectPath getSeSystemRegistrationService(StorageSystem storage) {
return proxy.getSeSystemRegistrationService(storage);
}
@Override
public CIMObjectPath[] getClarProtocolControllers(StorageSystem storageDevice, String protocolControllerName) throws Exception {
return proxy.getClarProtocolControllers(storageDevice, protocolControllerName);
}
@Override
public CIMObjectPath[] getVolumePaths(StorageSystem storageDevice, String[] volumeNames) throws Exception {
return proxy.getVolumePaths(storageDevice, volumeNames);
}
@Override
public CIMObjectPath[] getTargetPortPaths(StorageSystem storageDevice, List<URI> targetURIList) throws Exception {
return proxy.getTargetPortPaths(storageDevice, targetURIList);
}
@Override
public CIMObjectPath[] getInitiatorPaths(StorageSystem storageDevice, String[] initiatorNames) throws Exception {
return proxy.getInitiatorPaths(storageDevice, initiatorNames);
}
@Override
public HashMap<String, CIMObjectPath> getInitiatorToInitiatorPath(StorageSystem storageDevice, List<String> initiatorNames)
throws Exception {
return proxy.getInitiatorToInitiatorPath(storageDevice, initiatorNames);
}
@Override
public String getMaskingGroupName(StorageSystem storageDevice, CIMObjectPath groupPath) {
return proxy.getMaskingGroupName(storageDevice, groupPath);
}
@Override
public CIMObjectPath getMaskingGroupPath(StorageSystem storageDevice, String groupName, MASKING_GROUP_TYPE groupType) throws Exception {
return proxy.getMaskingGroupPath(storageDevice, groupName, groupType);
}
@Override
public CIMObjectPath getMaskingViewPath(StorageSystem storageDevice, String groupName) {
return proxy.getMaskingViewPath(storageDevice, groupName);
}
@Override
public CIMObjectPath getLunMaskingProtocolControllerPath(StorageSystem storage, ExportMask exportMask) {
return proxy.getLunMaskingProtocolControllerPath(storage, exportMask);
}
@Override
public CIMObjectPath getBlockObjectPath(StorageSystem storage, StorageSystem source, BlockObject blockObject) {
return proxy.getBlockObjectPath(storage, source, blockObject);
}
@Override
public CIMObjectPath getBlockObjectPath(StorageSystem storage, BlockObject blockObject) {
return proxy.getBlockObjectPath(storage, blockObject);
}
@Override
public CIMObjectPath getVolumePath(StorageSystem storage, String nativeId) {
return proxy.getVolumePath(storage, nativeId);
}
@Override
public CIMObjectPath getReplicationGroupPath(StorageSystem storage, String groupName) {
return proxy.getReplicationGroupPath(storage, groupName);
}
@Override
public CIMObjectPath getReplicationGroupPath(StorageSystem activeProviderStorageProxy, String serialNumber, String groupName) {
return proxy.getReplicationGroupPath(activeProviderStorageProxy, serialNumber, groupName);
}
@Override
public CIMObjectPath getReplicationGroupObjectPath(StorageSystem storage, String instanceId) {
return proxy.getReplicationGroupObjectPath(storage, instanceId);
}
@Override
public CIMObjectPath getSyncAspectPath(StorageSystem storage, String aspectInstanceId) {
return proxy.getSyncAspectPath(storage, aspectInstanceId);
}
@Override
public CIMObjectPath getStoragePoolPath(StorageSystem storage, StoragePool storagePool) {
return proxy.getStoragePoolPath(storage, storagePool);
}
@Override
public CIMObjectPath getPoolSettingPath(StorageSystem storage, String poolSettingID) {
return proxy.getPoolSettingPath(storage, poolSettingID);
}
@Override
public CIMObjectPath getSyncSettingsPath(StorageSystem storage, CIMObjectPath volumePath, String aspectInstanceId) {
return proxy.getSyncSettingsPath(storage, volumePath, aspectInstanceId);
}
@Override
public CIMObjectPath getGroupSynchronizedPath(StorageSystem storage, String consistencyGroupName, String snapGroupName) {
return proxy.getGroupSynchronizedPath(storage, consistencyGroupName, snapGroupName);
}
@Override
public CIMObjectPath getSyncAspectForSourceGroupPath(StorageSystem storage, String aspectInstanceId) {
return proxy.getSyncAspectForSourceGroupPath(storage, aspectInstanceId);
}
@Override
public CIMObjectPath getGroupSynchronizedSettingsPath(StorageSystem storage, String groupName, String settingsInstance) {
return proxy.getGroupSynchronizedSettingsPath(storage, groupName, settingsInstance);
}
@Override
public CloseableIterator<CIMObjectPath> getSyncObjects(StorageSystem storage, BlockObject subject) {
return proxy.getSyncObjects(storage, subject);
}
@Override
public CIMObjectPath getSyncObject(StorageSystem storage, BlockObject subject) {
return proxy.getSyncObject(storage, subject);
}
@Override
public CIMObjectPath getStorageSystem(StorageSystem storage) {
return proxy.getStorageSystem(storage);
}
@Override
public String getSystemName(StorageSystem system) {
return proxy.getSystemName(system);
}
@Override
public String getPoolName(StorageSystem system, String poolID) {
return proxy.getPoolName(system, poolID);
}
@Override
public String getProcessorName(StorageSystem system, String processorName) {
return proxy.getProcessorName(system, processorName);
}
@Override
public CIMObjectPath objectPath(String namespace, String name, CIMProperty[] keys) {
return proxy.objectPath(namespace, name, keys);
}
@Override
public CIMObjectPath objectPath(String instanceId) {
return proxy.objectPath(instanceId);
}
@Override
public CIMObjectPath getStorageHardwareIDManagementService(StorageSystem storage) {
return proxy.getStorageHardwareIDManagementService(storage);
}
@Override
public CIMObjectPath getPrivilegeManagementService(StorageSystem storage) {
return proxy.getPrivilegeManagementService(storage);
}
@Override
public CIMInstance getStoragePoolVdevSettings(CIMObjectPath setting) {
return proxy.getStoragePoolVdevSettings(setting);
}
@Override
public CIMObjectPath getRemoteReplicationCollection(StorageSystem system, RemoteDirectorGroup group) {
return proxy.getRemoteReplicationCollection(system, group);
}
@Override
public CIMObjectPath getReplicationSettingObjectPathFromDefault(CIMInstance settingInstance) {
return proxy.getReplicationSettingObjectPathFromDefault(settingInstance);
}
}