You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by gr...@apache.org on 2014/11/17 13:57:25 UTC

[1/2] incubator-brooklyn git commit: Added a predicate that can correctly match the type of an application or entity spec.

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master de1d8bcc0 -> a6f85a810


Added a predicate that can correctly match the type of an application or entity spec.

This fixes issue BROOKLYN-89. The new predicate correctly handles the symbolic-name:version format of the type. The method BrooklynCatalog.loadClassByType(String, Class) is called either with either the symbolic-name or the symbolic-name:version format. It will detect the format it is passed and use the appropriate predicate.


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

Branch: refs/heads/master
Commit: fb296f47752611453fa0f53099572b0820546b39
Parents: de1d8bc
Author: Matt Champion <ma...@gmail.com>
Authored: Mon Nov 17 10:29:49 2014 +0000
Committer: Matt Champion <ma...@gmail.com>
Committed: Mon Nov 17 12:17:42 2014 +0000

----------------------------------------------------------------------
 .../brooklyn/catalog/CatalogPredicates.java     | 23 ++++++++++++++++++++
 .../catalog/internal/BasicBrooklynCatalog.java  | 11 +++++++++-
 2 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/fb296f47/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/CatalogPredicates.java b/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
index 25b943e..4777522 100644
--- a/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
+++ b/core/src/main/java/brooklyn/catalog/CatalogPredicates.java
@@ -29,6 +29,7 @@ import brooklyn.policy.PolicySpec;
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
 
 public class CatalogPredicates {
 
@@ -101,4 +102,26 @@ public class CatalogPredicates {
             }
         };
     }
+
+    /**
+     * Returns a predicate that matches the type of an application or entity. This is a string composed of the Java class
+     * name and the version separated by a colon.
+     *
+     * @param typeName The type
+     * @return The predicate
+     */
+    public static <T,SpecT> Predicate<CatalogItem<T,SpecT>> typeName(final String typeName) {
+        final int javaClassEnd = typeName.lastIndexOf(':');
+        final String javaClassName = typeName.substring(0, javaClassEnd);
+        final String version = typeName.substring(javaClassEnd + 1);
+        final Predicate<? super String> javaClassPredicate = Predicates.equalTo(javaClassName);
+        final Predicate<? super String> versionPredicate = Predicates.equalTo(version);
+
+        return new Predicate<CatalogItem<T,SpecT>>() {
+            @Override
+            public boolean apply(@Nullable CatalogItem<T,SpecT> item) {
+                return (item != null) && javaClassPredicate.apply(item.getJavaType()) && versionPredicate.apply(item.getVersion());
+            }
+        };
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/fb296f47/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
index 674b380..4c53ecf 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -402,7 +402,16 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
     /** @deprecated since 0.7.0 use {@link #createSpec(CatalogItem)} */
     @Deprecated
     public <T> Class<? extends T> loadClassByType(String typeName, Class<T> typeClass) {
-        Iterable<CatalogItem<Object,Object>> resultL = getCatalogItems(CatalogPredicates.javaType(Predicates.equalTo(typeName)));
+        // Automated tests and manual tests suggests that typeName is either symbolic-name or symbolic-name:version so
+        // detect which has been passed in.
+        final Iterable<CatalogItem<Object,Object>> resultL;
+        if (typeName.indexOf(':') == -1) {
+            resultL = getCatalogItems(CatalogPredicates.javaType(Predicates.equalTo(typeName)));
+        }
+        else {
+            resultL = getCatalogItems(CatalogPredicates.typeName(typeName));
+        }
+
         if (Iterables.isEmpty(resultL)) throw new NoSuchElementException("Unable to find catalog item for type "+typeName);
         CatalogItem<?,?> resultI = resultL.iterator().next();
         if (log.isDebugEnabled() && Iterables.size(resultL)>1) {


[2/2] incubator-brooklyn git commit: This closes #338

Posted by gr...@apache.org.
This closes #338

* github/pr/338:
  Added a predicate that can correctly match the type of an application or entity spec.


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

Branch: refs/heads/master
Commit: a6f85a810deb1fd2b5082a71e6f41087d1a1f05d
Parents: de1d8bc fb296f4
Author: Andrew Kennedy <gr...@apache.org>
Authored: Mon Nov 17 13:57:20 2014 +0100
Committer: Andrew Kennedy <gr...@apache.org>
Committed: Mon Nov 17 13:57:20 2014 +0100

----------------------------------------------------------------------
 .../brooklyn/catalog/CatalogPredicates.java     | 23 ++++++++++++++++++++
 .../catalog/internal/BasicBrooklynCatalog.java  | 11 +++++++++-
 2 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------