You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2017/04/21 22:55:50 UTC
[31/39] brooklyn-server git commit: Return a generic context from
newClassLoadingContextForCatalogItems
Return a generic context from newClassLoadingContextForCatalogItems
https://github.com/apache/brooklyn-server/pull/338#discussion_r94751965
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b61f972e
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b61f972e
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b61f972e
Branch: refs/heads/master
Commit: b61f972e9f4197c64ebe37a69f1631db9febb220
Parents: 3257c84
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Wed Mar 8 15:41:56 2017 +0000
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Thu Apr 20 11:20:36 2017 +0100
----------------------------------------------------------------------
.../core/catalog/internal/CatalogUtils.java | 22 ++++++++++----------
.../internal/JavaCatalogToSpecTransformer.java | 6 +++++-
.../internal/AbstractManagementContext.java | 4 +++-
.../BrooklynMementoPersisterToObjectStore.java | 13 ++++++++----
.../core/mgmt/rebind/RebindIteration.java | 5 ++++-
.../brooklyn/util/core/ClassLoaderUtils.java | 6 ++++--
6 files changed, 36 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b61f972e/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
index 15aafd7..4bb11fd 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
@@ -141,6 +141,17 @@ public class CatalogUtils {
return result;
}
+ public static BrooklynClassLoadingContext newClassLoadingContextForCatalogItems(
+ ManagementContext managementContext, List<String> catalogItemIds) {
+
+ BrooklynClassLoadingContextSequential seqLoader =
+ new BrooklynClassLoadingContextSequential(managementContext);
+ for (String catalogItemId : catalogItemIds) {
+ addCatalogItemContext(managementContext, seqLoader, catalogItemId);
+ }
+ return seqLoader;
+ }
+
/**
* Registers all bundles with the management context's OSGi framework.
*/
@@ -325,17 +336,6 @@ public class CatalogUtils {
mgmt.getCatalog().persist(item);
}
- public static BrooklynClassLoadingContextSequential newClassLoadingContextForCatalogItems(
- ManagementContext managementContext, List<String> catalogItemIds) {
-
- BrooklynClassLoadingContextSequential seqLoader =
- new BrooklynClassLoadingContextSequential(managementContext);
- for (String catalogItemId : catalogItemIds) {
- addCatalogItemContext(managementContext, seqLoader, catalogItemId);
- }
- return seqLoader;
- }
-
private static void addCatalogItemContext(ManagementContext managementContext, BrooklynClassLoadingContextSequential loader, String catalogItemId) {
RegisteredType item = managementContext.getTypeRegistry().get(catalogItemId);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b61f972e/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
index a990c2f..bf698e8 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
@@ -26,9 +26,11 @@ import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec;
import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
import org.apache.brooklyn.api.policy.Policy;
import org.apache.brooklyn.api.policy.PolicySpec;
import org.apache.brooklyn.api.typereg.RegisteredType;
+import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential;
import org.apache.brooklyn.core.objs.BasicSpecParameter;
import org.apache.brooklyn.core.plan.PlanNotRecognizedException;
import org.apache.brooklyn.core.plan.PlanToSpecTransformer;
@@ -81,7 +83,9 @@ public class JavaCatalogToSpecTransformer implements PlanToSpecTransformer {
// java types were deprecated before we added osgi support so this isn't necessary,
// but it doesn't hurt (and if we re-instate a class+bundle approach for RegisteredType
// we will want to do this)
- type = CatalogUtils.newClassLoadingContextForCatalogItems(mgmt, item.getCatalogItemHierarchy()).loadClass(javaType);
+ final BrooklynClassLoadingContextSequential ctx = new BrooklynClassLoadingContextSequential(mgmt);
+ ctx.add(CatalogUtils.newClassLoadingContextForCatalogItems(mgmt, item.getCatalogItemHierarchy()));
+ type = ctx.loadClass(javaType);
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
throw new IllegalStateException("Unable to load old-style java catalog item type " + javaType + " for item " + item, e);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b61f972e/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
index 1771028..16bb3de 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
@@ -132,8 +132,10 @@ public abstract class AbstractManagementContext implements ManagementContextInte
EntityInternal internal = (EntityInternal)input;
final List<String> catalogItemHierarchy = internal.getCatalogItemHierarchy();
if (catalogItemHierarchy.size() > 0) {
+ final ManagementContext managementContext = internal.getManagementContext();
BrooklynClassLoadingContextSequential seqLoader =
- newClassLoadingContextForCatalogItems(internal.getManagementContext(), catalogItemHierarchy);
+ new BrooklynClassLoadingContextSequential(managementContext);
+ seqLoader.add(newClassLoadingContextForCatalogItems(managementContext, catalogItemHierarchy));
JavaBrooklynClassLoadingContext entityLoader =
JavaBrooklynClassLoadingContext.create(input.getClass().getClassLoader());
seqLoader.add(entityLoader);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b61f972e/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java
index d9cafdc..a716151 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java
@@ -38,6 +38,8 @@ import javax.annotation.Nullable;
import javax.xml.xpath.XPathConstants;
import com.google.common.collect.ImmutableList;
+
+import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.api.mgmt.rebind.PersistenceExceptionHandler;
import org.apache.brooklyn.api.mgmt.rebind.RebindExceptionHandler;
import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMemento;
@@ -53,6 +55,7 @@ import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.config.StringConfigMap;
import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential;
import org.apache.brooklyn.core.mgmt.classloading.ClassLoaderFromBrooklynClassLoadingContext;
import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore.StoreObjectAccessor;
import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore.StoreObjectAccessorWithLock;
@@ -183,16 +186,18 @@ public class BrooklynMementoPersisterToObjectStore implements BrooklynMementoPer
}
// See RebindIteration.BrooklynObjectInstantiator.load(), for handling where catalog item is missing;
// similar logic here.
- RegisteredType catalogItem = lookupContext.lookupManagementContext().getTypeRegistry().get(catalogItemId);
+ final ManagementContext managementContext = lookupContext.lookupManagementContext();
+ RegisteredType catalogItem = managementContext.getTypeRegistry().get(catalogItemId);
if (catalogItem == null) {
// TODO do we need to only log once, rather than risk log.warn too often? I think this only happens on rebind, so ok.
LOG.warn("Unable to load catalog item "+catalogItemId
+" for custom class loader of " + type + " " + objectId + "; will use default class loader");
return null;
} else {
- return ClassLoaderFromBrooklynClassLoadingContext.of(
- CatalogUtils.newClassLoadingContextForCatalogItems(lookupContext.lookupManagementContext(),
- item.getCatalogItemHierarchy()));
+ final BrooklynClassLoadingContextSequential ctx = new BrooklynClassLoadingContextSequential(managementContext);
+ ctx.add(
+ CatalogUtils.newClassLoadingContextForCatalogItems(managementContext, item.getCatalogItemHierarchy()));
+ return ClassLoaderFromBrooklynClassLoadingContext.of(ctx);
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b61f972e/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
index 1f23330..80c5eb2 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
@@ -19,6 +19,7 @@
package org.apache.brooklyn.core.mgmt.rebind;
import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.brooklyn.core.catalog.internal.CatalogUtils.newClassLoadingContextForCatalogItems;
import java.io.IOException;
import java.util.Arrays;
@@ -74,6 +75,7 @@ import org.apache.brooklyn.core.entity.EntityInternal;
import org.apache.brooklyn.core.feed.AbstractFeed;
import org.apache.brooklyn.core.location.AbstractLocation;
import org.apache.brooklyn.core.location.internal.LocationInternal;
+import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential;
import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext;
import org.apache.brooklyn.core.mgmt.internal.BrooklynObjectManagementMode;
import org.apache.brooklyn.core.mgmt.internal.BrooklynObjectManagerInternal;
@@ -957,7 +959,8 @@ public abstract class RebindIteration {
+" for "+contextSuchAsId + " (" + bType.getSimpleName()+"); attempting load nevertheless");
}
try {
- BrooklynClassLoadingContext loader = CatalogUtils.newClassLoadingContextForCatalogItems(managementContext, idsFromReboundCatalog);
+ BrooklynClassLoadingContextSequential loader = new BrooklynClassLoadingContextSequential(managementContext);
+ loader.add(newClassLoadingContextForCatalogItems(managementContext, idsFromReboundCatalog));
return new LoadedClass<T>(loader.loadClass(jType, bType), idsFromReboundCatalog);
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b61f972e/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java b/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
index d262969..88eb699 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/ClassLoaderUtils.java
@@ -16,6 +16,7 @@
package org.apache.brooklyn.util.core;
import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.brooklyn.core.catalog.internal.CatalogUtils.newClassLoadingContextForCatalogItems;
import java.net.URL;
import java.util.List;
@@ -30,6 +31,7 @@ import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
import org.apache.brooklyn.core.BrooklynVersion;
import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
import org.apache.brooklyn.core.entity.EntityInternal;
+import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential;
import org.apache.brooklyn.core.mgmt.ha.OsgiManager;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
import org.apache.brooklyn.util.core.LoaderDispatcher.ClassLoaderDispatcher;
@@ -254,8 +256,8 @@ public class ClassLoaderUtils {
if (catalogItemId != null) {
CatalogItem<?, ?> item = CatalogUtils.getCatalogItemOptionalVersion(mgmt, catalogItemId);
if (item != null) {
- BrooklynClassLoadingContext loader =
- CatalogUtils.newClassLoadingContextForCatalogItems(mgmt, item.getCatalogItemHierarchy());
+ BrooklynClassLoadingContextSequential loader = new BrooklynClassLoadingContextSequential(mgmt);
+ loader.add(newClassLoadingContextForCatalogItems(mgmt, item.getCatalogItemHierarchy()));
cls = dispatcher.tryLoadFrom(loader, className);
if (cls.isPresent()) {
return cls;