http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f38d745/utils/src/com/cloud/utils/db/GenericDaoBase.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/GenericDaoBase.java 
b/utils/src/com/cloud/utils/db/GenericDaoBase.java
index cf30474..afb1247 100755
--- a/utils/src/com/cloud/utils/db/GenericDaoBase.java
+++ b/utils/src/com/cloud/utils/db/GenericDaoBase.java
@@ -68,6 +68,7 @@ import com.cloud.utils.DateUtil;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
+import com.cloud.utils.component.ComponentContext;
 import com.cloud.utils.component.ComponentLifecycle;
 import com.cloud.utils.component.ComponentLifecycleBase;
 import com.cloud.utils.crypt.DBEncryptionUtil;
@@ -118,7 +119,7 @@ public abstract class GenericDaoBase<T, ID extends 
Serializable> extends Compone
 
     protected final static TimeZone s_gmtTimeZone = 
TimeZone.getTimeZone("GMT");
 
-    protected final static Map<Class<?>, GenericDaoBase<?, ? extends 
Serializable>> s_daoMaps = new ConcurrentHashMap<Class<?>, GenericDaoBase<?, ? 
extends Serializable>>(71);
+    protected final static Map<Class<?>, GenericDao<?, ? extends 
Serializable>> s_daoMaps = new ConcurrentHashMap<Class<?>, GenericDao<?, ? 
extends Serializable>>(71);
 
     protected Class<T> _entityBeanType;
     protected String _table;
@@ -128,8 +129,8 @@ public abstract class GenericDaoBase<T, ID extends 
Serializable> extends Compone
     protected Field[] _embeddedFields;
 
     // This is private on purpose.  Everyone should use 
createPartialSelectSql()
-    private final Pair<StringBuilder, Attribute[]> _partialSelectSql;
-    private final Pair<StringBuilder, Attribute[]> _partialQueryCacheSelectSql;
+    private Pair<StringBuilder, Attribute[]> _partialSelectSql;
+    private Pair<StringBuilder, Attribute[]> _partialQueryCacheSelectSql;
     protected StringBuilder _discriminatorClause;
     protected Map<String, Object> _discriminatorValues;
     protected String _selectByIdSql;
@@ -141,11 +142,11 @@ public abstract class GenericDaoBase<T, ID extends 
Serializable> extends Compone
     protected Pair<String, Attribute> _removed;
     protected Pair<String, Attribute[]> _removeSql;
     protected List<Pair<String, Attribute[]>> _deleteSqls;
-    protected final Map<String, Attribute[]> _idAttributes;
-    protected final Map<String, TableGenerator> _tgs;
-    protected final Map<String, Attribute> _allAttributes;
-    protected final List<Attribute> _ecAttributes;
-    protected final Map<Pair<String, String>, Attribute> _allColumns;
+    protected Map<String, Attribute[]> _idAttributes;
+    protected Map<String, TableGenerator> _tgs;
+    protected Map<String, Attribute> _allAttributes;
+    protected List<Attribute> _ecAttributes;
+    protected Map<Pair<String, String>, Attribute> _allColumns;
     protected Enhancer _enhancer;
     protected Factory _factory;
     protected Enhancer _searchEnhancer;
@@ -159,9 +160,9 @@ public abstract class GenericDaoBase<T, ID extends 
Serializable> extends Compone
 
     protected static final SequenceFetcher s_seqFetcher = 
SequenceFetcher.getInstance();
 
-    public static <J> GenericDaoBase<? extends J, ? extends Serializable> 
getDao(Class<J> entityType) {
+    public static <J> GenericDao<? extends J, ? extends Serializable> 
getDao(Class<J> entityType) {
         @SuppressWarnings("unchecked")
-        GenericDaoBase<? extends J, ? extends Serializable> dao = 
(GenericDaoBase<? extends J, ? extends Serializable>)s_daoMaps.get(entityType);
+        GenericDao<? extends J, ? extends Serializable> dao = (GenericDao<? 
extends J, ? extends Serializable>)s_daoMaps.get(entityType);
         assert dao != null : "Unable to find DAO for " + entityType + ".  Are 
you sure you waited for the DAO to be initialized before asking for it?";
         return dao;
     }
@@ -192,13 +193,15 @@ public abstract class GenericDaoBase<T, ID extends 
Serializable> extends Compone
                     ( 
(Class<?>)((Class<?>)t).getGenericSuperclass()).getGenericSuperclass()).getActualTypeArguments()[0];
         }
 
-        s_daoMaps.put(_entityBeanType, this);
+/*        
+        s_daoMaps.put(_entityBeanType, 
ComponentContext.getComponent(this.getClass()));
         Class<?>[] interphaces = _entityBeanType.getInterfaces();
         if (interphaces != null) {
             for (Class<?> interphace : interphaces) {
-                s_daoMaps.put(interphace, this);
+                s_daoMaps.put(interphace, 
ComponentContext.getComponent(this.getClass()));
             }
         }
+*/  
         _table = DbUtil.getTableName(_entityBeanType);
 
         final SqlGenerator generator = new SqlGenerator(_entityBeanType);
@@ -1747,6 +1750,25 @@ public abstract class GenericDaoBase<T, ID extends 
Serializable> extends Compone
     public boolean configure(final String name, final Map<String, Object> 
params) throws ConfigurationException {
         _name = name;
 
+        Class<?> daoInterface = null;
+        for(Class<?> intf : this.getClass().getInterfaces()) {
+               if(GenericDao.class.isAssignableFrom(intf)) {
+                       daoInterface = intf;
+                       break;
+               }
+        }
+ 
+        if(daoInterface != null) {
+               s_logger.info("Register dao interface in GenericDaoBase 
entity-DAO map. " + daoInterface.getName());
+               s_daoMaps.put(_entityBeanType, (GenericDao<?, ? extends 
Serializable>) ComponentContext.getComponent(daoInterface));
+               Class<?>[] interphaces = _entityBeanType.getInterfaces();
+               if (interphaces != null) {
+                   for (Class<?> interphace : interphaces) {
+                       s_daoMaps.put(interphace,  (GenericDao<?, ? extends 
Serializable>) ComponentContext.getComponent(daoInterface));
+                   }
+               }
+           }
+       
         final String value = (String)params.get("lock.timeout");
         _timeoutSeconds = NumbersUtil.parseInt(value, 300);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f38d745/utils/src/com/cloud/utils/db/QueryBuilder.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/QueryBuilder.java 
b/utils/src/com/cloud/utils/db/QueryBuilder.java
index 2eb3658..3303fbd 100644
--- a/utils/src/com/cloud/utils/db/QueryBuilder.java
+++ b/utils/src/com/cloud/utils/db/QueryBuilder.java
@@ -56,21 +56,21 @@ public class QueryBuilder<S, T> implements 
MethodInterceptor, SimpleQueryBuilder
         }
     }
     
-    protected HashMap<Class<?>, Pair<GenericDaoBase<?,?>, Object>> _entities;
+    protected HashMap<Class<?>, Pair<GenericDao<?,?>, Object>> _entities;
     protected ArrayList<Attribute> _specifiedAttrs = new 
ArrayList<Attribute>();
     protected T _resultSetClass;
     protected ArrayList<Select<S, T>> _selects;
     
     public QueryBuilder(Class<T> resultSetClass, Class<?>... clazzes) {
-        _entities = new HashMap<Class<?>, Pair<GenericDaoBase<?,?>, 
Object>>(clazzes.length);
+        _entities = new HashMap<Class<?>, Pair<GenericDao<?,?>, 
Object>>(clazzes.length);
         for (Class<?> clazz : clazzes) {
-            GenericDaoBase<?,?> dao = GenericDaoBase.getDao(clazz);
+            GenericDao<?,?> dao = GenericDaoBase.getDao(clazz);
             Enhancer searchEnhancer = new Enhancer();
             searchEnhancer.setSuperclass(clazz);
             searchEnhancer.setCallback(this);
             Object entity = searchEnhancer.create();
             
-            _entities.put(clazz, new Pair<GenericDaoBase<?, ?>, Object>(dao, 
entity));
+            _entities.put(clazz, new Pair<GenericDao<?, ?>, Object>(dao, 
entity));
         }
     }
     
@@ -86,14 +86,14 @@ public class QueryBuilder<S, T> implements 
MethodInterceptor, SimpleQueryBuilder
      * @param resultSetClass result class to put the result set in.
      */
     public QueryBuilder(Class<S> entityClass, Class<T> resultSetClass) {
-        _entities = new HashMap<Class<?>, Pair<GenericDaoBase<?,?>, 
Object>>(1);
-        GenericDaoBase<?,?> dao = GenericDaoBase.getDao(entityClass);
+        _entities = new HashMap<Class<?>, Pair<GenericDao<?,?>, Object>>(1);
+        GenericDao<?,?> dao = GenericDaoBase.getDao(entityClass);
         Enhancer searchEnhancer = new Enhancer();
         searchEnhancer.setSuperclass(entityClass);
         searchEnhancer.setCallback(this);
         Object entity = searchEnhancer.create();
         
-        _entities.put(entityClass, new Pair<GenericDaoBase<?, ?>, Object>(dao, 
entity));
+        _entities.put(entityClass, new Pair<GenericDao<?, ?>, Object>(dao, 
entity));
     }
     
     @Override
@@ -114,7 +114,7 @@ public class QueryBuilder<S, T> implements 
MethodInterceptor, SimpleQueryBuilder
         return this;
     }
     
-    protected void set(GenericDaoBase<?, ?> dao , String name) {
+    protected void set(GenericDao<?, ?> dao , String name) {
         Attribute attr = dao.getAllAttributes().get(name);
         assert (attr != null) : "Searching for a field that's not there: " + 
name;
         _specifiedAttrs.add(attr);
@@ -125,9 +125,9 @@ public class QueryBuilder<S, T> implements 
MethodInterceptor, SimpleQueryBuilder
     public Object intercept(Object entity, Method method, Object[] args, 
MethodProxy proxy) throws Throwable {
         Class<?> entityClass = entity.getClass().getSuperclass();
         
-        Pair<GenericDaoBase<?,?>, Object> daoInfo = _entities.get(entityClass);
+        Pair<GenericDao<?,?>, Object> daoInfo = _entities.get(entityClass);
         assert (daoInfo != null) : "You need to specify " + entityClass + " as 
one of the entities in the Query";
-        GenericDaoBase<?,?> dao = daoInfo.first();
+        GenericDao<?,?> dao = daoInfo.first();
         
         String name = method.getName();
         if (name.startsWith("get")) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f38d745/utils/src/com/cloud/utils/db/TransactionContextBuilder.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/TransactionContextBuilder.java 
b/utils/src/com/cloud/utils/db/TransactionContextBuilder.java
index c8a7f7a..744e75c 100644
--- a/utils/src/com/cloud/utils/db/TransactionContextBuilder.java
+++ b/utils/src/com/cloud/utils/db/TransactionContextBuilder.java
@@ -30,7 +30,7 @@ public class TransactionContextBuilder implements 
MethodInterceptor {
        public Object AroundAnyMethod(ProceedingJoinPoint call) throws 
Throwable {
                MethodSignature methodSignature = 
(MethodSignature)call.getSignature();
         Method targetMethod = methodSignature.getMethod();     
-        if(needToIntercept(targetMethod)) {
+        if(true) { // TODO ??? needToIntercept(targetMethod)) {
                        Transaction txn = 
Transaction.open(call.getSignature().getName());
                        Object ret = null;
                        try {

Reply via email to