diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/DefaultUserTokenManager.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/DefaultUserTokenManager.java
index 80ec4878d..8c5d414a2 100644
--- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/DefaultUserTokenManager.java
+++ b/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());
}
}
diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/event/UserTokenRemovedEvent.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/event/UserTokenRemovedEvent.java
index 167566ade..5b17f2e33 100644
--- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/token/event/UserTokenRemovedEvent.java
+++ b/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());
}
}
diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/dynamic/DynamicSqlSessionFactory.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/dynamic/DynamicSqlSessionFactory.java
index 966901759..033bdeb41 100644
--- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/dynamic/DynamicSqlSessionFactory.java
+++ b/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 {
diff --git a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/utils/ResultMapsUtils.java b/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/utils/ResultMapsUtils.java
index 2cb2a608d..471f34987 100644
--- a/hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/utils/ResultMapsUtils.java
+++ b/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();
+ }
}
}
diff --git a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/AopLockAdvisor.java b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/AopLockAdvisor.java
index 4a1ef1f4f..3eee74ea9 100644
--- a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/AopLockAdvisor.java
+++ b/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 LockProcessor initLockInfo(long timeout, TimeUnit timeUnit, LockProcessor 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();
}
diff --git a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/LockProcessor.java b/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/LockProcessor.java
index f7ee1e4f9..527d66947 100644
--- a/hsweb-concurrent/hsweb-concurrent-lock/hsweb-concurrent-lock-starter/src/main/java/org/hswebframework/web/concurrent/lock/starter/LockProcessor.java
+++ b/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 {
private Function lockGetter;
- private Function lockAccepter;
+ private LockAccepter lockAccepter;
- private Function unlockAccepter;
+ private LockAccepter unlockAccepter;
private Map lockStore = new HashMap<>();
@@ -56,12 +54,12 @@ public class LockProcessor {
return this;
}
- public LockProcessor lock(Function lockAccepter) {
+ public LockProcessor lock(LockAccepter lockAccepter) {
this.lockAccepter = lockAccepter;
return this;
}
- public LockProcessor unlock(Function unlockAccepter) {
+ public LockProcessor unlock(LockAccepter unlockAccepter) {
this.unlockAccepter = unlockAccepter;
return this;
}
@@ -99,11 +97,11 @@ public class LockProcessor {
public Throwable doLock() {
Throwable lockError = null;
for (Map.Entry 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 {
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 {
+ void accept(T t) throws Throwable;
+ }
+
}
diff --git a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceProxy.java b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceProxy.java
index 128dedd7e..db67736bc 100644
--- a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/DynamicDataSourceProxy.java
+++ b/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;
diff --git a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/DataSourceCache.java b/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/DataSourceCache.java
index 039481606..1e9efe382 100644
--- a/hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/service/DataSourceCache.java
+++ b/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;
}
diff --git a/hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/JtaDynamicDataSourceService.java b/hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/JtaDynamicDataSourceService.java
index b0b9de231..6bceec527 100644
--- a/hsweb-datasource/hsweb-datasource-jta/src/main/java/org/hswebframework/web/datasource/jta/JtaDynamicDataSourceService.java
+++ b/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) {
// 初始化超时,认定为失败
diff --git a/hsweb-message/hsweb-message-memory/src/main/java/org/hswebframework/web/message/memory/MemoryMessager.java b/hsweb-message/hsweb-message-memory/src/main/java/org/hswebframework/web/message/memory/MemoryMessager.java
index 741b2268d..18b923984 100644
--- a/hsweb-message/hsweb-message-memory/src/main/java/org/hswebframework/web/message/memory/MemoryMessager.java
+++ b/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> 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);
diff --git a/hsweb-system/hsweb-system-config/hsweb-system-config-entity/src/main/java/org/hswebframework/web/entity/config/SimpleConfigEntity.java b/hsweb-system/hsweb-system-config/hsweb-system-config-entity/src/main/java/org/hswebframework/web/entity/config/SimpleConfigEntity.java
index 96b528e2d..50e1c4afc 100644
--- a/hsweb-system/hsweb-system-config/hsweb-system-config-entity/src/main/java/org/hswebframework/web/entity/config/SimpleConfigEntity.java
+++ b/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 implements ConfigEntity {
@@ -51,7 +49,7 @@ public class SimpleConfigEntity extends SimpleGenericEntity implements C
@NotNull
private String creatorId;
- private Map cache;
+ private volatile Map cache;
@Override
public String getCreatorId() {
diff --git a/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 b/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
index e8aa93114..ded62bf4f 100644
--- a/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
+++ b/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) {
diff --git a/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 b/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
index 0d5fa097a..95ceaf243 100644
--- a/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
+++ b/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);
}