Author: ivol37 at gmail.com
Date: Thu Jan 13 15:11:23 2011
New Revision: 619

Log:
[AMDATU-254] Added check for auto bootstrap mode

Modified:
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
   
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
   
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/ProfileDataProvider.java

Modified: 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
      (original)
+++ 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
      Thu Jan 13 15:11:23 2011
@@ -60,6 +60,11 @@
     public static final String WRITE_CONSISTENCY_LEVEL = 
"consistency_level_write";
 
     /**
+     * Configuration key for the auto bootstrap mode
+     */
+    public static final String AUTOBOOTSTRAP_MODE = "autobootstrap";
+
+    /**
      * Configuration key that stores a list of IP addresses that are part of 
this cluster. The IP addresses
      * are stored comma separated in ConfigurationAdmin.
      */
@@ -101,4 +106,11 @@
      * @return The write consistency level
      */
     ConsistencyLevel getWriteConsistencyLevel();
+
+    /**
+     * Returns if this Cassandra node is running in auto bootstrap mode. Auto 
bootstrap mode is
+     * enabled for new nodes joining the cluster.
+     * @return true if auto bootstrap is enabled, false otherwise
+     */
+    boolean isAutoBootstrapMode();
 }

Modified: 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
  (original)
+++ 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
  Thu Jan 13 15:11:23 2011
@@ -53,6 +53,7 @@
     private int m_defaultReplicationFactor;
     private ConsistencyLevel m_readConsistencyLevel;
     private ConsistencyLevel m_writeConsistencyLevel;
+    private boolean m_bootstrapMode;
 
     /**
      * The init() method is invoked by the Felix dependency manager. It allows 
us to initialize our service. In this
@@ -109,6 +110,7 @@
             m_defaultReplicationFactor = 
Integer.parseInt(dictionary.get(DEFAULT_REPLICATION_FACTOR).toString());
             m_readConsistencyLevel = 
ConsistencyLevel.valueOf(dictionary.get(READ_CONSISTENCY_LEVEL).toString());
             m_writeConsistencyLevel = 
ConsistencyLevel.valueOf(dictionary.get(WRITE_CONSISTENCY_LEVEL).toString());
+            m_bootstrapMode = 
dictionary.get(AUTOBOOTSTRAP_MODE).toString().equalsIgnoreCase("true");
         }
     }
 
@@ -141,4 +143,8 @@
     public ConsistencyLevel getWriteConsistencyLevel() {
         return m_writeConsistencyLevel;
     }
+
+    public boolean isAutoBootstrapMode() {
+        return m_bootstrapMode;
+    }
 }

Modified: 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
     (original)
+++ 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/osgi/Activator.java
     Thu Jan 13 15:11:23 2011
@@ -16,6 +16,7 @@
  */
 package org.amdatu.example.course.service.osgi;
 
+import org.amdatu.cassandra.application.CassandraConfigurationService;
 import org.amdatu.core.config.templates.ConfigTemplateManager;
 import org.amdatu.example.course.service.CourseService;
 import org.amdatu.example.course.service.service.CourseOntologyDataProvider;
@@ -86,6 +87,7 @@
             createComponent()
             .setImplementation(ProfileDataProvider.class)
             
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+            
.add(createServiceDependency().setService(CassandraConfigurationService.class).setRequired(true))
             
.add(createServiceDependency().setService(PersonService.class).setRequired(true))
             
.add(createServiceDependency().setService(UserAdmin.class).setRequired(true)));
     }

Modified: 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/ProfileDataProvider.java
==============================================================================
--- 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/ProfileDataProvider.java
        (original)
+++ 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/ProfileDataProvider.java
        Thu Jan 13 15:11:23 2011
@@ -17,6 +17,7 @@
 package org.amdatu.example.course.service.service;
 
 import org.amdatu.authorization.login.service.LoginService;
+import org.amdatu.cassandra.application.CassandraConfigurationService;
 import org.amdatu.opensocial.profile.PersonService;
 import org.amdatu.opensocial.profile.SerializablePersonImpl;
 import org.apache.shindig.social.core.model.NameImpl;
@@ -37,6 +38,7 @@
     private volatile LogService m_logService;
     private volatile UserAdmin m_userAdmin;
     private volatile PersonService m_personService;
+    private volatile CassandraConfigurationService m_cassandraConfig;
 
     /**
      * The init() method is invoked by the Felix dependency manager.
@@ -62,33 +64,37 @@
             // FIXME: works for now but we should set some 'initialized' 
property in config admin
             // but since we are using fileinstall, that cannot be done using 
ConfigurationAdmin
             if (m_userAdmin.getRoles(null) == null || 
m_userAdmin.getRoles(null).length <= 2) {
-                m_logService.log(LogService.LOG_DEBUG, "Less then 2 roles 
found in UserAdmin, creating test roles");
+                if (!m_cassandraConfig.isAutoBootstrapMode()) {
+                    m_logService.log(LogService.LOG_DEBUG, "Less then 2 roles 
found in UserAdmin, creating test roles");
 
-                // Create 8 test profiles for "John Doe", "Jane Doe", "George 
Doe", "Melissa Doe",
-                // "Ted Brown", "Elisa Devis", "Mario Rossi" and "Maija 
Meikalainen"
-                createTestPerson("johnd", "John Doe", 43, new 
String[]{"janed", "georged", "melissad", "marior"});
-                createTestPerson("janed", "Jane Doe", 41, new 
String[]{"johnd", "georged", "melissad", "maijam"});
-                createTestPerson("georged", "George Doe", 13, new 
String[]{"johnd", "janed", "melissad", "tedb"});
-                createTestPerson("melissad", "Melissa Doe", 16, new 
String[]{"johnd", "janed", "georged", "elisab"});
-                createTestPerson("tedb", "Ted Brown", 13, new 
String[]{"georged"});
-                createTestPerson("elisad", "Elisa Davis", 15, new 
String[]{"melissad"});
-                createTestPerson("marior", "Mario Rossi", 54, new 
String[]{"johnd"});
-                createTestPerson("maijam", "Maija Meik\u00e4l\u00e4inen", 37, 
new String[]{"janed"});
-
-                // Now create roles 'Teacher' and 'Student' and assign basic 
members
-                Group teacher = (Group) m_userAdmin.createRole("Teacher", 
Role.GROUP);
-                teacher.addMember(m_userAdmin.getRole("marior"));
-                teacher.addMember(m_userAdmin.getRole("maijam"));
-
-                Group student = (Group) m_userAdmin.createRole("Student", 
Role.GROUP);
-                student.addMember(m_userAdmin.getRole("elisad"));
-                student.addMember(m_userAdmin.getRole("melissad"));
-                student.addMember(m_userAdmin.getRole("tedb"));
-                student.addMember(m_userAdmin.getRole("georged"));
-
-                Group parent = (Group) m_userAdmin.createRole("Parent", 
Role.GROUP);
-                parent.addMember(m_userAdmin.getRole("janed"));
-                parent.addMember(m_userAdmin.getRole("johnd"));
+                    // Create 8 test profiles for "John Doe", "Jane Doe", 
"George Doe", "Melissa Doe",
+                    // "Ted Brown", "Elisa Devis", "Mario Rossi" and "Maija 
Meikalainen"
+                    createTestPerson("johnd", "John Doe", 43, new 
String[]{"janed", "georged", "melissad", "marior"});
+                    createTestPerson("janed", "Jane Doe", 41, new 
String[]{"johnd", "georged", "melissad", "maijam"});
+                    createTestPerson("georged", "George Doe", 13, new 
String[]{"johnd", "janed", "melissad", "tedb"});
+                    createTestPerson("melissad", "Melissa Doe", 16, new 
String[]{"johnd", "janed", "georged", "elisab"});
+                    createTestPerson("tedb", "Ted Brown", 13, new 
String[]{"georged"});
+                    createTestPerson("elisad", "Elisa Davis", 15, new 
String[]{"melissad"});
+                    createTestPerson("marior", "Mario Rossi", 54, new 
String[]{"johnd"});
+                    createTestPerson("maijam", "Maija Meik\u00e4l\u00e4inen", 
37, new String[]{"janed"});
+
+                    // Now create roles 'Teacher' and 'Student' and assign 
basic members
+                    Group teacher = (Group) m_userAdmin.createRole("Teacher", 
Role.GROUP);
+                    teacher.addMember(m_userAdmin.getRole("marior"));
+                    teacher.addMember(m_userAdmin.getRole("maijam"));
+
+                    Group student = (Group) m_userAdmin.createRole("Student", 
Role.GROUP);
+                    student.addMember(m_userAdmin.getRole("elisad"));
+                    student.addMember(m_userAdmin.getRole("melissad"));
+                    student.addMember(m_userAdmin.getRole("tedb"));
+                    student.addMember(m_userAdmin.getRole("georged"));
+
+                    Group parent = (Group) m_userAdmin.createRole("Parent", 
Role.GROUP);
+                    parent.addMember(m_userAdmin.getRole("janed"));
+                    parent.addMember(m_userAdmin.getRole("johnd"));
+                } else {
+                    m_logService.log(LogService.LOG_DEBUG, "Running in auto 
boostrap mode, no data inserted");
+                }
             } else {
                 m_logService.log(LogService.LOG_DEBUG, "Test users already 
exist, none created");
             }

Reply via email to