http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindContext.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindContext.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindContext.java deleted file mode 100644 index d928da0..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindContext.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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.api.mgmt.rebind; - -import java.util.Map; - -import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoPersister.LookupContext; -import org.apache.brooklyn.api.objs.BrooklynObject; - -import com.google.common.annotations.Beta; - -/** - * Gives access to things that are being currently rebinding. This is used during a - * rebind to wire everything back together again, e.g. to find the necessary entity - * instances even before they are available through - * {@code managementContext.getEntityManager().getEnties()}. - * <p> - * Users are not expected to implement this class. It is for use by {@link Rebindable} - * instances, and will generally be created by the {@link RebindManager}. - * <p> - */ -@Beta -public interface RebindContext { - - /** Returns an unmodifiable view of all objects by ID */ - Map<String,BrooklynObject> getAllBrooklynObjects(); - - Class<?> loadClass(String typeName) throws ClassNotFoundException; - - RebindExceptionHandler getExceptionHandler(); - - boolean isReadOnly(BrooklynObject item); - - LookupContext lookup(); - -}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindExceptionHandler.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindExceptionHandler.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindExceptionHandler.java deleted file mode 100644 index 574a680..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindExceptionHandler.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * 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.api.mgmt.rebind; - -import java.util.List; - -import org.apache.brooklyn.api.catalog.CatalogItem; -import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.entity.EntityLocal; -import org.apache.brooklyn.api.location.Location; -import org.apache.brooklyn.api.mgmt.rebind.mementos.EntityMemento; -import org.apache.brooklyn.api.objs.BrooklynObject; -import org.apache.brooklyn.api.objs.BrooklynObjectType; -import org.apache.brooklyn.api.policy.Policy; -import org.apache.brooklyn.api.sensor.Enricher; -import org.apache.brooklyn.api.sensor.Feed; - -import com.google.common.annotations.Beta; -import org.apache.brooklyn.config.ConfigKey; - -/** - * Handler called on all exceptions to do with rebind. - * A handler instance is linked to a single rebind pass; - * it should not be invoked after {@link #onDone()}. - * <p> - * {@link #onStart()} must be invoked before the run. - * {@link #onDone()} must be invoked after a successful run, and it may throw. - * <p> - * Implementations may propagate errors or may catch them until {@link #onDone()} is invoked, - * and that may throw or report elsewhere, as appropriate. - * - * @author aled - */ -@Beta -public interface RebindExceptionHandler { - - void onLoadMementoFailed(BrooklynObjectType type, String msg, Exception e); - - /** - * @return the entity to use in place of the missing one, or null (if hasn't thrown an exception) - */ - Entity onDanglingEntityRef(String id); - - /** - * @return the location to use in place of the missing one, or null (if hasn't thrown an exception) - */ - Location onDanglingLocationRef(String id); - - /** - * @return the policy to use in place of the missing one, or null (if hasn't thrown an exception) - */ - Policy onDanglingPolicyRef(String id); - - /** - * @return the enricher to use in place of the missing one, or null (if hasn't thrown an exception) - */ - Enricher onDanglingEnricherRef(String id); - - /** - * @return the feed to use in place of the missing one, or null (if hasn't thrown an exception) - */ - Feed onDanglingFeedRef(String id); - - /** - * @return the catalog item to use in place of the missing one - */ - CatalogItem<?, ?> onDanglingCatalogItemRef(String id); - - /** - * @return the item to use in place of the missing one - */ - BrooklynObject onDanglingUntypedItemRef(String id); - - void onCreateFailed(BrooklynObjectType type, String id, String instanceType, Exception e); - - void onNotFound(BrooklynObjectType type, String id); - - void onRebindFailed(BrooklynObjectType type, BrooklynObject instance, Exception e); - - void onAddConfigFailed(EntityMemento type, ConfigKey<?> value, Exception e); - - void onAddPolicyFailed(EntityLocal entity, Policy policy, Exception e); - - void onAddEnricherFailed(EntityLocal entity, Enricher enricher, Exception e); - - void onAddFeedFailed(EntityLocal entity, Feed feed, Exception e); - - void onManageFailed(BrooklynObjectType type, BrooklynObject instance, Exception e); - - /** invoked for any high-level, unexpected, or otherwise uncaught failure; - * may be invoked on catching above errors */ - RuntimeException onFailed(Exception e); - - /** invoked before the rebind pass */ - void onStart(RebindContext context); - - /** invoked after the complete rebind pass, always on success and possibly on failure */ - void onDone(); - - List<Exception> getExceptions(); - List<String> getWarnings(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java deleted file mode 100644 index c1441db..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * 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.api.mgmt.rebind; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeoutException; - -import javax.annotation.Nullable; - -import org.apache.brooklyn.api.entity.Application; -import org.apache.brooklyn.api.mgmt.ha.ManagementNodeState; -import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoPersister; -import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoRawData; -import org.apache.brooklyn.util.time.Duration; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.VisibleForTesting; - -/** - * Manages the persisting of brooklyn's state, and recreating that state, e.g. on - * brooklyn restart. - * - * Users are not expected to implement this class, or to call methods on it directly. - */ -public interface RebindManager { - - // FIXME Should we be calling managementContext.getRebindManager().rebind, using a - // new empty instance of managementContext? - // - // Or is that a risky API because you could call it on a non-empty managementContext? - - public enum RebindFailureMode { - FAIL_FAST, - FAIL_AT_END, - CONTINUE; - } - - public void setPersister(BrooklynMementoPersister persister); - - public void setPersister(BrooklynMementoPersister persister, PersistenceExceptionHandler exceptionHandler); - - @VisibleForTesting - public BrooklynMementoPersister getPersister(); - - /** @deprecated since 0.7; use {@link #rebind(ClassLoader, RebindExceptionHandler, ManagementNodeState)} */ @Deprecated - public List<Application> rebind(); - - /** @deprecated since 0.7; use {@link #rebind(ClassLoader, RebindExceptionHandler, ManagementNodeState)} */ @Deprecated - public List<Application> rebind(ClassLoader classLoader); - /** @deprecated since 0.7; use {@link #rebind(ClassLoader, RebindExceptionHandler, ManagementNodeState)} */ @Deprecated - public List<Application> rebind(ClassLoader classLoader, RebindExceptionHandler exceptionHandler); - /** Causes this management context to rebind, loading data from the given backing store. - * use wisely, as this can cause local entities to be completely lost, or will throw in many other situations. - * in general it may be invoked for a new node becoming {@link ManagementNodeState#MASTER} - * or periodically for a node in {@link ManagementNodeState#HOT_STANDBY} or {@link ManagementNodeState#HOT_BACKUP}. */ - @Beta - public List<Application> rebind(ClassLoader classLoader, RebindExceptionHandler exceptionHandler, ManagementNodeState mode); - - public BrooklynMementoRawData retrieveMementoRawData(); - - public ChangeListener getChangeListener(); - - /** - * Starts the background persisting of state - * (if persister is set; otherwise will start persisting as soon as persister is set). - * Until this is called, no data will be persisted although entities can be rebinded. - */ - public void startPersistence(); - - /** Stops the background persistence of state. - * Waits for any current persistence to complete. */ - public void stopPersistence(); - - /** - * Perform an initial load of state read-only and starts a background process - * reading (mirroring) state periodically. - */ - public void startReadOnly(ManagementNodeState mode); - /** Stops the background reading (mirroring) of state. - * Interrupts any current activity and waits for it to cease. */ - public void stopReadOnly(); - - /** Starts the appropriate background processes, {@link #startPersistence()} if {@link ManagementNodeState#MASTER}, - * {@link #startReadOnly()} if {@link ManagementNodeState#HOT_STANDBY} or {@link ManagementNodeState#HOT_BACKUP} */ - public void start(); - /** Stops the appropriate background processes, {@link #stopPersistence()} or {@link #stopReadOnly()}, - * waiting for activity there to cease (interrupting in the case of {@link #stopReadOnly()}). */ - public void stop(); - - @VisibleForTesting - /** waits for any needed or pending writes to complete */ - public void waitForPendingComplete(Duration duration, boolean canTrigger) throws InterruptedException, TimeoutException; - /** Forcibly performs persistence, in the foreground - * @deprecated since 0.7.0; use {@link #forcePersistNow(boolean, PersistenceExceptionHandler)}, - * default parameter here is false to mean incremental, with null/default exception handler */ - @VisibleForTesting - public void forcePersistNow(); - /** Forcibly performs persistence, in the foreground, either full (all entities) or incremental; - * if no exception handler specified, the default one from the persister is used. - * <p> - * Note that full persistence does *not* delete items; incremental should normally be sufficient. - * (A clear then full persistence would have the same effect, but that is risky in a production - * setting if the process fails after the clear!) */ - @VisibleForTesting - public void forcePersistNow(boolean full, @Nullable PersistenceExceptionHandler exceptionHandler); - - /** Whether the management state has changed to a state where a rebind is needed - * but we are still awaiting the first run; - * ie state is master or hot, but list of apps is not yet accurate */ - public boolean isAwaitingInitialRebind(); - - /** Metrics about rebind, last success, etc. */ - public Map<String,Object> getMetrics(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindSupport.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindSupport.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindSupport.java deleted file mode 100644 index 2e8fdbf..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/RebindSupport.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.api.mgmt.rebind; - -import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoPersister; -import org.apache.brooklyn.api.mgmt.rebind.mementos.Memento; - -/** - * Supporter instance for behaviour related to rebinding a given entity/location/policy. - * - * For example, the brooklyn framework may call {@code entity.getRebindSupport().getMemento()} - * and persist this using a {@link BrooklynMementoPersister}. Later (e.g. after a brooklyn - * restart) a new entity instance may be created and populated by the framework calling - * {@code entity.getRebindSupport().reconstruct(rebindContext, memento)}. - * - * @author aled - */ -public interface RebindSupport<T extends Memento> { - - /** - * Creates a memento representing this entity's current state. This is useful for when restarting brooklyn. - */ - T getMemento(); - - /** - * Reconstructs this entity, given a memento of its state. Sets the internal state - * (including id and config keys), and sets the parent/children/locations of this entity. - * - * Implementations should be very careful to not invoke or inspect these other entities/locations, - * as they may also be being reconstructed at this time. - * - * Called during rebind, after creation and before the call to start management. - */ - void reconstruct(RebindContext rebindContext, T memento); - - void addPolicies(RebindContext rebindContext, T Memento); - - void addEnrichers(RebindContext rebindContext, T Memento); - - void addFeeds(RebindContext rebindContext, T Memento); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/Rebindable.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/Rebindable.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/Rebindable.java deleted file mode 100644 index 301e8e0..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/Rebindable.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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.api.mgmt.rebind; - -import org.apache.brooklyn.api.mgmt.rebind.mementos.Memento; - -import com.google.common.annotations.Beta; - -/** - * Indicates that this can be recreated, e.g. after a brooklyn restart, and by - * using a {@link Memento} it can repopulate the brooklyn objects. The purpose - * of the rebind is to reconstruct and reconnect the brooklyn objects, including - * binding them to external resources. - * - * Users are strongly discouraged to call or use this interface. - * It is for internal use only, relating to persisting/rebinding entities. - * This interface may change (or be removed) in a future release without notice. - */ -@Beta -public interface Rebindable { - - public RebindSupport<?> getRebindSupport(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMemento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMemento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMemento.java deleted file mode 100644 index 1c66c70..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMemento.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Map; - -/** - * Represents an entire persisted Brooklyn management context, with all its entities and locations. - * - * The referential integrity of this memento is not guaranteed. For example, an entity memento might - * reference a child entity that does not exist. This is an inevitable consequence of not using a - * stop-the-world persistence strategy, and is essential for a distributed brooklyn to be performant. - * - * Code using this memento should be tolerant of such inconsistencies (e.g. log a warning about the - * missing entity, and then ignore dangling references when constructing the entities/locations, so - * that code will not subsequently get NPEs when iterating over children for example). - * - * @author aled - */ -public interface BrooklynMemento extends Serializable { - - public EntityMemento getEntityMemento(String id); - public LocationMemento getLocationMemento(String id); - public PolicyMemento getPolicyMemento(String id); - public EnricherMemento getEnricherMemento(String id); - public FeedMemento getFeedMemento(String id); - public CatalogItemMemento getCatalogItemMemento(String id); - - public Collection<String> getApplicationIds(); - public Collection<String> getTopLevelLocationIds(); - - public Collection<String> getEntityIds(); - public Collection<String> getLocationIds(); - public Collection<String> getPolicyIds(); - public Collection<String> getEnricherIds(); - public Collection<String> getFeedIds(); - public Collection<String> getCatalogItemIds(); - - public Map<String, EntityMemento> getEntityMementos(); - public Map<String, LocationMemento> getLocationMementos(); - public Map<String, PolicyMemento> getPolicyMementos(); - public Map<String, EnricherMemento> getEnricherMementos(); - public Map<String, FeedMemento> getFeedMementos(); - public Map<String, CatalogItemMemento> getCatalogItemMementos(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java deleted file mode 100644 index 2efc6f6..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Map; - -import org.apache.brooklyn.api.objs.Identifiable; - -/** - * Represents a manifest of the entities etc in the overall memento. - * - * @author aled - */ -public interface BrooklynMementoManifest extends Serializable { - public interface EntityMementoManifest extends Identifiable{ - public String getId(); - public String getType(); - public String getParent(); - public String getCatalogItemId(); - } - - public Map<String, EntityMementoManifest> getEntityIdToManifest(); - - public Map<String, String> getLocationIdToType(); - - public Map<String, String> getPolicyIdToType(); - - public Map<String, String> getEnricherIdToType(); - - public Map<String, String> getFeedIdToType(); - - public CatalogItemMemento getCatalogItemMemento(String id); - - public Collection<String> getCatalogItemIds(); - - public Map<String, CatalogItemMemento> getCatalogItemMementos(); - - public boolean isEmpty(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoPersister.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoPersister.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoPersister.java deleted file mode 100644 index 03673fd..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoPersister.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.io.IOException; -import java.util.Collection; -import java.util.Set; -import java.util.concurrent.TimeoutException; - -import javax.annotation.Nullable; - -import org.apache.brooklyn.api.catalog.CatalogItem; -import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.location.Location; -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.RebindManager; -import org.apache.brooklyn.api.objs.BrooklynObject; -import org.apache.brooklyn.api.objs.BrooklynObjectType; -import org.apache.brooklyn.api.policy.Policy; -import org.apache.brooklyn.api.sensor.Enricher; -import org.apache.brooklyn.api.sensor.Feed; -import org.apache.brooklyn.util.time.Duration; - -import com.google.common.annotations.Beta; -import com.google.common.annotations.VisibleForTesting; - -/** - * Controls the persisting and reading back of mementos. Used by {@link RebindManager} - * to support brooklyn restart. - */ -public interface BrooklynMementoPersister { - - public static interface LookupContext { - ManagementContext lookupManagementContext(); - Entity lookupEntity(String id); - Location lookupLocation(String id); - Policy lookupPolicy(String id); - Enricher lookupEnricher(String id); - Feed lookupFeed(String id); - CatalogItem<?, ?> lookupCatalogItem(String id); - - /** retrieve the item with the given ID, optionally ensuring it is of the indicated type; null if not found */ - BrooklynObject lookup(@Nullable BrooklynObjectType type, String objectId); - /** like {@link #lookup(BrooklynObjectType, String)} but doesn't record an exception if not found */ - BrooklynObject peek(@Nullable BrooklynObjectType type, String objectId); - } - - /** - * Loads raw data contents of the mementos. - * <p> - * Some classes (esp deprecated ones) may return null here, - * meaning that the {@link #loadMementoManifest(BrooklynMementoRawData, RebindExceptionHandler)} - * and {@link #loadMemento(BrooklynMementoRawData, LookupContext, RebindExceptionHandler)} methods - * will populate the raw data via another source. - */ - BrooklynMementoRawData loadMementoRawData(RebindExceptionHandler exceptionHandler); - - /** - * Loads minimal manifest information (almost entirely *not* deserialized). - * Implementations should load the raw data if {@link BrooklynMementoRawData} is not supplied, - * but callers are encouraged to supply that for optimal performance. - */ - BrooklynMementoManifest loadMementoManifest(@Nullable BrooklynMementoRawData mementoData, RebindExceptionHandler exceptionHandler) throws IOException; - - /** - * Retrieves the memento class, containing deserialized objects (but not the {@link BrooklynObject} class). - * Implementations should load the raw data if {@link BrooklynMementoRawData} is not supplied, - * but callers are encouraged to supply that for optimal performance. - * <p> - * Note that this method is *not* thread safe. - */ - BrooklynMemento loadMemento(@Nullable BrooklynMementoRawData mementoData, LookupContext lookupContext, RebindExceptionHandler exceptionHandler) throws IOException; - - /** applies a full checkpoint (write) of all state */ - void checkpoint(BrooklynMementoRawData newMemento, PersistenceExceptionHandler exceptionHandler); - /** applies a partial write of state delta */ - void delta(Delta delta, PersistenceExceptionHandler exceptionHandler); - /** inserts an additional delta to be written on the next delta request */ - @Beta - void queueDelta(Delta delta); - - void enableWriteAccess(); - void disableWriteAccess(boolean graceful); - /** permanently shuts down all access to the remote store */ - void stop(boolean graceful); - - @VisibleForTesting - void waitForWritesCompleted(Duration timeout) throws InterruptedException, TimeoutException; - - String getBackingStoreDescription(); - - /** All methods on this interface are unmodifiable by the caller. Sub-interfaces may introduce modifiers. */ - // NB: the type-specific methods aren't actually used anymore; we could remove them to simplify the impl (and use a multiset there) - public interface Delta { - Collection<LocationMemento> locations(); - Collection<EntityMemento> entities(); - Collection<PolicyMemento> policies(); - Collection<EnricherMemento> enrichers(); - Collection<FeedMemento> feeds(); - Collection<CatalogItemMemento> catalogItems(); - - Collection<String> removedLocationIds(); - Collection<String> removedEntityIds(); - Collection<String> removedPolicyIds(); - Collection<String> removedEnricherIds(); - Collection<String> removedFeedIds(); - Collection<String> removedCatalogItemIds(); - - Collection<? extends Memento> getObjectsOfType(BrooklynObjectType type); - Collection<String> getRemovedIdsOfType(BrooklynObjectType type); - } - - @Beta - public interface MutableDelta extends Delta { - void add(BrooklynObjectType type, Memento memento); - void addAll(BrooklynObjectType type, Iterable<? extends Memento> memento); - void removed(BrooklynObjectType type, Set<String> removedIdsOfType); - } - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoRawData.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoRawData.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoRawData.java deleted file mode 100644 index 804304d..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoRawData.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.Collections; -import java.util.Map; - -import org.apache.brooklyn.api.objs.BrooklynObjectType; - -import com.google.common.annotations.Beta; -import com.google.common.collect.Maps; - -/** - * Represents the raw persisted data. - */ -@Beta -public class BrooklynMementoRawData { - - // TODO Should this be on an interface? - // The file-based (or object-store based) structure for storing data may well change; is this representation sufficient? - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - protected String brooklynVersion; - protected final Map<String, String> entities = Maps.newConcurrentMap(); - protected final Map<String, String> locations = Maps.newConcurrentMap(); - protected final Map<String, String> policies = Maps.newConcurrentMap(); - protected final Map<String, String> enrichers = Maps.newConcurrentMap(); - protected final Map<String, String> feeds = Maps.newConcurrentMap(); - protected final Map<String, String> catalogItems = Maps.newConcurrentMap(); - - public Builder brooklynVersion(String val) { - brooklynVersion = val; return this; - } - public Builder entity(String id, String val) { - entities.put(id, val); return this; - } - public Builder entities(Map<String, String> vals) { - entities.putAll(vals); return this; - } - public Builder location(String id, String val) { - locations.put(id, val); return this; - } - public Builder locations(Map<String, String> vals) { - locations.putAll(vals); return this; - } - public Builder policy(String id, String val) { - policies.put(id, val); return this; - } - public Builder policies(Map<String, String> vals) { - policies.putAll(vals); return this; - } - public Builder enricher(String id, String val) { - enrichers.put(id, val); return this; - } - public Builder enrichers(Map<String, String> vals) { - enrichers.putAll(vals); return this; - } - public Builder feed(String id, String val) { - feeds.put(id, val); return this; - } - public Builder feeds(Map<String, String> vals) { - feeds.putAll(vals); return this; - } - public Builder catalogItem(String id, String val) { - catalogItems.put(id, val); return this; - } - public Builder catalogItems(Map<String, String> vals) { - catalogItems.putAll(vals); return this; - } - - public Builder put(BrooklynObjectType type, String id, String val) { - switch (type) { - case ENTITY: return entity(id, val); - case LOCATION: return location(id, val); - case POLICY: return policy(id, val); - case ENRICHER: return enricher(id, val); - case FEED: return feed(id, val); - case CATALOG_ITEM: return catalogItem(id, val); - case UNKNOWN: - default: - throw new IllegalArgumentException(type+" not supported"); - } - } - public Builder putAll(BrooklynObjectType type, Map<String,String> vals) { - switch (type) { - case ENTITY: return entities(vals); - case LOCATION: return locations(vals); - case POLICY: return policies(vals); - case ENRICHER: return enrichers(vals); - case FEED: return feeds(vals); - case CATALOG_ITEM: return catalogItems(vals); - case UNKNOWN: - default: - throw new IllegalArgumentException(type+" not supported"); - } - } - - public BrooklynMementoRawData build() { - return new BrooklynMementoRawData(this); - } - } - - private final Map<String, String> entities; - private final Map<String, String> locations; - private final Map<String, String> policies; - private final Map<String, String> enrichers; - private final Map<String, String> feeds; - private final Map<String, String> catalogItems; - - private BrooklynMementoRawData(Builder builder) { - entities = builder.entities; - locations = builder.locations; - policies = builder.policies; - enrichers = builder.enrichers; - feeds = builder.feeds; - catalogItems = builder.catalogItems; - } - - public Map<String, String> getEntities() { - return Collections.unmodifiableMap(entities); - } - - public Map<String, String> getLocations() { - return Collections.unmodifiableMap(locations); - } - - public Map<String, String> getPolicies() { - return Collections.unmodifiableMap(policies); - } - - public Map<String, String> getEnrichers() { - return Collections.unmodifiableMap(enrichers); - } - - public Map<String, String> getFeeds() { - return Collections.unmodifiableMap(feeds); - } - - public Map<String, String> getCatalogItems() { - return Collections.unmodifiableMap(catalogItems); - } - - // to handle reset catalog - @Beta - public void clearCatalogItems() { - catalogItems.clear(); - } - - public boolean isEmpty() { - return entities.isEmpty() && locations.isEmpty() && policies.isEmpty() && enrichers.isEmpty() && feeds.isEmpty() && catalogItems.isEmpty(); - } - - public Map<String, String> getObjectsOfType(BrooklynObjectType type) { - switch (type) { - case ENTITY: return getEntities(); - case LOCATION: return getLocations(); - case POLICY: return getPolicies(); - case ENRICHER: return getEnrichers(); - case FEED: return getFeeds(); - case CATALOG_ITEM: return getCatalogItems(); - default: - throw new IllegalArgumentException("Type "+type+" not supported"); - } - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/CatalogItemMemento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/CatalogItemMemento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/CatalogItemMemento.java deleted file mode 100644 index 57fbb8d..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/CatalogItemMemento.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.Collection; -import java.util.List; - -import org.apache.brooklyn.api.catalog.CatalogItem; -import org.apache.brooklyn.api.objs.SpecParameter; - -public interface CatalogItemMemento extends Memento { - - String getDescription(); - - String getSymbolicName(); - - String getIconUrl(); - - String getVersion(); - - String getPlanYaml(); - - String getJavaType(); - - List<SpecParameter<?>> getParameters(); - - Collection<CatalogItem.CatalogBundle> getLibraries(); - - CatalogItem.CatalogItemType getCatalogItemType(); - - Class<?> getCatalogItemJavaType(); - - Class<?> getSpecType(); - - boolean isDeprecated(); - - boolean isDisabled(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EnricherMemento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EnricherMemento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EnricherMemento.java deleted file mode 100644 index c6b7e8c..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EnricherMemento.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.Map; - -import org.apache.brooklyn.api.mgmt.rebind.RebindSupport; - -/** - * Represents the state of an enricher, so that it can be reconstructed (e.g. after restarting brooklyn). - * - * @see RebindSupport - */ -public interface EnricherMemento extends Memento { - - Map<String, Object> getConfig(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EntityMemento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EntityMemento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EntityMemento.java deleted file mode 100644 index 4c74695..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/EntityMemento.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import org.apache.brooklyn.api.effector.Effector; -import org.apache.brooklyn.api.mgmt.rebind.RebindSupport; -import org.apache.brooklyn.api.sensor.AttributeSensor; -import org.apache.brooklyn.config.ConfigKey; - -/** - * Represents the state of an entity, so that it can be reconstructed (e.g. after restarting brooklyn). - * - * @see RebindSupport - * - * @author aled - */ -public interface EntityMemento extends Memento, TreeNode { - - /** all dynamic effectors (ie differences between those registered on the entity type */ - public List<Effector<?>> getEffectors(); - - public Map<ConfigKey<?>, Object> getConfig(); - - /** true if the entity is top-level (parentless) and an application - * (there may be parentless "orphaned" entities, for which this is false, - * and "application" instances nested inside other apps, for which this is again) - */ - public boolean isTopLevelApp(); - - public Map<String, Object> getConfigUnmatched(); - - public Map<AttributeSensor<?>, Object> getAttributes(); - - /** - * The ids of the member entities, if this is a Group; otherwise empty. - * - * @see Group.getMembers() - */ - public List<String> getMembers(); - - /** - * The ids of the locations for this entity. - */ - public List<String> getLocations(); - - /** - * The ids of the policies of this entity. - */ - public Collection<String> getPolicies(); - - /** - * The ids of the enrichers of this entity. - */ - public Collection<String> getEnrichers(); - - /** - * The ids of the sensor feeds attached to this entity. - */ - public Collection<String> getFeeds(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/FeedMemento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/FeedMemento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/FeedMemento.java deleted file mode 100644 index 52424c3..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/FeedMemento.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.Map; - -import org.apache.brooklyn.api.mgmt.rebind.RebindSupport; - -/** - * Represents the state of a feed, so that it can be reconstructed (e.g. after restarting brooklyn). - * - * @see RebindSupport - */ -public interface FeedMemento extends Memento { - - Map<String, Object> getConfig(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/LocationMemento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/LocationMemento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/LocationMemento.java deleted file mode 100644 index 016db01..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/LocationMemento.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.Map; -import java.util.Set; - -import org.apache.brooklyn.api.mgmt.rebind.RebindSupport; - -/** - * Represents the state of a location, so that it can be reconstructed (e.g. after restarting brooklyn). - * - * @see RebindSupport - * - * @author aled - */ -public interface LocationMemento extends TreeNode, Memento { - - Map<String, Object> getLocationConfig(); - Set<String> getLocationConfigUnused(); - String getLocationConfigDescription(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/Memento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/Memento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/Memento.java deleted file mode 100644 index 5911f28..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/Memento.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Map; -import java.util.Set; - -import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.mgmt.rebind.RebindSupport; -import org.apache.brooklyn.api.objs.EntityAdjunct; - -/** - * Represents the internal state of something in brooklyn, so that it can be reconstructed (e.g. after restarting brooklyn). - * - * @see RebindSupport - * - * @author aled - */ -public interface Memento extends Serializable { - - /** - * The version of brooklyn used when this memento was generated. - */ - String getBrooklynVersion(); - - String getId(); - - public String getType(); - - public String getCatalogItemId(); - - public String getDisplayName(); - - /** - * A (weakly-typed) property set for this memento. - * These can be used to avoid sub-classing the entity memento, but developers can sub-class to get strong typing if desired. - * - * @deprecated since 0.7.0; use config/attributes so generic persistence will work, rather than requiring "custom fields" - */ - @Deprecated - public Object getCustomField(String name); - - /** - * @deprecated since 0.7.0; use config/attributes so generic persistence will work, rather than requiring "custom fields" - */ - @Deprecated - public Map<String, ? extends Object> getCustomFields(); - - public String toVerboseString(); - - public void injectTypeClass(Class<?> clazz); - - /** - * Returns the injected type class, or null if not injected. - * <p> - * This is useful for ensuring the correct classloader is used (e.g. for {@link EntityMemento} - * previously calling {@code EntityTypes.getDefinedSensors(getType())}. - */ - public Class<?> getTypeClass(); - - public Collection<Object> getTags(); - - public Map<String,Set<String>> getRelations(); - - /** Null for {@link Entity}, but important for adjuncts; see {@link EntityAdjunct#getUniqueTag()} */ - public String getUniqueTag(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java deleted file mode 100644 index bfec7af..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.Map; - -import org.apache.brooklyn.api.mgmt.rebind.RebindSupport; - -/** - * Represents the state of an policy, so that it can be reconstructed (e.g. after restarting brooklyn). - * - * @see RebindSupport - * - * @author aled - */ -public interface PolicyMemento extends Memento { - - Map<String, Object> getConfig(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/TreeNode.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/TreeNode.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/TreeNode.java deleted file mode 100644 index cde6a34..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/TreeNode.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.api.mgmt.rebind.mementos; - -import java.util.List; - -/** - * A simple tree structure, where a node references a parent and children using their ids. - * - * e.g. could be used to represent the entity hierarchy within mementos, where the - * String is the id of parent/child entities. - * - * @author aled - */ -public interface TreeNode { - - /** - * The id of this node in the tree. This id will be used by the parent's getChildren(), - * and by each child's getParent(). - */ - String getId(); - - /** - * The id of the parent entity, or null if none. - */ - String getParent(); - - /** - * The ids of the children. - */ - List<String> getChildren(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObject.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObject.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObject.java deleted file mode 100644 index b42bc58..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObject.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * 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.api.objs; - -import java.util.Map; -import java.util.Set; - -import javax.annotation.Nonnull; - -import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.entity.Group; -import org.apache.brooklyn.api.mgmt.SubscriptionContext; -import org.apache.brooklyn.api.mgmt.SubscriptionHandle; -import org.apache.brooklyn.api.mgmt.SubscriptionManager; -import org.apache.brooklyn.api.relations.RelationshipType; -import org.apache.brooklyn.api.sensor.Sensor; -import org.apache.brooklyn.api.sensor.SensorEventListener; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableMap; - -/** - * Super-type of entity, location, policy and enricher. - */ -public interface BrooklynObject extends Identifiable, Configurable { - - /** - * A display name; recommended to be a concise single-line description. - */ - String getDisplayName(); - - /** - * The catalog item ID this object was loaded from. - * <p> - * This can be used to understand the appropriate classloading context, - * such as for versioning purposes, as well as meta-information such as - * branding (maybe you can even get an icon) and - * potentially things like resource lifecycle (if a software version is being sunsetted). - * <p> - * In some cases this may be set heuristically from context and so may not be accurate. - * Callers can set an explicit catalog item ID if inferencing is not correct. - */ - String getCatalogItemId(); - - /** - * Tags are arbitrary objects which can be attached to an entity for subsequent reference. - * They must not be null (as {@link ImmutableMap} may be used under the covers; also there is little point!); - * and they should be amenable to our persistence (on-disk serialization) and our JSON serialization in the REST API. - */ - TagSupport tags(); - - /** - * Subscriptions are the mechanism for receiving notifications of sensor-events (e.g. attribute-changed) from - * other entities. - */ - SubscriptionSupport subscriptions(); - - /** - * Relations specify a typed, directed connection between two entities. - * Generic type is overridden in sub-interfaces. - */ - public RelationSupport<?> relations(); - - public interface TagSupport { - /** - * @return An immutable copy of the set of tags on this entity. - * Note {@link #containsTag(Object)} will be more efficient, - * and {@link #addTag(Object)} and {@link #removeTag(Object)} will not work on the returned set. - */ - @Nonnull Set<Object> getTags(); - - boolean containsTag(@Nonnull Object tag); - - boolean addTag(@Nonnull Object tag); - - boolean addTags(@Nonnull Iterable<?> tags); - - boolean removeTag(@Nonnull Object tag); - } - - @Beta - public interface SubscriptionSupport { - /** - * Allow us to subscribe to data from a {@link Sensor} on another entity. - * - * @return a subscription id which can be used to unsubscribe - * - * @see SubscriptionManager#subscribe(Map, Entity, Sensor, SensorEventListener) - */ - @Beta - <T> SubscriptionHandle subscribe(Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener); - - /** - * Allow us to subscribe to data from a {@link Sensor} on another entity. - * - * @return a subscription id which can be used to unsubscribe - * - * @see SubscriptionManager#subscribe(Map, Entity, Sensor, SensorEventListener) - */ - @Beta - <T> SubscriptionHandle subscribe(Map<String, ?> flags, Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener); - - /** @see SubscriptionManager#subscribeToChildren(Map, Entity, Sensor, SensorEventListener) */ - @Beta - <T> SubscriptionHandle subscribeToChildren(Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener); - - /** @see SubscriptionManager#subscribeToMembers(Group, Sensor, SensorEventListener) */ - @Beta - <T> SubscriptionHandle subscribeToMembers(Group group, Sensor<T> sensor, SensorEventListener<? super T> listener); - - /** - * Unsubscribes from the given producer. - * - * @see SubscriptionContext#unsubscribe(SubscriptionHandle) - */ - @Beta - boolean unsubscribe(Entity producer); - - /** - * Unsubscribes the given handle. - * - * @see SubscriptionContext#unsubscribe(SubscriptionHandle) - */ - @Beta - boolean unsubscribe(Entity producer, SubscriptionHandle handle); - - /** - * Unsubscribes the given handle. - * - * It is (currently) more efficient to also pass in the producer - - * see {@link SubscriptionSupport#unsubscribe(Entity, SubscriptionHandle)} - */ - boolean unsubscribe(SubscriptionHandle handle); - } - - public interface RelationSupport<T extends BrooklynObject> { - /** Adds a relationship of the given type from this object pointing at the given target, - * and ensures that the inverse relationship (if there is one) is present at the target pointing back at this object. - */ - public <U extends BrooklynObject> void add(RelationshipType<? super T,? super U> relationship, U target); - - /** Removes any and all relationships of the given type from this object pointing at the given target, - * and ensures that the inverse relationships (if there are one) are also removed. - */ - public <U extends BrooklynObject> void remove(RelationshipType<? super T,? super U> relationship, U target); - - /** @return the {@link RelationshipType}s originating from this object */ - public Set<RelationshipType<? super T,? extends BrooklynObject>> getRelationshipTypes(); - - /** @return the {@link BrooklynObject}s which are targets of the given {@link RelationshipType} */ - public <U extends BrooklynObject> Set<U> getRelations(RelationshipType<? super T,U> relationshipType); - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObjectType.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObjectType.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObjectType.java deleted file mode 100644 index e0ef84c..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynObjectType.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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.api.objs; - -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.api.internal.AbstractBrooklynObjectSpec; -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.api.sensor.Enricher; -import org.apache.brooklyn.api.sensor.EnricherSpec; -import org.apache.brooklyn.api.sensor.Feed; - -import com.google.common.annotations.Beta; -import com.google.common.base.CaseFormat; - -@Beta -public enum BrooklynObjectType { - // these are correctly type-checked by i can't tell how to get java not to warn! - @SuppressWarnings("unchecked") ENTITY(Entity.class, EntitySpec.class, "entities"), - @SuppressWarnings("unchecked") LOCATION(Location.class, LocationSpec.class, "locations"), - @SuppressWarnings("unchecked") POLICY(Policy.class, PolicySpec.class, "policies"), - @SuppressWarnings("unchecked") ENRICHER(Enricher.class, EnricherSpec.class, "enrichers"), - FEED(Feed.class, null, "feeds"), - CATALOG_ITEM(CatalogItem.class, null, "catalog"), - UNKNOWN(null, null, "unknown"); - - private final Class<? extends BrooklynObject> interfaceType; - private final Class<? extends AbstractBrooklynObjectSpec<?,?>> specType; - private final String subPathName; - - <T extends BrooklynObject,K extends AbstractBrooklynObjectSpec<T,K>> BrooklynObjectType(Class<T> interfaceType, Class<K> specType, String subPathName) { - this.interfaceType = interfaceType; - this.specType = specType; - this.subPathName = subPathName; - } - public String toCamelCase() { - return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, this.name()); - } - - public String getSubPathName() { - return subPathName; - } - - public Class<? extends BrooklynObject> getInterfaceType() { - return interfaceType; - } - - public Class<? extends AbstractBrooklynObjectSpec<?, ?>> getSpecType() { - return specType; - } - - public static BrooklynObjectType of(BrooklynObject instance) { - for (BrooklynObjectType t: values()) { - if (t.getInterfaceType()!=null && t.getInterfaceType().isInstance(instance)) - return t; - } - return UNKNOWN; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynType.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynType.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynType.java deleted file mode 100644 index 72d0be9..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/BrooklynType.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.api.objs; - -import java.io.Serializable; -import java.util.Set; - -import org.apache.brooklyn.config.ConfigKey; - -/** - * Gives type information for a {@link BrooklynObject}. It is an immutable snapshot. - * - * It reflects a given brooklyn object at the time the snapshot was created: if anything - * were added or removed on-the-fly then those changes will be included in subsequent - * snapshots. Therefore instances of a given class could have different {@link BrooklynType}s. - */ -// TODO rename as BrooklynObjectSignature or BrooklynObjectMetadata; -// or (perhaps better and easier to retire deprecated usage, if that is required?) -// introduce new mechanism for storing accessing this information -public interface BrooklynType extends Serializable { - - /** - * The type name of this entity (normally the fully qualified class name). - */ - String getName(); - - /** - * The simple type name of this entity (normally the unqualified class name). - */ - String getSimpleName(); - - /** - * ConfigKeys available on this entity. - */ - Set<ConfigKey<?>> getConfigKeys(); - - /** - * The ConfigKey with the given name, or null if not found. - */ - ConfigKey<?> getConfigKey(String name); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Configurable.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Configurable.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Configurable.java deleted file mode 100644 index d7f2935..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Configurable.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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.api.objs; - -import org.apache.brooklyn.api.mgmt.Task; -import org.apache.brooklyn.config.ConfigKey; -import org.apache.brooklyn.config.ConfigKey.HasConfigKey; - -import com.google.common.annotations.Beta; - -/** - * Something that has mutable config, such as an entity or policy. - * - * @author aled - */ -public interface Configurable { - - // FIXME Moved from core project to api project, as part of moving EntityLocal. - // (though maybe it's fine here?) - - /** - * @return the old value, or null if there was not one - * @deprecated since 0.7.0; use {@link ConfigurationSupport#set(ConfigKey, Object)}, such as {@code config().set(key, val)} - */ - @Deprecated - public <T> T setConfig(ConfigKey<T> key, T val); - - /** - * Convenience for calling {@link ConfigurationSupport#get(ConfigKey)}, - * via code like {@code config().get(key)}. - * - * @since 0.9.0 - */ - <T> T getConfig(ConfigKey<T> key); - - ConfigurationSupport config(); - - @Beta - public interface ConfigurationSupport { - - /** - * Gets the given configuration value for this entity, in the following order of precedence: - * <ol> - * <li> value (including null) explicitly set on the entity - * <li> value (including null) explicitly set on an ancestor (inherited) - * <li> a default value (including null) on the best equivalent static key of the same name declared on the entity - * (where best equivalence is defined as preferring a config key which extends another, - * as computed in EntityDynamicType.getConfigKeys) - * <li> a default value (including null) on the key itself - * <li> null - * </ol> - */ - <T> T get(ConfigKey<T> key); - - /** - * @see {@link #getConfig(ConfigKey)} - */ - <T> T get(HasConfigKey<T> key); - - /** - * Sets the config to the given value. - */ - <T> T set(ConfigKey<T> key, T val); - - /** - * @see {@link #setConfig(HasConfigKey, Object)} - */ - <T> T set(HasConfigKey<T> key, T val); - - /** - * Sets the config to the value returned by the task. - * - * Returns immediately without blocking; subsequent calls to {@link #getConfig(ConfigKey)} - * will execute the task, and block until the task completes. - * - * @see {@link #setConfig(ConfigKey, Object)} - */ - <T> T set(ConfigKey<T> key, Task<T> val); - - /** - * @see {@link #setConfig(ConfigKey, Task)} - */ - <T> T set(HasConfigKey<T> key, Task<T> val); - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java deleted file mode 100644 index 674d7f2..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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.api.objs; - -import javax.annotation.Nullable; - -/** - * EntityAdjuncts are supplementary logic that can be attached to Entities, - * such as providing sensor enrichment or event-driven policy behavior - */ -public interface EntityAdjunct extends BrooklynObject { - /** - * A unique id for this adjunct, typically created by the system with no meaning - */ - @Override - String getId(); - - /** - * Whether the adjunct is destroyed - */ - boolean isDestroyed(); - - /** - * Whether the adjunct is available/active, ie started and not stopped or interrupted - */ - boolean isRunning(); - - /** - * An optional tag used to identify adjuncts with a specific purpose, typically created by the caller. - * This is used to prevent multiple instances with the same purpose from being created, - * and to access and customize adjuncts so created. - * <p> - * This will be included in the call to {@link #getTags()}. - */ - @Nullable String getUniqueTag(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/HasShortName.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/HasShortName.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/HasShortName.java deleted file mode 100644 index 3d13337..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/HasShortName.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.api.objs; - -public interface HasShortName { - - /** gets a short name, for human-friendly identification e.g. inside the name of a VM */ - String getShortName(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Identifiable.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Identifiable.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Identifiable.java deleted file mode 100644 index bf4b042..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/Identifiable.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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.api.objs; - -public interface Identifiable { - - String getId(); -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/SpecParameter.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/SpecParameter.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/SpecParameter.java deleted file mode 100644 index fd7047e..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/objs/SpecParameter.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.api.objs; - -import java.io.Serializable; - -import javax.annotation.Nullable; - -import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.sensor.AttributeSensor; -import org.apache.brooklyn.config.ConfigKey; - -/** A wrapper around a {@link ConfigKey} which will be added to an {@link Entity}, - * providing additional information for rendering in a UI */ -public interface SpecParameter<T> extends Serializable { - /** Short name, to be used in UI */ - String getLabel(); - /** Whether visible by default in UI, not all inputs may be visible at once */ - boolean isPinned(); - /** All config key info for this spec parameter; - * this is the config key which is added to the defined type */ - ConfigKey<T> getConfigKey(); - /** An optional sensor which may also be added to the defined type */ - @Nullable AttributeSensor<?> getSensor(); - -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/policy/Policy.java ---------------------------------------------------------------------- diff --git a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/policy/Policy.java b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/policy/Policy.java deleted file mode 100644 index 5b1e2fa..0000000 --- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/policy/Policy.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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.api.policy; - -import org.apache.brooklyn.api.mgmt.rebind.RebindSupport; -import org.apache.brooklyn.api.mgmt.rebind.Rebindable; -import org.apache.brooklyn.api.mgmt.rebind.mementos.PolicyMemento; -import org.apache.brooklyn.api.objs.Configurable; -import org.apache.brooklyn.api.objs.EntityAdjunct; -import org.apache.brooklyn.config.ConfigKey; - -import com.google.common.annotations.Beta; - -/** - * Policies implement actions and thus must be suspendable; policies should continue to evaluate their sensors - * and indicate their desired planned action even if they aren't invoking them - */ -public interface Policy extends EntityAdjunct, Rebindable, Configurable { - /** - * A unique id for this policy. - */ - @Override - String getId(); - - /** - * Information about the type of this entity; analogous to Java's object.getClass. - */ - @Beta - PolicyType getPolicyType(); - - /** - * Resume the policy - */ - void resume(); - - /** - * Suspend the policy - */ - void suspend(); - - /** - * Whether the policy is suspended - */ - boolean isSuspended(); - - /** - * @deprecated since 0.7.0; use {@link #config()}, such as {@code policy.config().set(key, val)} - */ - @Deprecated - <T> T setConfig(ConfigKey<T> key, T val); - - /** - * Users are strongly discouraged from calling or overriding this method. - * It is for internal calls only, relating to persisting/rebinding entities. - * This method may change (or be removed) in a future release without notice. - */ - @Override - @Beta - RebindSupport<PolicyMemento> getRebindSupport(); - - @Override - RelationSupport<Policy> relations(); - -}
