You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/13 03:18:40 UTC

[02/19] incubator-brooklyn git commit: [BROOKLYN-162] Rename ./api/basic; use the no split package convention

[BROOKLYN-162] Rename ./api/basic; use the no split package convention


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

Branch: refs/heads/master
Commit: 9bb882c5d92c223c5268bcc39224a7efb548cfce
Parents: 4243d53
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Wed Aug 12 20:06:36 2015 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Wed Aug 12 20:06:36 2015 -0400

----------------------------------------------------------------------
 .../basic/AbstractBrooklynObjectSpec.java       | 141 ------------------
 .../java/brooklyn/basic/BrooklynObject.java     |  76 ----------
 .../main/java/brooklyn/basic/BrooklynType.java  |  54 -------
 .../basic/internal/ApiObjectsFactory.java       |  61 --------
 .../internal/ApiObjectsFactoryInterface.java    |  29 ----
 api/src/main/java/brooklyn/entity/Entity.java   |   2 +-
 .../main/java/brooklyn/entity/EntityType.java   |   3 +-
 .../brooklyn/entity/proxying/EntitySpec.java    |   2 +-
 .../entity/rebind/BrooklynObjectType.java       |   3 +-
 .../brooklyn/entity/rebind/ChangeListener.java  |   2 +-
 .../rebind/PersistenceExceptionHandler.java     |   3 +-
 .../brooklyn/entity/rebind/RebindContext.java   |   3 +-
 .../entity/rebind/RebindExceptionHandler.java   |   3 +-
 .../main/java/brooklyn/location/Location.java   |   3 +-
 .../java/brooklyn/location/LocationSpec.java    |   2 +-
 .../java/brooklyn/location/LocationType.java    |   2 +-
 .../api/basic/AbstractBrooklynObjectSpec.java   | 142 +++++++++++++++++++
 .../brooklyn/api/basic/BrooklynObject.java      |  76 ++++++++++
 .../apache/brooklyn/api/basic/BrooklynType.java |  54 +++++++
 .../api/basic/internal/ApiObjectsFactory.java   |  61 ++++++++
 .../internal/ApiObjectsFactoryInterface.java    |  29 ++++
 .../apache/brooklyn/catalog/CatalogItem.java    |   2 +-
 .../brooklyn/management/ManagementContext.java  |   3 +-
 .../mementos/BrooklynMementoPersister.java      |   3 +-
 .../apache/brooklyn/policy/EnricherSpec.java    |   2 +-
 .../apache/brooklyn/policy/EnricherType.java    |   2 +-
 .../apache/brooklyn/policy/EntityAdjunct.java   |   2 +-
 .../org/apache/brooklyn/policy/PolicySpec.java  |   2 +-
 .../org/apache/brooklyn/policy/PolicyType.java  |   2 +-
 .../brooklyn/basic/AbstractBrooklynObject.java  |   2 +-
 .../brooklyn/basic/BrooklynDynamicType.java     |   2 +
 .../brooklyn/basic/BrooklynObjectInternal.java  |   2 +
 .../brooklyn/basic/BrooklynTypeSnapshot.java    |   2 +
 .../main/java/brooklyn/basic/BrooklynTypes.java |   1 +
 .../basic/internal/ApiObjectsFactoryImpl.java   |   2 +-
 .../catalog/internal/BasicBrooklynCatalog.java  |   2 +-
 .../brooklyn/catalog/internal/CatalogUtils.java |   2 +-
 .../basic/EntityTransientCopyInternal.java      |   2 +-
 .../rebind/ActivePartialRebindIteration.java    |   2 +-
 .../rebind/ImmediateDeltaChangeListener.java    |   2 +-
 .../rebind/PeriodicDeltaChangeListener.java     |   2 +-
 .../rebind/PersistenceExceptionHandlerImpl.java |   2 +-
 .../entity/rebind/RebindContextImpl.java        |   3 +-
 .../rebind/RebindContextLookupContext.java      |   4 +-
 .../rebind/RebindExceptionHandlerImpl.java      |   4 +-
 .../brooklyn/entity/rebind/RebindIteration.java |   2 +-
 .../entity/rebind/RebindManagerImpl.java        |   2 +-
 .../entity/rebind/dto/MementosGenerators.java   |   2 +-
 .../BrooklynMementoPersisterToObjectStore.java  |   4 +-
 .../persister/BrooklynPersistenceUtils.java     |   2 +-
 .../rebind/persister/XmlMementoSerializer.java  |   4 +-
 .../internal/AbstractManagementContext.java     |   4 +-
 .../internal/BrooklynObjectManagerInternal.java |   2 +-
 .../NonDeploymentManagementContext.java         |   4 +-
 ...yn.basic.internal.ApiObjectsFactoryInterface |  19 ---
 ...pi.basic.internal.ApiObjectsFactoryInterface |  19 +++
 .../entity/rebind/ActivePartialRebindTest.java  |   2 +-
 .../rebind/RecordingRebindExceptionHandler.java |   3 +-
 .../persister/XmlMementoSerializerTest.java     |   4 +-
 .../osgi/OsgiVersionMoreEntityTest.java         |   4 +-
 .../org/apache/brooklyn/cli/ItemLister.java     |   4 +-
 .../apache/brooklyn/cli/lister/ClassFinder.java |   2 +-
 .../brooklyn/cli/lister/ItemDescriptors.java    |   8 +-
 .../rest/domain/SummaryComparators.java         |   3 +-
 .../rest/util/json/BidiSerialization.java       |   2 +-
 65 files changed, 446 insertions(+), 455 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java b/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java
deleted file mode 100644
index 83db969..0000000
--- a/api/src/main/java/brooklyn/basic/AbstractBrooklynObjectSpec.java
+++ /dev/null
@@ -1,141 +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 brooklyn.basic;
-
-import java.io.Serializable;
-import java.lang.reflect.Modifier;
-import java.util.Set;
-
-import brooklyn.basic.internal.ApiObjectsFactory;
-import brooklyn.util.collections.MutableSet;
-import brooklyn.util.exceptions.Exceptions;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-
-public abstract class AbstractBrooklynObjectSpec<T,K extends AbstractBrooklynObjectSpec<T,K>> implements Serializable {
-
-    private static final long serialVersionUID = 3010955277740333030L;
-    
-    private final Class<? extends T> type;
-    private String displayName;
-    private String catalogItemId;
-    private Set<Object> tags = MutableSet.of();
-
-    protected AbstractBrooklynObjectSpec(Class<? extends T> type) {
-        checkValidType(type);
-        this.type = type;
-        this.catalogItemId = ApiObjectsFactory.get().getCatalogItemIdFromContext();
-    }
-    
-    @SuppressWarnings("unchecked")
-    protected K self() {
-        return (K) this;
-    }
-
-    @Override
-    public String toString() {
-        return Objects.toStringHelper(this).add("type", getType()).toString();
-    }
-
-    protected abstract void checkValidType(Class<? extends T> type);
-    
-    public K displayName(String val) {
-        displayName = val;
-        return self();
-    }
-    
-    public K catalogItemId(String val) {
-        catalogItemId = val;
-        return self();
-    }
-    
-    public K tag(Object tag) {
-        tags.add(tag);
-        return self();
-    }
-
-    /** adds the given tags */
-    public K tags(Iterable<Object> tagsToAdd) {
-        Iterables.addAll(this.tags, tagsToAdd);
-        return self();
-    }
-
-    /**
-     * @return The type of the object (or significant interface)
-     */
-    public Class<? extends T> getType() {
-        return type;
-    }
-    
-    /**
-     * @return The display name of the object
-     */
-    public final String getDisplayName() {
-        return displayName;
-    }
-    
-    public final String getCatalogItemId() {
-        return catalogItemId;
-    }
-
-    public final Set<Object> getTags() {
-        return ImmutableSet.copyOf(tags);
-    }
-
-    // TODO Duplicates method in BasicEntityTypeRegistry and InternalEntityFactory.isNewStyleEntity
-    protected final void checkIsNewStyleImplementation(Class<?> implClazz) {
-        try {
-            implClazz.getConstructor(new Class[0]);
-        } catch (NoSuchMethodException e) {
-            throw new IllegalStateException("Implementation "+implClazz+" must have a no-argument constructor");
-        } catch (SecurityException e) {
-            throw Exceptions.propagate(e);
-        }
-        
-        if (implClazz.isInterface()) throw new IllegalStateException("Implementation "+implClazz+" is an interface, but must be a non-abstract class");
-        if (Modifier.isAbstract(implClazz.getModifiers())) throw new IllegalStateException("Implementation "+implClazz+" is abstract, but must be a non-abstract class");
-    }
-    
-    // TODO Duplicates method in BasicEntityTypeRegistry
-    protected final void checkIsImplementation(Class<?> val, Class<? super T> requiredInterface) {
-        if (!requiredInterface.isAssignableFrom(val)) throw new IllegalStateException("Implementation "+val+" does not implement "+requiredInterface.getName());
-        if (val.isInterface()) throw new IllegalStateException("Implementation "+val+" is an interface, but must be a non-abstract class");
-        if (Modifier.isAbstract(val.getModifiers())) throw new IllegalStateException("Implementation "+val+" is abstract, but must be a non-abstract class");
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj==null) return false;
-        if (!obj.getClass().equals(getClass())) return false;
-        AbstractBrooklynObjectSpec<?,?> other = (AbstractBrooklynObjectSpec<?,?>)obj;
-        if (!Objects.equal(getDisplayName(), other.getDisplayName())) return false;
-        if (!Objects.equal(getCatalogItemId(), other.getCatalogItemId())) return false;
-        if (!Objects.equal(getType(), other.getType())) return false;
-        if (!Objects.equal(getTags(), other.getTags())) return false;
-        return true;
-    }
-    
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(getCatalogItemId(), getDisplayName(), getType(), getTags());
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/basic/BrooklynObject.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/basic/BrooklynObject.java b/api/src/main/java/brooklyn/basic/BrooklynObject.java
deleted file mode 100644
index bf1e4e7..0000000
--- a/api/src/main/java/brooklyn/basic/BrooklynObject.java
+++ /dev/null
@@ -1,76 +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 brooklyn.basic;
-
-import java.util.Set;
-
-import javax.annotation.Nonnull;
-
-import brooklyn.entity.trait.Configurable;
-import brooklyn.entity.trait.Identifiable;
-
-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();
-    
-    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);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/basic/BrooklynType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/basic/BrooklynType.java b/api/src/main/java/brooklyn/basic/BrooklynType.java
deleted file mode 100644
index fe1efe2..0000000
--- a/api/src/main/java/brooklyn/basic/BrooklynType.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 brooklyn.basic;
-
-import java.io.Serializable;
-import java.util.Set;
-
-import 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.
- */
-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/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactory.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactory.java b/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactory.java
deleted file mode 100644
index 5a87805..0000000
--- a/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactory.java
+++ /dev/null
@@ -1,61 +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 brooklyn.basic.internal;
-
-import java.util.ServiceLoader;
-
-import brooklyn.util.guava.Maybe;
-
-import com.google.common.annotations.Beta;
-
-/** 
- * This class grants access to implementations in core for operations needed in API classes.
- * The majority of the API classes are interfaces or have minimal behaviour, but there are a
- * few instances where more complex behaviour from core is desired.
- * <p>
- * This class acts as a bridge for those instances. See the concrete implementation of the
- * {@link ApiObjectsFactoryInterface} in brooklyn-core class ApiObjectsFactoryImpl.
- */
-@Beta
-public class ApiObjectsFactory {
-    
-    private static Maybe<ApiObjectsFactoryInterface> INSTANCE;
-
-    private static synchronized ApiObjectsFactoryInterface getFactoryInstance() {
-        // defer initialization to allow any other static initialization to complete,
-        // and use maybe so we (1) don't check multiple times, but (2) do throw error in the caller's stack
-        if (INSTANCE!=null) return INSTANCE.get();
-        
-        ServiceLoader<ApiObjectsFactoryInterface> LOADER = ServiceLoader.load(ApiObjectsFactoryInterface.class);
-        for (ApiObjectsFactoryInterface item : LOADER) {
-            INSTANCE = Maybe.of(item);
-            return INSTANCE.get();
-        }
-        INSTANCE = Maybe.absent("Implementation of " + ApiObjectsFactoryInterface.class + " not found on classpath; "
-            + "can be caused by IDE not copying resources, or by something else clobbering non-class resources needed for service loading");
-        return INSTANCE.get();
-    }
-
-    /**
-     * Create (if necessary) and return the concrete implementation from core for the
-     * methods exposed here. */
-    public static ApiObjectsFactoryInterface get() {
-        return getFactoryInstance();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryInterface.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryInterface.java b/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryInterface.java
deleted file mode 100644
index 275e102..0000000
--- a/api/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryInterface.java
+++ /dev/null
@@ -1,29 +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 brooklyn.basic.internal;
-
-/** 
- * Methods from downstream projects used in API classes at runtime. 
- * See {@link ApiObjectsFactory}. 
- */
-public interface ApiObjectsFactoryInterface {
-    
-    public String getCatalogItemIdFromContext();
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/Entity.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/Entity.java b/api/src/main/java/brooklyn/entity/Entity.java
index 3959273..336ebd1 100644
--- a/api/src/main/java/brooklyn/entity/Entity.java
+++ b/api/src/main/java/brooklyn/entity/Entity.java
@@ -23,13 +23,13 @@ import java.util.Map;
 
 import javax.annotation.Nullable;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.management.Task;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.EnricherSpec;
 import org.apache.brooklyn.policy.Policy;
 import org.apache.brooklyn.policy.PolicySpec;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 import brooklyn.entity.proxying.EntitySpec;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/EntityType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/EntityType.java b/api/src/main/java/brooklyn/entity/EntityType.java
index fd7ae72..673a448 100644
--- a/api/src/main/java/brooklyn/entity/EntityType.java
+++ b/api/src/main/java/brooklyn/entity/EntityType.java
@@ -21,7 +21,8 @@ package brooklyn.entity;
 import java.util.NoSuchElementException;
 import java.util.Set;
 
-import brooklyn.basic.BrooklynType;
+import org.apache.brooklyn.api.basic.BrooklynType;
+
 import brooklyn.event.Sensor;
 import brooklyn.util.guava.Maybe;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java b/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
index bed88f2..ebbf486 100644
--- a/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
+++ b/api/src/main/java/brooklyn/entity/proxying/EntitySpec.java
@@ -27,6 +27,7 @@ import java.util.Set;
 
 import javax.annotation.Nullable;
 
+import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.management.Task;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.EnricherSpec;
@@ -35,7 +36,6 @@ import org.apache.brooklyn.policy.PolicySpec;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.AbstractBrooklynObjectSpec;
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 import brooklyn.entity.Entity;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java b/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
index 582c0b1..bc3276e 100644
--- a/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
+++ b/api/src/main/java/brooklyn/entity/rebind/BrooklynObjectType.java
@@ -18,8 +18,7 @@
  */
 package brooklyn.entity.rebind;
 
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.Policy;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/rebind/ChangeListener.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/rebind/ChangeListener.java b/api/src/main/java/brooklyn/entity/rebind/ChangeListener.java
index 02d4ad2..b54af1a 100644
--- a/api/src/main/java/brooklyn/entity/rebind/ChangeListener.java
+++ b/api/src/main/java/brooklyn/entity/rebind/ChangeListener.java
@@ -18,7 +18,7 @@
  */
 package brooklyn.entity.rebind;
 
-import brooklyn.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynObject;
 
 /**
  * Listener to be notified of changes within brooklyn, so that the new state

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandler.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandler.java b/api/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandler.java
index 9c8385a..d7903c4 100644
--- a/api/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandler.java
+++ b/api/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandler.java
@@ -18,10 +18,9 @@
  */
 package brooklyn.entity.rebind;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.mementos.Memento;
 
-import brooklyn.basic.BrooklynObject;
-
 import com.google.common.annotations.Beta;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/rebind/RebindContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/rebind/RebindContext.java b/api/src/main/java/brooklyn/entity/rebind/RebindContext.java
index a17ccbe..13b0a30 100644
--- a/api/src/main/java/brooklyn/entity/rebind/RebindContext.java
+++ b/api/src/main/java/brooklyn/entity/rebind/RebindContext.java
@@ -20,10 +20,9 @@ package brooklyn.entity.rebind;
 
 import java.util.Map;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.mementos.BrooklynMementoPersister.LookupContext;
 
-import brooklyn.basic.BrooklynObject;
-
 import com.google.common.annotations.Beta;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java b/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
index 62cfb1e..932a32f 100644
--- a/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
+++ b/api/src/main/java/brooklyn/entity/rebind/RebindExceptionHandler.java
@@ -20,8 +20,7 @@ package brooklyn.entity.rebind;
 
 import java.util.List;
 
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.Policy;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/location/Location.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/Location.java b/api/src/main/java/brooklyn/location/Location.java
index 5707dbd..791ca7a 100644
--- a/api/src/main/java/brooklyn/location/Location.java
+++ b/api/src/main/java/brooklyn/location/Location.java
@@ -22,7 +22,8 @@ import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
 
-import brooklyn.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynObject;
+
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/location/LocationSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationSpec.java b/api/src/main/java/brooklyn/location/LocationSpec.java
index e89c64c..d13b7d1 100644
--- a/api/src/main/java/brooklyn/location/LocationSpec.java
+++ b/api/src/main/java/brooklyn/location/LocationSpec.java
@@ -23,11 +23,11 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import java.util.Collections;
 import java.util.Map;
 
+import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.management.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.AbstractBrooklynObjectSpec;
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/brooklyn/location/LocationType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationType.java b/api/src/main/java/brooklyn/location/LocationType.java
index 7bdb179..dceabe3 100644
--- a/api/src/main/java/brooklyn/location/LocationType.java
+++ b/api/src/main/java/brooklyn/location/LocationType.java
@@ -18,7 +18,7 @@
  */
 package brooklyn.location;
 
-import brooklyn.basic.BrooklynType;
+import org.apache.brooklyn.api.basic.BrooklynType;
 
 import com.google.common.annotations.Beta;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/api/basic/AbstractBrooklynObjectSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/basic/AbstractBrooklynObjectSpec.java b/api/src/main/java/org/apache/brooklyn/api/basic/AbstractBrooklynObjectSpec.java
new file mode 100644
index 0000000..df41378
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/basic/AbstractBrooklynObjectSpec.java
@@ -0,0 +1,142 @@
+/*
+ * 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.basic;
+
+import java.io.Serializable;
+import java.lang.reflect.Modifier;
+import java.util.Set;
+
+import org.apache.brooklyn.api.basic.internal.ApiObjectsFactory;
+
+import brooklyn.util.collections.MutableSet;
+import brooklyn.util.exceptions.Exceptions;
+
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+
+public abstract class AbstractBrooklynObjectSpec<T,K extends AbstractBrooklynObjectSpec<T,K>> implements Serializable {
+
+    private static final long serialVersionUID = 3010955277740333030L;
+    
+    private final Class<? extends T> type;
+    private String displayName;
+    private String catalogItemId;
+    private Set<Object> tags = MutableSet.of();
+
+    protected AbstractBrooklynObjectSpec(Class<? extends T> type) {
+        checkValidType(type);
+        this.type = type;
+        this.catalogItemId = ApiObjectsFactory.get().getCatalogItemIdFromContext();
+    }
+    
+    @SuppressWarnings("unchecked")
+    protected K self() {
+        return (K) this;
+    }
+
+    @Override
+    public String toString() {
+        return Objects.toStringHelper(this).add("type", getType()).toString();
+    }
+
+    protected abstract void checkValidType(Class<? extends T> type);
+    
+    public K displayName(String val) {
+        displayName = val;
+        return self();
+    }
+    
+    public K catalogItemId(String val) {
+        catalogItemId = val;
+        return self();
+    }
+    
+    public K tag(Object tag) {
+        tags.add(tag);
+        return self();
+    }
+
+    /** adds the given tags */
+    public K tags(Iterable<Object> tagsToAdd) {
+        Iterables.addAll(this.tags, tagsToAdd);
+        return self();
+    }
+
+    /**
+     * @return The type of the object (or significant interface)
+     */
+    public Class<? extends T> getType() {
+        return type;
+    }
+    
+    /**
+     * @return The display name of the object
+     */
+    public final String getDisplayName() {
+        return displayName;
+    }
+    
+    public final String getCatalogItemId() {
+        return catalogItemId;
+    }
+
+    public final Set<Object> getTags() {
+        return ImmutableSet.copyOf(tags);
+    }
+
+    // TODO Duplicates method in BasicEntityTypeRegistry and InternalEntityFactory.isNewStyleEntity
+    protected final void checkIsNewStyleImplementation(Class<?> implClazz) {
+        try {
+            implClazz.getConstructor(new Class[0]);
+        } catch (NoSuchMethodException e) {
+            throw new IllegalStateException("Implementation "+implClazz+" must have a no-argument constructor");
+        } catch (SecurityException e) {
+            throw Exceptions.propagate(e);
+        }
+        
+        if (implClazz.isInterface()) throw new IllegalStateException("Implementation "+implClazz+" is an interface, but must be a non-abstract class");
+        if (Modifier.isAbstract(implClazz.getModifiers())) throw new IllegalStateException("Implementation "+implClazz+" is abstract, but must be a non-abstract class");
+    }
+    
+    // TODO Duplicates method in BasicEntityTypeRegistry
+    protected final void checkIsImplementation(Class<?> val, Class<? super T> requiredInterface) {
+        if (!requiredInterface.isAssignableFrom(val)) throw new IllegalStateException("Implementation "+val+" does not implement "+requiredInterface.getName());
+        if (val.isInterface()) throw new IllegalStateException("Implementation "+val+" is an interface, but must be a non-abstract class");
+        if (Modifier.isAbstract(val.getModifiers())) throw new IllegalStateException("Implementation "+val+" is abstract, but must be a non-abstract class");
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj==null) return false;
+        if (!obj.getClass().equals(getClass())) return false;
+        AbstractBrooklynObjectSpec<?,?> other = (AbstractBrooklynObjectSpec<?,?>)obj;
+        if (!Objects.equal(getDisplayName(), other.getDisplayName())) return false;
+        if (!Objects.equal(getCatalogItemId(), other.getCatalogItemId())) return false;
+        if (!Objects.equal(getType(), other.getType())) return false;
+        if (!Objects.equal(getTags(), other.getTags())) return false;
+        return true;
+    }
+    
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(getCatalogItemId(), getDisplayName(), getType(), getTags());
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynObject.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynObject.java b/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynObject.java
new file mode 100644
index 0000000..8c05ad0
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynObject.java
@@ -0,0 +1,76 @@
+/*
+ * 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.basic;
+
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+
+import brooklyn.entity.trait.Configurable;
+import brooklyn.entity.trait.Identifiable;
+
+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();
+    
+    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);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynType.java b/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynType.java
new file mode 100644
index 0000000..d967cbd
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/basic/BrooklynType.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.api.basic;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import 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.
+ */
+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/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactory.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactory.java b/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactory.java
new file mode 100644
index 0000000..f1e7e14
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactory.java
@@ -0,0 +1,61 @@
+/*
+ * 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.basic.internal;
+
+import java.util.ServiceLoader;
+
+import brooklyn.util.guava.Maybe;
+
+import com.google.common.annotations.Beta;
+
+/** 
+ * This class grants access to implementations in core for operations needed in API classes.
+ * The majority of the API classes are interfaces or have minimal behaviour, but there are a
+ * few instances where more complex behaviour from core is desired.
+ * <p>
+ * This class acts as a bridge for those instances. See the concrete implementation of the
+ * {@link ApiObjectsFactoryInterface} in brooklyn-core class ApiObjectsFactoryImpl.
+ */
+@Beta
+public class ApiObjectsFactory {
+    
+    private static Maybe<ApiObjectsFactoryInterface> INSTANCE;
+
+    private static synchronized ApiObjectsFactoryInterface getFactoryInstance() {
+        // defer initialization to allow any other static initialization to complete,
+        // and use maybe so we (1) don't check multiple times, but (2) do throw error in the caller's stack
+        if (INSTANCE!=null) return INSTANCE.get();
+        
+        ServiceLoader<ApiObjectsFactoryInterface> LOADER = ServiceLoader.load(ApiObjectsFactoryInterface.class);
+        for (ApiObjectsFactoryInterface item : LOADER) {
+            INSTANCE = Maybe.of(item);
+            return INSTANCE.get();
+        }
+        INSTANCE = Maybe.absent("Implementation of " + ApiObjectsFactoryInterface.class + " not found on classpath; "
+            + "can be caused by IDE not copying resources, or by something else clobbering non-class resources needed for service loading");
+        return INSTANCE.get();
+    }
+
+    /**
+     * Create (if necessary) and return the concrete implementation from core for the
+     * methods exposed here. */
+    public static ApiObjectsFactoryInterface get() {
+        return getFactoryInstance();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactoryInterface.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactoryInterface.java b/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactoryInterface.java
new file mode 100644
index 0000000..a0c34c4
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/basic/internal/ApiObjectsFactoryInterface.java
@@ -0,0 +1,29 @@
+/*
+ * 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.basic.internal;
+
+/** 
+ * Methods from downstream projects used in API classes at runtime. 
+ * See {@link ApiObjectsFactory}. 
+ */
+public interface ApiObjectsFactoryInterface {
+    
+    public String getCatalogItemIdFromContext();
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/catalog/CatalogItem.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/catalog/CatalogItem.java b/api/src/main/java/org/apache/brooklyn/catalog/CatalogItem.java
index dc05961..9b34cb2 100644
--- a/api/src/main/java/org/apache/brooklyn/catalog/CatalogItem.java
+++ b/api/src/main/java/org/apache/brooklyn/catalog/CatalogItem.java
@@ -22,9 +22,9 @@ import java.util.Collection;
 
 import javax.annotation.Nullable;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.mementos.CatalogItemMemento;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.entity.rebind.RebindSupport;
 import brooklyn.entity.rebind.Rebindable;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/management/ManagementContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/management/ManagementContext.java b/api/src/main/java/org/apache/brooklyn/management/ManagementContext.java
index 2c8d9d1..924b929 100644
--- a/api/src/main/java/org/apache/brooklyn/management/ManagementContext.java
+++ b/api/src/main/java/org/apache/brooklyn/management/ManagementContext.java
@@ -22,8 +22,7 @@ import java.io.Serializable;
 import java.net.URI;
 import java.util.Collection;
 
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.BrooklynCatalog;
 import org.apache.brooklyn.management.entitlement.EntitlementManager;
 import org.apache.brooklyn.management.ha.HighAvailabilityManager;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/mementos/BrooklynMementoPersister.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/mementos/BrooklynMementoPersister.java b/api/src/main/java/org/apache/brooklyn/mementos/BrooklynMementoPersister.java
index 4d57f64..cac71d2 100644
--- a/api/src/main/java/org/apache/brooklyn/mementos/BrooklynMementoPersister.java
+++ b/api/src/main/java/org/apache/brooklyn/mementos/BrooklynMementoPersister.java
@@ -25,8 +25,7 @@ import java.util.concurrent.TimeoutException;
 
 import javax.annotation.Nullable;
 
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ManagementContext;
 import org.apache.brooklyn.policy.Enricher;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java b/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java
index 94c9473..b3309de 100644
--- a/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java
+++ b/api/src/main/java/org/apache/brooklyn/policy/EnricherSpec.java
@@ -23,11 +23,11 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import java.util.Collections;
 import java.util.Map;
 
+import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.management.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.AbstractBrooklynObjectSpec;
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java b/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java
index aba79a7..e96b3cd 100644
--- a/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java
+++ b/api/src/main/java/org/apache/brooklyn/policy/EnricherType.java
@@ -18,7 +18,7 @@
  */
 package org.apache.brooklyn.policy;
 
-import brooklyn.basic.BrooklynType;
+import org.apache.brooklyn.api.basic.BrooklynType;
 
 import com.google.common.annotations.Beta;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java b/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java
index f21f347..daa6cd0 100644
--- a/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java
+++ b/api/src/main/java/org/apache/brooklyn/policy/EntityAdjunct.java
@@ -20,7 +20,7 @@ package org.apache.brooklyn.policy;
 
 import javax.annotation.Nullable;
 
-import brooklyn.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynObject;
 
 /**
  * EntityAdjuncts are supplementary logic that can be attached to Entities, 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java b/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java
index afcfaef..ffb69f9 100644
--- a/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java
+++ b/api/src/main/java/org/apache/brooklyn/policy/PolicySpec.java
@@ -23,11 +23,11 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import java.util.Collections;
 import java.util.Map;
 
+import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.management.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.AbstractBrooklynObjectSpec;
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java b/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java
index 30c78e5..8d83c28 100644
--- a/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java
+++ b/api/src/main/java/org/apache/brooklyn/policy/PolicyType.java
@@ -18,7 +18,7 @@
  */
 package org.apache.brooklyn.policy;
 
-import brooklyn.basic.BrooklynType;
+import org.apache.brooklyn.api.basic.BrooklynType;
 
 import com.google.common.annotations.Beta;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java b/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
index 8ad5bcd..948792c 100644
--- a/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
+++ b/core/src/main/java/brooklyn/basic/AbstractBrooklynObject.java
@@ -22,11 +22,11 @@ import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.brooklyn.api.basic.internal.ApiObjectsFactory;
 import org.apache.brooklyn.management.ManagementContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.internal.ApiObjectsFactory;
 import brooklyn.entity.basic.AbstractEntity;
 import brooklyn.entity.proxying.InternalFactory;
 import brooklyn.entity.rebind.RebindManagerImpl;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/basic/BrooklynDynamicType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/BrooklynDynamicType.java b/core/src/main/java/brooklyn/basic/BrooklynDynamicType.java
index a7ce807..dbf8bbc 100644
--- a/core/src/main/java/brooklyn/basic/BrooklynDynamicType.java
+++ b/core/src/main/java/brooklyn/basic/BrooklynDynamicType.java
@@ -32,6 +32,8 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/basic/BrooklynObjectInternal.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/BrooklynObjectInternal.java b/core/src/main/java/brooklyn/basic/BrooklynObjectInternal.java
index 81ddc7f..f75d7a5 100644
--- a/core/src/main/java/brooklyn/basic/BrooklynObjectInternal.java
+++ b/core/src/main/java/brooklyn/basic/BrooklynObjectInternal.java
@@ -20,6 +20,8 @@ package brooklyn.basic;
 
 import java.util.Map;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
+
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 import brooklyn.entity.rebind.RebindSupport;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/basic/BrooklynTypeSnapshot.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/BrooklynTypeSnapshot.java b/core/src/main/java/brooklyn/basic/BrooklynTypeSnapshot.java
index 61e31a0..1d0ba73 100644
--- a/core/src/main/java/brooklyn/basic/BrooklynTypeSnapshot.java
+++ b/core/src/main/java/brooklyn/basic/BrooklynTypeSnapshot.java
@@ -21,6 +21,8 @@ package brooklyn.basic;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.brooklyn.api.basic.BrooklynType;
+
 import brooklyn.config.ConfigKey;
 import brooklyn.util.text.Strings;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/basic/BrooklynTypes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/BrooklynTypes.java b/core/src/main/java/brooklyn/basic/BrooklynTypes.java
index 084ecc7..b732026 100644
--- a/core/src/main/java/brooklyn/basic/BrooklynTypes.java
+++ b/core/src/main/java/brooklyn/basic/BrooklynTypes.java
@@ -20,6 +20,7 @@ package brooklyn.basic;
 
 import java.util.Map;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.Policy;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryImpl.java b/core/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryImpl.java
index 32b3fb6..b19b964 100644
--- a/core/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryImpl.java
+++ b/core/src/main/java/brooklyn/basic/internal/ApiObjectsFactoryImpl.java
@@ -18,9 +18,9 @@
  */
 package brooklyn.basic.internal;
 
+import org.apache.brooklyn.api.basic.internal.ApiObjectsFactoryInterface;
 import org.apache.brooklyn.management.Task;
 
-import brooklyn.basic.internal.ApiObjectsFactoryInterface;
 import brooklyn.entity.Entity;
 import brooklyn.entity.basic.BrooklynTaskTags;
 import brooklyn.util.task.Tasks;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
index dd365da..a5d5fd3 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -38,10 +38,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.yaml.snakeyaml.Yaml;
 
-import brooklyn.basic.AbstractBrooklynObjectSpec;
 import brooklyn.basic.BrooklynObjectInternal.ConfigurationSupportInternal;
 import brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator;
 
+import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.catalog.BrooklynCatalog;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.catalog.CatalogItem.CatalogBundle;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/catalog/internal/CatalogUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogUtils.java b/core/src/main/java/brooklyn/catalog/internal/CatalogUtils.java
index b70420a..bcc7589 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogUtils.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogUtils.java
@@ -25,9 +25,9 @@ import javax.annotation.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.basic.BrooklynObjectInternal;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.BrooklynCatalog;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.catalog.CatalogItem.CatalogBundle;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java b/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
index 057e46a..dfda0a7 100644
--- a/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
+++ b/core/src/main/java/brooklyn/entity/basic/EntityTransientCopyInternal.java
@@ -25,13 +25,13 @@ import java.util.Set;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.apache.brooklyn.api.basic.BrooklynObject.TagSupport;
 import org.apache.brooklyn.management.ExecutionContext;
 import org.apache.brooklyn.management.ManagementContext;
 import org.apache.brooklyn.mementos.EntityMemento;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.Policy;
 
-import brooklyn.basic.BrooklynObject.TagSupport;
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
 import brooklyn.entity.Application;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/ActivePartialRebindIteration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/ActivePartialRebindIteration.java b/core/src/main/java/brooklyn/entity/rebind/ActivePartialRebindIteration.java
index fe2a461..723ff22 100644
--- a/core/src/main/java/brooklyn/entity/rebind/ActivePartialRebindIteration.java
+++ b/core/src/main/java/brooklyn/entity/rebind/ActivePartialRebindIteration.java
@@ -25,6 +25,7 @@ import java.util.Set;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.management.ha.ManagementNodeState;
 import org.apache.brooklyn.mementos.BrooklynMementoPersister;
 import org.apache.brooklyn.mementos.BrooklynMementoRawData;
@@ -33,7 +34,6 @@ import org.apache.brooklyn.mementos.BrooklynMementoRawData.Builder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.basic.BrooklynObjectInternal;
 import brooklyn.entity.Entity;
 import brooklyn.entity.basic.EntityInternal;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/ImmediateDeltaChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/ImmediateDeltaChangeListener.java b/core/src/main/java/brooklyn/entity/rebind/ImmediateDeltaChangeListener.java
index 0f41389..7796c27 100644
--- a/core/src/main/java/brooklyn/entity/rebind/ImmediateDeltaChangeListener.java
+++ b/core/src/main/java/brooklyn/entity/rebind/ImmediateDeltaChangeListener.java
@@ -21,9 +21,9 @@ package brooklyn.entity.rebind;
 import java.util.Collection;
 import java.util.Map;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.basic.BrooklynObjectInternal;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.mementos.BrooklynMementoPersister;
 import org.apache.brooklyn.mementos.CatalogItemMemento;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java b/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
index 484e6f4..a8bac53 100644
--- a/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
+++ b/core/src/main/java/brooklyn/entity/rebind/PeriodicDeltaChangeListener.java
@@ -30,9 +30,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.basic.BrooklynObjectInternal;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ExecutionContext;
 import org.apache.brooklyn.management.Task;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandlerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandlerImpl.java b/core/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandlerImpl.java
index 0a540f2..198097d 100644
--- a/core/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandlerImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/PersistenceExceptionHandlerImpl.java
@@ -21,11 +21,11 @@ package brooklyn.entity.rebind;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.mementos.Memento;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.util.exceptions.Exceptions;
 
 import com.google.common.collect.Sets;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/RebindContextImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindContextImpl.java b/core/src/main/java/brooklyn/entity/rebind/RebindContextImpl.java
index 1d7f0e2..a3e6e34 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindContextImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindContextImpl.java
@@ -23,8 +23,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import java.util.Collection;
 import java.util.Map;
 
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ManagementContext;
 import org.apache.brooklyn.mementos.BrooklynMementoPersister.LookupContext;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/RebindContextLookupContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindContextLookupContext.java b/core/src/main/java/brooklyn/entity/rebind/RebindContextLookupContext.java
index e46ff66..7974efd 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindContextLookupContext.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindContextLookupContext.java
@@ -22,9 +22,7 @@ import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ManagementContext;
 import org.apache.brooklyn.mementos.BrooklynMementoPersister.LookupContext;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java b/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
index 261a0a7..b2da05a 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindExceptionHandlerImpl.java
@@ -26,9 +26,7 @@ import java.util.Set;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.Policy;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java b/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
index 87d611f..f6ffc12 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindIteration.java
@@ -34,9 +34,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import brooklyn.basic.AbstractBrooklynObject;
-import brooklyn.basic.BrooklynObject;
 import brooklyn.basic.BrooklynObjectInternal;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.BrooklynCatalog;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.classloading.BrooklynClassLoadingContext;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
index 7aa542f..45153f1 100644
--- a/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
+++ b/core/src/main/java/brooklyn/entity/rebind/RebindManagerImpl.java
@@ -29,6 +29,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.management.ExecutionContext;
 import org.apache.brooklyn.management.Task;
 import org.apache.brooklyn.management.ha.ManagementNodeState;
@@ -39,7 +40,6 @@ import org.apache.brooklyn.mementos.TreeNode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.config.BrooklynServerConfig;
 import brooklyn.config.ConfigKey;
 import brooklyn.enricher.basic.AbstractEnricher;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java b/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
index 9e697fb..a2bb4cb 100644
--- a/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
+++ b/core/src/main/java/brooklyn/entity/rebind/dto/MementosGenerators.java
@@ -25,9 +25,9 @@ import java.lang.reflect.Proxy;
 import java.util.Map;
 import java.util.Set;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.basic.BrooklynTypes;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ManagementContext;
 import org.apache.brooklyn.management.Task;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
index 74690cb..5cc4daa 100644
--- a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
+++ b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynMementoPersisterToObjectStore.java
@@ -37,9 +37,7 @@ import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.mementos.BrooklynMemento;
 import org.apache.brooklyn.mementos.BrooklynMementoManifest;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynPersistenceUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynPersistenceUtils.java b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynPersistenceUtils.java
index 73b82fe..6e45c22 100644
--- a/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynPersistenceUtils.java
+++ b/core/src/main/java/brooklyn/entity/rebind/persister/BrooklynPersistenceUtils.java
@@ -23,9 +23,9 @@ import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.basic.BrooklynObjectInternal;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ManagementContext;
 import org.apache.brooklyn.management.ha.HighAvailabilityMode;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/entity/rebind/persister/XmlMementoSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/persister/XmlMementoSerializer.java b/core/src/main/java/brooklyn/entity/rebind/persister/XmlMementoSerializer.java
index 87db916..445ccb2 100644
--- a/core/src/main/java/brooklyn/entity/rebind/persister/XmlMementoSerializer.java
+++ b/core/src/main/java/brooklyn/entity/rebind/persister/XmlMementoSerializer.java
@@ -29,9 +29,7 @@ import java.util.concurrent.atomic.AtomicReference;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.AbstractBrooklynObjectSpec;
-
+import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ManagementContext;
 import org.apache.brooklyn.management.Task;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java b/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
index 7115eb1..164c02d 100644
--- a/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
+++ b/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
@@ -34,9 +34,7 @@ import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.BrooklynCatalog;
 import org.apache.brooklyn.catalog.CatalogItem;
 import org.apache.brooklyn.management.ExecutionContext;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/management/internal/BrooklynObjectManagerInternal.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/BrooklynObjectManagerInternal.java b/core/src/main/java/brooklyn/management/internal/BrooklynObjectManagerInternal.java
index 93045be..2af7e77 100644
--- a/core/src/main/java/brooklyn/management/internal/BrooklynObjectManagerInternal.java
+++ b/core/src/main/java/brooklyn/management/internal/BrooklynObjectManagerInternal.java
@@ -18,7 +18,7 @@
  */
 package brooklyn.management.internal;
 
-import brooklyn.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynObject;
 
 public interface BrooklynObjectManagerInternal<T extends BrooklynObject> {
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/java/brooklyn/management/internal/NonDeploymentManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/NonDeploymentManagementContext.java b/core/src/main/java/brooklyn/management/internal/NonDeploymentManagementContext.java
index f664ce4..32401b8 100644
--- a/core/src/main/java/brooklyn/management/internal/NonDeploymentManagementContext.java
+++ b/core/src/main/java/brooklyn/management/internal/NonDeploymentManagementContext.java
@@ -31,9 +31,7 @@ import java.util.concurrent.TimeoutException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.BrooklynCatalog;
 import org.apache.brooklyn.management.AccessController;
 import org.apache.brooklyn.management.EntityManager;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/main/resources/META-INF/services/brooklyn.basic.internal.ApiObjectsFactoryInterface
----------------------------------------------------------------------
diff --git a/core/src/main/resources/META-INF/services/brooklyn.basic.internal.ApiObjectsFactoryInterface b/core/src/main/resources/META-INF/services/brooklyn.basic.internal.ApiObjectsFactoryInterface
deleted file mode 100644
index 4af251f..0000000
--- a/core/src/main/resources/META-INF/services/brooklyn.basic.internal.ApiObjectsFactoryInterface
+++ /dev/null
@@ -1,19 +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.
-#
-brooklyn.basic.internal.ApiObjectsFactoryImpl

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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/test/java/brooklyn/entity/rebind/ActivePartialRebindTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/ActivePartialRebindTest.java b/core/src/test/java/brooklyn/entity/rebind/ActivePartialRebindTest.java
index 137639e..7caf02e 100644
--- a/core/src/test/java/brooklyn/entity/rebind/ActivePartialRebindTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/ActivePartialRebindTest.java
@@ -18,13 +18,13 @@
  */
 package brooklyn.entity.rebind;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.test.entity.TestEntity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.entity.Entity;
 import brooklyn.entity.basic.AbstractEntity;
 import brooklyn.entity.basic.Entities;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/test/java/brooklyn/entity/rebind/RecordingRebindExceptionHandler.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RecordingRebindExceptionHandler.java b/core/src/test/java/brooklyn/entity/rebind/RecordingRebindExceptionHandler.java
index 41cead5..0658c59 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RecordingRebindExceptionHandler.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RecordingRebindExceptionHandler.java
@@ -21,7 +21,8 @@ package brooklyn.entity.rebind;
 import java.util.List;
 import java.util.Map;
 
-import brooklyn.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynObject;
+
 import brooklyn.entity.Entity;
 import brooklyn.location.Location;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/test/java/brooklyn/entity/rebind/persister/XmlMementoSerializerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/persister/XmlMementoSerializerTest.java b/core/src/test/java/brooklyn/entity/rebind/persister/XmlMementoSerializerTest.java
index 0738a7c..5cfa30f 100644
--- a/core/src/test/java/brooklyn/entity/rebind/persister/XmlMementoSerializerTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/persister/XmlMementoSerializerTest.java
@@ -44,9 +44,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 
 import brooklyn.catalog.internal.CatalogItemBuilder;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/core/src/test/java/brooklyn/management/osgi/OsgiVersionMoreEntityTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/osgi/OsgiVersionMoreEntityTest.java b/core/src/test/java/brooklyn/management/osgi/OsgiVersionMoreEntityTest.java
index da7dd08..c12c92e 100644
--- a/core/src/test/java/brooklyn/management/osgi/OsgiVersionMoreEntityTest.java
+++ b/core/src/test/java/brooklyn/management/osgi/OsgiVersionMoreEntityTest.java
@@ -31,9 +31,7 @@ import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.CatalogItem;
 
 import brooklyn.catalog.internal.CatalogEntityItemDto;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/usage/cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
----------------------------------------------------------------------
diff --git a/usage/cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java b/usage/cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
index 5027fa0..e985b87 100644
--- a/usage/cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
+++ b/usage/cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
@@ -32,9 +32,7 @@ import java.util.ServiceLoader;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import brooklyn.basic.BrooklynObject;
-
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.catalog.Catalog;
 import org.apache.brooklyn.cli.lister.ClassFinder;
 import org.apache.brooklyn.cli.lister.ItemDescriptors;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ClassFinder.java
----------------------------------------------------------------------
diff --git a/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ClassFinder.java b/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ClassFinder.java
index 9a22f83..7470392 100644
--- a/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ClassFinder.java
+++ b/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ClassFinder.java
@@ -26,6 +26,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.Policy;
 import org.reflections.Reflections;
@@ -36,7 +37,6 @@ import org.reflections.util.ConfigurationBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import brooklyn.basic.BrooklynObject;
 import brooklyn.enricher.basic.AbstractEnricher;
 import brooklyn.entity.Application;
 import brooklyn.entity.Entity;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ItemDescriptors.java
----------------------------------------------------------------------
diff --git a/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ItemDescriptors.java b/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ItemDescriptors.java
index d7e2c8c..17a9ffd 100644
--- a/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ItemDescriptors.java
+++ b/usage/cli/src/main/java/org/apache/brooklyn/cli/lister/ItemDescriptors.java
@@ -28,16 +28,19 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import brooklyn.basic.BrooklynDynamicType;
-import brooklyn.basic.BrooklynObject;
-import brooklyn.basic.BrooklynType;
 import brooklyn.basic.BrooklynTypes;
+
+import org.apache.brooklyn.api.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynType;
 import org.apache.brooklyn.catalog.Catalog;
+
 import brooklyn.config.ConfigKey;
 import brooklyn.entity.Effector;
 import brooklyn.entity.EntityType;
 import brooklyn.entity.basic.BrooklynConfigKeys;
 import brooklyn.event.Sensor;
 import brooklyn.location.LocationResolver;
+
 import org.apache.brooklyn.rest.domain.EffectorSummary;
 import org.apache.brooklyn.rest.domain.EntityConfigSummary;
 import org.apache.brooklyn.rest.domain.SensorSummary;
@@ -45,6 +48,7 @@ import org.apache.brooklyn.rest.domain.SummaryComparators;
 import org.apache.brooklyn.rest.transform.EffectorTransformer;
 import org.apache.brooklyn.rest.transform.EntityTransformer;
 import org.apache.brooklyn.rest.transform.SensorTransformer;
+
 import brooklyn.util.exceptions.RuntimeInterruptedException;
 
 import com.google.common.base.Strings;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9bb882c5/usage/rest-api/src/main/java/org/apache/brooklyn/rest/domain/SummaryComparators.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/org/apache/brooklyn/rest/domain/SummaryComparators.java b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/domain/SummaryComparators.java
index 857716a..8d96efd 100644
--- a/usage/rest-api/src/main/java/org/apache/brooklyn/rest/domain/SummaryComparators.java
+++ b/usage/rest-api/src/main/java/org/apache/brooklyn/rest/domain/SummaryComparators.java
@@ -22,7 +22,8 @@ import java.util.Comparator;
 
 import javax.annotation.Nonnull;
 
-import brooklyn.basic.BrooklynObject;
+import org.apache.brooklyn.api.basic.BrooklynObject;
+
 import brooklyn.util.text.NaturalOrderComparator;
 import brooklyn.util.text.Strings;