listKeywords) {
+ this.listKeywords = listKeywords;
+ }
+
+ public String getVersionWMS() {
+ return versionWMS;
+ }
+
+ public String getSetCrsWMS() {
+ return setCrsWMS;
+ }
+
+ public void setSetCrsWMS(String setCrsWMS) {
+ this.setCrsWMS = setCrsWMS;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("LayerItem [uuid=");
+ builder.append(uuid);
+ builder.append(", citationTitle=");
+ builder.append(citationTitle);
+ builder.append(", layerName=");
+ builder.append(layerName);
+ builder.append(", topicCategory=");
+ builder.append(topicCategory);
+ builder.append(", publicationDate=");
+ builder.append(publicationDate);
+ builder.append(", scopeCode=");
+ builder.append(scopeCode);
+ builder.append(", geoserverBaseUrlOnLineResource=");
+ builder.append(geoserverBaseUrlOnLineResource);
+ builder.append(", baseWmsServiceUrl=");
+ builder.append(baseWmsServiceUrl);
+ builder.append(", fullWmsUrlRequest=");
+ builder.append(fullWmsUrlRequest);
+ builder.append(", styles=");
+ builder.append(styles);
+ builder.append(", metaAbstract=");
+ builder.append(metaAbstract);
+ builder.append(", listKeywords=");
+ builder.append(listKeywords);
+ builder.append(", versionWMS=");
+ builder.append(versionWMS);
+ builder.append(", setCrsWMS=");
+ builder.append(setCrsWMS);
+ builder.append("]");
+ return builder.toString();
+ }
+
+
+
+}
diff --git a/src/main/java/org/gcube/datatransfer/resolver/gis/entity/ServerParameters.java b/src/main/java/org/gcube/datatransfer/resolver/gis/entity/ServerParameters.java
new file mode 100644
index 0000000..c448e3f
--- /dev/null
+++ b/src/main/java/org/gcube/datatransfer/resolver/gis/entity/ServerParameters.java
@@ -0,0 +1,89 @@
+package org.gcube.datatransfer.resolver.gis.entity;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
+ * @Oct 7, 2014
+ *
+ */
+public class ServerParameters implements Serializable{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2459971193655529274L;
+
+ protected String url;
+ protected String user;
+ protected String password;
+
+ public ServerParameters(){}
+
+ /**
+ * @param url
+ * @param user
+ * @param password
+ */
+ public ServerParameters(String url, String user, String password) {
+ this.url = url;
+ this.user = user;
+ this.password = password;
+ }
+
+ /**
+ * @return the url
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * @param url the url to set
+ */
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ /**
+ * @return the user
+ */
+ public String getUser() {
+ return user;
+ }
+
+ /**
+ * @param user the user to set
+ */
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ /**
+ * @return the password
+ */
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * @param password the password to set
+ */
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("ServerParameters [url=");
+ builder.append(url);
+ builder.append(", user=");
+ builder.append(user);
+ builder.append(", password=");
+ builder.append(password);
+ builder.append("]");
+ return builder.toString();
+ }
+}
diff --git a/src/main/java/org/gcube/datatransfer/resolver/gis/util/HttpRequestUtil.java b/src/main/java/org/gcube/datatransfer/resolver/gis/util/HttpRequestUtil.java
new file mode 100644
index 0000000..8e495cc
--- /dev/null
+++ b/src/main/java/org/gcube/datatransfer/resolver/gis/util/HttpRequestUtil.java
@@ -0,0 +1,110 @@
+package org.gcube.datatransfer.resolver.gis.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
+ * @Apr 26, 2013
+ *
+ */
+public class HttpRequestUtil {
+
+ private static final String SERVICE_EXCEPTION_REPORT = "ServiceExceptionReport"; //WMS Exception
+ private static final String OWS_EXCEPTION_REPORT = "ows:ExceptionReport"; //OWS Exception
+ private static final int CONNECTION_TIMEOUT = 1000;
+ public static Logger logger = LoggerFactory.getLogger(HttpRequestUtil.class);
+
+ public static boolean urlExists(String urlConn, boolean verifyIsWmsGeoserver) throws Exception {
+
+ URL url;
+ try {
+ url = new URL(urlConn);
+
+ URLConnection connection = url.openConnection();
+ connection.setConnectTimeout(CONNECTION_TIMEOUT);
+ connection.setReadTimeout(CONNECTION_TIMEOUT+CONNECTION_TIMEOUT);
+
+ logger.trace("open connection on: " + url);
+
+ // Cast to a HttpURLConnection
+ if (connection instanceof HttpURLConnection) {
+ HttpURLConnection httpConnection = (HttpURLConnection) connection;
+
+ httpConnection.setRequestMethod("GET");
+
+ int code = httpConnection.getResponseCode();
+
+ if(verifyIsWmsGeoserver)
+ return isGeoserver(httpConnection);
+
+ httpConnection.disconnect();
+
+ if (code == 200) {
+ return true;
+ }
+
+// logger.trace("result: "+result);
+
+ } else {
+ logger.error("error - not a http request!");
+ }
+
+ return false;
+
+ } catch (SocketTimeoutException e) {
+ logger.error("Error SocketTimeoutException with url " +urlConn);
+ throw new Exception("Error SocketTimeoutException");
+ } catch (MalformedURLException e) {
+ logger.error("Error MalformedURLException with url " +urlConn);
+ throw new Exception("Error MalformedURLException");
+ } catch (IOException e) {
+ logger.error("Error IOException with url " +urlConn);
+ throw new Exception("Error IOException");
+ }catch (Exception e) {
+ logger.error("Error Exception with url " +urlConn);
+ throw new Exception("Error Exception");
+ }
+ }
+
+
+ private static boolean isGeoserver(HttpURLConnection httpConnection) throws IOException{
+
+ BufferedReader rd = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
+ String line;
+ String result = "";
+
+ int code = httpConnection.getResponseCode();
+
+ if (code == 200) {
+ while ((line = rd.readLine()) != null) {
+ result += line;
+ }
+ }
+ else{
+ rd.close();
+ return false;
+ }
+ if(result.contains(OWS_EXCEPTION_REPORT) || result.contains(SERVICE_EXCEPTION_REPORT)){
+ rd.close();
+ return true;
+ }
+ rd.close();
+ return false;
+
+ }
+
+ public static void main(String[] args) throws Exception {
+ System.out.println(HttpRequestUtil.urlExists("http://geoserver2.d4science.research-infrastructures.eu/geoserver/wms", true));
+ }
+}
diff --git a/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java
index ba697c8..aa49430 100644
--- a/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java
+++ b/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java
@@ -7,7 +7,6 @@ import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;
-
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index 74ea2d7..0a48f18 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -8,5 +8,6 @@ log4j.appender.A0.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p %c{2} [%t,%M:%L
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=TRACE,A1
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
index 34bcc4e..15679f5 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -2,7 +2,7 @@
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
-http resolver
+ http resolver
smp
@@ -10,9 +10,23 @@
org.gcube.datatransfer.resolver.http.HttpResolver
true
-
+
+
+ gisResolver
+ gisResolver
+ org.gcube.datatransfer.resolver.gis.GisResolver
+ true
+
+
+
smp
/smp
+
+ gisResolver
+ /gis
+
+
+
diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp
index 06abbbe..7c2e970 100644
--- a/src/main/webapp/index.jsp
+++ b/src/main/webapp/index.jsp
@@ -1,5 +1,6 @@
The SM URI resolver
+See: URI Resolver gCube Wiki