:Creation of new StoRI with path: {}", childPath);
try {
diff --git a/src/main/java/it/grid/storm/namespace/TURLBuilder.java b/src/main/java/it/grid/storm/namespace/TURLBuilder.java
index 52c43d308..226a0a578 100644
--- a/src/main/java/it/grid/storm/namespace/TURLBuilder.java
+++ b/src/main/java/it/grid/storm/namespace/TURLBuilder.java
@@ -17,6 +17,9 @@
package it.grid.storm.namespace;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import it.grid.storm.common.types.PFN;
import it.grid.storm.config.Configuration;
import it.grid.storm.namespace.model.Authority;
@@ -24,11 +27,9 @@
import it.grid.storm.srm.types.InvalidTTURLAttributesException;
import it.grid.storm.srm.types.TTURL;
-import org.slf4j.Logger;
-
public class TURLBuilder {
- private static Logger log = NamespaceDirector.getLogger();
+ private static Logger log = LoggerFactory.getLogger(TURLBuilder.class);
public TURLBuilder() {
diff --git a/src/main/java/it/grid/storm/namespace/config/NamespaceCheck.java b/src/main/java/it/grid/storm/namespace/config/NamespaceCheck.java
index bf696c36e..80ecba6af 100644
--- a/src/main/java/it/grid/storm/namespace/config/NamespaceCheck.java
+++ b/src/main/java/it/grid/storm/namespace/config/NamespaceCheck.java
@@ -17,15 +17,6 @@
package it.grid.storm.namespace.config;
-import it.grid.storm.namespace.CapabilityInterface;
-import it.grid.storm.namespace.NamespaceDirector;
-import it.grid.storm.namespace.VirtualFSInterface;
-import it.grid.storm.namespace.model.ACLEntry;
-import it.grid.storm.namespace.model.ApproachableRule;
-import it.grid.storm.namespace.model.DefaultACL;
-import it.grid.storm.namespace.model.MappingRule;
-import it.grid.storm.namespace.util.userinfo.LocalGroups;
-
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
@@ -33,6 +24,15 @@
import java.util.Map;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import it.grid.storm.namespace.CapabilityInterface;
+import it.grid.storm.namespace.VirtualFSInterface;
+import it.grid.storm.namespace.model.ACLEntry;
+import it.grid.storm.namespace.model.ApproachableRule;
+import it.grid.storm.namespace.model.DefaultACL;
+import it.grid.storm.namespace.model.MappingRule;
+import it.grid.storm.namespace.util.userinfo.LocalGroups;
/**
*
@@ -56,7 +56,7 @@
*/
public class NamespaceCheck {
- private final Logger log = NamespaceDirector.getLogger();
+ private final Logger log = LoggerFactory.getLogger(NamespaceCheck.class);
private final Map vfss;
private final Map maprules;
private final Map apprules;
diff --git a/src/main/java/it/grid/storm/namespace/config/xml/XMLNamespaceParser.java b/src/main/java/it/grid/storm/namespace/config/xml/XMLNamespaceParser.java
index 2528a9a0d..3c02aa424 100644
--- a/src/main/java/it/grid/storm/namespace/config/xml/XMLNamespaceParser.java
+++ b/src/main/java/it/grid/storm/namespace/config/xml/XMLNamespaceParser.java
@@ -30,6 +30,7 @@
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.collect.Maps;
@@ -37,7 +38,6 @@
import it.grid.storm.check.sanity.filesystem.SupportedFSType;
import it.grid.storm.namespace.CapabilityInterface;
import it.grid.storm.namespace.DefaultValuesInterface;
-import it.grid.storm.namespace.NamespaceDirector;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.PropertyInterface;
import it.grid.storm.namespace.VirtualFSInterface;
@@ -93,7 +93,7 @@
public class XMLNamespaceParser implements NamespaceParser {
- private final Logger log = NamespaceDirector.getLogger();
+ private final Logger log = LoggerFactory.getLogger(XMLNamespaceParser.class);
private String version;
private Map vfss;
diff --git a/src/main/java/it/grid/storm/namespace/model/ApproachableRule.java b/src/main/java/it/grid/storm/namespace/model/ApproachableRule.java
index 668db52e7..92cad6e05 100644
--- a/src/main/java/it/grid/storm/namespace/model/ApproachableRule.java
+++ b/src/main/java/it/grid/storm/namespace/model/ApproachableRule.java
@@ -17,16 +17,16 @@
package it.grid.storm.namespace.model;
-import it.grid.storm.griduser.AbstractGridUser;
-import it.grid.storm.griduser.DistinguishedName;
-import it.grid.storm.griduser.GridUserInterface;
-import it.grid.storm.namespace.NamespaceDirector;
-import it.grid.storm.namespace.VirtualFSInterface;
-
import java.util.LinkedList;
import java.util.List;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import it.grid.storm.griduser.AbstractGridUser;
+import it.grid.storm.griduser.DistinguishedName;
+import it.grid.storm.griduser.GridUserInterface;
+import it.grid.storm.namespace.VirtualFSInterface;
/**
*
@@ -50,7 +50,7 @@
*/
public class ApproachableRule implements Comparable {
- private Logger log = NamespaceDirector.getLogger();
+ private Logger log = LoggerFactory.getLogger(ApproachableRule.class);
private final String ruleName;
private final SubjectRules subjectRules;
diff --git a/src/main/java/it/grid/storm/namespace/model/Capability.java b/src/main/java/it/grid/storm/namespace/model/Capability.java
index 17841fdd1..c09bcce54 100644
--- a/src/main/java/it/grid/storm/namespace/model/Capability.java
+++ b/src/main/java/it/grid/storm/namespace/model/Capability.java
@@ -17,14 +17,6 @@
package it.grid.storm.namespace.model;
-import it.grid.storm.balancer.BalancingStrategy;
-import it.grid.storm.balancer.BalancingStrategyFactory;
-import it.grid.storm.balancer.Node;
-import it.grid.storm.balancer.ftp.FTPNode;
-import it.grid.storm.namespace.CapabilityInterface;
-import it.grid.storm.namespace.NamespaceDirector;
-import it.grid.storm.namespace.NamespaceException;
-
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;
@@ -32,6 +24,14 @@
import java.util.Map;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import it.grid.storm.balancer.BalancingStrategy;
+import it.grid.storm.balancer.BalancingStrategyFactory;
+import it.grid.storm.balancer.Node;
+import it.grid.storm.balancer.ftp.FTPNode;
+import it.grid.storm.namespace.CapabilityInterface;
+import it.grid.storm.namespace.NamespaceException;
/**
*
@@ -56,7 +56,7 @@
public class Capability implements CapabilityInterface {
- private Logger log = NamespaceDirector.getLogger();
+ private Logger log = LoggerFactory.getLogger(Capability.class);
private ACLMode aclMode = ACLMode.UNDEF;
private Quota quota = null;
// List of TransportProtocol by Protocol.
diff --git a/src/main/java/it/grid/storm/namespace/model/DefaultValues.java b/src/main/java/it/grid/storm/namespace/model/DefaultValues.java
index 77833f51b..7d45f2f07 100644
--- a/src/main/java/it/grid/storm/namespace/model/DefaultValues.java
+++ b/src/main/java/it/grid/storm/namespace/model/DefaultValues.java
@@ -17,10 +17,12 @@
package it.grid.storm.namespace.model;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import it.grid.storm.common.types.SizeUnit;
import it.grid.storm.common.types.TimeUnit;
import it.grid.storm.namespace.DefaultValuesInterface;
-import it.grid.storm.namespace.NamespaceDirector;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.srm.types.InvalidTSizeAttributesException;
import it.grid.storm.srm.types.TFileStorageType;
@@ -28,8 +30,6 @@
import it.grid.storm.srm.types.TSizeInBytes;
import it.grid.storm.srm.types.TSpaceType;
-import org.slf4j.Logger;
-
/**
*
* Title:
@@ -52,7 +52,7 @@
*/
public class DefaultValues implements DefaultValuesInterface {
- private Logger log = NamespaceDirector.getLogger();
+ private Logger log = LoggerFactory.getLogger(DefaultValues.class);
private SpaceDefault spaceDefault;
private FileDefault fileDefault;
diff --git a/src/main/java/it/grid/storm/namespace/model/Property.java b/src/main/java/it/grid/storm/namespace/model/Property.java
index 2a0dce335..3260f80e4 100644
--- a/src/main/java/it/grid/storm/namespace/model/Property.java
+++ b/src/main/java/it/grid/storm/namespace/model/Property.java
@@ -17,18 +17,18 @@
package it.grid.storm.namespace.model;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import it.grid.storm.common.types.SizeUnit;
-import it.grid.storm.namespace.NamespaceDirector;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.PropertyInterface;
import it.grid.storm.srm.types.InvalidTSizeAttributesException;
import it.grid.storm.srm.types.TSizeInBytes;
-import org.slf4j.Logger;
-
public class Property implements PropertyInterface {
- private Logger log = NamespaceDirector.getLogger();
+ private Logger log = LoggerFactory.getLogger(Property.class);
private TSizeInBytes totalOnlineSize = TSizeInBytes.makeEmpty();
private TSizeInBytes totalNearlineSize = TSizeInBytes.makeEmpty();
private RetentionPolicy retentionPolicy = RetentionPolicy.UNKNOWN;
@@ -157,7 +157,7 @@ public boolean isOnlineSpaceLimited() {
*/
public static class SizeUnitType {
- private Logger log = NamespaceDirector.getLogger();
+ private Logger log = LoggerFactory.getLogger(SizeUnitType.class);
/**
* mappingRules = new ArrayList();
- List approachableRules = new ArrayList();
+ List mappingRules = Lists.newArrayList();
+ List approachableRules = Lists.newArrayList();
Configuration config;
StorageClassType storageClass = null;
TSpaceToken spaceToken;
@@ -1319,8 +1320,7 @@ public void storeSpaceByToken(StorageSpaceData spaceData)
public StoRI retrieveSpaceFileByPFN(PFN pfn, long totalSize)
throws NamespaceException {
- NamespaceInterface namespace = NamespaceDirector.getNamespace();
- StoRI stori = namespace.resolveStoRIbyPFN(pfn);
+ StoRI stori = Namespace.getInstance().resolveStoRIbyPFN(pfn);
stori.setStoRIType(StoRIType.SPACE);
// Create the Space istance
log.debug("VFS: retrieveSpace, relative {}-{}", stori.getRelativePath(), stori);
diff --git a/src/main/java/it/grid/storm/namespace/naming/NamespaceUtil.java b/src/main/java/it/grid/storm/namespace/naming/NamespaceUtil.java
index f25e0cd6f..5d65ddba2 100644
--- a/src/main/java/it/grid/storm/namespace/naming/NamespaceUtil.java
+++ b/src/main/java/it/grid/storm/namespace/naming/NamespaceUtil.java
@@ -29,7 +29,7 @@
import com.google.common.collect.Lists;
import it.grid.storm.griduser.VONameMatchingRule;
-import it.grid.storm.namespace.NamespaceDirector;
+import it.grid.storm.namespace.Namespace;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.VirtualFSInterface;
import it.grid.storm.namespace.model.MappingRule;
@@ -103,7 +103,7 @@ public static String getFileName(String stfn) {
*/
public static Collection getResidentVFS(String mountPointPath) {
- List vfsSet = NamespaceDirector.getNamespace().getAllDefinedVFS();
+ List vfsSet = Namespace.getInstance().getAllDefinedVFS();
for (VirtualFSInterface vfs : vfsSet) {
String vfsRootPath;
boolean enclosed;
diff --git a/src/main/java/it/grid/storm/namespace/naming/SURL.java b/src/main/java/it/grid/storm/namespace/naming/SURL.java
index 86d88dc2d..acae9165e 100644
--- a/src/main/java/it/grid/storm/namespace/naming/SURL.java
+++ b/src/main/java/it/grid/storm/namespace/naming/SURL.java
@@ -17,20 +17,20 @@
package it.grid.storm.namespace.naming;
-import it.grid.storm.namespace.NamespaceDirector;
-import it.grid.storm.namespace.NamespaceException;
-import it.grid.storm.namespace.model.Protocol;
-
import java.net.URI;
import java.util.Set;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.collect.Sets;
+import it.grid.storm.namespace.NamespaceException;
+import it.grid.storm.namespace.model.Protocol;
+
public class SURL extends SRMURL {
- private static Logger log = NamespaceDirector.getLogger();
+ private static Logger log = LoggerFactory.getLogger(SURL.class);
private static Set schemes = Sets.newHashSet("srm");
private static Set servicePaths = Sets.newHashSet("/srm/managerv2", "/srm/managerv1");
diff --git a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResource.java b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResource.java
index 4643456b8..dca595cb2 100644
--- a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResource.java
+++ b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResource.java
@@ -13,7 +13,7 @@
import com.google.common.collect.Maps;
-import it.grid.storm.namespace.NamespaceDirector;
+import it.grid.storm.namespace.Namespace;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.VirtualFSInterface;
import it.grid.storm.namespace.model.SAInfo;
@@ -36,7 +36,7 @@ public class VirtualFSResource {
public Map listVFS() {
log.debug("Serving VFS resource listing");
- List vfsCollection = NamespaceDirector.getNamespace().getAllDefinedVFS();
+ List vfsCollection = Namespace.getInstance().getAllDefinedVFS();
Map output = Maps.newHashMap();
for (VirtualFSInterface vfs : vfsCollection) {
diff --git a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_0.java b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_0.java
index b18da5365..f50a797ff 100644
--- a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_0.java
+++ b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_0.java
@@ -13,7 +13,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import it.grid.storm.namespace.NamespaceDirector;
+import it.grid.storm.namespace.Namespace;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.VirtualFSInterface;
import it.grid.storm.namespace.model.MappingRule;
@@ -37,7 +37,7 @@ public String listVFS() {
log.info("Serving VFS resource listing");
String vfsListString = "";
- List vfsCollection = NamespaceDirector.getNamespace().getAllDefinedVFS();
+ List vfsCollection = Namespace.getInstance().getAllDefinedVFS();
for (VirtualFSInterface vfs : vfsCollection) {
if (!vfsListString.equals("")) {
vfsListString += Constants.VFS_LIST_SEPARATOR;
diff --git a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_1.java b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_1.java
index 7d539251e..6b92c7d4b 100644
--- a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_1.java
+++ b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_1.java
@@ -14,7 +14,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import it.grid.storm.namespace.NamespaceDirector;
+import it.grid.storm.namespace.Namespace;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.VirtualFSInterface;
import it.grid.storm.namespace.model.MappingRule;
@@ -39,7 +39,7 @@ public String listVFS() {
log.info("Serving VFS resource listing");
String vfsListString = "";
- List vfsCollection = NamespaceDirector.getNamespace().getAllDefinedVFS();
+ List vfsCollection = Namespace.getInstance().getAllDefinedVFS();
for (VirtualFSInterface vfs : vfsCollection) {
if (!vfsListString.equals("")) {
vfsListString += Constants.VFS_LIST_SEPARATOR;
diff --git a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_2.java b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_2.java
index f65a927f7..1d8604961 100644
--- a/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_2.java
+++ b/src/main/java/it/grid/storm/namespace/remote/resource/VirtualFSResourceCompat_1_2.java
@@ -19,7 +19,7 @@
import com.google.common.collect.Lists;
-import it.grid.storm.namespace.NamespaceDirector;
+import it.grid.storm.namespace.Namespace;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.VirtualFSInterface;
import it.grid.storm.namespace.model.MappingRule;
@@ -44,7 +44,7 @@ public class VirtualFSResourceCompat_1_2 {
public String listVFS() {
log.info("Serving VFS resource listing");
- List vfsCollection = NamespaceDirector.getNamespace().getAllDefinedVFS();
+ List vfsCollection = Namespace.getInstance().getAllDefinedVFS();
List encodedVFSs = Lists.newArrayList();
vfsCollection.forEach(vfs -> {
try {
diff --git a/src/main/java/it/grid/storm/persistence/impl/mysql/PtGChunkDAOMySql.java b/src/main/java/it/grid/storm/persistence/impl/mysql/PtGChunkDAOMySql.java
index c7d76a65c..d254e5a35 100644
--- a/src/main/java/it/grid/storm/persistence/impl/mysql/PtGChunkDAOMySql.java
+++ b/src/main/java/it/grid/storm/persistence/impl/mysql/PtGChunkDAOMySql.java
@@ -47,7 +47,7 @@
import com.google.common.collect.Sets;
import it.grid.storm.ea.StormEA;
-import it.grid.storm.namespace.NamespaceDirector;
+import it.grid.storm.namespace.Namespace;
import it.grid.storm.namespace.NamespaceException;
import it.grid.storm.namespace.StoRI;
import it.grid.storm.namespace.naming.SURL;
@@ -975,7 +975,7 @@ public synchronized Collection transitExpiredSRM_FILE_PINNED() {
expiredSurlList.add(surl);
StoRI stori;
try {
- stori = NamespaceDirector.getNamespace().resolveStoRIbySURL(surl);
+ stori = Namespace.getInstance().resolveStoRIbySURL(surl);
} catch (Throwable e) {
log.error("Invalid SURL {} cannot release the pin. {}: {}", surlEntry.getKey(),
e.getClass().getCanonicalName(), e.getMessage(), e);
diff --git a/src/main/java/it/grid/storm/rest/RestServer.java b/src/main/java/it/grid/storm/rest/RestServer.java
index 4b9af0416..89ea24e7a 100644
--- a/src/main/java/it/grid/storm/rest/RestServer.java
+++ b/src/main/java/it/grid/storm/rest/RestServer.java
@@ -52,6 +52,7 @@
import it.grid.storm.namespace.remote.resource.VirtualFSResourceCompat_1_1;
import it.grid.storm.namespace.remote.resource.VirtualFSResourceCompat_1_2;
import it.grid.storm.rest.auth.RestTokenFilter;
+import it.grid.storm.rest.info.namespace.NamespaceInfoEndpoint;
import it.grid.storm.rest.metadata.Metadata;
import it.grid.storm.tape.recalltable.providers.TapeRecallTOListMessageBodyWriter;
import it.grid.storm.tape.recalltable.resources.TaskResource;
@@ -112,15 +113,16 @@ private void configure() {
resourceConfig.register(TasksResource.class);
resourceConfig.register(TasksCardinality.class);
resourceConfig.register(TapeRecallTOListMessageBodyWriter.class);
- resourceConfig.register(AuthorizationResource.class);
- resourceConfig.register(AuthorizationResourceCompat_1_0.class);
- resourceConfig.register(VirtualFSResource.class);
- resourceConfig.register(VirtualFSResourceCompat_1_0.class);
- resourceConfig.register(VirtualFSResourceCompat_1_1.class);
- resourceConfig.register(VirtualFSResourceCompat_1_2.class);
- resourceConfig.register(StormEAResource.class);
+// resourceConfig.register(AuthorizationResource.class);
+// resourceConfig.register(AuthorizationResourceCompat_1_0.class);
+// resourceConfig.register(VirtualFSResource.class);
+// resourceConfig.register(VirtualFSResourceCompat_1_0.class);
+// resourceConfig.register(VirtualFSResourceCompat_1_1.class);
+// resourceConfig.register(VirtualFSResourceCompat_1_2.class);
+ resourceConfig.register(NamespaceInfoEndpoint.class);
+// resourceConfig.register(StormEAResource.class);
resourceConfig.register(Metadata.class);
- resourceConfig.register(Ping.class);
+// resourceConfig.register(Ping.class);
resourceConfig.register(SpaceStatusResource.class);
/* JSON POJO support: */
resourceConfig.register(JacksonFeature.class);
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/NamespaceInfoEndpoint.java b/src/main/java/it/grid/storm/rest/info/namespace/NamespaceInfoEndpoint.java
new file mode 100644
index 000000000..6901ce0aa
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/NamespaceInfoEndpoint.java
@@ -0,0 +1,55 @@
+package it.grid.storm.rest.info.namespace;
+
+import static java.io.File.separatorChar;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+
+import java.io.IOException;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+
+import it.grid.storm.config.Configuration;
+import it.grid.storm.rest.info.namespace.model.Namespace;
+
+@Path("/info/namespace")
+public class NamespaceInfoEndpoint {
+
+ private Namespace info;
+
+ public NamespaceInfoEndpoint() throws JsonParseException, JsonMappingException, IOException {
+
+ buildNamespace();
+ }
+
+ private void buildNamespace() throws JsonParseException, JsonMappingException, IOException {
+
+ Configuration config = Configuration.getInstance();
+ String configurationDir = config.getConfigurationDir().getAbsolutePath();
+ String namespaceFileName = config.getNamespaceConfigFilename();
+ String namespaceAbsoluteFilePath = getNamespaceFileAbsolutePath(configurationDir, namespaceFileName);
+
+ // read JSON from namespace.xml
+ XmlMapper xmlMapper = new XmlMapper();
+ info = xmlMapper.readValue(namespaceAbsoluteFilePath, Namespace.class);
+ }
+
+ @GET
+ @Produces(APPLICATION_JSON)
+ public Namespace getNamespace() {
+
+ return info;
+ }
+
+ private static String getNamespaceFileAbsolutePath(String configurationDir, String namespaceFileName) {
+
+ if (configurationDir.charAt(configurationDir.length() - 1) != separatorChar) {
+ configurationDir += Character.toString(separatorChar);
+ }
+ return configurationDir + namespaceFileName;
+ }
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/AccessLatency.java b/src/main/java/it/grid/storm/rest/info/namespace/model/AccessLatency.java
new file mode 100644
index 000000000..3497d527b
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/AccessLatency.java
@@ -0,0 +1,6 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum AccessLatency {
+
+ online, nearline, offline
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/AclEntry.java b/src/main/java/it/grid/storm/rest/info/namespace/model/AclEntry.java
new file mode 100644
index 000000000..6a939f3c4
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/AclEntry.java
@@ -0,0 +1,34 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class AclEntry {
+
+ private String groupName;
+ private PermissionType permissions;
+
+ @JsonProperty("groupName")
+ public String getGroupName() {
+ return groupName;
+ }
+
+ @JsonProperty("groupName")
+ public void setGroupName(String groupName) {
+ this.groupName = groupName;
+ }
+
+ @JsonProperty("permissions")
+ public PermissionType getPermissions() {
+ return permissions;
+ }
+
+ @JsonProperty("permissions")
+ public void setPermissions(PermissionType permissions) {
+ this.permissions = permissions;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/AclMode.java b/src/main/java/it/grid/storm/rest/info/namespace/model/AclMode.java
new file mode 100644
index 000000000..de77df459
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/AclMode.java
@@ -0,0 +1,6 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum AclMode {
+
+ AoT, JiT
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/ApproachableRule.java b/src/main/java/it/grid/storm/rest/info/namespace/model/ApproachableRule.java
new file mode 100644
index 000000000..ae8e13b2b
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/ApproachableRule.java
@@ -0,0 +1,56 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class ApproachableRule {
+
+ private String name;
+ private Subject subjects;
+ private String approachableFs;
+ private Boolean anonymousHttpRead;
+
+ @JsonProperty("name")
+ public String getName() {
+ return name;
+ }
+
+ @JsonProperty("name")
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @JsonProperty("subjects")
+ public Subject getSubjects() {
+ return subjects;
+ }
+
+ @JsonProperty("subjects")
+ public void setSubjects(Subject subjects) {
+ this.subjects = subjects;
+ }
+
+ @JsonProperty("approachableFs")
+ public String getApproachableFs() {
+ return approachableFs;
+ }
+
+ @JsonProperty("approachable-fs")
+ public void setApproachableFs(String approachableFs) {
+ this.approachableFs = approachableFs;
+ }
+
+ @JsonProperty("anonymousHttpRead")
+ public Boolean getAnonymousHttpRead() {
+ return anonymousHttpRead;
+ }
+
+ @JsonProperty("anonymous-http-read")
+ public void setAnonymousHttpRead(Boolean anonymousHttpRead) {
+ this.anonymousHttpRead = anonymousHttpRead;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/BalanceStrategy.java b/src/main/java/it/grid/storm/rest/info/namespace/model/BalanceStrategy.java
new file mode 100644
index 000000000..35e31311a
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/BalanceStrategy.java
@@ -0,0 +1,19 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum BalanceStrategy {
+
+ ROUND_ROBIN("round-robin"), RANDOM("random"), WEIGHT("weight"), SMART_ROUND_ROBIN("smart-rr");
+
+ private String value;
+
+ private BalanceStrategy(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Capabilities.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Capabilities.java
new file mode 100644
index 000000000..a988136ab
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Capabilities.java
@@ -0,0 +1,69 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class Capabilities {
+
+ private AclMode aclMode;
+ private List defaultAcl;
+ private List quota;
+ private List transProt;
+ private Pool pool;
+
+ @JsonProperty("aclMode")
+ public AclMode getAclMode() {
+ return aclMode;
+ }
+
+ @JsonProperty("aclMode")
+ public void setAclMode(AclMode aclMode) {
+ this.aclMode = aclMode;
+ }
+
+ @JsonProperty("defaultAcl")
+ public List getDefaultAcl() {
+ return defaultAcl;
+ }
+
+ @JsonProperty("default-acl")
+ public void setDefaultAcl(List defaultAcl) {
+ this.defaultAcl = defaultAcl;
+ }
+
+ @JsonProperty("quota")
+ public List getQuota() {
+ return quota;
+ }
+
+ @JsonProperty("quota")
+ public void setQuota(List quota) {
+ this.quota = quota;
+ }
+
+ @JsonProperty("transferProtocols")
+ public List getTransProt() {
+ return transProt;
+ }
+
+ @JsonProperty("trans-prot")
+ public void setTransProt(List transProt) {
+ this.transProt = transProt;
+ }
+
+ @JsonProperty("pool")
+ public Pool getPool() {
+ return pool;
+ }
+
+ @JsonProperty("pool")
+ public void setPool(Pool pool) {
+ this.pool = pool;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/DefaultAcl.java b/src/main/java/it/grid/storm/rest/info/namespace/model/DefaultAcl.java
new file mode 100644
index 000000000..b90e9b04e
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/DefaultAcl.java
@@ -0,0 +1,25 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class DefaultAcl {
+
+ private List aclEntry;
+
+ @JsonProperty("aclEntries")
+ public List getAclEntry() {
+ return aclEntry;
+ }
+
+ @JsonProperty("acl-entry")
+ public void setAclEntry(List aclEntry) {
+ this.aclEntry = aclEntry;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/ExpirationMode.java b/src/main/java/it/grid/storm/rest/info/namespace/model/ExpirationMode.java
new file mode 100644
index 000000000..1602f000a
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/ExpirationMode.java
@@ -0,0 +1,6 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum ExpirationMode {
+
+ neverExpire, warnWhenExpire, releaseWhenExpire
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Filesystem.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Filesystem.java
new file mode 100644
index 000000000..1a2e46d68
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Filesystem.java
@@ -0,0 +1,122 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class Filesystem {
+
+ private String name;
+ private FilesystemType fsType;
+ private String spaceTokenDescription;
+ private StorageClass storageClass;
+ private String root;
+ private FilesystemDriver filesystemDriver;
+ private SpacesystemDriver spacesystemDriver;
+ private Object storageAreaAuthz;
+ private Properties properties;
+ private Capabilities capabilities;
+
+ @JsonProperty("name")
+ public String getName() {
+ return name;
+ }
+
+ @JsonProperty("name")
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @JsonProperty("fsType")
+ public FilesystemType getFsType() {
+ return fsType;
+ }
+
+ @JsonProperty("fs_type")
+ public void setFsType(FilesystemType fsType) {
+ this.fsType = fsType;
+ }
+
+ @JsonProperty("spaceToken")
+ public String getSpaceTokenDescription() {
+ return spaceTokenDescription;
+ }
+
+ @JsonProperty("space-token-description")
+ public void setSpaceTokenDescription(String spaceTokenDescription) {
+ this.spaceTokenDescription = spaceTokenDescription;
+ }
+
+ @JsonProperty("storageClass")
+ public StorageClass getStorageClass() {
+ return storageClass;
+ }
+
+ @JsonProperty("storage-class")
+ public void setStorageClass(StorageClass storageClass) {
+ this.storageClass = storageClass;
+ }
+
+ @JsonProperty("rootPath")
+ public String getRoot() {
+ return root;
+ }
+
+ @JsonProperty("root")
+ public void setRoot(String root) {
+ this.root = root;
+ }
+
+ @JsonProperty("filesystemDriver")
+ public FilesystemDriver getFilesystemDriver() {
+ return filesystemDriver;
+ }
+
+ @JsonProperty("filesystem-driver")
+ public void setFilesystemDriver(FilesystemDriver filesystemDriver) {
+ this.filesystemDriver = filesystemDriver;
+ }
+
+ @JsonProperty("spacesystemDriver")
+ public SpacesystemDriver getSpacesystemDriver() {
+ return spacesystemDriver;
+ }
+
+ @JsonProperty("spacesystem-driver")
+ public void setSpacesystemDriver(SpacesystemDriver spacesystemDriver) {
+ this.spacesystemDriver = spacesystemDriver;
+ }
+
+ @JsonProperty("storageAreaAuthz")
+ public Object getStorageAreaAuthz() {
+ return storageAreaAuthz;
+ }
+
+ @JsonProperty("storage-area-authz")
+ public void setStorageAreaAuthz(Object storageAreaAuthz) {
+ this.storageAreaAuthz = storageAreaAuthz;
+ }
+
+ @JsonProperty("properties")
+ public Properties getProperties() {
+ return properties;
+ }
+
+ @JsonProperty("properties")
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ @JsonProperty("capabilities")
+ public Capabilities getCapabilities() {
+ return capabilities;
+ }
+
+ @JsonProperty("capabilities")
+ public void setCapabilities(Capabilities capabilities) {
+ this.capabilities = capabilities;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/FilesystemDriver.java b/src/main/java/it/grid/storm/rest/info/namespace/model/FilesystemDriver.java
new file mode 100644
index 000000000..4861dff11
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/FilesystemDriver.java
@@ -0,0 +1,23 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum FilesystemDriver {
+
+ POSIX_FS("it.grid.storm.filesystem.swig.posixfs"),
+ GPSF("it.grid.storm.filesystem.swig.gpfs"),
+ GPFS23("it.grid.storm.filesystem.swig.gpfs23"),
+ XFS("it.grid.storm.filesystem.swig.xfs"),
+ TEST("it.grid.storm.filesystem.swig.test");
+
+ private String value;
+
+ private FilesystemDriver(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/FilesystemType.java b/src/main/java/it/grid/storm/rest/info/namespace/model/FilesystemType.java
new file mode 100644
index 000000000..8f3ab7623
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/FilesystemType.java
@@ -0,0 +1,6 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum FilesystemType {
+
+ ext3, gpfs, xfs
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/MappingRule.java b/src/main/java/it/grid/storm/rest/info/namespace/model/MappingRule.java
new file mode 100644
index 000000000..44910f5c6
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/MappingRule.java
@@ -0,0 +1,44 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class MappingRule {
+
+ private String name;
+ private String stfnRoot;
+ private String mappedFs;
+
+ @JsonProperty("name")
+ public String getName() {
+ return name;
+ }
+
+ @JsonProperty("name")
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @JsonProperty("stfnRoot")
+ public String getStfnRoot() {
+ return stfnRoot;
+ }
+
+ @JsonProperty("stfn-root")
+ public void setStfnRoot(String stfnRoot) {
+ this.stfnRoot = stfnRoot;
+ }
+
+ @JsonProperty("mappedFs")
+ public String getMappedFs() {
+ return mappedFs;
+ }
+
+ @JsonProperty("mapped-fs")
+ public void setMappedFs(String mappedFs) {
+ this.mappedFs = mappedFs;
+ }
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Member.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Member.java
new file mode 100644
index 000000000..c962f2009
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Member.java
@@ -0,0 +1,35 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class Member {
+
+ private Integer memberId;
+ private Integer weight;
+
+ @JsonProperty("memberId")
+ public Integer getMemberId() {
+ return memberId;
+ }
+
+ @JsonProperty("member-id")
+ public void setMemberId(Integer memberId) {
+ this.memberId = memberId;
+ }
+
+ @JsonProperty("weight")
+ public Integer getWeight() {
+ return weight;
+ }
+
+ @JsonProperty("weight")
+ public void setWeight(Integer weight) {
+ this.weight = weight;
+ }
+
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Namespace.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Namespace.java
new file mode 100644
index 000000000..c38e7db08
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Namespace.java
@@ -0,0 +1,57 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties({"noNamespaceSchemaLocation"})
+public class Namespace {
+
+ private String version;
+ private List filesystems;
+ private List mappingRules;
+ private List approachableRules;
+
+ @JsonProperty("version")
+ public String getVersion() {
+ return version;
+ }
+
+ @JsonProperty("version")
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ @JsonProperty("filesystems")
+ public List getFilesystems() {
+ return filesystems;
+ }
+
+ @JsonProperty("filesystems")
+ public void setFilesystems(List filesystems) {
+ this.filesystems = filesystems;
+ }
+
+ @JsonProperty("mappingRules")
+ public List getMappingRules() {
+ return mappingRules;
+ }
+
+ @JsonProperty("mapping-rules")
+ public void setMappingRules(List mappingRules) {
+ this.mappingRules = mappingRules;
+ }
+
+ @JsonProperty("approachableRules")
+ public List getApproachableRules() {
+ return approachableRules;
+ }
+
+ @JsonProperty("approachable-rules")
+ public void setApproachableRules(List approachableRules) {
+ this.approachableRules = approachableRules;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/PermissionType.java b/src/main/java/it/grid/storm/rest/info/namespace/model/PermissionType.java
new file mode 100644
index 000000000..d92ab41c3
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/PermissionType.java
@@ -0,0 +1,6 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum PermissionType {
+
+ R, W, RW;
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Pool.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Pool.java
new file mode 100644
index 000000000..395712893
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Pool.java
@@ -0,0 +1,36 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class Pool {
+
+ private BalanceStrategy balanceStrategy;
+ private List members;
+
+ @JsonProperty("balanceStrategy")
+ public BalanceStrategy getBalanceStrategy() {
+ return balanceStrategy;
+ }
+
+ @JsonProperty("balance-strategy")
+ public void setBalanceStrategy(BalanceStrategy balanceStrategy) {
+ this.balanceStrategy = balanceStrategy;
+ }
+
+ @JsonProperty("members")
+ public List getMembers() {
+ return members;
+ }
+
+ @JsonProperty("members")
+ public void setMembers(List members) {
+ this.members = members;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Properties.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Properties.java
new file mode 100644
index 000000000..2202839c7
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Properties.java
@@ -0,0 +1,66 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class Properties {
+
+ private RetentionPolicy retentionPolicy;
+ private AccessLatency accessLatency;
+ private ExpirationMode expirationMode;
+ private TotalOnlineSize totalOnlineSize;
+ private TotalNearLineSize totalNearlineSize;
+
+ @JsonProperty("retentionPolicy")
+ public RetentionPolicy getRetentionPolicy() {
+ return retentionPolicy;
+ }
+
+ @JsonProperty("RetentionPolicy")
+ public void setRetentionPolicy(RetentionPolicy retentionPolicy) {
+ this.retentionPolicy = retentionPolicy;
+ }
+
+ @JsonProperty("accessLatency")
+ public AccessLatency getAccessLatency() {
+ return accessLatency;
+ }
+
+ @JsonProperty("AccessLatency")
+ public void setAccessLatency(AccessLatency accessLatency) {
+ this.accessLatency = accessLatency;
+ }
+
+ @JsonProperty("expirationMode")
+ public ExpirationMode getExpirationMode() {
+ return expirationMode;
+ }
+
+ @JsonProperty("ExpirationMode")
+ public void setExpirationMode(ExpirationMode expirationMode) {
+ this.expirationMode = expirationMode;
+ }
+
+ @JsonProperty("totalOnlineSize")
+ public TotalOnlineSize getTotalOnlineSize() {
+ return totalOnlineSize;
+ }
+
+ @JsonProperty("TotalOnlineSize")
+ public void setTotalOnlineSize(TotalOnlineSize totalOnlineSize) {
+ this.totalOnlineSize = totalOnlineSize;
+ }
+
+ @JsonProperty("totalNearlineSize")
+ public TotalNearLineSize getTotalNearlineSize() {
+ return totalNearlineSize;
+ }
+
+ @JsonProperty("TotalNearlineSize")
+ public void setTotalNearlineSize(TotalNearLineSize totalNearlineSize) {
+ this.totalNearlineSize = totalNearlineSize;
+ }
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Prot.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Prot.java
new file mode 100644
index 000000000..8aa30486c
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Prot.java
@@ -0,0 +1,67 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonInclude(Include.NON_NULL)
+public class Prot {
+
+ private String name;
+ private Integer id;
+ private String schema;
+ private String host;
+ private Integer port;
+
+ @JsonProperty("name")
+ public String getName() {
+ return name;
+ }
+
+ @JsonProperty("name")
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @JsonProperty("id")
+ public Integer getId() {
+ return id;
+ }
+
+ @JsonProperty("id")
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ @JsonProperty("schema")
+ public String getSchema() {
+ return schema;
+ }
+
+ @JsonProperty("schema")
+ public void setSchema(String schema) {
+ this.schema = schema;
+ }
+
+ @JsonProperty("host")
+ public String getHost() {
+ return host;
+ }
+
+ @JsonProperty("host")
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ @JsonProperty("port")
+ public Integer getPort() {
+ return port;
+ }
+
+ @JsonProperty("port")
+ public void setPort(Integer port) {
+ this.port = port;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Protocol.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Protocol.java
new file mode 100644
index 000000000..3fdb46569
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Protocol.java
@@ -0,0 +1,21 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+
+@JsonPropertyOrder({"id", "schema", "hostname", "port"})
+public class Protocol {
+
+ @JacksonXmlProperty(isAttribute = true, localName = "name")
+ String name;
+
+ @JacksonXmlProperty(localName = "id")
+ Integer id;
+ @JacksonXmlProperty(localName = "schema")
+ String schema;
+ @JacksonXmlProperty(localName = "hostname")
+ String hostname;
+ @JacksonXmlProperty(localName = "port")
+ Integer port;
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Quota.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Quota.java
new file mode 100644
index 000000000..a8c7d98a2
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Quota.java
@@ -0,0 +1,45 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class Quota {
+
+ private Boolean enabled;
+ private String device;
+ private Object quotaElement;
+
+ @JsonProperty("enabled")
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ @JsonProperty("enabled")
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ @JsonProperty("device")
+ public String getDevice() {
+ return device;
+ }
+
+ @JsonProperty("device")
+ public void setDevice(String device) {
+ this.device = device;
+ }
+
+ @JsonProperty("quotaElement")
+ public Object getQuotaElement() {
+ return quotaElement;
+ }
+
+ @JsonProperty("quotaElement")
+ public void setQuotaElement(Object quotaElement) {
+ this.quotaElement = quotaElement;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/RetentionPolicy.java b/src/main/java/it/grid/storm/rest/info/namespace/model/RetentionPolicy.java
new file mode 100644
index 000000000..5c03fb44d
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/RetentionPolicy.java
@@ -0,0 +1,5 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum RetentionPolicy {
+ custodial, output, replica
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/SpacesystemDriver.java b/src/main/java/it/grid/storm/rest/info/namespace/model/SpacesystemDriver.java
new file mode 100644
index 000000000..ae36d2914
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/SpacesystemDriver.java
@@ -0,0 +1,22 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum SpacesystemDriver {
+
+ GPFS_SPACESYSTEM("it.grid.storm.filesystem.GPFSSpaceSystem"),
+ MOCK_SPACESYSTEM("it.grid.storm.filesystem.MockSpaceSystem"),
+ XFS_SPACESYSTEM("it.grid.storm.filesystem.XFSSpaceSystem");
+
+ private String value;
+
+ private SpacesystemDriver(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+}
+
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/StorageClass.java b/src/main/java/it/grid/storm/rest/info/namespace/model/StorageClass.java
new file mode 100644
index 000000000..1749198e3
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/StorageClass.java
@@ -0,0 +1,6 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum StorageClass {
+
+ T0D0, T0D1, T1D1, T1D0
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/Subject.java b/src/main/java/it/grid/storm/rest/info/namespace/model/Subject.java
new file mode 100644
index 000000000..8c7047610
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/Subject.java
@@ -0,0 +1,34 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_NULL)
+public class Subject {
+
+ private String dn;
+ private String voName;
+
+ @JsonProperty("dn")
+ public String getDn() {
+ return dn;
+ }
+
+ @JsonProperty("dn")
+ public void setDn(String dn) {
+ this.dn = dn;
+ }
+
+ @JsonProperty("voName")
+ public String getVoName() {
+ return voName;
+ }
+
+ @JsonProperty("vo-name")
+ public void setVoName(String voName) {
+ this.voName = voName;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/TotalNearLineSize.java b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalNearLineSize.java
new file mode 100644
index 000000000..965f2eb59
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalNearLineSize.java
@@ -0,0 +1,34 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+
+@JsonDeserialize(using = TotalNearLineSizeDeserializer.class)
+@JsonInclude(Include.NON_NULL)
+public class TotalNearLineSize {
+
+ private UnitType unit;
+ private Long value;
+
+ @JsonProperty("unit")
+ public UnitType getUnit() {
+ return unit;
+ }
+
+ @JsonProperty("unit")
+ public void setUnit(UnitType unit) {
+ this.unit = unit;
+ }
+
+ @JsonProperty("value")
+ public Long getValue() {
+ return value;
+ }
+
+ @JsonProperty("value")
+ public void setValue(Long value) {
+ this.value = value;
+ }
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/TotalNearLineSizeDeserializer.java b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalNearLineSizeDeserializer.java
new file mode 100644
index 000000000..3ac823426
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalNearLineSizeDeserializer.java
@@ -0,0 +1,44 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+
+public class TotalNearLineSizeDeserializer extends StdDeserializer {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ protected TotalNearLineSizeDeserializer() {
+ this(null);
+ }
+
+ protected TotalNearLineSizeDeserializer(Class> vc) {
+ super(vc);
+ }
+
+ @Override
+ public TotalNearLineSize deserialize(JsonParser jp, DeserializationContext ctxt)
+ throws IOException, JsonProcessingException {
+
+ TotalNearLineSize result = new TotalNearLineSize();
+ JsonNode node = jp.getCodec().readTree(jp);
+ // unit is optional
+ JsonNode unitNode = node.get("unit");
+ if (unitNode != null) {
+ result.setUnit(UnitType.valueOf(unitNode.asText()));
+ } else {
+ result.setUnit(UnitType.TB);
+ }
+ // value is required
+ result.setValue(node.get("").asLong());
+ return result;
+ }
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/TotalOnlineSize.java b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalOnlineSize.java
new file mode 100644
index 000000000..1719a9034
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalOnlineSize.java
@@ -0,0 +1,47 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+
+@JsonDeserialize(using = TotalOnlineSizeDeserializer.class)
+@JsonInclude(Include.NON_NULL)
+public class TotalOnlineSize {
+
+ private UnitType unit;
+ private Boolean limitedSize;
+ private Long value;
+
+ @JsonProperty("unit")
+ public UnitType getUnit() {
+ return unit;
+ }
+
+ @JsonProperty("unit")
+ public void setUnit(UnitType unit) {
+ this.unit = unit;
+ }
+
+ @JsonProperty("limitedSize")
+ public Boolean getLimitedSize() {
+ return limitedSize;
+ }
+
+ @JsonProperty("limited-size")
+ public void setLimitedSize(Boolean limitedSize) {
+ this.limitedSize = limitedSize;
+ }
+
+ @JsonProperty("value")
+ public Long getValue() {
+ return value;
+ }
+
+ @JsonProperty("value")
+ public void setValue(Long value) {
+ this.value = value;
+ }
+
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/TotalOnlineSizeDeserializer.java b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalOnlineSizeDeserializer.java
new file mode 100644
index 000000000..c389db372
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/TotalOnlineSizeDeserializer.java
@@ -0,0 +1,46 @@
+package it.grid.storm.rest.info.namespace.model;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+
+public class TotalOnlineSizeDeserializer extends StdDeserializer {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ protected TotalOnlineSizeDeserializer() {
+ this(null);
+ }
+
+ protected TotalOnlineSizeDeserializer(Class> vc) {
+ super(vc);
+ }
+
+ @Override
+ public TotalOnlineSize deserialize(JsonParser jp, DeserializationContext ctxt)
+ throws IOException, JsonProcessingException {
+
+ TotalOnlineSize result = new TotalOnlineSize();
+ JsonNode node = jp.getCodec().readTree(jp);
+ // unit is optional
+ JsonNode unitNode = node.get("unit");
+ if (unitNode != null) {
+ result.setUnit(UnitType.valueOf(unitNode.asText()));
+ } else {
+ result.setUnit(UnitType.TB);
+ }
+ // limited size is required
+ result.setLimitedSize(node.get("limited-size").asBoolean());
+ // value is required
+ result.setValue(node.get("").asLong());
+ return result;
+ }
+
+}
diff --git a/src/main/java/it/grid/storm/rest/info/namespace/model/UnitType.java b/src/main/java/it/grid/storm/rest/info/namespace/model/UnitType.java
new file mode 100644
index 000000000..d392c1307
--- /dev/null
+++ b/src/main/java/it/grid/storm/rest/info/namespace/model/UnitType.java
@@ -0,0 +1,6 @@
+package it.grid.storm.rest.info.namespace.model;
+
+public enum UnitType {
+
+ Byte, KB, MB, GB, TB
+}
diff --git a/src/main/java/it/grid/storm/rest/metadata/Metadata.java b/src/main/java/it/grid/storm/rest/metadata/Metadata.java
index 4e1905454..0e25c7d42 100644
--- a/src/main/java/it/grid/storm/rest/metadata/Metadata.java
+++ b/src/main/java/it/grid/storm/rest/metadata/Metadata.java
@@ -5,17 +5,6 @@
import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import it.grid.storm.namespace.NamespaceDirector;
-import it.grid.storm.namespace.NamespaceException;
-import it.grid.storm.namespace.NamespaceInterface;
-import it.grid.storm.rest.metadata.model.StoriMetadata;
-import it.grid.storm.rest.metadata.service.ResourceNotFoundException;
-import it.grid.storm.rest.metadata.service.ResourceService;
-import it.grid.storm.rest.metadata.service.StoriMetadataService;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.File;
import javax.ws.rs.GET;
@@ -24,6 +13,17 @@
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import it.grid.storm.namespace.Namespace;
+import it.grid.storm.namespace.NamespaceException;
+import it.grid.storm.namespace.NamespaceInterface;
+import it.grid.storm.rest.metadata.model.StoriMetadata;
+import it.grid.storm.rest.metadata.service.ResourceNotFoundException;
+import it.grid.storm.rest.metadata.service.ResourceService;
+import it.grid.storm.rest.metadata.service.StoriMetadataService;
+
@Path("/metadata")
public class Metadata {
@@ -33,7 +33,7 @@ public class Metadata {
public Metadata() throws NamespaceException {
- NamespaceInterface namespace = NamespaceDirector.getNamespace();
+ NamespaceInterface namespace = Namespace.getInstance();
metadataService = new StoriMetadataService(
new ResourceService(namespace.getAllDefinedVFS(), namespace.getAllDefinedMappingRules()));
}
diff --git a/src/main/java/it/grid/storm/srm/types/ArrayOfTSpaceToken.java b/src/main/java/it/grid/storm/srm/types/ArrayOfTSpaceToken.java
index 4191fb964..f6d18cdd0 100644
--- a/src/main/java/it/grid/storm/srm/types/ArrayOfTSpaceToken.java
+++ b/src/main/java/it/grid/storm/srm/types/ArrayOfTSpaceToken.java
@@ -26,7 +26,6 @@
package it.grid.storm.srm.types;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -47,23 +46,7 @@ public class ArrayOfTSpaceToken implements Serializable {
public static final String PNAME_ARRAYOFSPACETOKENS = "arrayOfSpaceTokens";
- ArrayList tokenList;
-
- /**
- * Constructor that requires a String. If it is null, then an
- * InvalidArrayOfTTSpaceTokenAttributeException is thrown.
- */
- public ArrayOfTSpaceToken(TSpaceToken[] tokenArray)
- throws InvalidArrayOfTSpaceTokenAttributeException {
-
- if (tokenArray == null)
- throw new InvalidArrayOfTSpaceTokenAttributeException(tokenArray);
- }
-
- public ArrayOfTSpaceToken() {
-
- tokenList = new ArrayList();
- }
+ private List tokenList = Lists.newArrayList();
public static ArrayOfTSpaceToken decode(Map inputParam, String fieldName)
throws InvalidArrayOfTSpaceTokenAttributeException {
@@ -94,13 +77,12 @@ public static ArrayOfTSpaceToken decode(Map inputParam, String f
public TSpaceToken getTSpaceToken(int i) {
- return (TSpaceToken) tokenList.get(i);
+ return tokenList.get(i);
}
public TSpaceToken[] getTSpaceTokenArray() {
- TSpaceToken[] array = new TSpaceToken[0];
- return tokenList.toArray(array);
+ return tokenList.toArray(new TSpaceToken[0]);
}
public void addTSpaceToken(TSpaceToken token) {
@@ -124,7 +106,7 @@ public void encode(Map outputParam, String name) {
List