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:36 UTC
[15/16] incubator-brooklyn git commit: Move policy & location
resolving logic to core, allowing it to be reused
Move policy & location resolving logic to core, allowing it to be reused
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/87e33958
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/87e33958
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/87e33958
Branch: refs/heads/master
Commit: 87e339586b4e79cababcfb509f0dfaf04c682fb9
Parents: 5d0c765
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Oct 15 13:15:51 2015 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Oct 15 13:33:03 2015 +0300
----------------------------------------------------------------------
.../brooklyn/core/resolve/ResolveUtils.java | 87 ++++++++++++++++++++
.../camp/brooklyn/spi/creation/CampUtils.java | 39 +--------
2 files changed, 90 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/87e33958/core/src/main/java/org/apache/brooklyn/core/resolve/ResolveUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/resolve/ResolveUtils.java b/core/src/main/java/org/apache/brooklyn/core/resolve/ResolveUtils.java
new file mode 100644
index 0000000..c3fc85f
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/resolve/ResolveUtils.java
@@ -0,0 +1,87 @@
+/*
+ * 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.core.resolve;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.brooklyn.api.catalog.CatalogItem;
+import org.apache.brooklyn.api.catalog.CatalogItem.CatalogItemType;
+import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.location.LocationSpec;
+import org.apache.brooklyn.api.policy.Policy;
+import org.apache.brooklyn.api.policy.PolicySpec;
+import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
+import org.apache.brooklyn.core.mgmt.EntityManagementUtils;
+import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext;
+import org.apache.brooklyn.core.objs.BrooklynObjectInternal.ConfigurationSupportInternal;
+import org.apache.brooklyn.util.guava.Maybe;
+
+public class ResolveUtils {
+
+ @SuppressWarnings("unchecked")
+ public static PolicySpec<? extends Policy> resolveSpec(
+ String versionedId,
+ BrooklynClassLoadingContext loader,
+ Set<String> encounteredCatalogTypes) {
+ PolicySpec<? extends Policy> spec;
+ CatalogItem<?, ?> policyItem = CatalogUtils.getCatalogItemOptionalVersion(loader.getManagementContext(), versionedId);
+ if (policyItem != null && !encounteredCatalogTypes.contains(policyItem.getSymbolicName())) {
+ if (policyItem.getCatalogItemType() != CatalogItemType.POLICY) {
+ throw new IllegalStateException("Non-policy catalog item in policy context: " + policyItem);
+ }
+ @SuppressWarnings("rawtypes")
+ CatalogItem rawItem = policyItem;
+ spec = (PolicySpec<? extends Policy>) EntityManagementUtils.createCatalogSpec(loader.getManagementContext(), rawItem, encounteredCatalogTypes);
+ } else {
+ spec = PolicySpec.create(loader.loadClass(versionedId, Policy.class));
+ }
+ return spec;
+ }
+
+ public static LocationSpec<?> resolveLocationSpec(
+ String type,
+ Map<String, Object> brooklynConfig,
+ BrooklynClassLoadingContext loader) {
+ Maybe<Class<? extends Location>> javaClass = loader.tryLoadClass(type, Location.class);
+ if (javaClass.isPresent()) {
+ LocationSpec<?> spec = LocationSpec.create(javaClass.get());
+ if (brooklynConfig != null) {
+ spec.configure(brooklynConfig);
+ }
+ return spec;
+ } else {
+ Maybe<Location> loc = loader.getManagementContext().getLocationRegistry().resolve(type, false, brooklynConfig);
+ if (loc.isPresent()) {
+ // TODO extensions?
+ Map<String, Object> locConfig = ((ConfigurationSupportInternal)loc.get().config()).getBag().getAllConfig();
+ Class<? extends Location> locType = loc.get().getClass();
+ Set<Object> locTags = loc.get().tags().getTags();
+ String locDisplayName = loc.get().getDisplayName();
+ return LocationSpec.create(locType)
+ .configure(locConfig)
+ .displayName(locDisplayName)
+ .tags(locTags);
+ } else {
+ throw new IllegalStateException("No class or resolver found for location type "+type);
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/87e33958/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampUtils.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampUtils.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampUtils.java
index 289fb97..f3050c5 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampUtils.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampUtils.java
@@ -25,8 +25,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.apache.brooklyn.api.catalog.CatalogItem;
-import org.apache.brooklyn.api.catalog.CatalogItem.CatalogItemType;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.api.location.LocationSpec;
@@ -41,9 +39,9 @@ import org.apache.brooklyn.camp.spi.instantiate.AssemblyTemplateInstantiator;
import org.apache.brooklyn.camp.spi.pdp.DeploymentPlan;
import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.BrooklynLoaderTracker;
-import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext;
import org.apache.brooklyn.core.objs.BrooklynObjectInternal.ConfigurationSupportInternal;
+import org.apache.brooklyn.core.resolve.ResolveUtils;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.stream.Streams;
@@ -110,16 +108,7 @@ public class CampUtils {
}
String versionedId = (String) checkNotNull(Yamls.getMultinameAttribute(itemMap, "policy_type", "policyType", "type"), "policy type");
- PolicySpec<? extends Policy> spec;
- CatalogItem<?, ?> policyItem = CatalogUtils.getCatalogItemOptionalVersion(loader.getManagementContext(), versionedId);
- if (policyItem != null && !encounteredCatalogTypes.contains(policyItem.getSymbolicName())) {
- if (policyItem.getCatalogItemType() != CatalogItemType.POLICY) {
- throw new IllegalStateException("Non-policy catalog item in policy context: " + policyItem);
- }
- spec = (PolicySpec<? extends Policy>) CampCatalogUtils.createSpec(loader.getManagementContext(), policyItem, encounteredCatalogTypes);
- } else {
- spec = PolicySpec.create(loader.loadClass(versionedId, Policy.class));
- }
+ PolicySpec<? extends Policy> spec = ResolveUtils.resolveSpec(versionedId, loader, encounteredCatalogTypes);
Map<String, Object> brooklynConfig = (Map<String, Object>) itemMap.get("brooklyn.config");
if (brooklynConfig != null) {
spec.configure(brooklynConfig);
@@ -152,29 +141,7 @@ public class CampUtils {
String type = (String) checkNotNull(Yamls.getMultinameAttribute(itemMap, "location_type", "locationType", "type"), "location type");
Map<String, Object> brooklynConfig = (Map<String, Object>) itemMap.get("brooklyn.config");
- Maybe<Class<? extends Location>> javaClass = loader.tryLoadClass(type, Location.class);
- if (javaClass.isPresent()) {
- LocationSpec<?> spec = LocationSpec.create(javaClass.get());
- if (brooklynConfig != null) {
- spec.configure(brooklynConfig);
- }
- return spec;
- } else {
- Maybe<Location> loc = loader.getManagementContext().getLocationRegistry().resolve(type, false, brooklynConfig);
- if (loc.isPresent()) {
- // TODO extensions?
- Map<String, Object> locConfig = ((ConfigurationSupportInternal)loc.get().config()).getBag().getAllConfig();
- Class<? extends Location> locType = loc.get().getClass();
- Set<Object> locTags = loc.get().tags().getTags();
- String locDisplayName = loc.get().getDisplayName();
- return LocationSpec.create(locType)
- .configure(locConfig)
- .displayName(locDisplayName)
- .tags(locTags);
- } else {
- throw new IllegalStateException("No class or resolver found for location type "+type);
- }
- }
+ return ResolveUtils.resolveLocationSpec(type, brooklynConfig, loader);
}
public static DeploymentPlan makePlanFromYaml(ManagementContext mgmt, String yaml) {