package kr.debop4j.data.ogm.test.utils;
/**
* GridDialectType
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* 13. 3. 29. 오후 4:39
*/
public enum GridDialectType {
HASHMAP("kr.debop4j.data.ogm.test.utils.HashMapTestHelper") {
@Override
public Class<?> loadTestableGridDialectClass() {
return null; //this one is special, we want it only as fallback when all others fail
}
},
INFINISPAN("org.hibernate.ogm.test.utils.InfinispanTestHelper"),
EHCACHE("kr.debop4j.data.ehcache.ogm.test.utils.EhcacheTestHelper"),
MONGODB("kr.debop4j.data.mongodb.test.utils.MongoDBTestHelper"),
REDIS("kr.debop4j.data.redis.ogm.test.utils.RedisTestHelper");
// HASHMAP( "org.hibernate.ogm.test.utils.HashMapTestHelper" ) {
// @Override public Class<?> loadTestableGridDialectClass() {
// return null; //this one is special, we want it only as fallback when all others fail
// }
// },
//
// INFINISPAN( "org.hibernate.ogm.test.utils.InfinispanTestHelper" ),
//
// EHCACHE( "org.hibernate.ogm.test.utils.EhcacheTestHelper" ),
//
// MONGODB( "org.hibernate.ogm.test.utils.MongoDBTestHelper" );
private final String testHelperClassName;
GridDialectType(String testHelperClassName) {
this.testHelperClassName = testHelperClassName;
}
public Class<?> loadTestableGridDialectClass() {
Class<?> classForName = null;
try {
classForName = Class.forName(testHelperClassName);
} catch (ClassNotFoundException e) {
//ignore this: might not be available
}
return classForName;
}
public static GridDialectType valueFromHelperClass(Class<? extends TestableGridDialect> class1) {
for (GridDialectType type : values()) {
if (type.testHelperClassName.equals(class1.getName())) {
return type;
}
}
throw new IllegalArgumentException(class1 + " is not one of the TestableGridDialect implementation known to " + GridDialectType.class);
}
}