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); }