diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..fa936d6
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..f0af028
--- /dev/null
+++ b/.project
@@ -0,0 +1,42 @@
+
+
+ uri-resolver
+
+
+
+
+
+ org.eclipse.wst.jsdt.core.javascriptValidator
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.wst.common.project.facet.core.builder
+
+
+
+
+ org.eclipse.wst.validation.validationbuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jem.workbench.JavaEMFNature
+ org.eclipse.wst.common.modulecore.ModuleCoreNature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+ org.eclipse.wst.common.project.facet.core.nature
+ org.eclipse.wst.jsdt.core.jsNature
+
+
diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope
new file mode 100644
index 0000000..b46b920
--- /dev/null
+++ b/.settings/.jsdtscope
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..ca7f8ec
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,7 @@
+#Tue Mar 12 14:16:46 CET 2013
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..feea7dd
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+#Tue Mar 12 14:16:46 CET 2013
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..e8e32dd
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,5 @@
+#Tue Mar 12 14:16:46 CET 2013
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..1d41732
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..32b6a42
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..502553f
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,59 @@
+
+ 4.0.0
+
+ maven-parent
+ org.gcube.tools
+ 1.0.0
+
+ org.gcube.datat.transfer
+ uri-resolver
+ 1.0.0-SNAPSHOT
+ war
+
+
+ junit
+ junit
+ 4.8.2
+ test
+
+
+ org.gcube.contentmanagement
+ storage-manager-wrapper
+ [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)
+
+
+
+ org.gcube.contentmanagement
+ storage-manager-core
+ [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)
+
+
+ slf4j-nop
+ org.slf4j
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 3.0.1
+
+
+ log4j
+ log4j
+ 1.2.16
+ test
+
+
+ org.slf4j
+ slf4j-log4j12
+ 1.6.4
+ test
+
+
+ commons-io
+ commons-io
+ 1.2
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java
new file mode 100644
index 0000000..ea00243
--- /dev/null
+++ b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java
@@ -0,0 +1,94 @@
+package org.gcube.datatransfer.resolver.http;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.IOUtils;
+import org.gcube.contentmanager.storageclient.model.protocol.smp.Handler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+
+/**
+ *
+ * @author andrea
+ *
+ */
+public class HttpResolver extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ /** The logger. */
+ private static final Logger logger = LoggerFactory.getLogger(HttpResolver.class);
+
+ public void init(ServletConfig conf) throws ServletException {
+
+ super.init(conf);
+
+ }
+
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws IOException {
+
+ logger.info("The http session id is: " + request.getSession().getId());
+ String uri = request.getParameter("smp-uri");
+
+ uri = uri.replace(" ","+");
+
+ logger.debug("URI = "+ uri);
+
+ try {
+
+ if (uri == null || uri.equals("")) {
+ // the document has not id - not found
+ response.sendError(404);
+ return;
+ }
+
+ OutputStream out = response.getOutputStream();
+ Handler.activateProtocol();
+ String name = "";
+ response.addHeader("content_name", name);
+ response.addHeader("Content-Name", name);
+
+ response.addHeader("content-disposition", "attachment; filename=" +name);
+ response.setContentType("unknown/unknown");
+
+ logger.info("About to get object");
+ URL url = new URL(uri);
+ URLConnection uc = null;
+ InputStream in = null;
+ try {
+ uc = ( URLConnection ) url.openConnection ( );
+ in = uc.getInputStream();
+ }
+ catch(Exception e){
+ e.printStackTrace();
+ }
+
+
+ IOUtils.copy(in, out);
+ logger.info("Printing outToString: " + out.toString());
+ out.flush();
+ out.close();
+ in.close();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("Exception:", e);
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
new file mode 100644
index 0000000..74ea2d7
--- /dev/null
+++ b/src/main/resources/log4j.properties
@@ -0,0 +1,12 @@
+# Set root category priority to WARN and its only appender to A1.
+log4j.rootCategory=DEBUG, A0
+
+log4j.appender.A0=org.apache.log4j.ConsoleAppender
+log4j.appender.A0.layout=org.apache.log4j.PatternLayout
+log4j.appender.A0.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p %c{2} [%t,%M:%L] %m%n
+
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern= %d{HH:mm:ss,SSS} %-5p %c{2} [%t,%M:%L] %m%n
+log4j.category.org.gcube=DEBUG,A1
+log4j.additivity.org.gcube=false
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..34bcc4e
--- /dev/null
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,18 @@
+
+
+http resolver
+
+
+ smp
+ smp
+ org.gcube.datatransfer.resolver.http.HttpResolver
+ true
+
+
+ smp
+ /smp
+
+
+
diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp
new file mode 100644
index 0000000..06abbbe
--- /dev/null
+++ b/src/main/webapp/index.jsp
@@ -0,0 +1,5 @@
+
+
+The SM URI resolver
+
+
diff --git a/src/test/org/gcube/datatransfer/uriresolver/test/TestURI.java b/src/test/org/gcube/datatransfer/uriresolver/test/TestURI.java
new file mode 100644
index 0000000..fa1cf8e
--- /dev/null
+++ b/src/test/org/gcube/datatransfer/uriresolver/test/TestURI.java
@@ -0,0 +1,37 @@
+package org.gcube.datatransfer.uriresolver.test;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import junit.framework.Assert;
+
+import org.apache.commons.io.IOUtils;
+import org.gcube.contentmanager.storageclient.model.protocol.smp.Handler;
+import org.junit.Test;
+
+public class TestURI {
+
+ @Test
+ public void testGetInputStreamFromSMP() throws IOException{
+ Handler.activateProtocol();
+ URL url = new URL("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y");
+ Assert.assertNotNull(url.openConnection().getInputStream());
+
+ }
+
+ @Test
+ public void testGetInputStreamFromHTTP() throws IOException{
+
+ URL url = new URL("http://localhost:8080/uri-resolver/smp?smp-uri=smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y");
+ FileOutputStream out = new FileOutputStream(new File("/Users/andrea/test1"));
+ InputStream in = url.openConnection().getInputStream();
+ IOUtils.copy(in, out);
+ out.close();
+ in.close();
+ }
+
+
+}