Merge branch 'master' of git.oschina.net:chyxion/tigon

This commit is contained in:
Shaun Chyxion 2017-07-19 22:42:07 +08:00
commit 09d1f43da9
22 changed files with 47 additions and 38 deletions

View File

@ -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();

View File

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

View File

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

View File

@ -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
*/

View File

@ -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}

View File

@ -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());

View File

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

View File

@ -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";

View File

@ -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(

View File

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

View File

@ -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");

View File

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

View File

@ -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) {

View File

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

View File

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

View File

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

View File

@ -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());

View File

@ -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");

View File

@ -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 =

View File

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

View File

@ -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");

View File

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