zhou-hao 7 년 전
부모
커밋
4e4d17390e
13개의 변경된 파일51개의 추가작업 그리고 54개의 파일을 삭제
  1. 1 1
      hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/DefaultUserTokenManager.java
  2. 3 3
      hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/event/UserTokenRemovedEvent.java
  3. 1 0
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/dynamic/DynamicSqlSessionFactory.java
  4. 11 3
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/utils/ResultMapsUtils.java
  5. 3 17
      hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/AopLockAdvisor.java
  6. 15 12
      hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/LockProcessor.java
  7. 1 1
      hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceProxy.java
  8. 3 0
      hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/DataSourceCache.java
  9. 2 3
      hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/JtaDynamicDataSourceService.java
  10. 4 1
      hsweb-message/hsweb-message-memory/src/main/java/org/hswebframework/web/message/memory/MemoryMessager.java
  11. 1 3
      hsweb-system/hsweb-system-config/hsweb-system-config-entity/src/main/java/org/hswebframework/web/entity/config/SimpleConfigEntity.java
  12. 1 3
      hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-service/hsweb-system-dictionary-service-simple/src/main/java/org/hswebframework/web/service/dictionary/simple/parser/ScriptSingleDictParser.java
  13. 5 7
      hsweb-system/hsweb-system-file/hsweb-system-file-service/hsweb-system-file-service-simple/src/main/java/org/hswebframework/web/service/file/fastdfs/FdfsFileService.java

+ 1 - 1
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/DefaultUserTokenManager.java

@@ -265,7 +265,7 @@ public class DefaultUserTokenManager implements UserTokenManager {
     public void checkExpiredToken() {
         for (SimpleUserToken token : tokenStorage.values()) {
             checkTimeout(token);
-            if (token.isExpired()) {
+            if (token!=null&&token.isExpired()) {
                 signOutByToken(token.getToken());
             }
         }

+ 3 - 3
hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/event/UserTokenRemovedEvent.java

@@ -5,14 +5,14 @@ import org.hswebframework.web.authorization.token.UserToken;
 import org.springframework.context.ApplicationEvent;
 
 public class UserTokenRemovedEvent extends ApplicationEvent implements AuthorizationEvent {
-    private UserToken detail;
+
+    private static final long serialVersionUID = -6662943150068863177L;
 
     public UserTokenRemovedEvent(UserToken token) {
         super(token);
-        this.detail = detail;
     }
 
     public UserToken getDetail() {
-        return detail;
+        return ((UserToken) getSource());
     }
 }

+ 1 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/dynamic/DynamicSqlSessionFactory.java

@@ -88,6 +88,7 @@ public class DynamicSqlSessionFactory implements SqlSessionFactory {
         return configuration;
     }
 
+    @SuppressWarnings("unchecked")
     private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
         Transaction tx = null;
         try {

+ 11 - 3
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/utils/ResultMapsUtils.java

@@ -22,17 +22,22 @@ import org.apache.ibatis.mapping.ResultMap;
 import org.apache.ibatis.session.SqlSession;
 import org.mybatis.spring.SqlSessionTemplate;
 
+import java.util.concurrent.CountDownLatch;
+
 /**
- * Created by zhouhao on 16-6-3.
+ * @since 2.0
  */
 public class ResultMapsUtils {
     private static SqlSession sqlSession;
 
+    private static CountDownLatch countDownLatch = new CountDownLatch(1);
+
     public static ResultMap getResultMap(String id) {
-        while (sqlSession == null) {
+        if (sqlSession == null) {
             try {
-                Thread.sleep(100);
+                countDownLatch.await();
             } catch (InterruptedException e) {
+                throw new RuntimeException(e);
             }
         }
         return sqlSession.getConfiguration().getResultMap(id);
@@ -40,5 +45,8 @@ public class ResultMapsUtils {
 
     public static void setSqlSession(SqlSessionTemplate sqlSession) {
         ResultMapsUtils.sqlSession = sqlSession;
+        if (countDownLatch.getCount() != 0) {
+            countDownLatch.countDown();
+        }
     }
 }

+ 3 - 17
hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/AopLockAdvisor.java

@@ -1,5 +1,6 @@
 package org.hswebframework.web.concurrent.lock.starter;
 
+import lombok.extern.slf4j.Slf4j;
 import org.aopalliance.intercept.MethodInterceptor;
 import org.aopalliance.intercept.MethodInvocation;
 import org.hswebframework.web.AopUtils;
@@ -18,10 +19,9 @@ import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
+@Slf4j
 public class AopLockAdvisor extends StaticMethodMatcherPointcutAdvisor {
 
     public AopLockAdvisor(LockManager lockManager) {
@@ -68,21 +68,7 @@ public class AopLockAdvisor extends StaticMethodMatcherPointcutAdvisor {
     }
 
     protected <A extends Annotation> LockProcessor<A, java.util.concurrent.locks.Lock> initLockInfo(long timeout, TimeUnit timeUnit, LockProcessor<A, java.util.concurrent.locks.Lock> lockProcessor) {
-        return lockProcessor.lock(lock -> {
-            try {
-                lock.tryLock(timeout, timeUnit);
-                return null;
-            } catch (InterruptedException e) {
-                return e;
-            }
-        }).unlock(lock -> {
-            try {
-                lock.unlock();
-                return null;
-            } catch (Throwable e) {
-                return e;
-            }
-        }).init();
+        return lockProcessor.lock(lock -> lock.tryLock(timeout, timeUnit)).unlock(java.util.concurrent.locks.Lock::unlock).init();
     }
 
 

+ 15 - 12
hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/LockProcessor.java

@@ -13,8 +13,6 @@ import java.util.*;
 import java.util.function.Function;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
 @SuppressWarnings("unchecked")
@@ -30,9 +28,9 @@ public class LockProcessor<A extends Annotation, L> {
 
     private Function<String, L> lockGetter;
 
-    private Function<L, Throwable> lockAccepter;
+    private LockAccepter<L> lockAccepter;
 
-    private Function<L, Throwable> unlockAccepter;
+    private LockAccepter<L> unlockAccepter;
 
     private Map<String, L> lockStore = new HashMap<>();
 
@@ -56,12 +54,12 @@ public class LockProcessor<A extends Annotation, L> {
         return this;
     }
 
-    public LockProcessor<A, L> lock(Function<L, Throwable> lockAccepter) {
+    public LockProcessor<A, L> lock(LockAccepter<L> lockAccepter) {
         this.lockAccepter = lockAccepter;
         return this;
     }
 
-    public LockProcessor<A, L> unlock(Function<L, Throwable> unlockAccepter) {
+    public LockProcessor<A, L> unlock(LockAccepter<L> unlockAccepter) {
         this.unlockAccepter = unlockAccepter;
         return this;
     }
@@ -99,11 +97,11 @@ public class LockProcessor<A extends Annotation, L> {
     public Throwable doLock() {
         Throwable lockError = null;
         for (Map.Entry<String, L> lock : lockStore.entrySet()) {
-            Throwable error = lockAccepter.apply(lock.getValue());
-            if (error == null) {
+            try {
+                lockAccepter.accept(lock.getValue());
                 successLock.add(lock.getValue());
-            } else {
-                lockError = error;
+            } catch (Throwable throwable) {
+                lockError = throwable;
             }
         }
         return lockError;
@@ -111,11 +109,16 @@ public class LockProcessor<A extends Annotation, L> {
 
     public void doUnlock() {
         for (L lock : successLock) {
-            Throwable error = unlockAccepter.apply(lock);
-            if (null != error) {
+            try {
+                unlockAccepter.accept(lock);
+            } catch (Throwable error) {
                 logger.error("unlock {} error", interceptorHolder.getMethod(), error);
             }
         }
     }
 
+    public interface LockAccepter<T> {
+        void accept(T t) throws Throwable;
+    }
+
 }

+ 1 - 1
hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceProxy.java

@@ -17,7 +17,7 @@ public class DynamicDataSourceProxy implements DynamicDataSource {
 
     private String id;
 
-    private DatabaseType databaseType;
+    private volatile DatabaseType databaseType;
 
     private DataSource proxy;
 

+ 3 - 0
hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/DataSourceCache.java

@@ -1,5 +1,6 @@
 package org.hswebframework.web.datasource.service;
 
+import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.datasource.DynamicDataSource;
 import org.hswebframework.web.datasource.exception.DataSourceClosedException;
 
@@ -10,6 +11,7 @@ import java.util.concurrent.CountDownLatch;
  *
  * @author zhouhao
  */
+@Slf4j
 public class DataSourceCache {
     private long hash;
 
@@ -29,6 +31,7 @@ public class DataSourceCache {
                 //等待初始化完成
                 initLatch.await();
             } catch (InterruptedException ignored) {
+                log.warn(ignored.getMessage(),ignored);
             } finally {
                 initLatch = null;
             }

+ 2 - 3
hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/JtaDynamicDataSourceService.java

@@ -21,8 +21,6 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
 public class JtaDynamicDataSourceService extends AbstractDynamicDataSourceService {
@@ -101,8 +99,9 @@ public class JtaDynamicDataSourceService extends AbstractDynamicDataSourceServic
             //初始化状态判断
             executor.execute(() -> {
                 try {
-                    Thread.sleep(config.getInitTimeout() * 1000);
+                    Thread.sleep(config.getInitTimeout() * 1000L);
                 } catch (InterruptedException ignored) {
+                    logger.warn(ignored.getMessage(), ignored);
                 } finally {
                     if (successCounter.get() == 0) {
                         // 初始化超时,认定为失败

+ 4 - 1
hsweb-message/hsweb-message-memory/src/main/java/org/hswebframework/web/message/memory/MemoryMessager.java

@@ -1,5 +1,6 @@
 package org.hswebframework.web.message.memory;
 
+import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.message.*;
 import org.hswebframework.web.message.support.QueueMessageSubject;
 import org.hswebframework.web.message.support.TopicMessageSubject;
@@ -14,10 +15,11 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.function.Consumer;
 
 /**
- * TODO 完成注释
  *
  * @author zhouhao
  */
+
+@Slf4j
 public class MemoryMessager implements Messager {
 
     private Map<String, MemoryTopic<? extends Message>> topicStore = new ConcurrentHashMap<>(256);
@@ -85,6 +87,7 @@ public class MemoryMessager implements Messager {
                         queue.lock.writeLock().tryLock(5, TimeUnit.SECONDS);
                     } catch (InterruptedException e) {
                         lockSuccess = false;
+                        log.warn(e.getMessage(),e);
                     }
                     try {
                         queue.consumers.remove(consumer);

+ 1 - 3
hsweb-system/hsweb-system-config/hsweb-system-config-entity/src/main/java/org/hswebframework/web/entity/config/SimpleConfigEntity.java

@@ -26,8 +26,6 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
 public class SimpleConfigEntity extends SimpleGenericEntity<String> implements ConfigEntity {
@@ -51,7 +49,7 @@ public class SimpleConfigEntity extends SimpleGenericEntity<String> implements C
     @NotNull
     private String creatorId;
 
-    private Map<String, ConfigContent> cache;
+    private volatile Map<String, ConfigContent> cache;
 
     @Override
     public String getCreatorId() {

+ 1 - 3
hsweb-system/hsweb-system-dictionary/hsweb-system-dictionary-service/hsweb-system-dictionary-service-simple/src/main/java/org/hswebframework/web/service/dictionary/simple/parser/ScriptSingleDictParser.java

@@ -10,8 +10,6 @@ import java.util.Map;
 import java.util.Optional;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
  */
 public class ScriptSingleDictParser implements SingleDictParser {
@@ -31,7 +29,7 @@ public class ScriptSingleDictParser implements SingleDictParser {
             }
             Object result = engine.execute(scriptId, vars).getIfSuccess();
             if (result == null) {
-                return null;
+                return Optional.empty();
             }
             return Optional.of(String.valueOf(result));
         } catch (Exception e) {

+ 5 - 7
hsweb-system/hsweb-system-file/hsweb-system-file-service/hsweb-system-file-service-simple/src/main/java/org/hswebframework/web/service/file/fastdfs/FdfsFileService.java

@@ -1,11 +1,10 @@
 package org.hswebframework.web.service.file.fastdfs;
 
-import com.luhuiguo.fastdfs.domain.MetaData;
 import com.luhuiguo.fastdfs.domain.StorePath;
 import com.luhuiguo.fastdfs.service.FastFileStorageClient;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.hswebframework.utils.time.DateFormatter;
 import org.hswebframework.web.commons.entity.DataStatus;
 import org.hswebframework.web.entity.file.FileInfoEntity;
 import org.hswebframework.web.service.file.FileInfoService;
@@ -17,15 +16,13 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.security.MessageDigest;
-import java.util.Arrays;
 import java.util.HashSet;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
- * @since
+ * @since 3.0
  */
+@Slf4j
 public class FdfsFileService implements FileService {
     private FastFileStorageClient fastFileStorageClient;
 
@@ -124,7 +121,8 @@ public class FdfsFileService implements FileService {
     public void writeFile(String fileId, OutputStream out, long skip) throws IOException {
         try (InputStream inputStream = readFile(fileId)) {
             if (skip > 0) {
-                inputStream.skip(skip);
+                long len = inputStream.skip(skip);
+                log.info("skip write {} len:{}", skip, len);
             }
             StreamUtils.copy(inputStream, out);
         }