Explorar o código

fix copy bean ref

AE86 %!s(int64=5) %!d(string=hai) anos
pai
achega
c4e44efe19

+ 27 - 0
dbsyncer-cache/src/main/java/org/dbsyncer/cache/CacheException.java

@@ -0,0 +1,27 @@
+package org.dbsyncer.cache;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2020/1/8 15:17
+ */
+public class CacheException extends RuntimeException {
+
+    private static final long serialVersionUID = 1L;
+
+    public CacheException(String message) {
+        super(message);
+    }
+
+    public CacheException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public CacheException(Throwable cause) {
+        super(cause);
+    }
+
+    protected CacheException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 1 - 13
dbsyncer-cache/src/main/java/org/dbsyncer/cache/CacheService.java

@@ -42,13 +42,6 @@ public interface CacheService {
      */
     Object get(String key);
 
-    /**
-     * 获取所有值
-     *
-     * @return
-     */
-    Map<String, Object> getAll();
-
     /**
      * 根据Key获取值
      *
@@ -59,9 +52,4 @@ public interface CacheService {
      */
     <T> T get(String key, Class<T> valueType);
 
-    /**
-     * 清空缓存
-     */
-    void clear();
-
-}
+}

+ 0 - 13
dbsyncer-cache/src/main/java/org/dbsyncer/cache/CacheServiceImpl.java

@@ -2,7 +2,6 @@ package org.dbsyncer.cache;
 
 import org.springframework.stereotype.Component;
 
-import java.util.Collections;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -36,21 +35,9 @@ public class CacheServiceImpl implements CacheService {
         return cache.get(key);
     }
 
-    @Override
-    public Map<String, Object> getAll() {
-        if(!cache.isEmpty()){
-            return Collections.unmodifiableMap(cache);
-        }
-        return Collections.emptyMap();
-    }
-
     @Override
     public <T> T get(String key, Class<T> valueType) {
         return (T) cache.get(key);
     }
 
-    @Override
-    public void clear() {
-        cache.clear();
-    }
 }

+ 16 - 2
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/ConfigOperationTemplate.java

@@ -1,5 +1,6 @@
 package org.dbsyncer.manager.template.impl;
 
+import org.dbsyncer.cache.CacheException;
 import org.dbsyncer.cache.CacheService;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.manager.template.*;
@@ -9,6 +10,7 @@ import org.dbsyncer.storage.StorageService;
 import org.dbsyncer.storage.constant.StorageConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
@@ -50,14 +52,26 @@ public class ConfigOperationTemplate {
                         list.add((T) v);
                     }
                 });
-                return list;
+                return Collections.unmodifiableList(list);
             }
         }
         return Collections.EMPTY_LIST;
     }
 
     public <T> T queryObject(Class<T> filterClass, String id) {
-        return (T) cacheService.get(id);
+        Object o = cacheService.get(id, filterClass);
+        T t;
+        try {
+            t = filterClass.newInstance();
+            if(null != o && null != t){
+                BeanUtils.copyProperties(o, t);
+            }
+        } catch (InstantiationException e) {
+            throw new CacheException(e.getMessage());
+        } catch (IllegalAccessException e) {
+            throw new CacheException(e.getMessage());
+        }
+        return (T) t;
     }
 
     public String execute(ConfigModel model, OperationTemplate operationTemplate) {

+ 8 - 3
dbsyncer-parser/src/main/java/org/dbsyncer/parser/ParserFactory.java

@@ -3,12 +3,14 @@ package org.dbsyncer.parser;
 import org.dbsyncer.cache.CacheService;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.JsonUtil;
-import org.dbsyncer.connector.config.*;
-import org.dbsyncer.connector.template.CommandTemplate;
 import org.dbsyncer.connector.ConnectorFactory;
+import org.dbsyncer.connector.config.ConnectorConfig;
+import org.dbsyncer.connector.config.MetaInfo;
+import org.dbsyncer.connector.config.Table;
 import org.dbsyncer.connector.enums.ConnectorEnum;
 import org.dbsyncer.connector.enums.FilterEnum;
 import org.dbsyncer.connector.enums.OperationEnum;
+import org.dbsyncer.connector.template.CommandTemplate;
 import org.dbsyncer.parser.enums.ConvertEnum;
 import org.dbsyncer.parser.model.Connector;
 import org.dbsyncer.parser.model.FieldMapping;
@@ -19,6 +21,7 @@ import org.json.JSONException;
 import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
@@ -160,7 +163,9 @@ public class ParserFactory implements Parser {
         Assert.hasText(connectorId, "Connector id can not be empty.");
         Connector conn = cacheService.get(connectorId, Connector.class);
         Assert.notNull(conn, "Connector can not be null.");
-        return conn.getConfig();
+        Connector connector = new Connector();
+        BeanUtils.copyProperties(conn, connector);
+        return connector.getConfig();
     }
 
 }