Merge branch 'master' of git.oschina.net:chyxion/tigon
This commit is contained in:
commit
09d1f43da9
@ -19,7 +19,7 @@ public class ViewModelableSerializer implements ObjectSerializer {
|
||||
@Override
|
||||
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
|
||||
if (object != null) {
|
||||
serializer.write(((ViewModelable) object).toMap());
|
||||
serializer.write(((ViewModelable<?>) object).toMap());
|
||||
}
|
||||
else {
|
||||
serializer.writeNull();
|
||||
|
@ -57,7 +57,8 @@ public class ViewModel<T>
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <A> A getAttr(String name) {
|
||||
return attrs != null ? (A) attrs.get(name) : null;
|
||||
}
|
||||
@ -93,7 +94,7 @@ public class ViewModel<T>
|
||||
else {
|
||||
if (data instanceof ViewModelable) {
|
||||
mapRtn = new HashMap<String, Object>();
|
||||
mapRtn.put("data", ((ViewModelable) data).toMap());
|
||||
mapRtn.put("data", ((ViewModelable<?>) data).toMap());
|
||||
}
|
||||
else {
|
||||
Object jsonData = JSON.toJSON(data);
|
||||
|
@ -134,7 +134,7 @@ public class Search implements Serializable {
|
||||
criteria.add(new Criterion(CriterionType.IS_NULL, col, value));
|
||||
}
|
||||
else if (value instanceof Collection) {
|
||||
in(col, (Collection) value);
|
||||
in(col, (Collection<?>) value);
|
||||
}
|
||||
else if (value.getClass().isArray()) {
|
||||
in(col, (Object[]) value);
|
||||
|
@ -8,7 +8,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* @author shaun chyxion <br>
|
||||
* @author Shaun Chyxion <br>
|
||||
* chyxion@163.com <br>
|
||||
* 2017/1/23 16:58
|
||||
*/
|
||||
|
@ -12,7 +12,9 @@ import lombok.RequiredArgsConstructor;
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public class SqlFragment implements Serializable {
|
||||
private final String sql;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final String sql;
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
@ -15,7 +15,8 @@ import java.util.Arrays;
|
||||
*/
|
||||
public class ViewModelSerializerTest {
|
||||
|
||||
@Test
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void test() {
|
||||
SerializeConfig.getGlobalInstance()
|
||||
.put(ViewModel.class, new ViewModelableSerializer());
|
||||
|
@ -19,7 +19,7 @@ public abstract class AbstractOnMissingCreateProcessor implements MapperXmlProce
|
||||
* @param xPathParser xpath parser
|
||||
* @return true if XPath Expression missing
|
||||
*/
|
||||
public boolean accept(Class<BaseMapper> mapperClass, XPathParser xPathParser) {
|
||||
public boolean accept(Class<BaseMapper<?, ?>> mapperClass, XPathParser xPathParser) {
|
||||
return xPathParser.evalNode(missingXPathExpression()) == null;
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ public abstract class AbstractOnMissingCreateProcessor implements MapperXmlProce
|
||||
* @param mapperClass mapper class
|
||||
* @param doc xml document
|
||||
*/
|
||||
public void process(Class<BaseMapper> mapperClass, Document doc) {
|
||||
public void process(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
doc.getDocumentElement().appendChild(elementToAppend(mapperClass, doc));
|
||||
}
|
||||
|
||||
@ -43,15 +43,17 @@ public abstract class AbstractOnMissingCreateProcessor implements MapperXmlProce
|
||||
* @param doc mapper xml document
|
||||
* @return element to append
|
||||
*/
|
||||
protected abstract Element elementToAppend(Class<BaseMapper> mapperClass, Document doc);
|
||||
protected abstract Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc);
|
||||
|
||||
/**
|
||||
* get model class from mapper class
|
||||
* @param mapperClass mapper class
|
||||
* @return model class
|
||||
*/
|
||||
protected Class<BaseModel> getModelClass(Class<BaseMapper> mapperClass) {
|
||||
return (Class<BaseModel>) GenericTypeResolver.resolveTypeArguments(mapperClass, BaseMapper.class)[1];
|
||||
@SuppressWarnings("unchecked")
|
||||
protected Class<BaseModel<?>> getModelClass(Class<BaseMapper<?, ?>> mapperClass) {
|
||||
return (Class<BaseModel<?>>) GenericTypeResolver.resolveTypeArguments(
|
||||
mapperClass, BaseMapper.class)[1];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -59,7 +61,7 @@ public abstract class AbstractOnMissingCreateProcessor implements MapperXmlProce
|
||||
* @param modelClass model class
|
||||
* @return model object
|
||||
*/
|
||||
protected BaseModel newModelObj(Class<BaseModel> modelClass) {
|
||||
protected BaseModel<?> newModelObj(Class<BaseModel<?>> modelClass) {
|
||||
try {
|
||||
return modelClass.newInstance();
|
||||
}
|
||||
@ -90,7 +92,7 @@ public abstract class AbstractOnMissingCreateProcessor implements MapperXmlProce
|
||||
* @param id node id
|
||||
* @return element
|
||||
*/
|
||||
protected Element createSelectEl(Class<BaseMapper> mapperClass, Document doc, String id) {
|
||||
protected Element createSelectEl(Class<BaseMapper<?, ?>> mapperClass, Document doc, String id) {
|
||||
return createSelectEl(doc, id, getModelClass(mapperClass).getName());
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
* Oct 17, 2015 2:09:20 PM
|
||||
*/
|
||||
@Validated
|
||||
@SuppressWarnings("hiding")
|
||||
public interface BaseMapper<PrimaryKey, Model extends BaseModel<PrimaryKey>> {
|
||||
String PARAM_MODEL_KEY = "model";
|
||||
String PARAM_MODELS_KEY = "models";
|
||||
|
@ -23,7 +23,7 @@ public class ColsXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
Element colEl = doc.createElement("sql");
|
||||
colEl.setAttribute("id", "cols");
|
||||
colEl.setTextContent(
|
||||
|
@ -22,7 +22,7 @@ public class CountXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
return appendIncludeEl(doc, createSelectEl(doc, "count", "int"), "Tigon.count");
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ public class DeleteXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
Element deleteEl = doc.createElement("delete");
|
||||
deleteEl.setAttribute("id", "delete");
|
||||
return appendIncludeEl(doc, deleteEl, "Tigon.delete");
|
||||
|
@ -22,7 +22,7 @@ public class FindXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
return appendIncludeEl(doc,
|
||||
createSelectEl(mapperClass, doc, "find"), "Tigon.find");
|
||||
}
|
||||
|
@ -25,10 +25,10 @@ public class InsertXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
final Element insertEl = doc.createElement("insert");
|
||||
insertEl.setAttribute("id", "insert");
|
||||
Class<BaseModel> modelClass = getModelClass(mapperClass);
|
||||
Class<BaseModel<?>> modelClass = getModelClass(mapperClass);
|
||||
UseGeneratedKeys ugkAnnotation =
|
||||
AnnotationUtils.findAnnotation(modelClass, UseGeneratedKeys.class);
|
||||
if (ugkAnnotation != null) {
|
||||
|
@ -84,11 +84,14 @@ class KeyGenInterceptor implements Interceptor {
|
||||
BoundSql boundSql = (BoundSql) metaObjStatementHandler.getValue("boundSql");
|
||||
Object paramObj = boundSql.getParameterObject();
|
||||
if (paramObj instanceof MapperMethod.ParamMap) {
|
||||
MapperMethod.ParamMap paramMap = (MapperMethod.ParamMap) paramObj;
|
||||
@SuppressWarnings("unchecked")
|
||||
MapperMethod.ParamMap<Object> paramMap =
|
||||
(MapperMethod.ParamMap<Object>) paramObj;
|
||||
if (paramMap.containsKey(BaseMapper.PARAM_MODEL_KEY) ||
|
||||
paramMap.containsKey(BaseMapper.PARAM_MODELS_KEY)) {
|
||||
KeyGenerator keygen = mappedStatement.getKeyGenerator();
|
||||
if (keygen.getClass().equals(Jdbc3KeyGenerator.class)) {
|
||||
log.debug("Replace JDBC3 Key Generator.");
|
||||
SystemMetaObject.forObject(mappedStatement)
|
||||
.setValue("keyGenerator",
|
||||
new Jdbc3KeyGen(keygen));
|
||||
|
@ -22,7 +22,7 @@ public class ListXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
return appendIncludeEl(doc,
|
||||
createSelectEl(mapperClass, doc, "list"), "Tigon.list");
|
||||
}
|
||||
|
@ -16,12 +16,12 @@ public interface MapperXmlProcessor {
|
||||
* @param xPathParser xpath parser
|
||||
* @return true if accept process
|
||||
*/
|
||||
boolean accept(Class<BaseMapper> mapperClass, XPathParser xPathParser);
|
||||
boolean accept(Class<BaseMapper<?, ?>> mapperClass, XPathParser xPathParser);
|
||||
|
||||
/**
|
||||
* process document
|
||||
* @param mapperClass mapper class
|
||||
* @param document mapper xml document
|
||||
*/
|
||||
void process(Class<BaseMapper> mapperClass, Document document);
|
||||
void process(Class<BaseMapper<?, ?>> mapperClass, Document document);
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ public class PrimaryKeyXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
Element primaryKeyEl = doc.createElement("sql");
|
||||
primaryKeyEl.setAttribute("id", "primaryKey");
|
||||
primaryKeyEl.setTextContent(newModelObj(getModelClass(mapperClass)).primaryKeyName());
|
||||
|
@ -22,7 +22,7 @@ public class SetNullXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
Element setNullEl = doc.createElement("update");
|
||||
setNullEl.setAttribute("id", "setNull");
|
||||
return appendIncludeEl(doc, setNullEl, "Tigon.setNull");
|
||||
|
@ -28,10 +28,10 @@ public class TableXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
Element tableEl = doc.createElement("sql");
|
||||
tableEl.setAttribute("id", "table");
|
||||
Class<BaseModel> modelClass = getModelClass(mapperClass);
|
||||
Class<BaseModel<?>> modelClass = getModelClass(mapperClass);
|
||||
|
||||
// find table from mapper annotation
|
||||
Table tableAnnotation =
|
||||
|
@ -125,13 +125,14 @@ public class TigonSqlSessionFactoryBean extends SqlSessionFactoryBean {
|
||||
return resource;
|
||||
}
|
||||
|
||||
private Class<BaseMapper> getMapperClass(String name) {
|
||||
Class<BaseMapper> mapperClassRtn = null;
|
||||
@SuppressWarnings("unchecked")
|
||||
private Class<BaseMapper<?, ?>> getMapperClass(String name) {
|
||||
Class<BaseMapper<?, ?>> mapperClassRtn = null;
|
||||
try {
|
||||
Class<?> classFound = ClassUtils.forName(name,
|
||||
ClassUtils.getDefaultClassLoader());
|
||||
if (BaseMapper.class.isAssignableFrom(classFound)) {
|
||||
mapperClassRtn = (Class<BaseMapper>) classFound;
|
||||
mapperClassRtn = (Class<BaseMapper<?, ?>>) classFound;
|
||||
}
|
||||
}
|
||||
catch (ClassNotFoundException e) {
|
||||
@ -164,7 +165,7 @@ public class TigonSqlSessionFactoryBean extends SqlSessionFactoryBean {
|
||||
xPathParser.evalString("/mapper/@namespace");
|
||||
|
||||
if (StringUtils.isNotBlank(mapperNamespace)) {
|
||||
final Class<BaseMapper> mapperClass =
|
||||
final Class<BaseMapper<?, ?>> mapperClass =
|
||||
getMapperClass(mapperNamespace);
|
||||
if (mapperClass != null) {
|
||||
MetaObject metaXpp = SystemMetaObject.forObject(xPathParser);
|
||||
|
@ -22,7 +22,7 @@ public class UpdateXmlProcessor extends AbstractOnMissingCreateProcessor {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Element elementToAppend(Class<BaseMapper> mapperClass, Document doc) {
|
||||
protected Element elementToAppend(Class<BaseMapper<?, ?>> mapperClass, Document doc) {
|
||||
Element updateEl = doc.createElement("update");
|
||||
updateEl.setAttribute("id", "update");
|
||||
return appendIncludeEl(doc, updateEl, "Tigon.update");
|
||||
|
@ -1,11 +1,10 @@
|
||||
package me.chyxion.tigon.shiro.cache.shiro;
|
||||
|
||||
import java.util.Set;
|
||||
import org.slf4j.Logger;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.springframework.util.Assert;
|
||||
@ -25,9 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
* chyxion@163.com <br>
|
||||
* May 12, 2016 1:25:02 PM
|
||||
*/
|
||||
@Slf4j
|
||||
public class UserIdKeyRedisSessionCache implements SessionCache {
|
||||
private static final Logger log =
|
||||
LoggerFactory.getLogger(UserIdKeyRedisSessionCache.class);
|
||||
|
||||
@Autowired
|
||||
protected RedisTemplate<Serializable, Serializable> redisTpl;
|
||||
@ -166,6 +164,6 @@ public class UserIdKeyRedisSessionCache implements SessionCache {
|
||||
}
|
||||
|
||||
protected ValueOperations<Serializable, Serializable> valueOp() {
|
||||
return redisTpl.<Serializable, Serializable>opsForValue();
|
||||
return redisTpl.opsForValue();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user