You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sj...@apache.org on 2015/10/15 16:02:25 UTC

[04/16] incubator-brooklyn git commit: Test ServiceTypeResolver usage

Test ServiceTypeResolver usage


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

Branch: refs/heads/master
Commit: 09e9f1acf1f307b0da556ae96a3d2b7f3ef91c03
Parents: 883feae
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Wed Oct 14 17:07:43 2015 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Wed Oct 14 17:11:07 2015 +0300

----------------------------------------------------------------------
 .../resolve/AbstractServiceSpecResolver.java    |  2 +-
 .../BrooklynComponentTemplateResolver.java      | 12 ++---
 .../service/ServiceTypeResolverAdaptor.java     | 10 +++-
 .../camp/brooklyn/AbstractYamlTest.java         |  2 +-
 .../brooklyn/catalog/CatalogYamlEntityTest.java |  2 +-
 .../service/ServiceTypeResolverTest.java        | 39 ++++++++++++++
 .../service/TestServiceTypeResolver.java        | 54 ++++++++++++++++++++
 ...lyn.spi.creation.service.ServiceTypeResolver | 19 +++++++
 8 files changed, 126 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/core/src/main/java/org/apache/brooklyn/core/resolve/AbstractServiceSpecResolver.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/resolve/AbstractServiceSpecResolver.java b/core/src/main/java/org/apache/brooklyn/core/resolve/AbstractServiceSpecResolver.java
index 705ed0e..78c796a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/resolve/AbstractServiceSpecResolver.java
+++ b/core/src/main/java/org/apache/brooklyn/core/resolve/AbstractServiceSpecResolver.java
@@ -51,7 +51,7 @@ public abstract class AbstractServiceSpecResolver implements ServiceSpecResolver
     }
 
     protected String getLocalType(String type) {
-        return Strings.removeFromStart(type, prefix);
+        return Strings.removeFromStart(type, prefix).trim();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
index 9c0e9c6..381b76b 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java
@@ -179,15 +179,9 @@ public class BrooklynComponentTemplateResolver {
 
     private List<ServiceSpecResolver> getServiceTypeResolverOverrides() {
         List<ServiceSpecResolver> overrides = new ArrayList<>();
-        if (type.indexOf(':') != -1) {
-            String prefix = Splitter.on(":").splitToList(type).get(0);
-            ServiceLoader<ServiceTypeResolver> loader = ServiceLoader.load(ServiceTypeResolver.class,
-                    mgmt.getCatalogClassLoader());
-            for (ServiceTypeResolver resolver : loader) {
-               if (prefix.equals(resolver.getTypePrefix())) {
-                   overrides.add(new ServiceTypeResolverAdaptor(this, resolver));
-               }
-            }
+        ServiceLoader<ServiceTypeResolver> loader = ServiceLoader.load(ServiceTypeResolver.class, mgmt.getCatalogClassLoader());
+        for (ServiceTypeResolver resolver : loader) {
+           overrides.add(new ServiceTypeResolverAdaptor(this, resolver));
         }
         return overrides;
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java
index 7b52977..17f4e2b 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.camp.brooklyn.spi.creation.service;
 
 import java.util.Set;
 
+import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynComponentTemplateResolver;
 import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext;
@@ -28,7 +29,7 @@ import org.apache.brooklyn.core.resolve.ServiceSpecResolver;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import groovy.xml.Entity;
+import com.google.common.base.Splitter;
 
 @SuppressWarnings("deprecation")
 public class ServiceTypeResolverAdaptor extends AbstractServiceSpecResolver {
@@ -44,7 +45,12 @@ public class ServiceTypeResolverAdaptor extends AbstractServiceSpecResolver {
 
     @Override
     public boolean accepts(String type, BrooklynClassLoadingContext loader) {
-        return true;
+        if (type.indexOf(':') != -1) {
+            String prefix = Splitter.on(":").splitToList(type).get(0);
+            return prefix.equals(serviceTypeResolver.getTypePrefix());
+        } else {
+            return false;
+        }
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
index 8b7a04e..8a858cf 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
@@ -144,7 +144,7 @@ public abstract class AbstractYamlTest {
         return app;
     }
 
-    protected EntitySpec<?> createEntitySpec(String... yaml) {
+    protected EntitySpec<?> createAppEntitySpec(String... yaml) {
         return EntityManagementUtils.createEntitySpecForApplication(mgmt(), joinLines(yaml));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
index f0c6e90..b62ba60 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
@@ -786,7 +786,7 @@ public class CatalogYamlEntityTest extends AbstractYamlTest {
 
     @Test
     public void testHardcodedCatalog() throws Exception {
-        createEntitySpec(
+        createAppEntitySpec(
                 "services:",
                 "- type: cluster",
                 "- type: vanilla",

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverTest.java
new file mode 100644
index 0000000..cbaccf0
--- /dev/null
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.camp.brooklyn.spi.creation.service;
+
+import static org.testng.Assert.assertEquals;
+
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.camp.brooklyn.AbstractYamlTest;
+import org.apache.brooklyn.entity.stock.BasicEntity;
+import org.testng.annotations.Test;
+
+
+public class ServiceTypeResolverTest extends AbstractYamlTest {
+    
+    @Test
+    public void testAddCatalogItemVerySimple() throws Exception {
+        EntitySpec<?> spec = createAppEntitySpec(
+                "services:",
+                "- type: \"test-resolver:" + BasicEntity.class.getName() + "\"");
+        assertEquals(spec.getChildren().get(0).getFlags().get("resolver"), TestServiceTypeResolver.class);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/TestServiceTypeResolver.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/TestServiceTypeResolver.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/TestServiceTypeResolver.java
new file mode 100644
index 0000000..7fd6d8a
--- /dev/null
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/TestServiceTypeResolver.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.camp.brooklyn.spi.creation.service;
+
+import org.apache.brooklyn.api.catalog.CatalogItem;
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynComponentTemplateResolver;
+import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
+import org.apache.brooklyn.util.text.Strings;
+
+@SuppressWarnings("deprecation")
+public class TestServiceTypeResolver implements ServiceTypeResolver {
+
+    private static final String PREFIX = "test-resolver";
+
+    @Override
+    public String getTypePrefix() {
+        return PREFIX;
+    }
+
+    @Override
+    public String getBrooklynType(String serviceType) {
+        return Strings.removeFromStart(serviceType, PREFIX + ":");
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public CatalogItem<Entity, EntitySpec<?>> getCatalogItem(BrooklynComponentTemplateResolver resolver, String serviceType) {
+        return (CatalogItem<Entity, EntitySpec<?>>) CatalogUtils.getCatalogItemOptionalVersion(resolver.getManagementContext(), getBrooklynType(serviceType));
+    }
+
+    @Override
+    public <T extends Entity> void decorateSpec(BrooklynComponentTemplateResolver resolver, EntitySpec<T> spec) {
+        spec.configure("resolver", TestServiceTypeResolver.class);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/09e9f1ac/usage/camp/src/test/resources/META-INF/services/org.apache.brooklyn.camp.brooklyn.spi.creation.service.ServiceTypeResolver
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/resources/META-INF/services/org.apache.brooklyn.camp.brooklyn.spi.creation.service.ServiceTypeResolver b/usage/camp/src/test/resources/META-INF/services/org.apache.brooklyn.camp.brooklyn.spi.creation.service.ServiceTypeResolver
new file mode 100644
index 0000000..3bba7fb
--- /dev/null
+++ b/usage/camp/src/test/resources/META-INF/services/org.apache.brooklyn.camp.brooklyn.spi.creation.service.ServiceTypeResolver
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+org.apache.brooklyn.camp.brooklyn.spi.creation.service.TestServiceTypeResolver
\ No newline at end of file