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(-)
----------------------------------------------------------------------