diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000..04cad8c
--- /dev/null
+++ b/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1
diff --git a/pom.xml b/pom.xml
index 1d69431..89fa6c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
org.gcube.portlets.admin
rmp-common-library
- 1.2.0-SNAPSHOT
+ 2.0.0-SNAPSHOT
Resource Management Library
gCube Resource Management Library is a common library containing shared code for Information System Operations
@@ -24,7 +24,7 @@
- 2.4.0
+ 2.5.1
distro
1.6
@@ -61,11 +61,33 @@
[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)
provided
+
+
+
+
+
+
+
+ org.gcube.resources.discovery
+ ic-client
+ 1.0.1-SNAPSHOT
+
org.gcube.resourcemanagement
- resource-manager-stubs
- [2.0.1-SNAPSHOT, 3.0.0-SNAPSHOT)
+ resourcemanager-client
+ [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
+
+ org.gcube.resources
+ registry-publisher
+ [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT)
+
+
+ org.gcube.resourcemanagement
+ ghn-manager-client
+ [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT)
+
+
org.gcube.resourcemanagement
ghnmanager-stubs
diff --git a/src/main/java/org/gcube/resourcemanagement/support/client/views/ResourceTypeDecorator.java b/src/main/java/org/gcube/resourcemanagement/support/client/views/ResourceTypeDecorator.java
index f06e366..485e9bb 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/client/views/ResourceTypeDecorator.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/client/views/ResourceTypeDecorator.java
@@ -24,53 +24,52 @@ public enum ResourceTypeDecorator {
/****************************************
* RESOURCES IN THE TREE
****************************************/
- GHN("gCube Hosting Node", "ghn-icon"),
- RunningInstance("Running Instances", "runninginstance-icon"),
- Service("Software", "service-icon"),
- VIEW("View", "metadatacollection-icon"),
- GenericResource("Generic Resources", "genericresource-icon"),
- Collection("Collection", "collection-icon"),
- WSResource("WSResource", "wsresources-icon"),
- Empty("Empty Tree", "empty-icon"),
- RuntimeResource("Runtime Resources", "runtimeresource-icon"),
+ GHN("gCube Hosting Node", "ghn-icon","Hosting Node"),
+ RunningInstance("Running Instances", "runninginstance-icon", "GCore Endpoint"),
+ Service("Software", "service-icon","Software"),
+ VIEW("View", "metadatacollection-icon",""),
+ GenericResource("Generic Resources", "genericresource-icon","Generic Resource"),
+ Collection("Collection", "collection-icon",""),
+ WSResource("WSResource", "wsresources-icon",""),
+ Empty("Empty Tree", "empty-icon",""),
+ RuntimeResource("Runtime Resources", "runtimeresource-icon", "Service Endpoint"),
/****************************************
* Other components
****************************************/
// For deploying services - similar to the software but with an
// extension to handle checkbox for install
- InstallableSoftware("InstallableSoftware", "empty-icon"),
+ InstallableSoftware("InstallableSoftware", "empty-icon",""),
// In the taskbar for handlig the refresh of deployment reports
- DeployReport("Deploy Report", "report-big-icon"),
- AddScopeReport("Add Scope Report", "report-big-icon"),
+ DeployReport("Deploy Report", "report-big-icon",""),
+ AddScopeReport("Add Scope Report", "report-big-icon",""),
/****************************************
* Related resources
****************************************/
- GHNRelated("Running Instances", "runninginstance-icon"),
- ServiceRelated("Running Instances", "runninginstance-icon"),
- RunningInstanceRelated("Running Instances", "runninginstance-icon"),
+ GHNRelated("Running Instances", "runninginstance-icon",""),
+ ServiceRelated("Running Instances", "runninginstance-icon",""),
+ RunningInstanceRelated("Running Instances", "runninginstance-icon",""),
/****************************************
* Models for SWEEPER
***************************************/
- Sweeper_GHN("gCube Hosting Node", "ghn-icon"),
- Sweeper_RI("Running Instance", "runninginstance-icon"),
- Sweeper_RI_Orphan("Orphan Running Instance", "orphan-runninginstance-icon"),
- Sweeper_GHN_Expired("Expired gHN", "expired-ghn-icon"),
- Sweeper_GHN_Dead("Dead gHN", "dead-ghn-icon");
-
+ Sweeper_GHN("gCube Hosting Node", "ghn-icon",""),
+ Sweeper_RI("Running Instance", "runninginstance-icon",""),
+ Sweeper_RI_Orphan("Orphan Running Instance", "orphan-runninginstance-icon",""),
+ Sweeper_GHN_Expired("Expired gHN", "expired-ghn-icon",""),
+ Sweeper_GHN_Dead("Dead gHN", "dead-ghn-icon","");
+ private String fwsName = null;
private String label = null;
private String icon = null;
- ResourceTypeDecorator(
- final String label,
- final String icon) {
+ ResourceTypeDecorator(final String label, final String icon, final String fwsName) {
this.label = label;
this.icon = icon;
+ this.fwsName = fwsName;
}
public String getLabel() {
@@ -80,4 +79,10 @@ public enum ResourceTypeDecorator {
public String getIcon() {
return this.icon;
}
+
+ public String getFWSName() {
+ if (this.fwsName == null || this.fwsName.equals(""))
+ return this.label;
+ return this.fwsName;
+ }
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISClientRequester.java b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISClientRequester.java
index f228710..96e3a28 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISClientRequester.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISClientRequester.java
@@ -16,9 +16,12 @@
package org.gcube.resourcemanagement.support.server.gcube;
+import static org.gcube.resources.discovery.icclient.ICFactory.client;
+
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
@@ -30,6 +33,8 @@ import java.util.Map;
import java.util.StringTokenizer;
import java.util.Vector;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
@@ -39,17 +44,16 @@ import javax.xml.transform.stream.StreamSource;
import org.gcube.common.core.contexts.GHNContext;
import org.gcube.common.core.informationsystem.client.ISClient;
-import org.gcube.common.core.informationsystem.client.QueryParameter;
import org.gcube.common.core.informationsystem.client.XMLResult;
-import org.gcube.common.core.informationsystem.client.XMLResult.ISResultEvaluationException;
import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericQuery;
import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.common.core.utils.logging.GCUBEClientLog;
+import org.gcube.common.resources.gcore.utils.XPathHelper;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator;
import org.gcube.resourcemanagement.support.server.gcube.queries.QueryLoader;
import org.gcube.resourcemanagement.support.server.gcube.queries.QueryLocation;
-
-
import org.gcube.resourcemanagement.support.server.managers.scope.ScopeManager;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
import org.gcube.resourcemanagement.support.shared.plugins.GenericResourcePlugin;
@@ -57,10 +61,16 @@ import org.gcube.resourcemanagement.support.shared.plugins.TMPluginFormField;
import org.gcube.resourcemanagement.support.shared.types.Tuple;
import org.gcube.resourcemanagement.support.shared.types.datamodel.CompleteResourceProfile;
import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor;
+import org.gcube.resources.discovery.client.api.DiscoveryClient;
+import org.gcube.resources.discovery.client.queries.api.Query;
+import org.gcube.resources.discovery.client.queries.impl.QueryBox;
+import org.gcube.resources.discovery.client.queries.impl.QueryTemplate;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
/**
@@ -78,43 +88,47 @@ public class ISClientRequester {
CACHE.empty();
}
- private static final ArrayList getResourceTypes(
- final CacheManager status,
- final GCUBEScope queryScope)
- throws Exception {
- List results = null;
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_TREE_TYPES));
+ private static final ArrayList getResourceTypes(final CacheManager status, final ScopeBean queryScope) throws Exception {
+
+ List resultz = null;
+
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
+
+ Query isQuery = new QueryBox(QueryLoader.getQuery(QueryLocation.GET_TREE_TYPES));
+ DiscoveryClient client = client();
// Handles the cache
ISQueryCacheKeyT cacheKey = new ISQueryCacheKeyT(queryScope.toString(),
- isQuery.getExpression(),
+ isQuery.expression(),
"getResourcesTypes");
if (status.isUsingCache() && CACHE.contains(cacheKey) && CACHE.get(cacheKey) != null) {
- results = CACHE.get(cacheKey);
+ resultz = CACHE.get(cacheKey);
} else {
try {
- results = client.execute(isQuery, queryScope);
+
+ resultz = client.submit(isQuery);
if (status.isUsingCache()) {
- CACHE.insert(cacheKey, results);
+ CACHE.insert(cacheKey, resultz);
}
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
- if (results == null || results.size() == 0) {
+ if (resultz == null || resultz.size() == 0) {
return null;
}
String type = null;
ArrayList types = new ArrayList();
try {
- for (XMLResult elem : results) {
-
- type = elem.evaluate("/type/text()").get(0);
+ for (String elem : resultz) {
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement();
+ XPathHelper helper = new XPathHelper(node);
+ type = helper.evaluate("/type/text()").get(0);
if (type != null && type.trim().length() > 0) {
types.add(type.trim());
}
@@ -122,37 +136,39 @@ public class ISClientRequester {
//**** CHANGES TO KNOW IF VIEWS AND GCUBECollection are present
types.remove("MetadataCollection");
- isQuery.setExpression("declare namespace vm = 'http://gcube-system.org/namespaces/contentmanagement/viewmanager';"+
+ isQuery = new QueryBox("declare namespace vm = 'http://gcube-system.org/namespaces/contentmanagement/viewmanager';"+
"declare namespace gc = 'http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider';"+
"declare namespace is = 'http://gcube-system.org/namespaces/informationsystem/registry';" +
"for $data in collection(\"/db/Properties\")//Document, $view in $data/Data where $view/gc:ServiceName/string() eq \"ViewManager\" " +
" and $view/gc:ServiceClass/string() eq \"ContentManagement\" and count($view//vm:View)>0 return true");
- if (client.execute(isQuery, queryScope).size() > 0)
+ if (client.submit(isQuery).size() > 0)
types.add("VIEW");
- isQuery.setExpression("declare namespace gc = 'http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider';"+
+ isQuery = new QueryBox("declare namespace gc = 'http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider';"+
"declare namespace is = 'http://gcube-system.org/namespaces/informationsystem/registry';" +
"for $data in collection(\"/db/Profiles/GenericResource\")//Document/Data/is:Profile/Resource where $data/Profile/SecondaryType eq \"GCUBECollection\" " +
" return true");
- if (client.execute(isQuery, queryScope).size() > 0)
+ if (client.submit(isQuery).size() > 0)
types.add("Collection");
- } catch (ISResultEvaluationException e) {
- _log.error("error during getResourcesTypes");
} catch (IndexOutOfBoundsException e) {
// ignore exception
}
-
+ ScopeProvider.instance.set(currScope);
return types;
}
- private static final ArrayList getResourceSubTypes(
- final CacheManager status,
- final GCUBEScope queryScope,
- final String resourceType)
- throws Exception {
+ /**
+ *
+ * @param status
+ * @param queryScope
+ * @param resourceType
+ * @return
+ * @throws Exception
+ */
+ private static final ArrayList getResourceSubTypes(final CacheManager status, final ScopeBean queryScope, final String resourceType) throws Exception {
ArrayList subtypes = new ArrayList();
if (resourceType.equals("Collection")) {
@@ -165,52 +181,58 @@ public class ISClientRequester {
return subtypes;
}
- List results = null;
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_TREE_SUBTYPES));
- isQuery.addParameters(new QueryParameter("RES_TYPE", resourceType));
+ List resultz = null;
+
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
+
+ QueryTemplate isQuery = new QueryTemplate(QueryLoader.getQuery(QueryLocation.GET_TREE_SUBTYPES));
+ DiscoveryClient client = client();
+
+ isQuery.addParameter("RES_TYPE", resourceType);
+ isQuery.addParameter("SUBTYPE", "{$subtype}");
// Handles the cache
ISQueryCacheKeyT cacheKey = new ISQueryCacheKeyT(queryScope.toString(),
- isQuery.getExpression(),
+ isQuery.expression(),
"getResourcesSubTypes");
if (status.isUsingCache() && CACHE.contains(cacheKey) && CACHE.get(cacheKey) != null) {
- results = CACHE.get(cacheKey);
+ resultz = CACHE.get(cacheKey);
} else {
try {
- results = client.execute(isQuery, queryScope);
+ resultz = client.submit(isQuery);
if (status.isUsingCache()) {
- CACHE.insert(cacheKey, results);
+ CACHE.insert(cacheKey, resultz);
}
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
- if (results == null || results.size() == 0) {
+ if (resultz == null || resultz.size() == 0)
return null;
- }
- String subtype = null;
-
- for (XMLResult elem : results) {
+ for (String elem : resultz) {
try {
- subtype = elem.evaluate("/subtype/text()").get(0);
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement();
+ XPathHelper helper = new XPathHelper(node);
+ String subtype = helper.evaluate("/subtype/text()").get(0);
if (subtype != null && subtype.trim().length() > 0) {
subtypes.add(subtype.trim());
}
- } catch (ISResultEvaluationException e) {
- _log.error("error during getResourcesTypes");
+
} catch (IndexOutOfBoundsException e) {
// ignore exception
}
}
+ ScopeProvider.instance.set(currScope);
return subtypes;
}
+
/**
* For all the resource in the scope retrieves their
* (type, subtype) values.
@@ -218,10 +240,7 @@ public class ISClientRequester {
* @return a list of string tuples (type, subtype)
* @throws Exception
*/
- public static final HashMap> getResourcesTree( //qui si perde
- final CacheManager status,
- final GCUBEScope queryScope)
- throws Exception {
+ public static final HashMap> getResourcesTree(final CacheManager status, final ScopeBean queryScope) throws Exception {
HashMap> retval = new HashMap>();
// Loads the Resources
@@ -240,35 +259,32 @@ public class ISClientRequester {
}
// Loads the WSResources
- // This types is statically handled since it is a particular
- // case of resource.
- List results = null;
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_WSRES_TYPES));
- results = client.execute(isQuery, queryScope);
- if (results == null || results.size() == 0) {
+ // This types is statically handled since it is a particular case of resource.
+
+
+ List resultz = null;
+
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
+
+ Query isQuery = new QueryBox(QueryLoader.getQuery(QueryLocation.GET_WSRES_TYPES));
+ DiscoveryClient client = client();
+
+ resultz = client.submit(isQuery);
+ if (resultz == null || resultz.size() == 0) {
return retval;
}
subtypes = new ArrayList();
- for (XMLResult elem : results) {
+ for (String elem : resultz) {
subtypes.add(elem.toString());
}
retval.put("WSResource", subtypes);
+ ScopeProvider.instance.set(currScope);
return retval;
}
- public static final List getRelatedResources(
- final CacheManager status,
- final String type,
- final String id,
- final GCUBEScope queryScope)
- throws Exception {
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
-
+ public static final List getRelatedResources(final CacheManager status, final String type, final String id, final ScopeBean queryScope) throws Exception {
QueryLocation queryPath = null;
try {
queryPath = QueryLocation.valueOf("LIST_RELATED_" + type);
@@ -276,31 +292,38 @@ public class ISClientRequester {
ServerConsole.error(LOG_PREFIX, "Getting the resource query.", e);
throw new Exception(e.getMessage());
}
- isQuery.setExpression(QueryLoader.getQuery(queryPath));
- isQuery.addParameters(new QueryParameter("RES_ID", id.trim()));
- ISQueryCacheKeyT cacheKey = new ISQueryCacheKeyT(queryScope.toString(),
- isQuery.getExpression(),
- "getResourceRelated");
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
- List results = null;
+ QueryTemplate isQuery = new QueryTemplate(QueryLoader.getQuery(queryPath));
+ DiscoveryClient client = client();
+
+ isQuery.addParameter("RES_ID", id.trim());
+
+
+
+ ISQueryCacheKeyT cacheKey = new ISQueryCacheKeyT(queryScope.toString(), isQuery.expression(), "getResourceRelated");
+
+ List resultz = null;
// Handle cache
if (status.isUsingCache() && CACHE.contains(cacheKey) && CACHE.get(cacheKey) != null) {
- results = CACHE.get(cacheKey);
+ resultz = CACHE.get(cacheKey);
} else {
- results = client.execute(isQuery, queryScope);
+ resultz = client.submit(isQuery);
if (status.isUsingCache()) {
- CACHE.insert(cacheKey, results);
+ CACHE.insert(cacheKey, resultz);
}
}
- if (results == null || results.size() == 0) {
+ if (resultz == null || resultz.size() == 0) {
return null;
}
// ENDOF Handle cache
- List retval = new Vector();
+ List retval = new ArrayList();
- for (XMLResult elem : results) {
+ for (String elem : resultz) {
// Removes the resources with no ID or empty
try {
String toAdd = elem.toString();
@@ -313,71 +336,83 @@ public class ISClientRequester {
ServerConsole.debug(LOG_PREFIX, "[getResourcesRelated] found and invalid resource");
}
}
- //ServerConsole.trace(LOG_PREFIX, "Retrieved (" + retval.size() + ") ServiceDetails for type: " + type);
+ ScopeProvider.instance.set(currScope);
+ ServerConsole.trace(LOG_PREFIX, "Retrieved (" + retval.size() + ") ServiceDetails for type: " + type);
return retval;
}
-
- public static final List getResourcesByType(
- final CacheManager status,
- final GCUBEScope queryScope,
- final String type,
- final String subType)
- throws Exception {
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
+ /**
+ *
+ * @param status
+ * @param queryScope
+ * @param type
+ * @param subType
+ * @return
+ * @throws Exception
+ */
+ public static final List getResourcesByType(final CacheManager status, final ScopeBean queryScope, final String type, final String subType) throws Exception {
QueryLocation queryPath = null;
+ QueryLocation returnPath = null;
try {
if (type.equals(ResourceTypeDecorator.WSResource.name())) {
queryPath = QueryLocation.GET_WSRES_DETAILS_BYSUBTYPE;
} else {
queryPath = QueryLocation.valueOf("LIST_" + type);
+ returnPath = QueryLocation.valueOf("RETURN_" + type);
+
}
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, "Getting the resource query.", e);
throw new Exception(e.getMessage());
}
- isQuery.setExpression(QueryLoader.getQuery(queryPath));
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
+
+ QueryTemplate isQuery = new QueryTemplate(QueryLoader.getQuery(queryPath));
+ DiscoveryClient client = client();
+
if (type.equals(ResourceTypeDecorator.WSResource.name())) {
if (subType != null && subType.length() > 0) {
- isQuery.addParameters(new QueryParameter("RES_SUBTYPE",
- subType.trim()));
+ isQuery.addParameter("RES_SUBTYPE", subType.trim());
}
} else {
if (subType != null && subType.length() > 0) {
if (subType.equalsIgnoreCase("User") || subType.equalsIgnoreCase("System")) {
- isQuery.addParameters(new QueryParameter("RES_SUBTYPE", " and $profiles/Profile/Body/CollectionInfo/user/text() = \"" + ((subType.trim().equals("User")) ? "true" : "false") + "\""));
+ isQuery.addParameter("RES_SUBTYPE", " and $profiles/Profile/Body/CollectionInfo/user/text() = \"" + ((subType.trim().equals("User")) ? "true" : "false") + "\"");
}
else
- isQuery.addParameters(new QueryParameter("RES_SUBTYPE", "where $subtype = \"" + subType.trim() + "\""));
+ isQuery.addParameter("RES_SUBTYPE", "where $subtype = \"" + subType.trim() + "\"");
}
}
+ //add the return statement
+ isQuery.addParameter("RESOURCE", QueryLoader.getQuery(returnPath));
- ISQueryCacheKeyT cacheKey = new ISQueryCacheKeyT(queryScope.toString(),
- isQuery.getExpression(),
- "getResourcesTypes");
+ ISQueryCacheKeyT cacheKey = new ISQueryCacheKeyT(queryScope.toString(), isQuery.expression(), "getResourcesTypes");
- List results = null;
+ List resultz = null;
if (status.isUsingCache() && CACHE.contains(cacheKey) && CACHE.get(cacheKey) != null) {
- results = CACHE.get(cacheKey);
+ resultz = CACHE.get(cacheKey);
} else {
- results = client.execute(isQuery, queryScope);
+ resultz = client.submit(isQuery);
if (status.isUsingCache()) {
- CACHE.insert(cacheKey, results);
+ CACHE.insert(cacheKey, resultz);
}
}
- if (results == null || results.size() == 0) {
+ if (resultz == null || resultz.size() == 0) {
return null;
}
List retval = new Vector();
- for (XMLResult elem : results) {
+ for (String elem : resultz) {
// Removes the resources with no ID or empty
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement();
+ XPathHelper helper = new XPathHelper(node);
try {
- if (elem.evaluate("//ID").get(0) != null && elem.evaluate("//ID").get(0).trim().length() > 0) {
+ if (helper.evaluate("//ID").get(0) != null && helper.evaluate("//ID").get(0).trim().length() > 0) {
retval.add(elem.toString());
//ServerConsole.debug("", elem.toString());// Print the result
} else {
@@ -389,45 +424,54 @@ public class ISClientRequester {
}
}
//ServerConsole.trace(LOG_PREFIX, "Retrieved (" + retval.size() + ") ServiceDetails for type: " + type);
+ ScopeProvider.instance.set(currScope);
return retval;
}
+ /**
+ * @param queryScope
+ * @param type
+ * @param subType
+ * @param additionalMaps
+ * @return
+ * @throws Exception
+ */
+ public static final List getResourceModels(final ScopeBean queryScope, final String type, final String subType, final List> additionalMaps) throws Exception {
+
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
+
+ QueryTemplate isQuery = null;
+ DiscoveryClient client = client();
- public static final List getResourceModels(
- final GCUBEScope queryScope,
- final String type,
- final String subType,
- final List> additionalMaps)
- throws Exception {
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
if (subType != null && subType.trim().length() > 0) {
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_RES_DETAILS_BYSUBTYPE));
- isQuery.addParameters(
- new QueryParameter("RES_TYPE", type)
- );
- isQuery.addParameters(
- new QueryParameter("RES_SUBTYPE", subType)
- );
+ isQuery = new QueryTemplate(QueryLoader.getQuery(QueryLocation.GET_RES_DETAILS_BYSUBTYPE));
+ isQuery.addParameter("RES_TYPE", type.trim());
+ isQuery.addParameter("RES_SUBTYPE", subType.trim());
+ //add the return statement
+ isQuery.addParameter("RESOURCE", QueryLoader.getQuery(QueryLocation.RETURN_GET_RES_DETAILS_BYSUBTYPE));
} else {
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_RES_DETAILS_BYTYPE));
- isQuery.addParameters(
- new QueryParameter("RES_TYPE", type)
- );
+ isQuery = new QueryTemplate(QueryLoader.getQuery(QueryLocation.GET_RES_DETAILS_BYTYPE));
+ isQuery.addParameter("RES_TYPE", type);
+ isQuery.addParameter("RESOURCE", QueryLoader.getQuery(QueryLocation.RETURN_GET_RES_DETAILS_BYTYPE));
}
- List results = client.execute(isQuery, queryScope);
+ List resultz = client.submit(isQuery);
List retval = new Vector();
ResourceDescriptor toAdd = null;
- for (XMLResult elem : results) {
+ for (String elem : resultz) {
// Removes the resources with no ID or empty
try {
- if (elem.evaluate("//ID").get(0) != null) {
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement();
+ XPathHelper helper = new XPathHelper(node);
+
+ if (helper.evaluate("//ID").get(0) != null) {
toAdd = new ResourceDescriptor(
- elem.evaluate("//Type/text()").get(0),
- elem.evaluate("//SubType/text()").get(0),
- elem.evaluate("//ID/text()").get(0),
- elem.evaluate("//Name/text()").get(0));
+ helper.evaluate("//Type/text()").get(0),
+ helper.evaluate("//SubType/text()").get(0),
+ helper.evaluate("//ID/text()").get(0),
+ helper.evaluate("//Name/text()").get(0));
// Additional mappings can be defined by the requester.
// e.g. new Tuple("description", "//Profile/Description/text()");
@@ -435,7 +479,7 @@ public class ISClientRequester {
for (Tuple map : additionalMaps) {
try {
toAdd.addProperty(map.get(0),
- elem.evaluate(map.get(1)).get(0));
+ helper.evaluate(map.get(1)).get(0));
} catch (final Exception e) {
toAdd.addProperty(map.get(0),
"");
@@ -450,55 +494,68 @@ public class ISClientRequester {
}
}
//ServerConsole.trace(LOG_PREFIX, "Retrieved (" + retval.size() + ") ServiceDetails for type: " + type);
+ ScopeProvider.instance.set(currScope);
return retval;
}
+ /**
+ *
+ * @param queryScope
+ * @return
+ * @throws Exception
+ */
+ public static final List getWSResources(final ScopeBean queryScope) throws Exception {
- public static final List getWSResources(
- final GCUBEScope queryScope)
- throws Exception {
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_WSRES_DETAILS_BYTYPE));
- List results = client.execute(isQuery, queryScope);
+ List resultz = null;
+
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
+
+ Query isQuery = new QueryBox(QueryLoader.getQuery(QueryLocation.GET_WSRES_DETAILS_BYTYPE));
+ DiscoveryClient client = client();
List retval = new Vector();
+ resultz = client.submit(isQuery);
- for (XMLResult elem : results) {
+ for (String elem : resultz) {
retval.add(elem.toString());
}
//ServerConsole.trace(LOG_PREFIX, "Retrieved (" + retval.size() + ") ServiceDetails for type: " + ResourceTypeDecorator.WSResource.name());
+ ScopeProvider.instance.set(currScope);
return retval;
}
+ /**
+ *
+ * @param xmlFilePath
+ * @param queryScope
+ * @param resType
+ * @param resID
+ * @return
+ * @throws Exception
+ */
+ public static final CompleteResourceProfile getResourceByID(String xmlFilePath, ScopeBean queryScope, String resType, String resID) throws Exception {
+
+ //set the scope
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(queryScope.toString());
+
+ QueryTemplate isQuery = null;
+ DiscoveryClient client = client();
+
- public static final CompleteResourceProfile getResourceByID(
- final String xmlFilePath,
- final GCUBEScope queryScope,
- final String resType,
- final String resID)
- throws Exception {
- ISClient client = GHNContext.getImplementation(ISClient.class);
- GCUBEGenericQuery isQuery = null;
- isQuery = client.getQuery(GCUBEGenericQuery.class);
if (resType == null) {
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_RESOURCE_BYID));
- isQuery.addParameters(
- new QueryParameter("RES_ID", resID)
- );
+ isQuery = new QueryTemplate(QueryLoader.getQuery(QueryLocation.GET_RESOURCE_BYID));
+ isQuery.addParameter("RES_ID", resID);
} else if (resType.equalsIgnoreCase(ResourceTypeDecorator.WSResource.name())) {
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_WSRESOURCE_BYID));
- isQuery.addParameters(
- new QueryParameter("RES_ID", resID)
- );
+ isQuery = new QueryTemplate(QueryLoader.getQuery(QueryLocation.GET_WSRESOURCE_BYID));
+ isQuery.addParameter("RES_ID", resID);
} else {
- isQuery.setExpression(QueryLoader.getQuery(QueryLocation.GET_RESOURCE_BYID));
- isQuery.addParameters(
- new QueryParameter("RES_ID", resID),
- new QueryParameter("RES_TYPE", resType)
- );
+ isQuery = new QueryTemplate(QueryLoader.getQuery(QueryLocation.GET_RESOURCE_BYID));
+ isQuery.addParameter("RES_ID", resID);
+ isQuery.addParameter("RES_TYPE", resType);
}
- List results = client.execute(isQuery, queryScope);
+ List results = client.submit(isQuery);
//ServerConsole.trace(LOG_PREFIX, "Retrieved (" + retval.size() + ") Resource for ID: " + resID);
@@ -507,7 +564,10 @@ public class ISClientRequester {
String type = null;
if (resType == null) {
try {
- type = results.get(0).evaluate("/Resource/Type/text()").get(0);
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Node node = docBuilder.parse(new InputSource(new StringReader(results.get(0)))).getDocumentElement();
+ XPathHelper helper = new XPathHelper(node);
+ type = helper.evaluate("/Resource/Type/text()").get(0);
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
}
@@ -516,8 +576,10 @@ public class ISClientRequester {
}
String xmlRepresentation = results.get(0).toString();
String htmlRepresentation = XML2HTML(xmlRepresentation, xmlFilePath);
+ ScopeProvider.instance.set(currScope);
return new CompleteResourceProfile(resID, ResourceTypeDecorator.valueOf(type), getResourceName(type, resID, results.get(0)), xmlRepresentation, htmlRepresentation);
}
+ ScopeProvider.instance.set(currScope);
return null;
}
@@ -656,7 +718,7 @@ public class ISClientRequester {
NodeList params = doc.getElementsByTagName("param");
ArrayList formFields = new ArrayList();
-
+
for (int i = 0; i < params.getLength(); i++) {
NodeList paramTree = params.item(i).getChildNodes();
@@ -683,14 +745,14 @@ public class ISClientRequester {
formFields = getPluginFormFromXml(xmlToParse);
}
}
-// if (params.getLength()>1)
+ // if (params.getLength()>1)
retval.put(name + ":" + requestName, formFields);
-
+
}
if (foundRequest == false){
- retval.put(name, formFields);
+ retval.put(name, formFields);
}
-
+
}
} catch (RuntimeException e) {
continue gonext;
@@ -762,69 +824,80 @@ public class ISClientRequester {
* @param ID the identifier of the resource
* @param node the XML node from which retrieve the information
* @return
+ * @throws IOException
+ * @throws SAXException
*/
- private static String getResourceName(String type, String ID, XMLResult node) {
+ private static String getResourceName(String type, String ID, String node) throws Exception {
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Node xnode = docBuilder.parse(new InputSource(new StringReader(node))).getDocumentElement();
+ XPathHelper helper = new XPathHelper(xnode);
+
if (type.equalsIgnoreCase(ResourceTypeDecorator.GHN.name())) {
try {
- return node.evaluate("/Resource/Profile/GHNDescription/Name/text()").get(0);
+ return helper.evaluate("/Resource/Profile/GHNDescription/Name/text()").get(0);
} catch (Exception e) {
return ID;
}
}
if (type.equalsIgnoreCase(ResourceTypeDecorator.Collection.name())) {
try {
- return node.evaluate("/Resource/Profile/Name/text()").get(0);
+ return helper.evaluate("/Resource/Profile/Name/text()").get(0);
} catch (Exception e) {
return ID;
}
}
if (type.equalsIgnoreCase(ResourceTypeDecorator.Service.name())) {
try {
- return node.evaluate("/Resource/Profile/Name/text()").get(0);
+ return helper.evaluate("/Resource/Profile/Name/text()").get(0);
} catch (Exception e) {
return ID;
}
}
if (type.equalsIgnoreCase(ResourceTypeDecorator.RunningInstance.name())) {
try {
- return node.evaluate("/Resource/Profile/ServiceName/text()").get(0);
+ return helper.evaluate("/Resource/Profile/ServiceName/text()").get(0);
} catch (Exception e) {
return ID;
}
}
if (type.equalsIgnoreCase(ResourceTypeDecorator.VIEW.name())) {
try {
- return node.evaluate("/Resource/Profile/Name/text()").get(0);
+ return helper.evaluate("/Resource/Profile/Name/text()").get(0);
} catch (Exception e) {
return ID;
}
}
if (type.equalsIgnoreCase(ResourceTypeDecorator.RuntimeResource.name())) {
try {
- return node.evaluate("/Resource/Profile/Name/text()").get(0);
+ return helper.evaluate("/Resource/Profile/Name/text()").get(0);
} catch (Exception e) {
return ID;
}
}
if (type.equalsIgnoreCase(ResourceTypeDecorator.GenericResource.name())) {
try {
- return node.evaluate("/Resource/Profile/Name/text()").get(0);
+ return helper.evaluate("/Resource/Profile/Name/text()").get(0);
} catch (Exception e) {
return ID;
}
}
if (type.equalsIgnoreCase(ResourceTypeDecorator.WSResource.name())) {
try {
- return node.evaluate("/Document/Data/child::*[local-name()='ServiceName']/text()").get(0);
+ return helper.evaluate("/Document/Data/child::*[local-name()='ServiceName']/text()").get(0);
} catch (Exception e) {
return ID;
}
}
return null;
}
-
- public static String XML2HTML(final String xml, final String xslt)
- throws Exception {
+ /**
+ * transform an xml in a readable xml by using HTML
+ * @param xml
+ * @param xslt
+ * @return
+ * @throws Exception
+ */
+ public static String XML2HTML(final String xml, final String xslt) throws Exception {
TransformerFactory tf = TransformerFactory.newInstance();
InputStream stream = new FileInputStream(xslt);
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISQueryCache.java b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISQueryCache.java
index 2227abc..3b087a5 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISQueryCache.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/ISQueryCache.java
@@ -67,9 +67,9 @@ class ISQueryCacheKeyT {
*
*/
public class ISQueryCache {
- Map> results = new HashMap>();
+ Map> results = new HashMap>();
- public void insert(ISQueryCacheKeyT key, List elem) {
+ public void insert(ISQueryCacheKeyT key, List elem) {
this.results.put(key, elem);
}
@@ -80,7 +80,7 @@ public class ISQueryCache {
return this.results.containsKey(key);
}
- public List get(ISQueryCacheKeyT key) {
+ public List get(ISQueryCacheKeyT key) {
if (key != null && this.results.containsKey(key)) {
return this.results.get(key);
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/QueryLocation.java b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/QueryLocation.java
index b9c95db..31b54e4 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/QueryLocation.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/QueryLocation.java
@@ -33,12 +33,18 @@ public enum QueryLocation {
// Customized queries to retrieve the relevant data from resources
// according to their type
LIST_GHN("resources/GHN.xq"),
+ RETURN_GHN("resources/RETURN_GHN.xq"),
LIST_Collection("resources/Collection.xq"),
+ RETURN_Collection("resources/RETURN_Collection.xq"),
LIST_VIEW("resources/VIEW.xq"),
LIST_Service("resources/Service.xq"),
+ RETURN_Service("resources/RETURN_Service.xq"),
LIST_GenericResource("resources/GenericResource.xq"),
+ RETURN_GenericResource("resources/RETURN_GenericResource.xq"),
LIST_RunningInstance("resources/RunningInstance.xq"),
+ RETURN_RunningInstance("resources/RETURN_RunningInstance.xq"),
LIST_RuntimeResource("resources/RuntimeResource.xq"),
+ RETURN_RuntimeResource("resources/RETURN_RuntimeResource.xq"),
// To retrieve the list of generic resources publishing plugins
// to deploy activation records
@@ -60,7 +66,9 @@ public enum QueryLocation {
// Used to build the gwt model representation inside dialogs.
// see getResourceModels inside ISClientRequester.
GET_RES_DETAILS_BYTYPE("getResourcesDetails.xq"),
+ RETURN_GET_RES_DETAILS_BYTYPE("RETURN_getResourcesDetails.xq"),
GET_RES_DETAILS_BYSUBTYPE("getResourcesDetailsSubtype.xq"),
+ RETURN_GET_RES_DETAILS_BYSUBTYPE("RETURN_getResourcesDetailsSubtype.xq"),
GET_RESOURCE_BYID("getResourceByID.xq"),
GET_WSRES_TYPES("getWSResourcesTypes.xq"),
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/RETURN_getResourcesDetails.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/RETURN_getResourcesDetails.xq
new file mode 100644
index 0000000..56da18a
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/RETURN_getResourcesDetails.xq
@@ -0,0 +1,8 @@
+
+ {$profiles//Resource/child::*}
+ {$subtype}
+ {$gcf-version}
+ {$ghn-version}
+ {$scopes}
+ {$ghn-name}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/RETURN_getResourcesDetailsSubtype.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/RETURN_getResourcesDetailsSubtype.xq
new file mode 100644
index 0000000..56da18a
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/RETURN_getResourcesDetailsSubtype.xq
@@ -0,0 +1,8 @@
+
+ {$profiles//Resource/child::*}
+ {$subtype}
+ {$gcf-version}
+ {$ghn-version}
+ {$scopes}
+ {$ghn-name}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourceByID.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourceByID.xq
index ed81f47..316ff83 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourceByID.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourceByID.xq
@@ -1,8 +1,3 @@
-#
-# Params: RES_ID the ID of looked up resource
-# RES_TYPE (option) the type of searched resource
-
-
-for $resource in collection('/db/Profiles/')//Resource
+for $resource in collection('/db/Profiles/')//Resource
where $resource/ID/string() eq ''
return $resource
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetails.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetails.xq
index f6f9bbf..b732bc4 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetails.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetails.xq
@@ -4,7 +4,7 @@
# RES_TYPE the main type of the resource
# This query is used by forms
-for $profiles in collection('/db/Profiles/')//Resource
+for $profiles in collection('/db/Profiles/')//Resource
let $ghn-name := $profiles//Resource/Profile/GHN/@UniqueID/string()
let $gcf-version := $profiles//Resource/Profile/GHNDescription/RunTimeEnv/Variable[Key/text() = 'gCF-version']/Value/text()
let $ghn-version := $profiles//Resource/Profile/GHNDescription/RunTimeEnv/Variable[Key/text() = 'GHN-distribution-version']/Value/text()
@@ -26,11 +26,4 @@ let $subtype :=
then "System"
else ""
return
-
- {$profiles//Resource/child::*}
- {$subtype}
- {$gcf-version}
- {$ghn-version}
- {$scopes}
- {$ghn-name}
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetailsSubtype.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetailsSubtype.xq
index 11451f0..3ce789f 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetailsSubtype.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getResourcesDetailsSubtype.xq
@@ -4,7 +4,7 @@
# RES_TYPE the main type of the resource
# This query is used by forms
-for $profiles in collection('/db/Profiles/')//Resource
+for $profiles in collection('/db/Profiles/')//Resource
let $ghn-name := $profiles//Resource/Profile/GHN/@UniqueID/string()
let $gcf-version := $profiles//Resource/Profile/GHNDescription/RunTimeEnv/Variable[Key/text() = 'gCF-version']/Value/text()
let $ghn-version := $profiles//Resource/Profile/GHNDescription/RunTimeEnv/Variable[Key/text() = 'GHN-distribution-version']/Value/text()
@@ -27,11 +27,4 @@ let $subtype :=
else ""
where $subtype eq ''
return
-
- {$profiles//Resource/child::*}
- {$subtype}
- {$gcf-version}
- {$ghn-version}
- {$scopes}
- {$ghn-name}
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getSubTypes.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getSubTypes.xq
index af546be..640f883 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getSubTypes.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/getSubTypes.xq
@@ -24,4 +24,4 @@ let $subtypes :=
-->
for $subtype in distinct-values($subtypes)
return
- {$subtype}
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Collection.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Collection.xq
index d173bd4..2b8c939 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Collection.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Collection.xq
@@ -1,23 +1,8 @@
-
-
for $profiles in collection('/db/Profiles/GenericResource')//Resource, $wsresource in collection('/db/Properties')//Document
let $scopes := string-join( $profiles/Scopes//Scope/text(), ';')
let $subtype := $profiles//Resource/Profile/SecondaryType/text()
where $subtype = "DataSource" and $profiles//Resource/ID eq $wsresource/SourceKey and $wsresource/Data//child::*[local-name()='ServiceName']/string() eq 'tree-manager-service'
return
-
- {$profiles//Resource/ID}
- {$profiles//Resource/Type/text()}
- {$subtype}
- {$scopes}
- {$profiles//Resource/Profile/Name/text()}
- {$profiles//Resource/Profile/Body/SourceProperties/creationTime/text()}
- {$profiles//Resource/Profile/Body/SourceProperties/user/text()}
- {$wsresource/LastUpdateHuman/text()}
- {$wsresource//child::*[local-name()='Cardinality']/text()}
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GHN.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GHN.xq
index 675a2d8..6122539 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GHN.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GHN.xq
@@ -1,8 +1,3 @@
-
-
-
for $profiles in collection('/db/Profiles/GHN')//Resource
let $gcf-version := $profiles//Resource/Profile/GHNDescription/RunTimeEnv/Variable[Key/text() = 'gCF-version']/Value/text()
let $ghn-version := $profiles//Resource/Profile/GHNDescription/RunTimeEnv/Variable[Key/text() = 'GHN-distribution-version']/Value/text()
@@ -10,21 +5,4 @@ let $scopes := string-join( $profiles/Scopes//Scope/text(), ';')
let $subtype := $profiles//Resource/Profile/Site/Domain/text()
return
-
- {$profiles//Resource/ID}
- {$profiles//Resource/Type/text()}
- {$subtype}
- {$profiles//Resource/Profile/GHNDescription/Status/text()}
- {$profiles//Resource/Profile/GHNDescription/Name/text()}
- {$profiles//Resource/Profile/GHNDescription/Uptime/text()}
- {$profiles//Resource/Profile/GHNDescription/LastUpdate/text()}
- {$profiles//Resource/Profile/GHNDescription/LocalAvailableSpace/text()}
- {$profiles//Resource/Profile/GHNDescription/MainMemory/string(@VirtualSize)}
- {$profiles//Resource/Profile/GHNDescription/MainMemory/string(@VirtualAvailable)}
- {$profiles//Resource/Profile/GHNDescription/Load/string(@Last1Min)}
- {$profiles//Resource/Profile/GHNDescription/Load/string(@Last5Min)}
- {$profiles//Resource/Profile/GHNDescription/Load/string(@Last15Min)}
- {$gcf-version}
- {$ghn-version}
- {$scopes}
-
\ No newline at end of file
+
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GenericResource.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GenericResource.xq
index 8b5945d..02a3ebb 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GenericResource.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/GenericResource.xq
@@ -1,16 +1,6 @@
-
-
-
for $profiles in collection('/db/Profiles/GenericResource')//Resource
let $scopes := string-join( $profiles/Scopes//Scope/text(), ';')
let $subtype := $profiles//Resource/Profile/SecondaryType/text()
return
-
- {$profiles//Resource/ID}
- {$profiles//Resource/Type/text()}
- {$subtype}
- {$scopes}
- {$profiles//Resource/Profile/Name/text()}
- {$profiles//Resource/Profile/Description/text()}
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_Collection.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_Collection.xq
new file mode 100644
index 0000000..7342462
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_Collection.xq
@@ -0,0 +1,11 @@
+
+ {$profiles//Resource/ID}
+ {$profiles//Resource/Type/text()}
+ {$subtype}
+ {$scopes}
+ {$profiles//Resource/Profile/Name/text()}
+ {$profiles//Resource/Profile/Body/SourceProperties/creationTime/text()}
+ {$profiles//Resource/Profile/Body/SourceProperties/user/text()}
+ {$wsresource/LastUpdateHuman/text()}
+ {$wsresource//child::*[local-name()='Cardinality']/text()}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_GHN.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_GHN.xq
new file mode 100644
index 0000000..b86ec60
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_GHN.xq
@@ -0,0 +1,18 @@
+
+ {$profiles//Resource/ID}
+ {$profiles//Resource/Type/text()}
+ {$subtype}
+ {$profiles//Resource/Profile/GHNDescription/Status/text()}
+ {$profiles//Resource/Profile/GHNDescription/Name/text()}
+ {$profiles//Resource/Profile/GHNDescription/Uptime/text()}
+ {$profiles//Resource/Profile/GHNDescription/LastUpdate/text()}
+ {$profiles//Resource/Profile/GHNDescription/LocalAvailableSpace/text()}
+ {$profiles//Resource/Profile/GHNDescription/MainMemory/string(@VirtualSize)}
+ {$profiles//Resource/Profile/GHNDescription/MainMemory/string(@VirtualAvailable)}
+ {$profiles//Resource/Profile/GHNDescription/Load/string(@Last1Min)}
+ {$profiles//Resource/Profile/GHNDescription/Load/string(@Last5Min)}
+ {$profiles//Resource/Profile/GHNDescription/Load/string(@Last15Min)}
+ {$gcf-version}
+ {$ghn-version}
+ {$scopes}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_GenericResource.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_GenericResource.xq
new file mode 100644
index 0000000..e7862a4
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_GenericResource.xq
@@ -0,0 +1,8 @@
+
+ {$profiles//Resource/ID}
+ {$profiles//Resource/Type/text()}
+ {$subtype}
+ {$scopes}
+ {$profiles//Resource/Profile/Name/text()}
+ {$profiles//Resource/Profile/Description/text()}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_RunningInstance.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_RunningInstance.xq
new file mode 100644
index 0000000..705214b
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_RunningInstance.xq
@@ -0,0 +1,11 @@
+
+ {$profiles/ID}
+ {$profiles/Type/text()}
+ {$subtype}
+ {$scopes}
+ {$profiles/Profile/ServiceClass/text()}
+ {$profiles/Profile/ServiceName/text()}
+ {$profiles/Profile/Version/text()}
+ {$profiles/Profile/DeploymentData/Status/text()}
+ {$ghn-name}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_RuntimeResource.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_RuntimeResource.xq
new file mode 100644
index 0000000..4eb9e97
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_RuntimeResource.xq
@@ -0,0 +1,7 @@
+
+ {$profiles//Resource/ID}
+ {$profiles//Resource/Type/text()}
+ {$subtype}
+ {$scopes}
+ {$profiles//Resource/Profile/Name/text()}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_Service.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_Service.xq
new file mode 100644
index 0000000..42f770f
--- /dev/null
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RETURN_Service.xq
@@ -0,0 +1,10 @@
+
+ {$profiles//Resource/ID}
+ {$profiles//Resource/Type/text()}
+ {$subtype}
+ {$scopes}
+ {$profiles//Resource/Profile/Class/text()}
+ {$profiles//Resource/Profile/Name/text()}
+ {$profiles//Resource/Profile/Packages/Software[1]/Version/text()}
+ {$profiles//Resource/Profile/Packages/Software/Shareable/string(@level)}
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RunningInstance.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RunningInstance.xq
index ac8dd3a..0fbceb3 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RunningInstance.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RunningInstance.xq
@@ -1,9 +1,4 @@
-
-
for $profiles in collection('/db/Profiles/RunningInstance')//Resource
-
let $ghns := collection('/db/Profiles/GHN')//Resource
let $_ghn-name := for $ghn in $ghns
where $ghn/ID/string() eq $profiles/Profile/GHN/@UniqueID/string()
@@ -13,14 +8,4 @@ let $scopes := string-join( $profiles/Scopes//Scope/text(), ';')
let $subtype := $profiles/Profile/ServiceClass/text()
return
-
- {$profiles/ID}
- {$profiles/Type/text()}
- {$subtype}
- {$scopes}
- {$profiles/Profile/ServiceClass/text()}
- {$profiles/Profile/ServiceName/text()}
- {$profiles/Profile/Version/text()}
- {$profiles/Profile/DeploymentData/Status/text()}
- {$ghn-name}
-
\ No newline at end of file
+
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RuntimeResource.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RuntimeResource.xq
index 7e36fe7..8dba6fc 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RuntimeResource.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/RuntimeResource.xq
@@ -3,10 +3,5 @@ let $scopes := string-join( $profiles/Scopes//Scope/text(), ';')
let $subtype := $profiles//Resource/Profile/Category/text()
return
-
- {$profiles//Resource/ID}
- {$profiles//Resource/Type/text()}
- {$subtype}
- {$scopes}
- {$profiles//Resource/Profile/Name/text()}
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Service.xq b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Service.xq
index 215ea0d..e08ff29 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Service.xq
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/xquery/resources/Service.xq
@@ -1,18 +1,6 @@
-
-
for $profiles in collection('/db/Profiles/Service')//Resource
let $scopes := string-join( $profiles/Scopes//Scope/text(), ';')
let $subtype := $profiles//Resource/Profile/Class/text()
return
-
- {$profiles//Resource/ID}
- {$profiles//Resource/Type/text()}
- {$subtype}
- {$scopes}
- {$profiles//Resource/Profile/Class/text()}
- {$profiles//Resource/Profile/Name/text()}
-
- {$profiles//Resource/Profile/Packages/Software[1]/Version/text()}
- {$profiles//Resource/Profile/Packages/Software/Shareable/string(@level)}
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/AbstractResourceManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/AbstractResourceManager.java
index 0e41d26..a93c173 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/AbstractResourceManager.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/AbstractResourceManager.java
@@ -16,24 +16,20 @@
package org.gcube.resourcemanagement.support.server.managers.resources;
+import static org.gcube.resources.discovery.icclient.ICFactory.client;
+
import java.util.ArrayList;
import java.util.List;
-import java.util.Random;
import java.util.Vector;
-import org.apache.axis.message.addressing.EndpointReferenceType;
-import org.gcube.common.core.contexts.GCUBERemotePortTypeContext;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.informationsystem.client.AtomicCondition;
-import org.gcube.common.core.informationsystem.client.ISClient;
-import org.gcube.common.core.informationsystem.client.XMLResult;
-import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericQuery;
-import org.gcube.common.core.informationsystem.client.queries.GCUBERIQuery;
-import org.gcube.common.core.informationsystem.publisher.ISPublisher;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.resources.GCUBERunningInstance;
-import org.gcube.common.core.scope.GCUBEScope;
-import org.gcube.common.core.scope.GCUBEScope.Type;
+
import org.gcube.common.core.security.GCUBESecurityManagerImpl;
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.common.resources.gcore.ScopeGroup;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
+import org.gcube.common.scope.impl.ScopeBean.Type;
+import org.gcube.informationsystem.publisher.RegistryPublisher;
+import org.gcube.informationsystem.publisher.RegistryPublisherFactory;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceOperationException;
@@ -41,20 +37,19 @@ import org.gcube.resourcemanagement.support.server.exceptions.ResourceParameterE
import org.gcube.resourcemanagement.support.server.managers.report.ReportBuilder;
import org.gcube.resourcemanagement.support.server.managers.report.ReportEntry;
import org.gcube.resourcemanagement.support.server.managers.report.ReportOperation;
-import org.gcube.resourcemanagement.support.server.managers.scope.ScopeManager;
import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes;
import org.gcube.resourcemanagement.support.server.utils.Assertion;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
-
-import org.gcube.vremanagement.resourcemanager.stubs.binder.AddResourcesParameters;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.RemoveResourcesParameters;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceItem;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceList;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.service.ResourceBinderServiceAddressingLocator;
-import org.gcube.vremanagement.resourcemanager.stubs.reporting.ReportingPortType;
-import org.gcube.vremanagement.resourcemanager.stubs.reporting.service.ReportingServiceAddressingLocator;
-
+import org.gcube.resources.discovery.client.api.DiscoveryClient;
+import org.gcube.resources.discovery.client.queries.api.Query;
+import org.gcube.resources.discovery.client.queries.impl.QueryBox;
+import org.gcube.vremanagement.resourcemanager.client.RMBinderLibrary;
+import org.gcube.vremanagement.resourcemanager.client.RMReportingLibrary;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.AddResourcesParameters;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.RemoveResourcesParameters;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.ResourceItem;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.ResourceList;
+import org.gcube.vremanagement.resourcemanager.client.proxies.Proxies;
/**
* The minimal interface all the resource managers must implement.
@@ -68,16 +63,15 @@ public abstract class AbstractResourceManager {
private String name = null;
private AllowedResourceTypes type = null;
private String subType = null;
- private ISClient client = null;
private GCUBESecurityManagerImpl managerSec = null;
- private ISPublisher publisher = null;
+ private RegistryPublisher publisher = null;
private static final String LOG_PREFIX = "[AbstractResMgr]";
/**
* @deprecated discouraged use. With no ID some operations cannot be accessed. For internal use only.
*/
public AbstractResourceManager(final AllowedResourceTypes type)
- throws ResourceParameterException, ResourceAccessException {
+ throws ResourceParameterException, ResourceAccessException {
Assertion checker = new Assertion();
checker.validate(type != null, new ResourceParameterException("Invalid Parameter type"));
@@ -93,13 +87,7 @@ public abstract class AbstractResourceManager {
};
try {
- client = GHNContext.getImplementation(ISClient.class);
- } catch (Exception e) {
- throw new ResourceAccessException("Cannot instantiate the ISClient");
- }
-
- try {
- this.publisher = GHNContext.getImplementation(ISPublisher.class);
+ this.publisher = RegistryPublisherFactory.create();
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
}
@@ -114,10 +102,7 @@ public abstract class AbstractResourceManager {
* @throws ResourceParameterException
* @throws ResourceAccessException
*/
- public AbstractResourceManager(
- final String id,
- final AllowedResourceTypes type)
- throws ResourceParameterException, ResourceAccessException {
+ public AbstractResourceManager(String id, AllowedResourceTypes type) throws ResourceParameterException, ResourceAccessException {
this(type);
Assertion checker = new Assertion();
@@ -126,45 +111,27 @@ public abstract class AbstractResourceManager {
this.id = id.trim();
}
- public AbstractResourceManager(
- final String id,
- final String name,
- final AllowedResourceTypes type) throws ResourceParameterException, ResourceAccessException {
+ public AbstractResourceManager(String id, String name, AllowedResourceTypes type) throws ResourceParameterException, ResourceAccessException {
this(id, type);
Assertion checker = new Assertion();
checker.validate(name != null && name.trim().length() > 0, new ResourceParameterException("Invalid Parameter name"));
this.name = name;
}
- public AbstractResourceManager(
- final String id,
- final String name,
- final AllowedResourceTypes type,
- final String subtype)
- throws ResourceParameterException, ResourceAccessException {
+ public AbstractResourceManager(String id, String name, AllowedResourceTypes type, String subtype) throws ResourceParameterException, ResourceAccessException {
this(id, name, type);
if (subtype != null) {
this.subType = subtype.trim();
}
}
- /**
- * The singleton ISClient instance is preferred.
- * All resource managers can internally access this instance
- * to make queries to the IS.
- * @return
- */
- protected final ISClient getISClient() {
- return this.client;
- }
-
/**
* The singleton ISPublisher instance is preferred.
* All resource managers can internally access this instance
* to interact with ISPublisher to handle resources.
* @return
*/
- public final ISPublisher getISPublisher() {
+ public final RegistryPublisher getRegistryPublisher() {
return publisher;
}
@@ -226,134 +193,6 @@ public abstract class AbstractResourceManager {
return this.subType;
}
- /**
- * Internally used by {@link AbstractResourceManager#getResourceManager(GCUBEScope)}.
- * @param scope
- * @return a raw list of resource manager descriptors.
- * @throws Exception
- */
- private List getResourceManagerFromScope(final GCUBEScope scope) throws Exception {
- System.out.println("Looking for ResourceManager in scope: " + scope);
- GCUBERIQuery query = this.client.getQuery(GCUBERIQuery.class);
- query.addAtomicConditions(new AtomicCondition("//Profile/ServiceClass", "VREManagement"));
- query.addAtomicConditions(new AtomicCondition("//Profile/ServiceName", "ResourceManager"));
-
- List result = client.execute(query, scope);
- List toReturn = new ArrayList();
- for (GCUBERunningInstance ri : result) {
- if (ri.getScopes().containsValue(scope)) {
- toReturn.add(ri);
- }
- }
- System.out.println("Found " + toReturn.size() +" ResourceManager in scope: " + scope);
- return toReturn;
- }
-
- /**
- * The the list of resource managers able to handle the resource in a given scope.
- * @param scope the scope in which to operate
- * @return all the available managers
- * @throws ResourceAccessException if no manager can be instantiated
- * @throws ResourceParameterException if the parameters are invalid
- */
- public final List getResourceManagers(final GCUBEScope scope) throws ResourceAccessException, ResourceParameterException {
- Assertion checker = new Assertion();
- checker.validate(scope != null, new ResourceParameterException("Invalid scope"));
-
-
- List resourceManagerList = null;
- try {
- resourceManagerList = this.getResourceManagerFromScope(scope);
- } catch (Exception e) {
- e.printStackTrace();
- throw new ResourceAccessException("Cannot retrieve the managers for resource: " + this.getID());
- }
- List retval = new Vector();
-
- if (resourceManagerList.isEmpty()) {
- System.out.println("\n\n\n\n\n****** Schianta qui size: " + resourceManagerList.size() + " scope: " + scope);
- throw new ResourceAccessException("Unable to find ResourceManagers for resource " + this.getType() + " in scope: " + scope.toString());
- }
-
- EndpointReferenceType endpoint = null;
- ResourceBinderPortType pt = null;
-
- for (GCUBERunningInstance resourceManager : resourceManagerList) {
- try {
- endpoint = resourceManager.getAccessPoint().getEndpoint("gcube/vremanagement/resourcemanager/binder");
-
- pt = GCUBERemotePortTypeContext.getProxy(
- new ResourceBinderServiceAddressingLocator()
- .getResourceBinderPortTypePort(endpoint),
- scope,
- this.managerSec);
- if (pt != null) {
- retval.add(pt);
- }
- } catch (Throwable e) {
- // trying on next entry
- ServerConsole.error(LOG_PREFIX, e);
- }
- }
- if (retval != null && retval.size() > 0) {
- // Return a random manager from the available ones
- return retval;
- }
- // no managers found
- throw new ResourceAccessException("Unable to find ResourceManagers for resource " + this.getID() + "in scope: " + scope.toString());
- }
-
- /**
- * The the list of resource report managers able to handle the resource in a given scope.
- * @param scope the scope in which to operate
- * @return all the available managers
- * @throws ResourceAccessException if no manager can be instantiated
- * @throws ResourceParameterException if the parameters are invalid
- */
- public final List getResourceReportManagers(final GCUBEScope scope) throws ResourceAccessException, ResourceParameterException {
- Assertion checker = new Assertion();
- checker.validate(scope != null, new ResourceParameterException("Invalid scope"));
-
- List resourceManagerList = null;
- try {
- resourceManagerList = this.getResourceManagerFromScope(scope);
- } catch (Exception e) {
- e.printStackTrace();
- throw new ResourceAccessException("Cannot retrieve the managers for resource: " + this.getID());
- }
- List retval = new Vector();
-
- if (resourceManagerList.isEmpty()) {
- throw new ResourceAccessException("Unable to find ResourceManagers for resource " + this.getType() + " in scope: " + scope.toString());
- }
-
- EndpointReferenceType endpoint = null;
- ReportingPortType pt = null;
-
- for (GCUBERunningInstance resourceManager : resourceManagerList) {
- try {
- endpoint = resourceManager.getAccessPoint().getEndpoint("gcube/vremanagement/resourcemanager/reporting");
-
- pt = GCUBERemotePortTypeContext.getProxy(
- new ReportingServiceAddressingLocator().getReportingPortTypePort(endpoint),
- scope,
- this.managerSec);
- if (pt != null) {
- retval.add(pt);
- }
- } catch (Throwable e) {
- // trying on next entry
- ServerConsole.error(LOG_PREFIX, e);
- }
- }
- if (retval != null && retval.size() > 0) {
- // Return a random report manager from the available ones
- return retval;
- }
- // no managers found
- throw new ResourceAccessException("Unable to find ReportResourceManagers for resource " + this.getID() + "in scope: " + scope.toString());
- }
-
/**
* The resource manager needed to handle the resource in a given scope.
* @param scope the scope in which to operate
@@ -361,21 +200,22 @@ public abstract class AbstractResourceManager {
* @throws ResourceAccessException if no manager can be instantiated
* @throws ResourceParameterException if the parameters are invalid
*/
- public final ResourceBinderPortType getResourceManager(final GCUBEScope scope)
- throws AbstractResourceException {
- ServerConsole.info(LOG_PREFIX, "Getting Resource Manager in scope [" + scope.toString() + "]");
-
- List retval = this.getResourceManagers(scope);
- if (retval != null && retval.size() > 0) {
- Random generator = new Random();
- // Return a random manager from the available ones
- ResourceBinderPortType manager = retval.get(generator.nextInt(retval.size()));
- return manager;
+ public final RMBinderLibrary getResourceManager(String scope) throws AbstractResourceException {
+ String currScope = ScopeProvider.instance.get();
+ ScopeBean bscope = new ScopeBean(scope);
+ if (bscope.is(Type.VRE)) {
+ scope = bscope.enclosingScope().toString();
}
- // no managers found
- throw new ResourceAccessException("Unable to find ResourceManagers for resource " + this.getType() + " in scope: " + scope.toString());
+ ScopeProvider.instance.set(scope);
+ ServerConsole.info(LOG_PREFIX, "Getting Resource Manager in scope [" + scope.toString() + "]");
+ RMBinderLibrary rml = Proxies.binderService().build();
+ if (rml == null) { // no managers found
+ throw new ResourceAccessException("Unable to find ResourceManagers for resource " + this.getType() + " in scope: " + scope.toString());
+ }
+ ScopeProvider.instance.set(currScope);
+ return rml;
}
-
+
/**
* The report resource manager needed to handle the resource in a given scope.
* @param scope the scope in which to operate
@@ -383,19 +223,21 @@ public abstract class AbstractResourceManager {
* @throws ResourceAccessException if no manager can be instantiated
* @throws ResourceParameterException if the parameters are invalid
*/
- public final ReportingPortType getReportResourceManager(final GCUBEScope scope)
- throws AbstractResourceException {
- ServerConsole.info(LOG_PREFIX, "Getting Resource Manager in scope [" + scope.toString() + "]");
-
- List retval = this.getResourceReportManagers(scope);
- if (retval != null && retval.size() > 0) {
- Random generator = new Random();
- // Return a random manager from the available ones
- ReportingPortType manager = retval.get(generator.nextInt(retval.size()));
- return manager;
+ public final RMReportingLibrary getReportResourceManager(String scope) throws AbstractResourceException {
+ String currScope = ScopeProvider.instance.get();
+ ScopeBean bscope = new ScopeBean(scope);
+ if (bscope.is(Type.VRE)) {
+ scope = bscope.enclosingScope().toString();
}
- // no managers found
- throw new ResourceAccessException("Unable to find ResourceManagers for resource " + this.getType() + " in scope: " + scope.toString());
+ ScopeProvider.instance.set(scope);
+
+ ServerConsole.info(LOG_PREFIX, "Getting Resource Manager in scope [" + scope.toString() + "]");
+ RMReportingLibrary rml = Proxies.reportingService().build();
+ if (rml == null) { // no managers found
+ throw new ResourceAccessException("Unable to find ResourceManagers for resource " + this.getType() + " in scope: " + scope.toString());
+ }
+ ScopeProvider.instance.set(currScope);
+ return rml;
}
/**
@@ -408,7 +250,7 @@ public abstract class AbstractResourceManager {
* @return
* @throws ResourceOperationException
*/
- private String bindToScope(final GCUBEScope targetScope) throws AbstractResourceException {
+ private String bindToScope(final String targetScope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(targetScope != null, new ResourceParameterException("Invalid parameter targetScope. null not allowed."));
checker.validate(this.getID() != null, new ResourceOperationException("Invalid resource ID. null not allowed."));
@@ -416,37 +258,47 @@ public abstract class AbstractResourceManager {
ServerConsole.trace(
LOG_PREFIX,
"[BIND-SCOPE-ENTER] Adding " + this.getType() + " " + this.getID() + " to scope [" +
- targetScope.toString() + "]");
+ targetScope.toString() + "]");
AddResourcesParameters addParam = new AddResourcesParameters();
ResourceItem toAdd = new ResourceItem();
- toAdd.setID(this.getID());
+ toAdd.setId(this.getID());
toAdd.setType(this.getType().name());
ResourceList r = new ResourceList();
-
-
- r.setResource(new ResourceItem[]{toAdd});
+
+ ArrayList temp = new ArrayList();
+ temp.add(toAdd);
+ r.setResource(temp);
addParam.setResources(r);
addParam.setTargetScope(targetScope.toString());
- ResourceBinderPortType manager = this.getResourceManager(targetScope);
-
+ RMBinderLibrary manager = this.getResourceManager(targetScope);
+
try {
+ String curr = ScopeProvider.instance.get();
+ ScopeBean scope = new ScopeBean(targetScope);
+ if (scope.is(Type.VRE)) {
+ ScopeProvider.instance.set(scope.enclosingScope().toString());
+ } else
+ ScopeProvider.instance.set(targetScope);
String reportID = manager.addResources(addParam);
ServerConsole.trace(
LOG_PREFIX,
"[BIND-SCOPE-EXIT] Applyed Adding " + this.getType() + " " + this.getID() + " to scope [" +
- targetScope.toString() + "]... reportID: " + reportID);
+ targetScope.toString() + "]... reportID: " + reportID);
+
+ RMReportingLibrary pt = this.getReportResourceManager(scope.toString());
- ReportingPortType pt = this.getReportResourceManager(targetScope);
- return pt.getReport(reportID);
+ String toReturn = pt.getReport(reportID);
+ ScopeProvider.instance.set(curr);
+ return toReturn;
} catch (Exception e) {
e.printStackTrace();
ServerConsole.trace(
LOG_PREFIX,
- "[BIND-SCOPE-EXIT] [FAILURE]");
- throw new ResourceOperationException("During resource::addToScope: " + e.getMessage());
+ "[BIND-SCOPE-EXIT] [FAILURE]");
+ throw new ResourceOperationException("During resource::addToScope: "+ targetScope + " Message: \n" + e.getMessage());
}
}
@@ -457,9 +309,7 @@ public abstract class AbstractResourceManager {
* @param nestingPublication true for resources different from gHN and RI.
* @return the reportID generated
*/
- public final String addToExistingScope(
- final GCUBEScope sourceScope, final GCUBEScope targetScope)
- throws AbstractResourceException {
+ public final String addToExistingScope(final ScopeBean sourceScope, final ScopeBean targetScope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(sourceScope != null, new ResourceParameterException("Invalid parameter sourceScope. null not allowed."));
checker.validate(targetScope != null, new ResourceParameterException("Invalid parameter targetScope. null not allowed."));
@@ -470,34 +320,36 @@ public abstract class AbstractResourceManager {
ServerConsole.trace(
LOG_PREFIX,
"[ADD-ToExistingScope] Adding from scope [" +
- sourceScope.toString() +
- "] to existing scope [" +
- targetScope.toString() +
- "] " + this.getType() + " " + this.getID());
+ sourceScope.toString() +
+ "] to existing scope [" +
+ targetScope.toString() +
+ "] " + this.getType() + " " + this.getID());
// If not RI or GHN and the scopes are sibling and VO copyFromToVO
if (!(this.getType() == AllowedResourceTypes.GHN) &&
!(this.getType() == AllowedResourceTypes.RunningInstance) &&
- sourceScope.getType() == Type.VO && targetScope.getType() == Type.VO) {
+ sourceScope.type() == Type.VO && targetScope.type() == Type.VO) {
return copyFromToVO(sourceScope, targetScope);
}
// Add a gCube Resource to
// (i) a VRE scope from the parent VO or
// (ii) a VO scope from the infrastructure scope
- if (!targetScope.isEnclosedIn(sourceScope)) {
+ if (!targetScope.toString().contains(sourceScope.toString())) {
throw new ResourceOperationException(
- "You are not allowed to apply to this scope. Target scope is not enclosed in the source one.");
+ "You are not allowed to apply to this scope. Target scope is not enclosed in the source one.");
}
report.addEntry(new ReportEntry(ReportOperation.AddToScope, this,
"Added " + this.getType() + " " + this.getID() + " to parent scope " +
- targetScope.toString() + " the remote report ID is: " +
- this.bindToScope(targetScope), true));
+ targetScope.toString() + " the remote report ID is: " +
+ this.bindToScope(targetScope.toString()), true));
return report.getXML();
}
+
+
/**
* Similar to the {@link AbstractResourceManager#addToExistingScope} method but involves
* two scopes of type VO.
@@ -510,17 +362,16 @@ public abstract class AbstractResourceManager {
* @return
* @throws AbstractResourceException
*/
- public final String copyFromToVO(final GCUBEScope sourceScope, final GCUBEScope targetScope)
- throws AbstractResourceException {
+ public final String copyFromToVO(final ScopeBean sourceScope, final ScopeBean targetScope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(
- sourceScope != null && sourceScope.getType() == Type.VO,
+ sourceScope != null && sourceScope.type() == Type.VO,
new ResourceParameterException("The sourceScope is invalid or not of type VO."));
checker.validate(
- targetScope != null && targetScope.getType() == Type.VO,
+ targetScope != null && targetScope.type() == Type.VO,
new ResourceParameterException("The targetScope is invalid or not of type VO."));
checker.validate(
- sourceScope.getEnclosingScope() == targetScope.getEnclosingScope(),
+ sourceScope.enclosingScope() == targetScope.enclosingScope(),
new ResourceParameterException("The sourceScope and targetScope must be children of the same root VO."));
checker.validate(this.getType() != AllowedResourceTypes.GHN && this.getType() != AllowedResourceTypes.RunningInstance,
new ResourceAccessException("Operation not allowed for RI and GHNs."));
@@ -528,18 +379,24 @@ public abstract class AbstractResourceManager {
new ResourceAccessException("Operation not allowed on resources with no ID."));
// Phase 1. retrieve the resource to copy
- GCUBEResource resStub = this.getGCUBEResource(sourceScope);
+ Resource resStub = this.getResource(sourceScope);
- // Phase 2. Before to register the resource, the scope must be
+ // Phase 2. Before registering the resource, the scope must be
// bound to the local GCUBEResource
- this.bindToScope(targetScope);
+ this.bindToScope(targetScope.toString());
// Phase 3. Register to the new VO through the ISPublisher
+
+ String currentScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(targetScope.toString());
+ Resource toReturn = null;
try {
- return this.getISPublisher().registerGCUBEResource(resStub, targetScope, this.getSecurityManager());
+ toReturn = this.getRegistryPublisher().create(resStub);
} catch (Exception e) {
throw new ResourceAccessException(e.getMessage());
}
+ ScopeProvider.instance.set(currentScope);
+ return toReturn.id();
}
/**
@@ -550,7 +407,7 @@ public abstract class AbstractResourceManager {
* @return
* @throws AbstractResourceException
*/
- protected abstract GCUBEResource buildGCUBEResource(final String xmlRepresentation) throws AbstractResourceException;
+ protected abstract Resource buildResource(final String xmlRepresentation) throws AbstractResourceException;
/**
* From a resource retrieves its GCUBEResource depending on the scope in which it is
@@ -559,8 +416,8 @@ public abstract class AbstractResourceManager {
* @return
* @throws AbstractResourceException
*/
- public final GCUBEResource getGCUBEResource(final GCUBEScope scope) throws AbstractResourceException {
- return this.buildGCUBEResource(this.getXMLDescription(scope));
+ public final Resource getResource(final ScopeBean scope) throws AbstractResourceException {
+ return this.buildResource(this.getXMLDescription(scope));
}
/**
@@ -570,44 +427,39 @@ public abstract class AbstractResourceManager {
* @return
* @throws AbstractResourceException
*/
- protected final String getXMLDescription(final GCUBEScope scope) throws AbstractResourceException {
+ protected final String getXMLDescription(final ScopeBean scope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(this.getID() != null, new ResourceAccessException("Cannot execute on resources with no ID."));
-
+
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+
// Phase 1. retrieve the resource to copy
- GCUBEGenericQuery query = null;
- try {
- query = this.getISClient().getQuery(GCUBEGenericQuery.class);
- query.setExpression(
- "for $resource in collection('/db/Profiles/" + this.getType().name() + "')//Resource " +
- "where ( $resource/ID/string() eq '" +
- this.getID() +
- "') " +
- "return $resource"
- );
- } catch (Exception e) {
- throw new ResourceAccessException(e);
- }
+ Query query = new QueryBox("for $resource in collection('/db/Profiles/" + this.getType().name() + "')//Resource " +
+ "where ( $resource/ID/string() eq '" +
+ this.getID() +
+ "') " +
+ "return $resource");
- XMLResult resDescription = null;
- try {
- resDescription = this.getISClient().execute(query, scope).get(0);
- return resDescription.toString();
- } catch (Exception e) {
+ DiscoveryClient client = client();
+
+ List results = client.submit(query);
+ if (results == null || results.isEmpty())
throw new ResourceAccessException("Cannot retrieve the IS profile for resource: " + this.getID() +
" in scope: " + scope.toString());
- }
+ ScopeProvider.instance.set(currScope);
+
+ return results.get(0).toString();
}
/**
- * The first phase of remove form scope.
+ * The first phase of remove from scope.
* This is common to all the resources (RI and GHNs).
* @param scope
* @return
* @throws AbstractResourceException
*/
- private String basicRemoveFromScope(final GCUBEScope scope)
- throws AbstractResourceException {
+ private String basicRemoveFromScope(final ScopeBean scope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(scope != null, new ResourceParameterException("Invalid parameter scope. null not allowed."));
checker.validate(this.getID() != null, new ResourceOperationException("Invalid ID. null not allowed."));
@@ -618,17 +470,22 @@ public abstract class AbstractResourceManager {
RemoveResourcesParameters params = new RemoveResourcesParameters();
ResourceItem toRemove = new ResourceItem();
- toRemove.setID(this.getID());
+ toRemove.setId(this.getID());
toRemove.setType(this.getType().name());
ResourceList resourcesToRemove = new ResourceList();
- resourcesToRemove.setResource(new ResourceItem[]{toRemove});
- params.setResources(resourcesToRemove);
- params.setTargetScope(scope.toString());
+ ArrayList temp = new ArrayList();
+ temp.add(toRemove);
+ resourcesToRemove.setResource(temp);
+ params.resources = resourcesToRemove;
+ params.targetScope = scope.toString();
ServerConsole.trace(LOG_PREFIX, "[REMOVE-FROM-SCOPE] Sending the Remove Resource request....");
try {
- ResourceBinderPortType manager = this.getResourceManager(scope);
+ RMBinderLibrary manager = this.getResourceManager(scope.toString());
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
retval = manager.removeResources(params);
+ ScopeProvider.instance.set(currScope);
} catch (Exception e) {
throw new ResourceOperationException("During removeFrom scope of "
+ this.getType()
@@ -641,59 +498,17 @@ public abstract class AbstractResourceManager {
* Removes the current resource from the scope.
* @param nestingRemoval true for resources different from gHN and RI
*/
- public final String removeFromScope(final GCUBEScope scope)
- throws AbstractResourceException {
+ public final String removeFromScope(final ScopeBean scope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(scope != null, new ResourceParameterException("Invalid parameter scope. null not allowed."));
checker.validate(this.getID() != null, new ResourceOperationException("Invalid ID. null not allowed."));
-
+
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+
String retval = this.basicRemoveFromScope(scope);
-
- // -- PHASE 2 - optional
-
- // Builds the stub without the removed scope
- GCUBEResource resStub = this.getGCUBEResource(scope);
- // Refreshes the local profile
- resStub.removeScope(scope);
-
- /*
- * These steps are for resources different from GHN and RI
- */
- if (!this.getType().equals(AllowedResourceTypes.GHN.name()) &&
- !this.getType().equals(AllowedResourceTypes.RunningInstance.name())) {
- // Phase 1
- // if the resource joins only the current scope, after the removal it has also to be deleted
- try {
- List boundedScopes = this.validateScopes(resStub.getScopes().values().toArray(new GCUBEScope[]{}));
- if (boundedScopes == null) {
- ServerConsole.warn(LOG_PREFIX, "[REMOVE-FROM-SCOPE] The resource " + this.getType() + " has no bound scopes");
- return retval;
- }
-
- if (boundedScopes.size() == 0) {
- ServerConsole.trace(LOG_PREFIX, "[REMOVE-FROM-SCOPE] [DELETE-BRANCH] deleting resource since no more scopes remained");
- this.getISPublisher().removeGCUBEResource(
- this.getID(), this.getType().name(), scope, this.getSecurityManager());
- return retval;
- } else {
- // requires the update of the resources in all other scopes
- for (GCUBEScope _scope : boundedScopes) {
- if (!scope.equals(_scope)) {
- try {
- ServerConsole.trace(LOG_PREFIX, "[REMOVE-FROM-SCOPE] [UPDATE-BRANCH] Updating profile in scope [" + _scope.toString() + "]");
- this.getISPublisher().updateGCUBEResource(resStub, _scope, getSecurityManager());
- } catch (Exception e) {
- ServerConsole.error(LOG_PREFIX, e);
- }
- }
- }
- }
-
- } catch (Exception e) {
- throw new ResourceOperationException(e);
- }
- }
-
+
+ ScopeProvider.instance.set(currScope);
return retval;
}
@@ -704,14 +519,10 @@ public abstract class AbstractResourceManager {
* @param scopes
* @return
*/
- protected List validateScopes(final GCUBEScope[] scopes) {
- List retval = new Vector();
- for (GCUBEScope scope : scopes) {
- try {
- retval.add(ScopeManager.getScope(scope.toString()));
- } catch (Exception e) {
- ServerConsole.error(LOG_PREFIX, e);
- }
+ protected List validateScopes(final String[] scopes) {
+ List retval = new Vector();
+ for (int i = 0; i < scopes.length; i++) {
+ retval.add(new ScopeBean(scopes[i]));
}
return retval;
}
@@ -722,11 +533,11 @@ public abstract class AbstractResourceManager {
* @param scope where the resource is bound
* @throws AbstractResourceException
*/
- public final void forceDelete(final GCUBEScope scope) throws AbstractResourceException {
+ public final void forceDelete(final ScopeBean scope) throws AbstractResourceException {
ServerConsole.trace(LOG_PREFIX, "[DELETE] [DELETE-BRANCH] deleting resource since no more scopes remained");
+ Resource resStub = this.getResource(scope);
try {
- this.getISPublisher().removeGCUBEResource(
- this.getID(), this.getType().name(), scope, this.getSecurityManager());
+ this.getRegistryPublisher().remove(resStub);
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
}
@@ -737,64 +548,37 @@ public abstract class AbstractResourceManager {
* According to the
*
* official wiki the resource is deleted only if is not bound in other scopes. Otherwise this
- * operation simply corresponds to the in deep remove from scope.
+ * operation simply corresponds to remove from scope.
* @param scope
* @throws ResourceOperationException
*/
- public final void delete(final GCUBEScope scope) throws AbstractResourceException {
+ public final void delete(final ScopeBean scope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(scope != null, new ResourceParameterException("Invalid parameter scope. null not allowed."));
checker.validate(this.getID() != null, new ResourceOperationException("Invalid ID. null not allowed."));
System.out.println("DELETING TYPE: "+ this.getType());
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
- GCUBEResource resStub = this.getGCUBEResource(scope);
- List boundedScopes = this.validateScopes(resStub.getScopes().values().toArray(new GCUBEScope[]{}));
+ Resource resStub = this.getResource(scope);
+
+ List boundedScopes = this.validateScopes(resStub.scopes().toArray(new String[0]));
ServerConsole.trace(LOG_PREFIX, "[DELETE] " + this.getType() + " " + this.getID() + " in scope [" + scope + "]");
ServerConsole.trace(LOG_PREFIX, "[DELETE] " + this.getType() + " " + this.getID() + " is bound to (" + boundedScopes.size() + ") scopes");
- /*
- * Removefromscope accetta un boolean piu la resource gia ottenuta.
- * boolean per decidere se saltare fase due di update che la ripeto piu volte
- * rispetto a qui che lo faccio una volta sola.
- */
- for (GCUBEScope _scope : boundedScopes) {
- // Removing from the children scopes
- if (_scope.isEnclosedIn(scope) || scope.equals(_scope)) {
- this.basicRemoveFromScope(_scope);
- resStub.removeScope(_scope);
- }
- }
-
- // Phase 2
- // after the removal, the resource must be also updated in the other scopes it belongs to,
- // otherwise it will wrongly report there a scope where actually it is not registered anymore.
- // In order to do so, the just removed scope must be removed from the local
- // GCUBEResource object by invoking the method GCUBEResource.removeScope()
- // and then the resource must be updated in all the remaining scopes.
-
-
- if (resStub.getScopes().isEmpty()) {
- ServerConsole.trace(LOG_PREFIX, "[DELETE] [DELETE-BRANCH] deleting resource since no more scopes remained");
- try {
- this.getISPublisher().removeGCUBEResource(
- this.getID(), this.getType().name(), scope, this.getSecurityManager());
- } catch (Exception e) {
-
- }
- } else {
- boundedScopes = this.validateScopes(resStub.getScopes().values().toArray(new GCUBEScope[]{}));
- for (GCUBEScope _scope : boundedScopes) {
- try {
- ServerConsole.trace(LOG_PREFIX, "[DELETE] [UPDATE-BRANCH]" + this.getType() + " " + this.getID() + " in scope [" + _scope + "]");
- this.getISPublisher().updateGCUBEResource(resStub, _scope, getSecurityManager());
- } catch (Exception e) {
- ServerConsole.error(LOG_PREFIX, e);
- }
- }
+ if (boundedScopes.size() > 1)
+ ServerConsole.trace(LOG_PREFIX, "[DELETE] [DELETE-BRANCH] deleting resource is a remove from scope since more than 1 scope is present " + resStub.id());
+ else if (boundedScopes.size() == 1)
+ ServerConsole.trace(LOG_PREFIX, "[DELETE] [DELETE-BRANCH] deleting resource since is bound to 1 scope only " + resStub.id());
+ try {
+ this.getRegistryPublisher().remove(resStub);
+ } catch (Exception e) {
+
}
+ ScopeProvider.instance.set(currScope);
}
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/CollectionManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/CollectionManager.java
index 7a58927..5bc8bda 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/CollectionManager.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/CollectionManager.java
@@ -17,9 +17,11 @@
package org.gcube.resourcemanagement.support.server.managers.resources;
import java.io.StringReader;
+
import org.gcube.common.core.contexts.GHNContext;
import org.gcube.common.core.resources.GCUBECollection;
import org.gcube.common.core.resources.GCUBEResource;
+import org.gcube.common.resources.gcore.Resource;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceParameterException;
@@ -66,19 +68,13 @@ public class CollectionManager extends AbstractResourceManager {
super(id, name, AllowedResourceTypes.Collection, subtype);
}
- /**
- * {@inheritDoc}
- */
+
+
@Override
- protected final GCUBEResource buildGCUBEResource(final String xmlRepresentation)
- throws AbstractResourceException {
- try {
- GCUBECollection impl = GHNContext.getImplementation(GCUBECollection.class);
- impl.load(new StringReader(xmlRepresentation));
- return impl;
- } catch (Exception e) {
- throw new ResourceAccessException("Cannot load the stub for resource " + this.getType(), e);
- }
+ protected Resource buildResource(String xmlRepresentation)
+ throws AbstractResourceException {
+ // TODO Auto-generated method stub
+ return null;
}
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GHNManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GHNManager.java
index edb97f3..2c0fad5 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GHNManager.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GHNManager.java
@@ -18,17 +18,17 @@ package org.gcube.resourcemanagement.support.server.managers.resources;
import java.io.StringReader;
-import org.apache.axis.message.addressing.Address;
-import org.apache.axis.message.addressing.EndpointReferenceType;
-import org.gcube.common.core.contexts.GCUBERemotePortTypeContext;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.resources.GCUBEHostingNode;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.scope.GCUBEScope;
-import org.gcube.common.vremanagement.ghnmanager.stubs.AddScopeInputParams;
-import org.gcube.common.vremanagement.ghnmanager.stubs.GHNManagerPortType;
-import org.gcube.common.vremanagement.ghnmanager.stubs.ShutdownOptions;
-import org.gcube.common.vremanagement.ghnmanager.stubs.service.GHNManagerServiceAddressingLocator;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+
+import org.gcube.common.resources.gcore.HostingNode;
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
+import org.gcube.common.vremanagement.ghnmanager.client.GHNManagerLibrary;
+import org.gcube.common.vremanagement.ghnmanager.client.fws.Types.AddScopeInputParams;
+import org.gcube.common.vremanagement.ghnmanager.client.fws.Types.ShutdownOptions;
+import org.gcube.common.vremanagement.ghnmanager.client.proxies.Proxies;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceOperationException;
@@ -100,10 +100,7 @@ public class GHNManager extends AbstractResourceManager {
* @throws ResourceParameterException
* @throws ResourceOperationException
*/
- public final String addToNewScope(
- final GCUBEScope sourceScope,
- final GCUBEScope targetScope,
- final String scopeMap)
+ public final String addToNewScope(final ScopeBean sourceScope, final ScopeBean targetScope, final String scopeMap)
throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(sourceScope != null, new ResourceParameterException("Parameter sourceScope null not allowed."));
@@ -111,7 +108,7 @@ public class GHNManager extends AbstractResourceManager {
checker.validate(scopeMap != null && scopeMap.trim().length() > 0, new ResourceParameterException("Invalid scopeMap parameter."));
checker.validate(this.getID() != null, new ResourceOperationException("This operation cannot be applied to resources with no ID."));
- if (!targetScope.isEnclosedIn(sourceScope)) {
+ if (!sourceScope.toString().contains(targetScope.toString())) {
throw new ResourceOperationException(
"You are not allowed to apply to this scope. Target scope is not enclosed in the source one.");
}
@@ -144,22 +141,20 @@ public class GHNManager extends AbstractResourceManager {
* @return
* @throws AbstractResourceException
*/
- public final GHNManagerPortType getGHNManager(final GCUBEScope scope)
- throws AbstractResourceException {
+ public final GHNManagerLibrary getGHNManager(final ScopeBean scope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(scope != null, new ResourceParameterException("Invalid scope"));
checker.validate(this.getName() != null, new ResourceOperationException("This operation cannot be applied to resources with no name."));
-
- EndpointReferenceType endpoint = new EndpointReferenceType();
- try {
- endpoint.setAddress(new Address("http://" + this.getName() + "/wsrf/services/gcube/common/vremanagement/GHNManager"));
- GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator();
- GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint);
- pt = GCUBERemotePortTypeContext.getProxy(pt, scope, this.getSecurityManager());
- return pt;
- } catch (Exception e) {
- throw new ResourceAccessException(e.getMessage());
+
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+ ServerConsole.info(LOG_PREFIX, "Getting Resource Manager in scope [" + scope.toString() + "]");
+ GHNManagerLibrary ghnMan = Proxies.service().build();
+ if (ghnMan == null) { // no managers found
+ throw new ResourceAccessException("Unable to find GHNManagers for resource " + this.getType() + " in scope: " + scope.toString());
}
+ ScopeProvider.instance.set(currScope);
+ return ghnMan;
}
/**
@@ -176,12 +171,12 @@ public class GHNManager extends AbstractResourceManager {
* @throws ResourceAccessException
* @throws ResourceParameterException
*/
- public final void shutDown(final GCUBEScope scope, final boolean restart, final boolean clean)
+ public final void shutDown(final ScopeBean scope, final boolean restart, final boolean clean)
throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(this.getID() != null, new ResourceAccessException("This operation cannot be applied to resources with no ID."));
- GHNManagerPortType ghnManager = this.getGHNManager(scope);
+ GHNManagerLibrary ghnManager = this.getGHNManager(scope);
ServerConsole.trace(LOG_PREFIX, "Shutting down " + scope.toString() + " " + this.getType() + " " + this.getID());
@@ -196,12 +191,13 @@ public class GHNManager extends AbstractResourceManager {
}
@Override
- protected final GCUBEResource buildGCUBEResource(final String xmlRepresentation)
- throws AbstractResourceException {
+ protected final Resource buildResource(final String xmlRepresentation) throws AbstractResourceException {
try {
- GCUBEHostingNode impl = GHNContext.getImplementation(GCUBEHostingNode.class);
- impl.load(new StringReader(xmlRepresentation));
- return impl;
+ JAXBContext ctx = JAXBContext.newInstance(HostingNode.class);
+ Unmarshaller unmarshaller = ctx.createUnmarshaller();
+ StringReader reader = new StringReader(xmlRepresentation);
+ HostingNode deserialised = (HostingNode) unmarshaller.unmarshal(reader);
+ return deserialised;
} catch (Exception e) {
throw new ResourceAccessException("Cannot load the stub for resource " + this.getType(), e);
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GenericResourceManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GenericResourceManager.java
index 5d51b20..36c6ba7 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GenericResourceManager.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/GenericResourceManager.java
@@ -16,21 +16,36 @@
package org.gcube.resourcemanagement.support.server.managers.resources;
+import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
+import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
+
+import java.io.IOException;
import java.io.StringReader;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.informationsystem.publisher.ISPublisher;
-import org.gcube.common.core.resources.GCUBEGenericResource;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.scope.GCUBEScope;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.gcube.common.resources.gcore.GenericResource;
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
+import org.gcube.informationsystem.publisher.RegistryPublisher;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
-import org.gcube.resourcemanagement.support.server.exceptions.ResourceOperationException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceParameterException;
-import org.gcube.resourcemanagement.support.server.managers.scope.ScopeManager;
import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes;
import org.gcube.resourcemanagement.support.server.utils.Assertion;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
+import org.gcube.resources.discovery.client.api.DiscoveryClient;
+import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
/**
@@ -101,103 +116,123 @@ public class GenericResourceManager extends AbstractResourceManager {
* @param subType (optional) if null it will not be changed
* @param scope (optional) if null it will not be changed
* @throws AbstractResourceException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws IOException
*/
- public final void update(
- final String name,
- final String description,
- final String body,
- final String subType,
- final GCUBEScope scope)
- throws AbstractResourceException {
+ public final void update(final String name, final String description, final String body, final String subType, final ScopeBean scope) throws Exception {
+
Assertion checker = new Assertion();
checker.validate(name != null && name.trim().length() != 0, new ResourceParameterException("Invalid field name. Null or empty value not allowed"));
ServerConsole.trace(LOG_PREFIX, "[RES-UPDATE] updating resource " + this.getType() + " " + this.getID());
- GCUBEGenericResource res = (GCUBEGenericResource) this.getGCUBEResource(scope);
- res.setName(name.trim());
+ GenericResource resource = getResourceToEditById(this.getID(), scope);
+ resource.profile().name(name.trim());
+
if (description != null) {
- res.setDescription(description.trim());
+ resource.profile().description(description.trim());
}
if (body != null) {
- res.setBody(body.trim());
+ appendXmlFragment(resource.profile().newBody(), body);
}
- if (subType != null) {
- res.setSecondaryType(subType.trim());
- }
- try {
- this.getISPublisher().updateGCUBEResource(res, scope, this.getSecurityManager());
-
- /* FIXME old release
- * List boundedScopes = this.validateScopes(res.getScopes().values().toArray(new GCUBEScope[]{}));
-
-
- for (GCUBEScope _scope : boundedScopes) {
- ServerConsole.trace(LOG_PREFIX, "[RES-UPDATE] ISPublisher updating resource " + this.getType() + " " + this.getID() + " in scope: [" + _scope + "]");
- this.getISPublisher().updateGCUBEResource(res, _scope, this.getSecurityManager());
- }
- */
- } catch (Exception e) {
- throw new ResourceOperationException(e.getMessage());
+ if (subType != null)
+ resource.profile().type(subType.trim());
+
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+ RegistryPublisher publisher = getRegistryPublisher();
+ String id = publisher.update(resource).id();
+
+ if (id == null || id.length() == 0) {
+ throw new Exception("The GenericResource has not been updated");
}
+ ScopeProvider.instance.set(currScope);
+ ServerConsole.info(LOG_PREFIX, "Resource Updated with ID: " + id);
}
+ private GenericResource getResourceToEditById(String id, ScopeBean scope) throws Exception {
+
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+
+ SimpleQuery query = queryFor(GenericResource.class);
+ query.addCondition("$resource/ID/text() eq '"+ id +"'");
+
+ DiscoveryClient client = clientFor(GenericResource.class);
+
+ List r = client.submit(query);
+
+ ScopeProvider.instance.set(currScope);
+ if (r == null || r.isEmpty())
+ throw new Exception("Could not retrieve GenericResource profile with id " + id + " in scope + " +scope);
+ else
+ return r.get(0);
+ }
/**
* Creates a Generic Resource and returns the ID given by the
* resource manager at creation phase.
* @return the id assigned to the newly created resource
*/
- public static final synchronized String create(
- final String ID,
- final GCUBEScope scope,
- final String name,
- final String description,
- final String body,
- final String subType)
+ public static final synchronized String create(final String ID, final ScopeBean scope, final String name, final String description, final String body, final String subType)
throws Exception {
Assertion checker = new Assertion();
checker.validate(name != null && name.trim().length() != 0, new ResourceParameterException("Invalid field name. Null or empty value not allowed"));
checker.validate(subType != null && subType.trim().length() != 0, new ResourceParameterException("Invalid field subType. Null or empty value not allowed"));
- GCUBEGenericResource resource = GHNContext.getImplementation(GCUBEGenericResource.class);
- if (ID != null) {
- resource.setID(ID);
- }
- resource.setName(name.trim());
+ GenericResource resource = new GenericResource();
+ resource.newProfile().name(name.trim());
+
if (description != null) {
- resource.setDescription(description.trim());
+ resource.profile().description(description.trim());
}
if (body != null) {
- resource.setBody(body.trim());
+ appendXmlFragment(resource.profile().newBody(), body);
}
- resource.setSecondaryType(subType.trim());
- resource.addScope(scope);
+ resource.profile().type(subType.trim());
+
GenericResourceManager gm = new GenericResourceManager();
- ISPublisher publisher = gm.getISPublisher();
- String retval = publisher.registerGCUBEResource(resource, scope, gm.getSecurityManager());
-
- if (retval == null || retval.length() == 0) {
+
+ String currScope = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+ RegistryPublisher publisher = gm.getRegistryPublisher();
+ String id = publisher.create(resource).id();
+
+ if (id == null || id.length() == 0) {
throw new Exception("The GenericResource has not been created");
}
-
- Document doc = ScopeManager.getDocumentGivenXML(retval);
- String id = doc.getElementsByTagName("ID").item(0).getFirstChild().getNodeValue();
-
+ ScopeProvider.instance.set(currScope);
ServerConsole.info(LOG_PREFIX, "Resource Created with ID: " + id);
return id;
}
@Override
- protected final GCUBEResource buildGCUBEResource(
- final String xmlRepresentation) throws AbstractResourceException {
+ protected final Resource buildResource(final String xmlRepresentation) throws AbstractResourceException {
try {
- GCUBEGenericResource impl = GHNContext.getImplementation(GCUBEGenericResource.class);
- impl.load(new StringReader(xmlRepresentation));
- return impl;
+ JAXBContext ctx = JAXBContext.newInstance(GenericResource.class);
+ Unmarshaller unmarshaller = ctx.createUnmarshaller();
+ StringReader reader = new StringReader(xmlRepresentation);
+ GenericResource deserialised = (GenericResource) unmarshaller.unmarshal(reader);
+ return deserialised;
} catch (Exception e) {
- throw new ResourceAccessException("Cannot load the stub for resource " + this.getType(), e);
+ throw new ResourceAccessException("Cannot load the resource " + this.getType(), e);
}
}
+ /**
+ * append a well formed xml string to the body
+ * @param parent
+ * @param fragment
+ * @throws IOException
+ * @throws SAXException
+ * @throws ParserConfigurationException
+ */
+ public static void appendXmlFragment(Node parent, String fragment) throws IOException, SAXException, ParserConfigurationException {
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ Document doc = parent.getOwnerDocument();
+ Node fragmentNode = docBuilder.parse(new InputSource(new StringReader(fragment))).getDocumentElement();
+ fragmentNode = doc.importNode(fragmentNode, true);
+ parent.appendChild(fragmentNode);
+ }
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ManagementUtils.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ManagementUtils.java
index 5c3ed3c..9aa4539 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ManagementUtils.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ManagementUtils.java
@@ -16,18 +16,21 @@
package org.gcube.resourcemanagement.support.server.managers.resources;
+import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
+import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
+
import java.io.File;
-import java.rmi.RemoteException;
+import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
-import org.gcube.common.core.faults.GCUBEFault;
-import org.gcube.common.core.informationsystem.client.AtomicCondition;
-import org.gcube.common.core.informationsystem.client.queries.GCUBEServiceQuery;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.resources.GCUBEService;
-import org.gcube.common.core.scope.GCUBEScope;
-import org.gcube.common.core.scope.GCUBEScope.Type;
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.common.resources.gcore.Software;
+import org.gcube.common.resources.gcore.Software.Profile.ServicePackage;
+import org.gcube.common.resources.gcore.Software.Profile.SoftwarePackage;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
+import org.gcube.common.scope.impl.ScopeBean.Type;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceOperationException;
@@ -36,12 +39,15 @@ import org.gcube.resourcemanagement.support.server.managers.scope.ScopeManager;
import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes;
import org.gcube.resourcemanagement.support.server.utils.Assertion;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.AddResourcesParameters;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.PackageItem;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceItem;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceList;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.SoftwareList;
+import org.gcube.resources.discovery.client.api.DiscoveryClient;
+import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
+import org.gcube.vremanagement.resourcemanager.client.RMBinderLibrary;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.AddResourcesParameters;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.PackageItem;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.ResourceItem;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.ResourceList;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.SoftwareList;
+
/**
* A support class containing operations to manage multiple resources.
@@ -63,8 +69,8 @@ public class ManagementUtils {
public static final synchronized String addToExistingScope(
final AllowedResourceTypes type,
final String[] resourceIDs,
- final GCUBEScope sourceScope,
- final GCUBEScope targetScope)
+ final ScopeBean sourceScope,
+ final ScopeBean targetScope)
throws Exception {
ServerConsole.trace(
LOG_PREFIX,
@@ -77,7 +83,7 @@ public class ManagementUtils {
// 1 - If not RI or GHN and the scopes are sibling and VO copyFromToVO
if (!(type == AllowedResourceTypes.GHN) &&
!(type == AllowedResourceTypes.RunningInstance) &&
- sourceScope.getType() == Type.VO && targetScope.getType() == Type.VO) {
+ sourceScope.type() == Type.VO && targetScope.type() == Type.VO) {
// Phase 1. retrieve the resource to copy
//GCUBEResource resStub = this.getGCUBEResource(sourceScope);
@@ -90,8 +96,11 @@ public class ManagementUtils {
try {
for (String id : resourceIDs) {
AbstractResourceManager res = ResourceFactory.createResourceManager(type, id);
- GCUBEResource resStub = res.getGCUBEResource(sourceScope);
- res.getISPublisher().registerGCUBEResource(resStub, targetScope, res.getSecurityManager());
+ Resource resStub = res.getResource(sourceScope);
+ String curr = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(targetScope.toString());
+ res.getRegistryPublisher().update(resStub);
+ ScopeProvider.instance.set(curr);
}
} catch (Exception e) {
throw new ResourceAccessException(e.getMessage());
@@ -102,7 +111,7 @@ public class ManagementUtils {
// Add a gCube Resource to
// (i) a VRE scope from the parent VO or
// (ii) a VO scope from the infrastructure scope
- if (!targetScope.isEnclosedIn(sourceScope)) {
+ if (sourceScope.toString().contains(targetScope.toString())) {
throw new ResourceOperationException(
"You are not allowed to apply to this scope. Target scope is not enclosed in the source one.");
}
@@ -120,7 +129,7 @@ public class ManagementUtils {
* @return the generated report ID
*/
public static final synchronized String removeFromExistingScope(final AllowedResourceTypes type, final String[] resourceIDs,
- final GCUBEScope sourceScope, final GCUBEScope targetScope) throws Exception {
+ final ScopeBean sourceScope, final ScopeBean targetScope) throws Exception {
ServerConsole.trace(
LOG_PREFIX,
@@ -154,23 +163,20 @@ public class ManagementUtils {
* @return the ID of generated report
* @throws AbstractResourceException
*/
- private static synchronized String bindToScope(
- final AllowedResourceTypes type,
- final String[] resourceIDs,
- final GCUBEScope targetScope)
- throws AbstractResourceException {
+ private static synchronized String bindToScope(final AllowedResourceTypes type, final String[] resourceIDs, final ScopeBean targetScope)throws AbstractResourceException {
AddResourcesParameters addParam = new AddResourcesParameters();
- ResourceBinderPortType manager = ResourceFactory.createResourceManager(type).getResourceManager(targetScope);
- List resToBind = new Vector();
+ RMBinderLibrary manager = ResourceFactory.createResourceManager(type).getResourceManager(targetScope.toString());
+ ArrayList resToBind = new ArrayList();
for (String id : resourceIDs) {
ResourceItem toAdd = new ResourceItem();
- toAdd.setID(id);
+ toAdd.id = id;
toAdd.setType(type.name());
resToBind.add(toAdd);
}
ResourceList r = new ResourceList();
- r.setResource(resToBind.toArray(new ResourceItem[]{}));
+
+ r.setResource(resToBind);
addParam.setResources(r);
addParam.setTargetScope(targetScope.toString());
@@ -191,11 +197,7 @@ public class ManagementUtils {
}
}
- public static synchronized void delete(
- final AllowedResourceTypes type,
- final String[] resourceIDs,
- final GCUBEScope scope)
- throws AbstractResourceException {
+ public static synchronized void delete(final AllowedResourceTypes type, final String[] resourceIDs, final ScopeBean scope) throws AbstractResourceException {
AbstractResourceManager resource = ResourceFactory.createResourceManager(type);
for (String id : resourceIDs) {
try {
@@ -214,18 +216,14 @@ public class ManagementUtils {
* @return the generated report ID
* @throws Exception
*/
- public static final synchronized String deploy(
- final GCUBEScope scope,
- final String[] ghnsID,
- final String[] servicesID)
- throws Exception {
+ public static final synchronized String deploy(final ScopeBean scope, final String[] ghnsID, final String[] servicesID) throws Exception {
Assertion checker = new Assertion();
checker.validate(ghnsID != null && ghnsID.length != 0, new ResourceParameterException("Invalid ghnsID parameter. It cannot be null or empty."));
checker.validate(servicesID != null && servicesID.length != 0, new ResourceParameterException("Invalid servicesID parameter. It cannot be null or empty."));
checker.validate(scope != null, new Exception("Cannot retrieve the scope."));
AbstractResourceManager resource = ResourceFactory.createResourceManager(AllowedResourceTypes.Service);
- ResourceBinderPortType manager = ResourceFactory.createResourceManager(AllowedResourceTypes.Service).getResourceManager(scope);
+ RMBinderLibrary manager = ResourceFactory.createResourceManager(AllowedResourceTypes.Service).getResourceManager(scope.toString());
System.out.println("\n\n**** These are the service ids to deploy on SCOPE " + scope);
for (String sid : servicesID) {
@@ -236,21 +234,26 @@ public class ManagementUtils {
System.out.println(ghn);
}
- List serviceProfiles = new Vector();
+ ArrayList serviceProfiles = new ArrayList();
+
+
// Retrieves the profiles of services
- final GCUBEServiceQuery query = resource.getISClient().getQuery(GCUBEServiceQuery.class);
+ SimpleQuery query = null;
+ DiscoveryClient client = clientFor(Software.class);
+
prepareServices: for (String serviceID : servicesID) {
- System.out.println("\n\n**** Query the IsClient to get the profile");
- query.clearConditions();
- query.addAtomicConditions(new AtomicCondition("/ID", serviceID));
-
- System.out.println("**** Query : " + query.getExpression());
-
- List results = resource.getISClient().execute(query, scope);
+ System.out.println("\n\n**** Query the ICClient to get the profile");
+ query = queryFor(Software.class);
+ query.addCondition("$resource/Profile/ID/text() eq '" + serviceID + "'");
+ System.out.println("**** Query : " + query.toString());
+ String curr = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+ List results = client.submit(query);
+ ScopeProvider.instance.set(curr);
System.out.println("**** results received : " + results.size());
- GCUBEService ret = null;
+ Software ret = null;
if (results != null && results.size() > 0) {
ret = results.get(0);
} else {
@@ -258,26 +261,26 @@ public class ManagementUtils {
}
if (ret == null ||
- ret.getServiceClass() == null ||
- ret.getServiceName() == null ||
- ret.getVersion() == null) {
+ ret.profile() == null ||
+ ret.profile().softwareClass() == null ||
+ ret.profile().softwareName() == null) {
ServerConsole.error(LOG_PREFIX, "found an invalid service profile");
continue;
}
PackageItem toAdd = new PackageItem();
- toAdd.setServiceClass(ret.getServiceClass());
- toAdd.setServiceName(ret.getServiceName());
- toAdd.setServiceVersion(ret.getVersion());
- if (ret.getPackages().size() == 1) {
- toAdd.setPackageName(ret.getPackages().get(0).getName());
- toAdd.setPackageVersion(ret.getPackages().get(0).getVersion());
+ toAdd.serviceClass = ret.profile().softwareClass();
+ toAdd.serviceName = ret.profile().softwareName();
+ toAdd.serviceVersion ="1.0.0";
+ if (ret.profile().packages().size() == 1) {
+ toAdd.packageName = ret.profile().packages().iterator().next().name();
+ toAdd.packageVersion = ret.profile().packages().iterator().next().version();
} else {
- for (org.gcube.common.core.resources.service.Package p : ret.getPackages()) {
- if (p.getClass().isAssignableFrom(org.gcube.common.core.resources.service.MainPackage.class)) {
- toAdd.setPackageName(p.getName());
- toAdd.setPackageVersion(p.getVersion());
+ for (SoftwarePackage p : ret.profile().packages()) {
+ if (p.getClass().isAssignableFrom(ServicePackage.class)) {
+ toAdd.packageName = p.name();
+ toAdd.packageVersion = p.version();
break;
}
}
@@ -287,29 +290,25 @@ public class ManagementUtils {
}
SoftwareList serviceList = new SoftwareList();
- serviceList.setSuggestedTargetGHNNames(ghnsID);
- serviceList.setSoftware(serviceProfiles.toArray(new PackageItem[0]));
-
+ ArrayList arrayGHNSids = new ArrayList();
+ for (int i = 0; i < ghnsID.length; i++) {
+ arrayGHNSids.add(ghnsID[i]);
+ }
+ serviceList.suggestedTargetGHNNames = arrayGHNSids;
+ serviceList.software = serviceProfiles;
+
AddResourcesParameters addResourcesParameters = new AddResourcesParameters();
- addResourcesParameters.setSoftware(serviceList);
+ addResourcesParameters.softwareList = serviceList;
addResourcesParameters.setTargetScope(scope.toString());
System.out.println("\n\n**** These is the ServiceList i pass to ResourceManagerPortType: ");
- for (int i = 0; i < serviceList.getSoftware().length; i++) {
- System.out.println(serviceList.getSoftware()[i]);
+ for (int i = 0; i < serviceList.software.size(); i++) {
+ System.out.println(serviceList.software.get(i));
}
String id = "";
- try {
- id = manager.addResources(addResourcesParameters);
- ServerConsole.debug(LOG_PREFIX, "Report ID = " + id);
- } catch (GCUBEFault e) {
- ServerConsole.error(LOG_PREFIX, "during deployment.", e);
- throw e;
- } catch (RemoteException e) {
- ServerConsole.error(LOG_PREFIX, "during deployment.", e);
- throw e;
- }
+ id = manager.addResources(addResourcesParameters);
+ ServerConsole.debug(LOG_PREFIX, "Report ID = " + id);
System.out.println("Returning.... no exceptions");
return id;
}
@@ -332,7 +331,7 @@ public class ManagementUtils {
null,
"test"
},
- ScopeManager.getScope("/gcube/devsec/devVRE"));
+ new ScopeBean("/gcube/devsec/devVRE"));
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RunningInstanceManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RunningInstanceManager.java
index 74b097a..f62e6e1 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RunningInstanceManager.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RunningInstanceManager.java
@@ -16,17 +16,23 @@
package org.gcube.resourcemanagement.support.server.managers.resources;
-import java.io.StringReader;
-import java.util.List;
-import java.util.Vector;
+import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
+import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.informationsystem.client.AtomicCondition;
-import org.gcube.common.core.informationsystem.client.queries.GCUBEServiceQuery;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.resources.GCUBERunningInstance;
-import org.gcube.common.core.resources.GCUBEService;
-import org.gcube.common.core.scope.GCUBEScope;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+
+import org.gcube.common.resources.gcore.GCoreEndpoint;
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.common.resources.gcore.Software;
+import org.gcube.common.resources.gcore.Software.Profile.ServicePackage;
+import org.gcube.common.resources.gcore.Software.Profile.SoftwarePackage;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceOperationException;
@@ -34,15 +40,16 @@ import org.gcube.resourcemanagement.support.server.exceptions.ResourceParameterE
import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes;
import org.gcube.resourcemanagement.support.server.utils.Assertion;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.AddResourcesParameters;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.PackageItem;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.RemoveResourcesParameters;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceItem;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceList;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.SoftwareList;
-import org.gcube.vremanagement.resourcemanager.stubs.reporting.ReportingPortType;
-
+import org.gcube.resources.discovery.client.api.DiscoveryClient;
+import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
+import org.gcube.vremanagement.resourcemanager.client.RMBinderLibrary;
+import org.gcube.vremanagement.resourcemanager.client.RMReportingLibrary;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.AddResourcesParameters;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.PackageItem;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.RemoveResourcesParameters;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.ResourceItem;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.ResourceList;
+import org.gcube.vremanagement.resourcemanager.client.fws.Types.SoftwareList;
/**
* @author Daniele Strollo (ISTI-CNR)
@@ -56,43 +63,57 @@ public class RunningInstanceManager extends AbstractResourceManager {
* @deprecated discouraged use. With no ID some operations cannot be accessed.
*/
public RunningInstanceManager()
- throws ResourceParameterException, ResourceAccessException {
+ throws ResourceParameterException, ResourceAccessException {
super(AllowedResourceTypes.RunningInstance);
}
public RunningInstanceManager(final String id)
- throws ResourceParameterException, ResourceAccessException {
+ throws ResourceParameterException, ResourceAccessException {
super(id, AllowedResourceTypes.RunningInstance);
}
public RunningInstanceManager(final String id, final String name)
- throws ResourceParameterException, ResourceAccessException {
+ throws ResourceParameterException, ResourceAccessException {
super(id, name, AllowedResourceTypes.RunningInstance);
}
public RunningInstanceManager(final String id, final String name, final String subType)
- throws ResourceParameterException, ResourceAccessException {
+ throws ResourceParameterException, ResourceAccessException {
super(id, name, AllowedResourceTypes.RunningInstance, subType);
}
-
- public final String deploy(
- final GCUBEScope scope, final String[] ghnsID, final String[] servicesID)
- throws ResourceParameterException, ResourceOperationException {
+ /**
+ *
+ * @param scope
+ * @param ghnsID
+ * @param servicesID
+ * @return
+ * @throws ResourceParameterException
+ * @throws ResourceOperationException
+ */
+ public final String deploy(final ScopeBean scope, final String[] ghnsID, final String[] servicesID) throws ResourceParameterException, ResourceOperationException {
Assertion checker = new Assertion();
checker.validate(servicesID != null && servicesID.length != 0,
new ResourceParameterException("Invalid servicesID parameter. It cannot be null or empty."));
checker.validate(scope != null,
new ResourceParameterException("Cannot retrieve the scope."));
- List serviceProfiles = new Vector();
+ ArrayList serviceProfiles = new ArrayList();
try {
- // Retrieves the profiles of services
- final GCUBEServiceQuery query = this.getISClient().getQuery(GCUBEServiceQuery.class);
+
+ SimpleQuery query = null;
+ DiscoveryClient client = clientFor(Software.class);
+
prepareServices: for (String serviceID : servicesID) {
- query.addAtomicConditions(new AtomicCondition("/ID", serviceID));
- List results = this.getISClient().execute(query, scope);
- GCUBEService ret = null;
+ query = queryFor(Software.class);
+ query.addCondition("$resource/Profile/ID/text() eq '" + serviceID + "'");
+ System.out.println("**** Query : " + query.toString());
+ String curr = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+ List results = client.submit(query);
+ ScopeProvider.instance.set(curr);
+ System.out.println("**** results received : " + results.size());
+ Software ret = null;
if (results != null && results.size() > 0) {
ret = results.get(0);
} else {
@@ -100,26 +121,25 @@ public class RunningInstanceManager extends AbstractResourceManager {
}
if (ret == null ||
- ret.getServiceClass() == null ||
- ret.getServiceName() == null ||
- ret.getVersion() == null) {
+ ret.profile() == null ||
+ ret.profile().softwareClass() == null ||
+ ret.profile().softwareName() == null) {
ServerConsole.error(LOG_PREFIX, "found an invalid service profile");
continue;
}
-
PackageItem toAdd = new PackageItem();
- toAdd.setServiceClass(ret.getServiceClass());
- toAdd.setServiceName(ret.getServiceName());
- toAdd.setServiceVersion(ret.getVersion());
- if (ret.getPackages().size() == 1) {
- toAdd.setPackageName(ret.getPackages().get(0).getName());
- toAdd.setPackageVersion(ret.getPackages().get(0).getVersion());
+ toAdd.serviceClass = ret.profile().softwareClass();
+ toAdd.serviceName = ret.profile().softwareName();
+ toAdd.serviceVersion ="1.0.0";
+ if (ret.profile().packages().size() == 1) {
+ toAdd.packageName = ret.profile().packages().iterator().next().name();
+ toAdd.packageVersion = ret.profile().packages().iterator().next().version();
} else {
- for (org.gcube.common.core.resources.service.Package p : ret.getPackages()) {
- if (p.getClass().isAssignableFrom(org.gcube.common.core.resources.service.MainPackage.class)) {
- toAdd.setPackageName(p.getName());
- toAdd.setPackageVersion(p.getVersion());
+ for (SoftwarePackage p : ret.profile().packages()) {
+ if (p.getClass().isAssignableFrom(ServicePackage.class)) {
+ toAdd.packageName = p.name();
+ toAdd.packageVersion = p.version();
break;
}
}
@@ -130,29 +150,41 @@ public class RunningInstanceManager extends AbstractResourceManager {
SoftwareList serviceList = new SoftwareList();
- // The GHNs are optional, suggested gHNs to use.
- if (ghnsID != null && ghnsID.length > 0) {
- serviceList.setSuggestedTargetGHNNames(ghnsID);
+ ArrayList arrayGHNSids = new ArrayList();
+ for (int i = 0; i < ghnsID.length; i++) {
+ arrayGHNSids.add(ghnsID[i]);
}
-
- serviceList.setSoftware(serviceProfiles.toArray(new PackageItem[0]));
+ serviceList.suggestedTargetGHNNames = arrayGHNSids;
+ serviceList.software = serviceProfiles;
AddResourcesParameters addResourcesParameters = new AddResourcesParameters();
- addResourcesParameters.setSoftware(serviceList);
+ addResourcesParameters.softwareList = serviceList;
addResourcesParameters.setTargetScope(scope.toString());
- String reportID = this.getResourceManager(scope).addResources(addResourcesParameters);
- ServerConsole.debug(LOG_PREFIX, "Report ID = " + reportID);
- return reportID;
+ System.out.println("\n\n**** These is the ServiceList i pass to ResourceManagerPortType: ");
+ for (int i = 0; i < serviceList.software.size(); i++) {
+ System.out.println(serviceList.software.get(i));
+ }
+
+ String id = "";
+ RMBinderLibrary manager = ResourceFactory.createResourceManager(AllowedResourceTypes.Service).getResourceManager(scope.toString());
+ String curr = ScopeProvider.instance.get();
+ ScopeProvider.instance.set(scope.toString());
+ id = manager.addResources(addResourcesParameters);
+ ScopeProvider.instance.set(curr);
+ return id;
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, "Error during deployment.", e);
throw new ResourceOperationException("Software deployment failure: " + e.getMessage());
}
}
-
- public final String undeploy(
- final GCUBEScope scope)
- throws AbstractResourceException {
+ /**
+ *
+ * @param scope
+ * @return
+ * @throws AbstractResourceException
+ */
+ public final String undeploy(final ScopeBean scope) throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(scope != null,
new ResourceParameterException("Cannot retrieve the scope."));
@@ -160,17 +192,19 @@ public class RunningInstanceManager extends AbstractResourceManager {
new ResourceOperationException("Invalid ID."));
try {
- ResourceBinderPortType rm = this.getResourceManager(scope);
+ RMBinderLibrary rm = ResourceFactory.createResourceManager(AllowedResourceTypes.Service).getResourceManager(scope.toString());
//prepare the parameters
RemoveResourcesParameters params = new RemoveResourcesParameters();
ResourceItem[] resourcelist = new ResourceItem[1];
resourcelist[0] = new ResourceItem();
- resourcelist[0].setID(this.getID());
- resourcelist[0].setType(this.getType().name());
+ resourcelist[0].id = this.getID();
+ resourcelist[0].type = this.getType().name();
ResourceList r = new ResourceList();
- r.setResource(resourcelist);
- params.setResources(r);
- params.setTargetScope(scope.toString());
+ ArrayList temp =new ArrayList();
+ temp.add(resourcelist[0]);
+ r.setResource(temp);
+ params.resources = r;
+ params.targetScope = scope.toString();
//sending the request
ServerConsole.info(LOG_PREFIX, "Sending the Remove Resource request....");
@@ -183,15 +217,15 @@ public class RunningInstanceManager extends AbstractResourceManager {
}
}
- public final String checkDeployStatus(final GCUBEScope scope, final String deployID)
- throws AbstractResourceException {
+ public final String checkDeployStatus(final ScopeBean scope, final String deployID)
+ throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(scope != null,
new ResourceParameterException("Invalid scope passed"));
checker.validate(deployID != null && deployID.trim().length() > 0,
new ResourceParameterException("Invalid reportID passed"));
- ReportingPortType vreManagerPortType = this.getReportResourceManager(scope);
+ RMReportingLibrary vreManagerPortType = this.getReportResourceManager(scope.toString());
try {
return vreManagerPortType.getReport(deployID);
@@ -202,14 +236,16 @@ public class RunningInstanceManager extends AbstractResourceManager {
}
@Override
- protected final GCUBEResource buildGCUBEResource(final String xmlRepresentation)
- throws AbstractResourceException {
+ protected final Resource buildResource(final String xmlRepresentation) throws AbstractResourceException {
try {
- GCUBERunningInstance impl = GHNContext.getImplementation(GCUBERunningInstance.class);
- impl.load(new StringReader(xmlRepresentation));
- return impl;
+ JAXBContext ctx = JAXBContext.newInstance(GCoreEndpoint.class);
+ Unmarshaller unmarshaller = ctx.createUnmarshaller();
+ StringReader reader = new StringReader(xmlRepresentation);
+ GCoreEndpoint deserialised = (GCoreEndpoint) unmarshaller.unmarshal(reader);
+ return deserialised;
} catch (Exception e) {
throw new ResourceAccessException("Cannot load the stub for resource " + this.getType(), e);
- }
+ }
+
}
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RuntimeResourceManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RuntimeResourceManager.java
index 897c8b5..fe885e2 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RuntimeResourceManager.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/RuntimeResourceManager.java
@@ -18,10 +18,12 @@ package org.gcube.resourcemanagement.support.server.managers.resources;
import java.io.StringReader;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.resources.GCUBERuntimeResource;
-import org.gcube.common.core.scope.GCUBEScope;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.common.resources.gcore.ServiceEndpoint;
+import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceOperationException;
@@ -29,8 +31,7 @@ import org.gcube.resourcemanagement.support.server.exceptions.ResourceParameterE
import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes;
import org.gcube.resourcemanagement.support.server.utils.Assertion;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
-import org.gcube.vremanagement.resourcemanager.stubs.binder.ResourceBinderPortType;
-import org.gcube.vremanagement.resourcemanager.stubs.reporting.ReportingPortType;
+import org.gcube.vremanagement.resourcemanager.client.RMReportingLibrary;
@@ -77,7 +78,7 @@ public class RuntimeResourceManager extends AbstractResourceManager {
}
- public final String checkDeployStatus(final GCUBEScope scope, final String deployID)
+ public final String checkDeployStatus(final ScopeBean scope, final String deployID)
throws AbstractResourceException {
Assertion checker = new Assertion();
checker.validate(scope != null,
@@ -85,7 +86,7 @@ public class RuntimeResourceManager extends AbstractResourceManager {
checker.validate(deployID != null && deployID.trim().length() > 0,
new ResourceParameterException("Invalid reportID passed"));
- ReportingPortType vreManagerPortType = this.getReportResourceManager(scope);
+ RMReportingLibrary vreManagerPortType = this.getReportResourceManager(scope.name());
try {
return vreManagerPortType.getReport(deployID);
@@ -96,14 +97,16 @@ public class RuntimeResourceManager extends AbstractResourceManager {
}
@Override
- protected final GCUBEResource buildGCUBEResource(final String xmlRepresentation)
- throws AbstractResourceException {
+ protected final Resource buildResource(final String xmlRepresentation) throws AbstractResourceException {
try {
- GCUBERuntimeResource impl = GHNContext.getImplementation(GCUBERuntimeResource.class);
- impl.load(new StringReader(xmlRepresentation));
- return impl;
+ JAXBContext ctx = JAXBContext.newInstance(ServiceEndpoint.class);
+ Unmarshaller unmarshaller = ctx.createUnmarshaller();
+ StringReader reader = new StringReader(xmlRepresentation);
+ ServiceEndpoint deserialised = (ServiceEndpoint) unmarshaller.unmarshal(reader);
+ return deserialised;
} catch (Exception e) {
throw new ResourceAccessException("Cannot load the stub for resource " + this.getType(), e);
- }
+ }
+
}
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ServiceManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ServiceManager.java
index c68a1df..ad6259b 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ServiceManager.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ServiceManager.java
@@ -17,9 +17,12 @@
package org.gcube.resourcemanagement.support.server.managers.resources;
import java.io.StringReader;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.common.core.resources.GCUBEService;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+
+import org.gcube.common.resources.gcore.Resource;
+import org.gcube.common.resources.gcore.Software;
import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
import org.gcube.resourcemanagement.support.server.exceptions.ResourceParameterException;
@@ -70,14 +73,16 @@ public class ServiceManager extends AbstractResourceManager {
}
@Override
- protected final GCUBEResource buildGCUBEResource(final String xmlRepresentation)
- throws AbstractResourceException {
+ protected final Resource buildResource(final String xmlRepresentation) throws AbstractResourceException {
try {
- GCUBEService impl = GHNContext.getImplementation(GCUBEService.class);
- impl.load(new StringReader(xmlRepresentation));
- return impl;
+ JAXBContext ctx = JAXBContext.newInstance(Software.class);
+ Unmarshaller unmarshaller = ctx.createUnmarshaller();
+ StringReader reader = new StringReader(xmlRepresentation);
+ Software deserialised = (Software) unmarshaller.unmarshal(reader);
+ return deserialised;
} catch (Exception e) {
throw new ResourceAccessException("Cannot load the stub for resource " + this.getType(), e);
- }
+ }
+
}
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ViewManager.java b/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ViewManager.java
deleted file mode 100644
index 7fbf7f8..0000000
--- a/src/main/java/org/gcube/resourcemanagement/support/server/managers/resources/ViewManager.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
- * This software is part of the gCube System.
- * Site: http://www.gcube-system.org/
- ****************************************************************************
- * The gCube/gCore software is licensed as Free Open Source software
- * conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
- * The software and documentation is provided by its authors/distributors
- * "as is" and no expressed or
- * implied warranty is given for its use, quality or fitness for a
- * particular case.
- ****************************************************************************
- * Filename: MetadataCollectionManager.java
- ****************************************************************************
- * @author Daniele Strollo
- ***************************************************************************/
-
-package org.gcube.resourcemanagement.support.server.managers.resources;
-
-import java.io.StringReader;
-import org.gcube.common.core.contexts.GHNContext;
-import org.gcube.common.core.resources.GCUBEMCollection;
-import org.gcube.common.core.resources.GCUBEResource;
-import org.gcube.resourcemanagement.support.server.exceptions.AbstractResourceException;
-import org.gcube.resourcemanagement.support.server.exceptions.ResourceAccessException;
-import org.gcube.resourcemanagement.support.server.exceptions.ResourceParameterException;
-import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes;
-
-/**
- * @author Daniele Strollo (ISTI-CNR)
- *
- */
-public class ViewManager extends AbstractResourceManager {
-
- /**
- * @deprecated discouraged use. With no ID some operations cannot be accessed.
- */
- public ViewManager()
- throws ResourceParameterException,
- ResourceAccessException {
- super(AllowedResourceTypes.VIEW);
- }
-
- public ViewManager(final String id)
- throws ResourceParameterException,
- ResourceAccessException {
- super(id, AllowedResourceTypes.VIEW);
- }
-
- /**
- * @param id
- * @param name
- * @param type
- * @throws ResourceParameterException
- * @throws ResourceAccessException
- */
- public ViewManager(final String id, final String name)
- throws ResourceParameterException,
- ResourceAccessException {
- super(id, name, AllowedResourceTypes.VIEW);
- }
-
- /**
- * @param id
- * @param name
- * @param type
- * @param subtype
- * @throws ResourceParameterException
- * @throws ResourceAccessException
- */
- public ViewManager(final String id, final String name, final String subtype)
- throws ResourceParameterException, ResourceAccessException {
- super(id, name, AllowedResourceTypes.VIEW, subtype);
- }
-
- @Override
- protected final GCUBEResource buildGCUBEResource(final String xmlRepresentation)
- throws AbstractResourceException {
- try {
- GCUBEMCollection impl = GHNContext.getImplementation(GCUBEMCollection.class);
- impl.load(new StringReader(xmlRepresentation));
- return impl;
- } catch (Exception e) {
- throw new ResourceAccessException("Cannot load the stub for resource " + this.getType(), e);
- }
- }
-}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/server/tests/GenericTest.java b/src/main/java/org/gcube/resourcemanagement/support/server/tests/GenericTest.java
index f7fe746..7974db6 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/server/tests/GenericTest.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/server/tests/GenericTest.java
@@ -1,4 +1,10 @@
/****************************************************************************
+
+
+ *
+ *
+ *
+ *
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
@@ -16,19 +22,30 @@
package org.gcube.resourcemanagement.support.server.tests;
-import java.io.File;
-import java.util.Map;
+import static org.gcube.resources.discovery.icclient.ICFactory.client;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
-import org.gcube.common.core.contexts.GHNContext.Status;
-import org.gcube.common.core.resources.GCUBEHostingNode;
import org.gcube.common.core.scope.GCUBEScope;
-import org.gcube.common.core.scope.GCUBEScope.Type;
+import org.gcube.common.resources.gcore.HostingNode;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
+import org.gcube.resourcemanagement.support.client.utils.StatusHandler;
+import org.gcube.resourcemanagement.support.server.gcube.CacheManager;
+import org.gcube.resourcemanagement.support.server.gcube.ISClientRequester;
+import org.gcube.resourcemanagement.support.server.gcube.queries.QueryLoader;
+import org.gcube.resourcemanagement.support.server.gcube.queries.QueryLocation;
import org.gcube.resourcemanagement.support.server.managers.resources.GHNManager;
import org.gcube.resourcemanagement.support.server.managers.resources.GenericResourceManager;
-import org.gcube.resourcemanagement.support.server.managers.resources.ResourceFactory;
import org.gcube.resourcemanagement.support.server.managers.scope.ScopeManager;
-import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
+import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor;
+import org.gcube.resources.discovery.client.api.DiscoveryClient;
+import org.gcube.resources.discovery.client.queries.api.Query;
+import org.gcube.resources.discovery.client.queries.impl.QueryBox;
/**
* @author Daniele Strollo (ISTI-CNR)
@@ -37,37 +54,6 @@ import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
public class GenericTest {
private static final String LOG_PREFIX = "[SW-SUPPORT-TEST]";
- public static void testScope() {
-
- try {
- Map scopes = ScopeManager.getAvailableScopes();
-
- System.out.println("\n\n\n******************** TEST SCOPE ***************\n");
- for (GCUBEScope scope : scopes.values()) {
- if ((scope.getType().compareTo(Type.INFRASTRUCTURE) == 0)
- || (scope.getType().compareTo(Type.VO) == 0)) {
- if (scope.getServiceMap() != null) {
- ServerConsole.trace(null, "*** Map loaded for " + scope.getType() + " " + scope.toString() + " [OK]");
- } else {
- ServerConsole.trace(null, "*** Map loaded for " + scope.getType() + " " + scope.toString() + " [ERR]");
- }
- } else {
- try {
- if (scope.getEnclosingScope().getServiceMap() != null) {
- ServerConsole.trace(null, "*** Map loaded for " + scope.getType() + scope.toString() + " [OK]");
- }
- } catch (Exception e) {
- ServerConsole.trace(null, "*** Map loaded for " + scope.getType() + scope.toString() + " [ERR]");
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- System.out.println("\n******************** TEST SCOPE END ***************\n");
- }
- }
-
public static String testCreation() {
System.out.println("\n\n\n******************** TEST CREATION ***************");
@@ -76,11 +62,11 @@ public class GenericTest {
try {
resID = GenericResourceManager.create(
null,
- ScopeManager.getScope("/gcube/devsec"),
- "GR Test",
- "GR Test Description",
+ new ScopeBean("/gcube/devsec"),
+ "RMP Test",
+ "RMP Test Description",
"Hello",
- "XXX");
+ "test");
ServerConsole.trace(null, "Generic Resource Created with ID: " + resID);
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
@@ -95,7 +81,7 @@ public class GenericTest {
try {
GenericResourceManager res = new GenericResourceManager(resID);
ServerConsole.trace(null,
- res.addToExistingScope(ScopeManager.getScope(fromScope), ScopeManager.getScope(toScope))
+ res.addToExistingScope(new ScopeBean(fromScope), new ScopeBean(toScope))
);
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
@@ -104,11 +90,11 @@ public class GenericTest {
}
}
- public static void testResourceEdit(final String resID, final GCUBEScope scope) {
+ public static void testResourceEdit(final String resID, final ScopeBean scope) {
System.out.println("\n\n\n******************** TEST RESEDIT COPY ***************");
try {
GenericResourceManager res = new GenericResourceManager(resID);
- res.update("New Name", "updated description", null, null, scope);
+ res.update(res.getName()+" Edited", "updated description", "updated body", "test2", scope);
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
} finally {
@@ -118,18 +104,19 @@ public class GenericTest {
public static void testModeGHN(final String resID, final String scope)
throws Exception {
- GCUBEScope queryScope = ScopeManager.getScope(scope);
+ ScopeBean queryScope = new ScopeBean(scope);
GHNManager ghnManager = new GHNManager(resID);
- GCUBEHostingNode res = (GCUBEHostingNode) ghnManager.getGCUBEResource(queryScope);
- res.getNodeDescription().setStatus(Status.UNREACHABLE);
- ghnManager.getISPublisher().updateGCUBEResource(res, queryScope, ghnManager.getSecurityManager());
+ HostingNode res = (HostingNode) ghnManager.getResource(queryScope);
+ res.profile().description().status("CERTIFIED");
+ ScopeProvider.instance.set(queryScope.name());
+ ghnManager.getRegistryPublisher().update(res);
}
public static void testGHN() {
System.out.println("\n\n\n******************** TEST GHN ***************");
try {
- GHNManager ghn1 = new GHNManager("20ddb210-b779-11df-96c9-a66904b26e27", "pc-strollo");
- ghn1.addToExistingScope(ScopeManager.getScope("/gcube"), ScopeManager.getScope("/gcube/devsec"));
+ GHNManager ghn1 = new GHNManager("796f0680-3937-11e2-9d5f-ae6a92affb51", "pcd4science3.cern.ch");
+ ghn1.addToExistingScope(new ScopeBean("/gcube"), new ScopeBean("/gcube/devsec"));
} catch (Exception e) {
ServerConsole.error(LOG_PREFIX, e);
} finally {
@@ -137,7 +124,7 @@ public class GenericTest {
}
}
- public static void testRemoveFromScope(final String resID, final GCUBEScope scope) {
+ public static void testRemoveFromScope(final String resID, final ScopeBean scope) {
System.out.println("\n\n\n******************** TEST RESOURCE REMOVEFROMSCOPE ***************");
try {
GenericResourceManager res = new GenericResourceManager(resID);
@@ -148,8 +135,9 @@ public class GenericTest {
System.out.println("\n******************** TEST RESOURCE REMOVEFROMSCOPE END ***************\n");
}
}
+
- public static void testDelete(final String resID, final GCUBEScope scope) {
+ public static void testDelete(final String resID, final ScopeBean scope) {
System.out.println("\n\n\n******************** TEST RESOURCE DELETE ***************");
try {
GenericResourceManager res = new GenericResourceManager(resID);
@@ -161,27 +149,50 @@ public class GenericTest {
}
}
+ private static void testTree(ScopeBean scope) throws Exception {
+
+ CacheManager cm = new CacheManager();
+ cm.setUseCache(false);
+ HashMap> results = ISClientRequester.getResourcesTree(cm, scope);
+ for (String res : results.keySet()) {
+ System.out.println(res);
+ for (String sub : results.get(res)) {
+ System.out.println(sub);
+ }
+ }
+
+ List descs = ISClientRequester.getResourceModels(scope, "GenericResource", null, null);
+ for (ResourceDescriptor resourceDescriptor : descs) {
+ System.out.println(resourceDescriptor);
+ }
+ }
+
@SuppressWarnings("deprecation")
public static void main(final String[] args) throws Exception {
// The scopes must be initialized
ScopeManager.setScopeConfigFile("test-suite" + File.separator + "scopes" + File.separator + "scopedata_admin.xml");
-
- boolean deepTest = false;
- // testScope();
- // testGHN();
- if (deepTest) {
+
+ ScopeProvider.instance.set("/gcube/devsec");
+
+ //testTree( new ScopeBean("/gcube"));
+
+// boolean deepTest = true;
+//
+// // testGHN();
+// if (deepTest) {
String resID = testCreation();
testScopeCopy(resID, "/gcube/devsec", "/gcube/devsec/devVRE");
-
- System.out.println("\n\nWaiting for resource refresh 60secs.\n\n\n");
- Thread.sleep(60000);
-
- //testResourceEdit(resID, ScopeManager.getScope("/gcube/devsec"));
- testDelete(resID, ScopeManager.getScope("/gcube/devsec/devVRE"));
-
- // testRemoveFromScope(resID, ScopeManager.getScope("/gcube/devsec"));
- } else {
- testModeGHN("f5cb0640-f1a7-11df-93d0-fc409084cf46", "/gcube/devsec/devVRE");
- }
+//////
+// System.out.println("\n\nWaiting for resource refresh 20secs.\n\n\n");
+// Thread.sleep(20000);
+//
+//
+// //testResourceEdit(resID, new ScopeBean("/gcube/devsec"));
+// //testDelete(resID, new ScopeBean("/gcube/devsec"));
+//
+// testRemoveFromScope(resID, new ScopeBean("/gcube/devsec/devVRE"));
+// } else {
+// testModeGHN("796f0680-3937-11e2-9d5f-ae6a92affb51", "/gcube/devsec/devVRE");
+// }
}
}
diff --git a/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/CompleteResourceProfile.java b/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/CompleteResourceProfile.java
index f942de7..7a23cec 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/CompleteResourceProfile.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/CompleteResourceProfile.java
@@ -20,7 +20,6 @@ import java.io.Serializable;
import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator;
-
import com.google.gwt.user.client.rpc.IsSerializable;
/**
@@ -30,8 +29,8 @@ import com.google.gwt.user.client.rpc.IsSerializable;
* @author Daniele Strollo (ISTI-CNR)
*
*/
-public class CompleteResourceProfile implements Serializable, IsSerializable {
- private static final long serialVersionUID = 1L;
+@SuppressWarnings("serial")
+public class CompleteResourceProfile implements Serializable {
private String xmlRepresentation = null;
private String htmlRepresentation = null;
private ResourceTypeDecorator type = null;
diff --git a/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/ResourceDescriptor.java b/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/ResourceDescriptor.java
index 6946c5a..703e934 100644
--- a/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/ResourceDescriptor.java
+++ b/src/main/java/org/gcube/resourcemanagement/support/shared/types/datamodel/ResourceDescriptor.java
@@ -23,16 +23,18 @@ import org.gcube.resourcemanagement.support.shared.util.Assertion;
+
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* All the resources that want to access resource management
* operations must be described through this data type.
- * @author Daniele Strollo (ISTI-CNR)
+ * @author Massimiliano Assante (ISTI-CNR)
+ * @author Daniele Strollo
*/
-public class ResourceDescriptor extends BaseModelData implements Serializable, IsSerializable {
- private static final long serialVersionUID = 6435512868470974421L;
+@SuppressWarnings("serial")
+public class ResourceDescriptor extends BaseModelData implements Serializable {
public ResourceDescriptor() {
super();
@@ -46,11 +48,7 @@ public class ResourceDescriptor extends BaseModelData implements Serializable, I
* @param name the short name assigned to the resource (mandatory).
* @throws InvalidParameterException
*/
- public ResourceDescriptor(
- final String type,
- final String subtype,
- final String id,
- final String name) throws InvalidParameterException {
+ public ResourceDescriptor(String type, String subtype, String id, String name) throws InvalidParameterException {
super();
Assertion checker = new Assertion();
checker.validate(name != null && name.length() > 0, new InvalidParameterException("The ghnName is null or empty"));
@@ -110,4 +108,13 @@ public class ResourceDescriptor extends BaseModelData implements Serializable, I
public final Object getProperty(final String property) {
return get(property);
}
+
+ @Override
+ public String toString() {
+ return "ResourceDescriptor [getType()=" + getType() + ", getSubtype()="
+ + getSubtype() + ", getID()=" + getID() + ", getName()="
+ + getName() + "]";
+ }
+
+
}
diff --git a/war/WEB-INF/lib/gwt-servlet.jar b/war/WEB-INF/lib/gwt-servlet.jar
index b3c62e4..b154974 100644
Binary files a/war/WEB-INF/lib/gwt-servlet.jar and b/war/WEB-INF/lib/gwt-servlet.jar differ