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");
}