Don't load old-style catalog items when "java:" prefix is used
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/e09ddb0c Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/e09ddb0c Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/e09ddb0c Branch: refs/heads/master Commit: e09ddb0ca23c432b5d0e89e6a9776f5d9bec510b Parents: 2bd6480 Author: Svetoslav Neykov <[email protected]> Authored: Wed Feb 25 16:32:17 2015 +0200 Committer: Svetoslav Neykov <[email protected]> Committed: Wed Feb 25 16:32:17 2015 +0200 ---------------------------------------------------------------------- .../BrooklynComponentTemplateResolver.java | 2 +- .../brooklyn/catalog/CatalogXmlVersionTest.java | 15 ++++++++++- .../camp/brooklyn/catalog/TestBasicApp.java | 27 ++++++++++++++++++++ .../camp/brooklyn/catalog/TestBasicAppImpl.java | 24 +++++++++++++++++ .../camp/src/test/resources/simple-catalog.xml | 4 +++ 5 files changed, 70 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e09ddb0c/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java index 416f2e8..05faed5 100644 --- a/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java +++ b/usage/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java @@ -222,7 +222,7 @@ public class BrooklynComponentTemplateResolver { private String getJavaType() { CatalogItem<Entity, EntitySpec<?>> item = getCatalogItem(); - if (item != null && item.getJavaType() != null) { + if (!isJavaTypePrefix() && item != null && item.getJavaType() != null) { return item.getJavaType(); } else { return getBrooklynType(); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e09ddb0c/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java index 5ae5493..cf1e211 100644 --- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java +++ b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java @@ -18,6 +18,7 @@ */ package io.brooklyn.camp.brooklyn.catalog; +import static org.testng.Assert.assertTrue; import io.brooklyn.camp.brooklyn.AbstractYamlTest; import org.testng.annotations.DataProvider; @@ -25,6 +26,7 @@ import org.testng.annotations.Test; import brooklyn.config.BrooklynProperties; import brooklyn.config.BrooklynServerConfig; +import brooklyn.entity.Entity; import brooklyn.management.internal.LocalManagementContext; import brooklyn.test.entity.LocalManagementContextForTests; @@ -50,10 +52,21 @@ public class CatalogXmlVersionTest extends AbstractYamlTest { @Test(dataProvider = "types") public void testXmlCatalogItem(String type) throws Exception { + startApp(type); + } + + @Test + public void testJavaPrefixDoesNotLoadXMLCatalogItem() throws Exception { + Entity entity = startApp("java:io.brooklyn.camp.brooklyn.catalog.TestBasicApp"); + assertTrue(entity instanceof TestBasicApp, "Entity is not a " + TestBasicApp.class.getName() + ", instead the type is " + entity.getEntityType().getName()); + } + + private Entity startApp(String type) throws Exception { String yaml = "name: simple-app-yaml\n" + "location: localhost\n" + "services: \n" + " - type: " + type; - createAndStartApplication(yaml); + return createAndStartApplication(yaml); } + } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e09ddb0c/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicApp.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicApp.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicApp.java new file mode 100644 index 0000000..46347c5 --- /dev/null +++ b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicApp.java @@ -0,0 +1,27 @@ +/* + * 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 io.brooklyn.camp.brooklyn.catalog; + +import brooklyn.entity.basic.BasicApplication; +import brooklyn.entity.proxying.ImplementedBy; + +@ImplementedBy(TestBasicAppImpl.class) +public interface TestBasicApp extends BasicApplication { + +} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e09ddb0c/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicAppImpl.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicAppImpl.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicAppImpl.java new file mode 100644 index 0000000..952ccd9 --- /dev/null +++ b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/catalog/TestBasicAppImpl.java @@ -0,0 +1,24 @@ +/* + * 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 io.brooklyn.camp.brooklyn.catalog; + +import brooklyn.entity.basic.BasicApplicationImpl; + +public class TestBasicAppImpl extends BasicApplicationImpl implements TestBasicApp { +} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e09ddb0c/usage/camp/src/test/resources/simple-catalog.xml ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/resources/simple-catalog.xml b/usage/camp/src/test/resources/simple-catalog.xml index b0d88cc..e3a1214 100644 --- a/usage/camp/src/test/resources/simple-catalog.xml +++ b/usage/camp/src/test/resources/simple-catalog.xml @@ -34,4 +34,8 @@ <symbolicName>BasicApp</symbolicName> <description>An example application</description> </template> + <template name="Custom App" type="brooklyn.entity.basic.BasicApplication"> + <symbolicName>io.brooklyn.camp.brooklyn.catalog.TestBasicApp</symbolicName> + <!-- Tests that "java:" prefix won't load an old-style catalog item with the same id --> + </template> </catalog>
