Skip to content
This repository has been archived by the owner on Oct 20, 2023. It is now read-only.

Commit

Permalink
Allow empty port for WPS
Browse files Browse the repository at this point in the history
Base URL is now created centralized in the WPSConfig
  • Loading branch information
bpross-52n committed Mar 15, 2016
1 parent e961cea commit 05c00e8
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 90 deletions.
15 changes: 14 additions & 1 deletion 52n-wps-commons/src/main/java/org/n52/wps/commons/WPSConfig.java
Expand Up @@ -38,12 +38,12 @@
import org.apache.xmlbeans.XmlException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.n52.wps.FormatDocument.Format;
import org.n52.wps.GeneratorDocument.Generator;
import org.n52.wps.ParserDocument.Parser;
import org.n52.wps.PropertyDocument.Property;
import org.n52.wps.RepositoryDocument.Repository;
import org.n52.wps.ServerDocument;
import org.n52.wps.WPSConfigurationDocument;
import org.n52.wps.impl.WPSConfigurationDocumentImpl.WPSConfigurationImpl;

Expand Down Expand Up @@ -425,6 +425,19 @@ public static String getConfigDir() {
String dir = getConfigPath();
return dir.substring(0, dir.lastIndexOf(CONFIG_FILE_NAME));
}

public static String getServerBaseURL(){
ServerDocument.Server server = WPSConfig.getInstance().getWPSConfig().getServer();

String hostName = server.getHostname();
String hostPort = server.getHostport();
String webAppPath = server.getWebappPath();

hostPort = (hostPort != null && !hostPort.isEmpty()) ? ":" + hostPort : "";
webAppPath = (webAppPath != null && !webAppPath.isEmpty()) ? "/" + webAppPath : "";

return String.format(server.getProtocol() + "://%s%s%s", hostName, hostPort, webAppPath);
}

public static abstract class WPSConfigFileStrategy {
public Optional<File> find(Optional<ServletConfig> servletConfig) {
Expand Down
Expand Up @@ -37,12 +37,13 @@
import java.sql.Timestamp;
import java.util.Calendar;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.n52.wps.ServerDocument;
import javax.xml.ws.Response;

import org.n52.wps.DatabaseDocument.Database;
import org.n52.wps.PropertyDocument.Property;
import org.n52.wps.commons.WPSConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* An anstract-layer to the databases.
Expand Down Expand Up @@ -390,16 +391,7 @@ public File lookupResponseAsFile(String id) {

public String getBaseResultURL() {

ServerDocument.Server server = WPSConfig.getInstance().getWPSConfig().getServer();

String hostName = server.getHostname();
String hostPort = server.getHostport();
String webAppPath = server.getWebappPath();

hostPort = (hostPort != null && !hostPort.isEmpty()) ? ":" + hostPort : "";
webAppPath = (webAppPath != null && !webAppPath.isEmpty()) ? "/" + webAppPath : "";

return String.format(server.getProtocol() + "://%s%s%s/RetrieveResultServlet?id=", hostName, hostPort, webAppPath);
return WPSConfig.getServerBaseURL() + "/RetrieveResultServlet?id=";
}

}
Expand Up @@ -113,8 +113,6 @@ public synchronized static IDatabase getInstance() {

protected final File baseDirectory;

protected final String baseResultURL;

protected final boolean gzipComplexValues;

protected final Object storeResponseSerialNumberLock;
Expand All @@ -128,11 +126,7 @@ protected FlatFileDatabase() {
Server server = WPSConfig.getInstance().getWPSConfig().getServer();
Database database = server.getDatabase();
PropertyUtil propertyUtil = new PropertyUtil(database.getPropertyArray(), KEY_DATABASE_ROOT);

// NOTE: The hostname and port are hard coded as part of the 52n framework design/implementation.
baseResultURL = String.format(server.getProtocol() + "://%s:%s/%s/RetrieveResultServlet?id=",
server.getHostname(), server.getHostport(), server.getWebappPath());
LOGGER.info("Using \"{}\" as base URL for results", baseResultURL);
LOGGER.info("Using \"{}\" as base URL for results", getBaseResultURL());

String baseDirectoryPath = propertyUtil.extractString(KEY_DATABASE_PATH, DEFAULT_DATABASE_PATH);
baseDirectory = new File(baseDirectoryPath);
Expand Down
Expand Up @@ -28,7 +28,6 @@
*/
package org.n52.wps.server.database;

import com.google.common.base.Joiner;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
Expand Down Expand Up @@ -57,18 +56,21 @@
import java.util.TimerTask;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import javax.naming.NamingException;

import org.apache.commons.io.IOUtils;
import org.n52.wps.ServerDocument;
import org.n52.wps.commons.PropertyUtil;
import org.n52.wps.commons.WPSConfig;
import static org.n52.wps.server.database.AbstractDatabase.getDatabaseProperties;
import org.n52.wps.server.database.connection.ConnectionHandler;
import org.n52.wps.server.database.connection.DefaultConnectionHandler;
import org.n52.wps.server.database.connection.JNDIConnectionHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.base.Joiner;

/**
*Uses the Postgres database to store and retrieve data.
* @author isuftin (Ivan Suftin, USGS)
Expand Down
Expand Up @@ -614,7 +614,7 @@ private void executeGrassModuleStarter() {
bufWrite.close();
}
LOGGER.error("An error occured while executing the GRASS GIS process.");
throw new RuntimeException("An error occured while executing the GRASS GIS process. See the log under " + "http://" + host + ":" + hostPort+ "/" + WebProcessingService.WEBAPP_PATH + "/GRASS_LOGS/" + uuid + logFilename + " for more details.");
throw new RuntimeException("An error occured while executing the GRASS GIS process. See the log under " + WPSConfig.getServerBaseURL() + "/GRASS_LOGS/" + uuid + logFilename + " for more details.");
}

} catch (IOException e) {
Expand Down
16 changes: 3 additions & 13 deletions 52n-wps-io-geotools/src/main/java/org/n52/wps/io/GTHelper.java
Expand Up @@ -56,13 +56,10 @@

import javax.xml.namespace.QName;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.geotools.feature.NameImpl;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.referencing.CRS;
import org.n52.wps.ServerDocument.Server;
import org.n52.wps.commons.WPSConfig;
import org.opengis.feature.Feature;
import org.opengis.feature.Property;
Expand All @@ -75,6 +72,8 @@
import org.opengis.geometry.aggregate.MultiSurface;
import org.opengis.geometry.primitive.Curve;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
Expand Down Expand Up @@ -449,15 +448,6 @@ public static QName createGML2SchemaForFeatureType(SimpleFeatureType featureType
}

public static String storeSchema(String schema, String uuid) throws IOException {
Server server = WPSConfig.getInstance().getWPSConfig().getServer();
String protocol = server.getProtocol();
String hostname = server.getHostname();
String port = server.getHostport();
String webapp = server.getWebappPath();

LOGGER.debug("GTHelper hostname " + hostname);
LOGGER.debug("GTHelper port " + port);
LOGGER.debug("GTHelper webapp " + webapp);

String domain = WPSConfig.class.getProtectionDomain().getCodeSource().getLocation().getFile();

Expand Down Expand Up @@ -488,7 +478,7 @@ public static String storeSchema(String schema, String uuid) throws IOException
writer.flush();
writer.close();

String url = protocol+"://"+hostname+":"+port+"/"+webapp+"/schemas/"+ uuid+".xsd";
String url = WPSConfig.getServerBaseURL()+"/schemas/"+ uuid+".xsd";
return url;
}
}
Expand Down
20 changes: 5 additions & 15 deletions 52n-wps-r/src/main/java/org/n52/wps/server/r/R_Config.java
Expand Up @@ -40,7 +40,6 @@
import java.util.HashMap;
import java.util.List;

import org.n52.wps.ServerDocument.Server;
import org.n52.wps.commons.WPSConfig;
import org.n52.wps.server.ExceptionReport;
import org.n52.wps.server.WebProcessingService;
Expand Down Expand Up @@ -159,12 +158,12 @@ public String getConfigVariableFullPath(RWPSConfigVariables key) throws Exceptio

public URL getSessionInfoURL() throws MalformedURLException {
// FIXME implement service endpoint to retrieve r session information
return new URL(getUrlPathUpToWebapp() + "/not_supported");
return new URL(WPSConfig.getServerBaseURL() + "/not_supported");
}

// FIXME this should use generic WPS methods to get the URL
public String getResourceDirURL() {
String webapp = getUrlPathUpToWebapp();
String webapp = WPSConfig.getServerBaseURL();
String resourceDirectory = getResourceDirectory();

// important: this url should be appendable with a resource name, i.e. either end in "/" or "id="
Expand Down Expand Up @@ -196,23 +195,14 @@ public URL getScriptURL(String wkn) throws MalformedURLException, ExceptionRepor
return null;
}
else {
URL url = new URL(getUrlPathUpToWebapp() + "/" + f.toString().replace("\\", "/"));
URL url = new URL(WPSConfig.getServerBaseURL() + "/" + f.toString().replace("\\", "/"));
return url;
}
}

return null;
}

private String getUrlPathUpToWebapp() {
Server server = WPSConfig.getInstance().getWPSConfig().getServer();
String host = server.getHostname();
String port = server.getHostport();
String webapppath = server.getWebappPath();

return "http://" + host + ":" + port + "/" + webapppath;
}

public URL getOutputFileURL(String currentWorkdir, String filename) throws IOException {
// check if file exists
String path = currentWorkdir + "/" + filename;
Expand All @@ -222,7 +212,7 @@ public URL getOutputFileURL(String currentWorkdir, String filename) throws IOExc

// create URL
path = path.substring(WebProcessingService.BASE_DIR.length() + 1, path.length());
String urlString = getUrlPathUpToWebapp() + "/" + path;
String urlString = WPSConfig.getServerBaseURL() + "/" + path;

return new URL(urlString);
}
Expand Down Expand Up @@ -471,7 +461,7 @@ public boolean getEnableBatchStart() {
}

public URL getProcessDescriptionURL(String processWKN) {
String s = getUrlPathUpToWebapp() + "/WebProcessingService?Request=DescribeProcess&identifier=" + processWKN;
String s = WPSConfig.getServerBaseURL() + "/WebProcessingService?Request=DescribeProcess&identifier=" + processWKN;
try {
return new URL(s);
}
Expand Down
Expand Up @@ -31,7 +31,6 @@

import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
Expand Down Expand Up @@ -239,7 +238,7 @@ public static CapabilitiesDocument getInstance(boolean reload) throws XmlExcepti
* if the local host name can not be obtained
*/
private static void initSkeleton(CapabilitiesDocument skel) throws UnknownHostException {
ENDPOINT_URL = getEndpointURL();
ENDPOINT_URL = WPSConfig.getServerBaseURL() + "/" + WebProcessingService.SERVLET_PATH;
if (skel.getCapabilities() == null) {
skel.addNewCapabilities();
}
Expand Down Expand Up @@ -303,33 +302,6 @@ private static void initOperationsMetadata(CapabilitiesDocument skel, String end
}
}

/**
* Gets the endpoint URL of this service by checking the configuration file and the local host name.
*
* @return the endpoint URL
*
* @throws UnknownHostException
* if the local host name could not be resolved into an address
*/
private static String getEndpointURL() throws UnknownHostException {
WPSConfig config = WPSConfig.getInstance();
String protocol = config.getWPSConfig().getServer().getProtocol();
String host = config.getWPSConfig().getServer().getHostname();
String port = config.getWPSConfig().getServer().getHostport();
if (host == null) {
host = InetAddress.getLocalHost().getCanonicalHostName();
}

StringBuilder url = new StringBuilder();
url.append(protocol).append("://").append(host);
url.append(':').append(port).append('/');
if (WebProcessingService.WEBAPP_PATH != null && !WebProcessingService.WEBAPP_PATH.isEmpty()) {
url.append(WebProcessingService.WEBAPP_PATH).append('/');
}
url.append(WebProcessingService.SERVLET_PATH);
return url.toString();
}

/**
* Force a reload of the capabilities skeleton.
*
Expand Down
18 changes: 9 additions & 9 deletions 52n-wps-webapp/src/main/webapp/webAdmin/index.jsp
Expand Up @@ -785,18 +785,18 @@
<div id="Server_Settings">
<div id="editSave" style="float:right;"><img id="editImg" src="images/edit.png" onClick="editServerSettings()" style="cursor:pointer;" /></div>
<p>
<label for="Server-protocol">Server Protocol:</label><div id="editWarn" style="float: left;display: none; padding-right: 10px;"><img src="images/warn.png" /> Changes only after restart</div>
<input type="text" name="Server-protocol" value="testValue" readonly/>
<label for="Server-protocol">Server Protocol:</label>
<input type="text" name="Server-protocol" value="" readonly/>
<br style="clear:left;" />
</p>
<p>
<label for="Server-hostname">Server Host Name:</label><div id="editWarn" style="float: left;display: none; padding-right: 10px;"><img src="images/warn.png" /> Changes only after restart</div>
<input type="text" name="Server-hostname" value="testValue" readonly/>
<label for="Server-hostname">Server Host Name:</label>
<input type="text" name="Server-hostname" value="" readonly/>
<br style="clear:left;" />
</p>
<p>
<label for="Server-hostport">Server Host Port:</label><div id="editWarn" style="float: left;display: none; padding-right: 10px;"><img src="images/warn.png" /> Changes only after restart</div>
<input type="text" name="Server-hostport" value="testValue" readonly/>
<label for="Server-hostport">Server Host Port:</label>
<input type="text" name="Server-hostport" value="" readonly/>
<br style="clear:left;" />
</p>
<p>
Expand All @@ -805,15 +805,15 @@
</p>
<p>
<label for="Server-computationTimeoutMilliSeconds">Computation Timeout:</label>
<input type="text" name="Server-computationTimeoutMilliSeconds" value="testValue" readonly/>
<input type="text" name="Server-computationTimeoutMilliSeconds" value="" readonly/>
</p>
<p>
<label for="Server-cacheCapabilites">Cache Capabilities:</label>
<input type="text" name="Server-cacheCapabilites" value="boolean" readonly/>
</p>
<p>
<label for="Server-webappPath">Web app Path:</label><div id="editWarn" style="float: left;display: none; padding-right: 10px;"><img src="images/warn.png" /> Changes only after restart</div>
<input type="text" name="Server-webappPath" value="testValue" readonly/>
<label for="Server-webappPath">Web app Path:</label>
<input type="text" name="Server-webappPath" value="" readonly/>
<br style="clear:left;" />
</p>
<p>
Expand Down

0 comments on commit 05c00e8

Please sign in to comment.