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/02/24 22:34:05 UTC

[isis] 06/07: ISIS 1880 replace URL with new LocalResourcePath

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

commit c9780e40d0058184bc8fba6c4f8d0ab8f05ca8f3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Feb 24 23:31:54 2018 +0100

    ISIS 1880 replace URL with new LocalResourcePath
---
 .../applib/services/layout/Object_openRestApi.java | 16 ++++++++-----
 .../services/swagger/SwaggerServiceMenu.java       | 19 +++++-----------
 .../services/swagger/SwaggerServiceDefault.java    | 26 +++++++++-------------
 3 files changed, 27 insertions(+), 34 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_openRestApi.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_openRestApi.java
index 1c4e1ef..5576854 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_openRestApi.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/Object_openRestApi.java
@@ -16,8 +16,6 @@
  */
 package org.apache.isis.applib.services.layout;
 
-import java.net.MalformedURLException;
-
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Contributed;
@@ -25,8 +23,11 @@ import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Mixin;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.internal.resources._Resource;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.services.swagger.SwaggerService;
+import org.apache.isis.applib.value.LocalResourcePath;
 
 @Mixin(method="act")
 public class Object_openRestApi {
@@ -50,15 +51,20 @@ public class Object_openRestApi {
             position = ActionLayout.Position.PANEL_DROPDOWN
     )
     @MemberOrder(name = "datanucleusIdLong", sequence = "750.1")
-    public java.net.URL act() throws MalformedURLException {
+    public LocalResourcePath act() {
         Bookmark bookmark = bookmarkService.bookmarkFor(object);
-        return new java.net.URL(String.format(
-                "http:///restful/objects/%s/%s",
+        
+        return new LocalResourcePath(String.format(
+                "/%s/objects/%s/%s",
+            	_Resource.getRestfulPathIfAny(),
                 bookmark.getObjectType(),
                 bookmark.getIdentifier()));
     }
 
     @javax.inject.Inject
     BookmarkService bookmarkService;
+    
+    @javax.inject.Inject
+    SwaggerService swaggerService;
 
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java b/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
index 8652226..8744aca 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
@@ -16,9 +16,6 @@
  */
 package org.apache.isis.applib.services.swagger;
 
-import java.net.MalformedURLException;
-import java.net.URL;
-
 import org.apache.isis.applib.IsisApplibModule;
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
@@ -29,7 +26,9 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.internal.resources._Resource;
 import org.apache.isis.applib.value.Clob;
+import org.apache.isis.applib.value.LocalResourcePath;
 
 
 @DomainService(
@@ -58,12 +57,10 @@ public class SwaggerServiceMenu {
             cssClassFa = "fa-external-link"
     )
     @MemberOrder(sequence="500.600.1")
-    public URL openSwaggerUi() throws MalformedURLException {
-        return new java.net.URL("http:///swagger-ui/index.html");
+    public LocalResourcePath openSwaggerUi() {
+        return new LocalResourcePath("/swagger-ui/index.html");
     }
 
-
-
     public static class OpenRestApiDomainEvent extends ActionDomainEvent {}
 
     @Action(
@@ -75,12 +72,10 @@ public class SwaggerServiceMenu {
             cssClassFa = "fa-external-link"
     )
     @MemberOrder(sequence="500.600.2")
-    public URL openRestApi() throws MalformedURLException {
-        return new java.net.URL("http:///restful/");
+    public LocalResourcePath openRestApi() {
+    	return new LocalResourcePath("/"+_Resource.getRestfulPathIfAny()+"/");
     }
 
-
-
     public static class DownloadSwaggerSpecDomainEvent extends ActionDomainEvent {}
 
     @Action(
@@ -112,8 +107,6 @@ public class SwaggerServiceMenu {
         return SwaggerService.Format.YAML;
     }
 
-
-
     @javax.inject.Inject
     SwaggerService swaggerService;
 }    
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
index 192b5f6..e0b4f9d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java
@@ -25,10 +25,11 @@ import javax.annotation.PostConstruct;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.internal.base._NullSafe;
+import org.apache.isis.applib.internal.resources._Resource;
 import org.apache.isis.applib.services.swagger.SwaggerService;
 import org.apache.isis.core.metamodel.services.swagger.internal.SwaggerSpecGenerator;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.webapp.WebAppContextSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,21 +50,15 @@ public class SwaggerServiceDefault implements SwaggerService {
     @PostConstruct
     public void init(final Map<String,String> properties) {
     	
-    	final String webappContextPath = 
-    			getPropertyElse(properties, WebAppContextSupport.WEB_APP_CONTEXT_PATH, "/");
+    	// ----------------------------------------------------------------------------------------------------------
+    	// TODO [ahuber] this initialization must be done once before accessing _Resource.prependContextPathIfPresent
+    	// could be done anywhere during bootstrapping
+    	final String restfulPath = 
+    			_NullSafe.getOrDefault(properties, KEY_RESTFUL_BASE_PATH, KEY_RESTFUL_BASE_PATH_DEFAULT);
+    	_Resource.putRestfulPath(restfulPath); 
+    	// ----------------------------------------------------------------------------------------------------------
     	
-    	final String basePath = 
-    			getPropertyElse(properties, KEY_RESTFUL_BASE_PATH, KEY_RESTFUL_BASE_PATH_DEFAULT);
-    	
-    	this.basePath = WebAppContextSupport.prependContextPathIfPresent(webappContextPath, basePath);
-    }
-
-    static String getPropertyElse(final Map<String, String> properties, final String key, final String dflt) {
-        String basePath = properties.get(key);
-        if(basePath == null) {
-            basePath = dflt;
-        }
-        return basePath;
+    	this.basePath = _Resource.prependContextPathIfPresent(restfulPath);
     }
 
     @Programmatic
@@ -77,7 +72,6 @@ public class SwaggerServiceDefault implements SwaggerService {
         return swaggerSpec;
     }
 
-
     @javax.inject.Inject
     SpecificationLoader specificationLoader;
 

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