You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/10/22 21:14:56 UTC

[1/2] isis git commit: ISIS-1218: allow autoComplete to return Collection or Set

Repository: isis
Updated Branches:
  refs/heads/master da9321109 -> 9a632804f


ISIS-1218: allow autoComplete to return Collection<T> or Set<T>


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d4c5dbcf
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d4c5dbcf
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d4c5dbcf

Branch: refs/heads/master
Commit: d4c5dbcf55eb81661e981161b418b52d9747374d
Parents: da93211
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Oct 22 20:14:14 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Oct 22 20:14:14 2015 +0100

----------------------------------------------------------------------
 adocs/documentation/Gemfile.lock                 |  3 +++
 ...rg_methods_prefixes_manpage-autoComplete.adoc |  9 +++++++--
 ...ctionParameterAutoCompleteFacetViaMethod.java |  3 ---
 ...rameterAutoCompleteFacetViaMethodFactory.java | 19 +++++++++++--------
 4 files changed, 21 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/d4c5dbcf/adocs/documentation/Gemfile.lock
----------------------------------------------------------------------
diff --git a/adocs/documentation/Gemfile.lock b/adocs/documentation/Gemfile.lock
index 6a495d9..808cd9a 100644
--- a/adocs/documentation/Gemfile.lock
+++ b/adocs/documentation/Gemfile.lock
@@ -43,3 +43,6 @@ DEPENDENCIES
   tilt
   wdm (>= 0.1.0)
   webrick
+
+BUNDLED WITH
+   1.10.6

http://git-wip-us.apache.org/repos/asf/isis/blob/d4c5dbcf/adocs/documentation/src/main/asciidoc/guides/_rg_methods_prefixes_manpage-autoComplete.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rg_methods_prefixes_manpage-autoComplete.adoc b/adocs/documentation/src/main/asciidoc/guides/_rg_methods_prefixes_manpage-autoComplete.adoc
index 43b47a7..f91cd09 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rg_methods_prefixes_manpage-autoComplete.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rg_methods_prefixes_manpage-autoComplete.adoc
@@ -22,9 +22,11 @@ For an action parameter in (0-based) position _N_, and of type `T`, the signatur
 
 [source,java]
 ----
-public Collection<T> autoCompleteNXxx(String search) { ... }
+public List<T> autoCompleteNXxx(String search) { ... }
 ----
 
+It is also valid to return `T[]` or (from `1.10.0-SNAPSHOT onwards`) either `Set<T>` or `Collection<T>`.
+
 
 For example:
 
@@ -60,15 +62,18 @@ public class ShoppingCartItem {
 
 
 
+
+
 == Properties
 
 For a property of type `T`, the signature is:
 
 [source,java]
 ----
-public Collection<T> autoCompleteXxx(String search) { ... }
+public List<T> autoCompleteXxx(String search) { ... }
 ----
 
+(As for action parameters) it is also valid to return `T[]` or (from `1.10.0-SNAPSHOT onwards`) either `Set<T>` or `Collection<T>`.
 
 For example:
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d4c5dbcf/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 3ccd57d..1249e93 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -26,7 +26,6 @@ import java.util.List;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -95,8 +94,6 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
         final Class<?> parameterType = facetedMethodParameter.getType();
 
-        final AuthenticationSession authenticationSession = getAuthenticationSession();
-        final DeploymentCategory deploymentCategory = getDeploymentCategory();
         final List<ObjectAdapter> visibleAdapters =
                 ObjectAdapter.Util.visibleAdapters(
                         collectionAdapter,

http://git-wip-us.apache.org/repos/asf/isis/blob/d4c5dbcf/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 9edb76d..c9090d6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -21,7 +21,9 @@ package org.apache.isis.core.metamodel.facets.param.autocomplete.method;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
+import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -30,10 +32,10 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
 
 public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPrefixBasedFacetFactoryAbstract implements AdapterManagerAware {
 
@@ -73,10 +75,8 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
             final Class<?> paramType = params[i];
             final Class<?> arrayOfParamType = (Array.newInstance(paramType, 0)).getClass();
 
-            Method autoCompleteMethod = findAutoCompleteNumMethodReturning(processMethodContext, i, arrayOfParamType);
-            if (autoCompleteMethod == null) {
-                autoCompleteMethod = findAutoCompleteNumMethodReturning(processMethodContext, i, List.class);
-            }
+            final Class[] returnTypes = { arrayOfParamType, List.class, Set.class, Collection.class };
+            Method autoCompleteMethod = findAutoCompleteNumMethodReturning(processMethodContext, i, returnTypes);
             if (autoCompleteMethod == null) {
                 continue;
             }
@@ -92,13 +92,16 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
         }
     }
 
-    private Method findAutoCompleteNumMethodReturning(final ProcessMethodContext processMethodContext, final int i, final Class<?> paramType) {
+    private Method findAutoCompleteNumMethodReturning(
+            final ProcessMethodContext processMethodContext,
+            final int paramNum,
+            final Class<?>[] returnTypes) {
 
         final Class<?> cls = processMethodContext.getCls();
         final Method actionMethod = processMethodContext.getMethod();
         final String capitalizedName = StringExtensions.asCapitalizedName(actionMethod.getName());
-        final String name = MethodPrefixConstants.AUTO_COMPLETE_PREFIX + i + capitalizedName;
-        return MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, name, paramType, new Class[]{String.class});
+        final String name = MethodPrefixConstants.AUTO_COMPLETE_PREFIX + paramNum + capitalizedName;
+        return MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, name, returnTypes, new Class[]{String.class});
     }
 
     // ///////////////////////////////////////////////////////////////


[2/2] isis git commit: ISIS-1195: adding comments only to QueryResultsCache.

Posted by da...@apache.org.
ISIS-1195: adding comments only to QueryResultsCache.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/9a632804
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/9a632804
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/9a632804

Branch: refs/heads/master
Commit: 9a632804fcd07c79bb49f758ce5f97efeb2a88bd
Parents: d4c5dbc
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Oct 22 20:14:45 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Oct 22 20:14:45 2015 +0100

----------------------------------------------------------------------
 .../services/queryresultscache/QueryResultsCache.java    | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9a632804/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
index ed2330d..d6cd6af 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCache.java
@@ -142,9 +142,18 @@ public class QueryResultsCache {
             if(cacheValue != null) { 
                 return (T) cacheValue.getResult();
             }
-            // cache miss, so get the result, and cache
+
+            // cache miss, so get the result...
             T result = callable.call();
+
+            // ... and cache
+            //
+            // (it is possible that the callable just invoked might also have updated the cache, eg if there was
+            // some sort of recursion.  However, Map#put(...) is idempotent, so valid to call more than once.
+            //
+            // note: there's no need for thread-safety synchronization... remember that QueryResultsCache is @RequestScoped
             put(cacheKey, result);
+
             return result;
         } catch (Exception e) {
             throw new RuntimeException(e);