You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/05/14 18:01:16 UTC

[isis] branch master updated: ISIS-1946 minor cleanup, adding java-doc to clarify path-resource usage

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 64ce6ad  ISIS-1946 minor cleanup, adding java-doc to clarify path-resource usage
64ce6ad is described below

commit 64ce6adfc7dc957b9af951f72809f2bca11cc610
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 14 20:01:06 2018 +0200

    ISIS-1946 minor cleanup, adding java-doc to clarify path-resource usage
---
 .../isis/applib/internal/resources/_Resource.java  | 29 +++++++++++----
 .../applib/internal/resources/_Resource_Path.java  | 42 ++++++++--------------
 .../wicket/viewer/IsisWicketApplication.java       |  2 +-
 3 files changed, 39 insertions(+), 34 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource.java b/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource.java
index 74ab7bb..193f78d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource.java
@@ -57,21 +57,29 @@ public final class _Resource {
 	public static String loadAsString(Class<?> contextClass, String resourceName, Charset charset) throws IOException {
 		final InputStream is = load(contextClass, resourceName);
 		return _Strings.ofBytes(_Bytes.of(is), charset);
-		
-		// legacy of guava
-//		final URL url = Resources.getResource(contextClass, resourceName);
-//      return Resources.toString(url, charset);
 	}
 	
 	// -- CONTEXT PATH RESOURCE
 	
+	/**
+	 * @return context-path resource (if any) as stored previously by {@link #putContextPathIfPresent(String)}  
+	 */
 	public final static String getContextPathIfAny() {
 		final _Resource_ContextPath resource = _Context.getIfAny(_Resource_ContextPath.class);
 		return resource!=null ? resource.getContextPath() : null;
 	}
 
-	public final static void putContextPath(String contextPath) {
-		_Context.put(_Resource_ContextPath.class, new _Resource_ContextPath(contextPath), false);
+	/**
+	 * Stores the {@code contextPath} as an application scoped resource-object.
+	 * If {@code contextPath} is null or an empty String, no path-resource object is stored. 
+	 * @param contextPath
+	 * @throws IllegalArgumentException if an non-empty contextPath evaluates to being 
+	 * equivalent to the root-path '/'
+	 */
+	public final static void putContextPathIfPresent(String contextPath) {
+		if(!_Strings.isEmpty(contextPath)) {
+			_Context.put(_Resource_ContextPath.class, new _Resource_ContextPath(contextPath), false);	
+		} 
 	}
 	
 	public final static String prependContextPathIfPresent(String path) {
@@ -95,11 +103,19 @@ public final class _Resource {
 
 	// -- RESTFUL PATH RESOURCE
 
+	/**
+	 * @return restful-path resource (if any) as stored previously by {@link #putRestfulPath(String)}  
+	 */
 	public final static String getRestfulPathIfAny() {
 		final _Resource_RestfulPath resource = _Context.getIfAny(_Resource_RestfulPath.class);
 		return resource!=null ? resource.getRestfulPath() : null;
 	}
 
+	/**
+	 * Stores the {@code restfulPath} as an application scoped resource-object. 
+	 * @param restfulPath
+	 * @throws IllegalArgumentException if the restfulPath is empty or is the root-path.
+	 */
 	public final static void putRestfulPath(String restfulPath) {
 		_Context.put(_Resource_RestfulPath.class, new _Resource_RestfulPath(restfulPath), false);
 	}
@@ -131,4 +147,5 @@ public final class _Resource {
         return name;
     }
 
+
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource_Path.java b/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource_Path.java
index fd047d6..3b2a183 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource_Path.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/resources/_Resource_Path.java
@@ -25,6 +25,11 @@ import org.apache.isis.applib.internal.base._Strings;
 /**
  * 
  * package private abstract helper class to store application scoped path objects
+ * <br/><br/>
+ * 
+ * Implementation Note: Empty paths are represented by absence of this resource, 
+ * hence empty paths are not allowed (will throw an IllegalArgumentException on 
+ * attempted construction)   
  *
  */
 abstract class _Resource_Path {
@@ -34,21 +39,15 @@ abstract class _Resource_Path {
 	protected abstract String resourceName();
 
 	public _Resource_Path(String contextPath) {
-
-// as it stands, this code fails when running under org.apache.isis.WebServer, because the contextPath passed in is just ""
-// But it's not obvious to me why an empty contextPath is not allowed; a value of "/" would be trimmed down to "" anyway.
-// Therefore relaxing the logic.
-//
-//		if(_Strings.isEmpty(contextPath))
-//			throw new IllegalArgumentException(resourceName()+" can not be empty");
-//
-//		contextPath = contextPath.trim();
-//
-//		if(_Strings.isEmpty(contextPath))
-//			throw new IllegalArgumentException(resourceName()+" can not be empty");
-
-		contextPath = defaultIfEmpty(contextPath);
-
+		
+		if(_Strings.isEmpty(contextPath))
+			throw new IllegalArgumentException(resourceName()+" can not be empty");
+		
+		contextPath = contextPath.trim();
+		
+		if(_Strings.isEmpty(contextPath))
+			throw new IllegalArgumentException(resourceName()+" can not be empty");
+		
 		while(contextPath.startsWith("/")) {
 			contextPath = contextPath.substring(1);
 		}
@@ -64,16 +63,5 @@ abstract class _Resource_Path {
 		
 		this.path = contextPath;
 	}
-
-	private static String defaultIfEmpty(final String contextPath) {
-		if(contextPath == null) {
-			return "/";
-		}
-		final String trimmedContextPath = contextPath.trim();
-		if(_Strings.isEmpty(trimmedContextPath)) {
-			return "/";
-		}
-		return trimmedContextPath;
-	}
-
+	
 }
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 5da7cc6..9cc168b 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -352,7 +352,7 @@ public class IsisWicketApplication
             final IsisConfigurationBuilder isisConfigurationBuilder = obtainConfigBuilder();
             isisConfigurationBuilder.addDefaultConfigurationResourcesAndPrimers();
 
-            _Resource.putContextPath(getServletContext().getContextPath());
+            _Resource.putContextPathIfPresent(getServletContext().getContextPath());
 
             final IsisConfigurationDefault configuration = isisConfigurationBuilder.getConfiguration();
 

-- 
To stop receiving notification emails like this one, please contact
ahuber@apache.org.