Repository: brooklyn-server
Updated Branches:
  refs/heads/0.5.0 [created] 8ebab0b2f


Override AbstractApplication.init()

- AbstractApplication.init() logs warning that the method will be
  most likely be deprecated in a future release.
- Override init() in sub-classes.


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

Branch: refs/heads/0.5.0
Commit: d2ed034adb2b79e2954a5730eee8325c857d4a96
Parents: 320289e
Author: Aled Sage <[email protected]>
Authored: Thu Mar 28 14:52:48 2013 +0000
Committer: Aled Sage <[email protected]>
Committed: Fri Mar 29 09:37:57 2013 +0000

----------------------------------------------------------------------
 .../entity/basic/AbstractApplication.java       | 10 ++++++++++
 .../brooklyn/entity/basic/AbstractEntity.groovy | 16 +++++++++------
 .../entity/basic/BasicApplicationImpl.java      |  5 +++++
 .../catalog/internal/MyCatalogItems.java        |  7 ++++++-
 .../test/entity/TestApplicationImpl.java        |  6 +++++-
 .../CloudFoundryJavaClusterExample.groovy       | 10 +++++++---
 ...FoundryJavaClusterFromLocationExample.groovy |  5 +++++
 .../OpenshiftExpressJavaWebAppCluster.groovy    |  4 ++--
 ...penshiftExpressJavaClusterOnlyExample.groovy | 21 ++++++++++++--------
 .../rest/testing/mocks/RestMockApp.java         |  4 ++++
 .../util/BrooklynRestResourceUtilsTest.java     |  4 ++++
 11 files changed, 71 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java 
b/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
index 5923dd9..8cddb6e 100644
--- a/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
+++ b/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
@@ -20,6 +20,11 @@ import brooklyn.util.ResourceUtils;
 import brooklyn.util.exceptions.Exceptions;
 import brooklyn.util.flags.SetFromFlag;
 
+/**
+ * Users can extend this to define the entities in their application, and the 
relationships between
+ * those entities. Users should override the {@link #init()} method, and in 
there should create 
+ * their entities.
+ */
 public abstract class AbstractApplication extends AbstractEntity implements 
StartableApplication {
     public static final Logger log = 
LoggerFactory.getLogger(AbstractApplication.class);
     
@@ -88,6 +93,11 @@ public abstract class AbstractApplication extends 
AbstractEntity implements Star
     }
 
     @Override
+    public void init() {
+        log.warn("Deprecated: AbstractApplication.init() will be declared 
abstract in a future release; please override for code instantiating child 
entities");
+    }
+
+    @Override
     public Application getApplication() {
         if (application!=null) {
             if (application.getId().equals(getId()))

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/core/src/main/java/brooklyn/entity/basic/AbstractEntity.groovy
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/AbstractEntity.groovy 
b/core/src/main/java/brooklyn/entity/basic/AbstractEntity.groovy
index f8ce84b..7d1e51d 100644
--- a/core/src/main/java/brooklyn/entity/basic/AbstractEntity.groovy
+++ b/core/src/main/java/brooklyn/entity/basic/AbstractEntity.groovy
@@ -57,13 +57,18 @@ import com.google.common.collect.Maps
 
 /**
  * Default {@link Entity} implementation, which should be extended whenever 
implementing an entity.
- *
+ * <p>
  * Provides several common fields ({@link #name}, {@link #id}), and supports 
the core features of
  * an entity such as configuration keys, attributes, subscriptions and 
effector invocation.
- * 
+ * <p>
+ * If a sub-class is creating other entities, this should be done in an 
overridden {@link #init()}
+ * method.
+ * <p>
+ * Note that config is typically inherited by children, whereas the fields and 
attributes are not.
+ * <p>
  * Though currently Groovy code, this is very likely to change to pure Java in 
a future release of 
  * Brooklyn so Groovy'isms should not be relied on.
- * 
+ * <p>
  * Sub-classes should have a no-argument constructor. When brooklyn creates an 
entity, it will:
  * <ol>
  *   <li>Construct the entity via the no-argument constructor
@@ -74,11 +79,9 @@ import com.google.common.collect.Maps
  *   <li>Configure the entity, first via the "flags" map and then via 
configuration keys
  *   <li>Set  the parent
  * </ol>
- * 
+ * <p>
  * The legacy (pre 0.5) mechanism for creating entities is for others to call 
the constructor directly.
  * This is now deprecated.
- * 
- * Note that config is typically inherited by children, whereas the fields and 
attributes are not.
  */
 public abstract class AbstractEntity extends GroovyObjectSupport implements 
EntityLocal, EntityInternal, GroovyInterceptable {
     
@@ -403,6 +406,7 @@ public abstract class AbstractEntity extends 
GroovyObjectSupport implements Enti
      * </pre>
      */
     public void init() {
+        // no-op
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java 
b/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
index d68d14e..6237b10 100644
--- a/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
+++ b/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
@@ -3,4 +3,9 @@ package brooklyn.entity.basic;
 public class BasicApplicationImpl extends AbstractApplication implements 
BasicApplication {
     public BasicApplicationImpl() {
     }
+    
+    @Override
+    public void init() {
+        // no-op
+    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java 
b/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
index 70b6ba1..9914c40 100644
--- a/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
+++ b/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
@@ -8,7 +8,12 @@ import brooklyn.entity.basic.ApplicationBuilder;
 public class MyCatalogItems {
 
     @Catalog(description="Some silly app test")
-    public static class MySillyAppTemplate extends AbstractApplication {}
+    public static class MySillyAppTemplate extends AbstractApplication {
+        @Override
+        public void init() {
+            // no-op
+        }
+    }
     
     @Catalog(description="Some silly app builder test")
     public static class MySillyAppBuilderTemplate extends ApplicationBuilder {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java 
b/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
index 9d07706..1cc983c 100644
--- a/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
+++ b/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
@@ -9,7 +9,6 @@ import org.testng.Assert;
 import brooklyn.entity.Entity;
 import brooklyn.entity.Group;
 import brooklyn.entity.basic.AbstractApplication;
-import brooklyn.entity.basic.AbstractEntity;
 import brooklyn.entity.basic.Entities;
 import brooklyn.entity.proxying.EntitySpec;
 import brooklyn.event.Sensor;
@@ -29,6 +28,11 @@ public class TestApplicationImpl extends AbstractApplication 
implements TestAppl
         super(properties);
     }
 
+    @Override
+    public void init() {
+        // no-op
+    }
+    
     /**
      * @deprecated Use {@link #addChild(EntitySpec)}
      */

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterExample.groovy
----------------------------------------------------------------------
diff --git 
a/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterExample.groovy
 
b/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterExample.groovy
index ec73603..89db1bd 100644
--- 
a/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterExample.groovy
+++ 
b/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterExample.groovy
@@ -33,9 +33,13 @@ public class CloudFoundryJavaClusterExample extends 
AbstractApplication {
     private static final Logger log = 
LoggerFactory.getLogger(CloudFoundryJavaClusterExample.class)
     
     public static final String WAR_FILE_URL = "classpath://hello-world.war";
-                
-    CloudFoundryJavaWebAppCluster cloudfoundry = 
-      new CloudFoundryJavaWebAppCluster(this, war: WAR_FILE_URL);
+    
+    CloudFoundryJavaWebAppCluster cloudfoundry;
+    
+    @Override
+    public void init() {
+        cloudfoundry = new CloudFoundryJavaWebAppCluster(this, war: 
WAR_FILE_URL);
+    }
     
     // TODO a richer example which starts CloudFoundry alongside Tomcats in 
EC2 with geoscaling
       

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterFromLocationExample.groovy
----------------------------------------------------------------------
diff --git 
a/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterFromLocationExample.groovy
 
b/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterFromLocationExample.groovy
index 0eb66a9..4f21441 100644
--- 
a/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterFromLocationExample.groovy
+++ 
b/systems/paas/cloudfoundry/src/test/java/brooklyn/extras/cloudfoundry/CloudFoundryJavaClusterFromLocationExample.groovy
@@ -41,6 +41,11 @@ class CloudFoundryJavaClusterFromLocationExample extends 
AbstractApplication {
     ElasticJavaWebAppService svc;
     
     @Override
+    public void init() {
+        // no-op; see preStart
+    }
+
+    @Override
     public void preStart(Collection<? extends Location> locations) {
         svc = new ElasticJavaWebAppService.Factory().newFactoryForLocation( 
Iterables.getOnlyElement(locations) ).
             newEntity(this, war: WAR_FILE_URL);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/systems/paas/openshift/src/main/java/brooklyn/extras/openshift/OpenshiftExpressJavaWebAppCluster.groovy
----------------------------------------------------------------------
diff --git 
a/systems/paas/openshift/src/main/java/brooklyn/extras/openshift/OpenshiftExpressJavaWebAppCluster.groovy
 
b/systems/paas/openshift/src/main/java/brooklyn/extras/openshift/OpenshiftExpressJavaWebAppCluster.groovy
index 7e6acd6..d1911d4 100644
--- 
a/systems/paas/openshift/src/main/java/brooklyn/extras/openshift/OpenshiftExpressJavaWebAppCluster.groovy
+++ 
b/systems/paas/openshift/src/main/java/brooklyn/extras/openshift/OpenshiftExpressJavaWebAppCluster.groovy
@@ -21,6 +21,8 @@ class OpenshiftExpressJavaWebAppCluster extends 
AbstractEntity implements Starta
 
     private static final Logger log = 
LoggerFactory.getLogger(OpenshiftExpressJavaWebAppCluster.class)
     
+    public static final BasicConfigKey<String> APP_NAME = [ String, "appName", 
"System name for uniquely referring to application; defaults to Brooklyn999999 
" ]
+                    
     public OpenshiftExpressJavaWebAppCluster(Map flags=[:], Entity 
parent=null) {
         super(flags, parent)
         setConfigIfValNonNull(ROOT_WAR, flags.war)
@@ -28,8 +30,6 @@ class OpenshiftExpressJavaWebAppCluster extends 
AbstractEntity implements Starta
         setAttribute(AbstractService.SERVICE_STATUS, "uninitialized")
     }
 
-    public static final BasicConfigKey<String> APP_NAME = [ String, "appName", 
"System name for uniquely referring to application; defaults to Brooklyn999999 
" ]
-    
     public String getAppName() {
         def appName = getConfig(APP_NAME);
         if (appName) return appName;

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/systems/paas/openshift/src/test/java/brooklyn/extras/openshift/OpenshiftExpressJavaClusterOnlyExample.groovy
----------------------------------------------------------------------
diff --git 
a/systems/paas/openshift/src/test/java/brooklyn/extras/openshift/OpenshiftExpressJavaClusterOnlyExample.groovy
 
b/systems/paas/openshift/src/test/java/brooklyn/extras/openshift/OpenshiftExpressJavaClusterOnlyExample.groovy
index 0d2faa9..50d79f5 100644
--- 
a/systems/paas/openshift/src/test/java/brooklyn/extras/openshift/OpenshiftExpressJavaClusterOnlyExample.groovy
+++ 
b/systems/paas/openshift/src/test/java/brooklyn/extras/openshift/OpenshiftExpressJavaClusterOnlyExample.groovy
@@ -56,23 +56,28 @@ class OpenshiftExpressJavaClusterOnlyExample extends 
AbstractApplication {
     private static final Logger log = 
LoggerFactory.getLogger(OpenshiftExpressJavaClusterOnlyExample.class)
     
     File warFile = TestUtils.getResource("hello-world.war", 
getClass().getClassLoader())
-                
-    OpenshiftExpressJavaWebAppCluster openshift = 
-      new OpenshiftExpressJavaWebAppCluster(this, war: 
warFile.getAbsolutePath());
+    
+    OpenshiftExpressJavaWebAppCluster openshift;
+    
+    @Override
+    public void init() {
+        openshift = new OpenshiftExpressJavaWebAppCluster(this, war: 
warFile.getAbsolutePath());
+    }
+
     
     // TODO a richer example which starts Openshift alongside JBosses in EC2 
with geoscaling
     // TODO (shouldn't use the tomcat-branded hello world for this :)
       
     // ---- the code above is your app descriptor; code below runs it ----
       
-    OpenshiftLocation loc = new OpenshiftLocation(
-          username: OpenshiftExpressAccessIntegrationTest.TEST_USER,
-          password: OpenshiftExpressAccessIntegrationTest.TEST_PASSWORD)
-      
     public static void main(String[] args) {
+        OpenshiftLocation loc = new OpenshiftLocation(
+              username: OpenshiftExpressAccessIntegrationTest.TEST_USER,
+              password: OpenshiftExpressAccessIntegrationTest.TEST_PASSWORD)
+      
         def app = new OpenshiftExpressJavaClusterOnlyExample();
         
-        app.start([app.loc]);
+        app.start([loc]);
         
         log.info "should now be able to visit site (for 60s): {}", 
app.openshift.getWebAppAddress()
         //should now be able to visit (assert?)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/usage/rest/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
----------------------------------------------------------------------
diff --git 
a/usage/rest/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java 
b/usage/rest/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
index 249082b..f1575a8 100644
--- a/usage/rest/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
+++ b/usage/rest/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
@@ -15,4 +15,8 @@ public class RestMockApp extends AbstractApplication {
         super(properties);
     }
 
+    @Override
+    public void init() {
+        // no-op
+    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d2ed034a/usage/rest/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
----------------------------------------------------------------------
diff --git 
a/usage/rest/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
 
b/usage/rest/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
index 319e87d..1e705de 100644
--- 
a/usage/rest/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
+++ 
b/usage/rest/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
@@ -95,6 +95,10 @@ public class BrooklynRestResourceUtilsTest {
 
     @Catalog
     public static class MyApplicationImpl extends AbstractApplication 
implements MyInterface {
+        @Override
+        public void init() {
+            // no-op
+        }
     }
     
     public static class MyPolicy extends AbstractPolicy {

Reply via email to