package org.gcube.common.storagehub.client.plugins; import org.gcube.common.clients.Plugin; import org.gcube.common.clients.ProxyBuilder; import org.gcube.common.clients.ProxyBuilderImpl; import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest; import org.gcube.common.storagehub.client.Constants; import org.gcube.common.storagehub.client.proxies.GroupManagerClient; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; import org.gcube.common.storagehub.client.proxies.UserManagerClient; import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; public abstract class AbstractPlugin implements Plugin { private static final ItemManagerPlugin item_plugin = new ItemManagerPlugin(); private static final WorkspaceManagerPlugin workspace_plugin = new WorkspaceManagerPlugin(); private static final UserManagerPlugin user_plugin = new UserManagerPlugin(); private static final GroupManagerPlugin group_plugin = new GroupManagerPlugin(); public static ProxyBuilder item() { return new ProxyBuilderImpl(item_plugin); } public static ProxyBuilder groups() { return new ProxyBuilderImpl(group_plugin); } public static ProxyBuilder users() { return new ProxyBuilderImpl(user_plugin); } public static ProxyBuilder workspace() { return new ProxyBuilderImpl(workspace_plugin); } public final String name; public AbstractPlugin(String name) { this.name=name; } @Override public String serviceClass() { return Constants.SERVICE_CLASS; } @Override public String serviceName() { return Constants.SERVICE_NAME; } @Override public String namespace() { return Constants.NAMESPACE; } @Override public String name() { return name; } }