forked from fanruan/finekit
Browse Source
* 'master' of https://cloud.finedevelop.com/scm/~zhaojunzhe/finekit: url别名工具类 单元测试 单元测试 单元测试 配置类的工具方法 配置类的工具方法pull/1/head
zjz1993
5 years ago
14 changed files with 506 additions and 7 deletions
@ -1,21 +1,91 @@ |
|||||||
package com.fanruan.api.conf; |
package com.fanruan.api.conf; |
||||||
|
|
||||||
|
import com.fanruan.api.conf.impl.ObjConf; |
||||||
|
import com.fanruan.api.conf.impl.ObjectColConf; |
||||||
|
import com.fanruan.api.conf.impl.ObjectMapConf; |
||||||
|
import com.fanruan.api.conf.impl.SimConf; |
||||||
import com.fr.config.holder.Conf; |
import com.fr.config.holder.Conf; |
||||||
import com.fr.config.holder.factory.Holders; |
|
||||||
|
import java.util.Collection; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
/** |
/** |
||||||
* @author richie |
* @author richie |
||||||
* @version 10.0 |
* @version 10.0 |
||||||
* Created by richie on 2019-08-15 |
* Created by richie on 2019-08-15 |
||||||
* 配置对象操作类 |
* 配置对象操作类 |
||||||
|
* TODO:补充单元测试 |
||||||
*/ |
*/ |
||||||
public class HolderKit { |
public class HolderKit { |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个基本对象类型的配置 |
||||||
|
* @param t 初始值 |
||||||
|
* @param <T> 类型 |
||||||
|
* @return 配置对象 |
||||||
|
*/ |
||||||
public static <T> Conf<T> simple(T t) { |
public static <T> Conf<T> simple(T t) { |
||||||
return Holders.simple(t); |
return new SimConf<>(t); |
||||||
} |
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个对象类型的配置 |
||||||
|
* @param t 初始值 |
||||||
|
* @param type 对象class类 |
||||||
|
* @param <T> 类型 |
||||||
|
* @return 配置对象 |
||||||
|
*/ |
||||||
public static <T> Conf<T> obj(T t, Class<T> type) { |
public static <T> Conf<T> obj(T t, Class<T> type) { |
||||||
return Holders.obj(t, type); |
return new ObjConf<>(t, type); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个集合类型的配置 |
||||||
|
* @param collection 初始值 |
||||||
|
* @param type 对象class类型 |
||||||
|
* @param <T> 类型 |
||||||
|
* @return 配置对象 |
||||||
|
*/ |
||||||
|
public static <T> ObjectColConf<Collection<T>> objCollection(Collection<T> collection, Class<T> type) { |
||||||
|
return new ObjectColConf<>(collection, type); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个集合类型的配置 |
||||||
|
* @param collection 初始值 |
||||||
|
* @param type 对象class类型 |
||||||
|
* @param order 是否是有序的配置 |
||||||
|
* @param <T> 类型 |
||||||
|
* @return 配置对象 |
||||||
|
*/ |
||||||
|
public static <T> ObjectColConf<Collection<T>> objCollection(Collection<T> collection, Class<T> type, boolean order) { |
||||||
|
return new ObjectColConf<>(collection, type, order); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个字典类型的配置 |
||||||
|
* @param map 初始值 |
||||||
|
* @param keyType 键class类型 |
||||||
|
* @param valueType 值class类型 |
||||||
|
* @param <K> 键类型 |
||||||
|
* @param <V> 值类型 |
||||||
|
* @return 配置对象 |
||||||
|
*/ |
||||||
|
public static <K, V> ObjectMapConf<Map<K, V>> objMap(Map<K, V> map, Class<K> keyType, Class<V> valueType) { |
||||||
|
return new ObjectMapConf<>(map, keyType, valueType); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 初始化一个字典类型的配置 |
||||||
|
* @param map 初始值 |
||||||
|
* @param keyType 键class类型 |
||||||
|
* @param valueType 值class类型 |
||||||
|
* @param order 是否是有序配置 |
||||||
|
* @param <K> 键类型 |
||||||
|
* @param <V> 值类型 |
||||||
|
* @return 配置对象 |
||||||
|
*/ |
||||||
|
public static <K, V> ObjectMapConf<Map<K, V>> objMap(Map<K, V> map, Class<K> keyType, Class<V> valueType, boolean order) { |
||||||
|
return new ObjectMapConf<>(map, keyType, valueType, order); |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,19 @@ |
|||||||
|
package com.fanruan.api.conf.impl; |
||||||
|
|
||||||
|
import java.util.Collection; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class ColConf<T extends Collection> extends com.fr.config.holder.impl.ColConf<Collection> { |
||||||
|
|
||||||
|
public ColConf(String property, Collection collection, Class valueType) { |
||||||
|
super(property, collection, valueType); |
||||||
|
} |
||||||
|
|
||||||
|
public ColConf(Collection collection, Class valueType) { |
||||||
|
super(collection, valueType); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
package com.fanruan.api.conf.impl; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class MapConf<T extends Map> extends com.fr.config.holder.impl.MapConf<Map> { |
||||||
|
|
||||||
|
public MapConf(String property, Map map, Class keyType, Class valueType) { |
||||||
|
super(property, map, keyType, valueType); |
||||||
|
} |
||||||
|
|
||||||
|
public MapConf(Map map, Class keyType, Class valueType) { |
||||||
|
super(map, keyType, valueType); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.fanruan.api.conf.impl; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class ObjConf<T> extends com.fr.config.holder.impl.ObjConf<T> { |
||||||
|
public ObjConf(String property, T t, Class classType) { |
||||||
|
super(property, t, classType); |
||||||
|
} |
||||||
|
|
||||||
|
public ObjConf(T t, Class classType) { |
||||||
|
super(t, classType); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
package com.fanruan.api.conf.impl; |
||||||
|
|
||||||
|
import java.util.Collection; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class ObjectColConf<T extends Collection> extends com.fr.config.holder.impl.ObjectColConf<Collection> { |
||||||
|
public ObjectColConf(String property, Collection collection, Class valueType) { |
||||||
|
super(property, collection, valueType); |
||||||
|
} |
||||||
|
|
||||||
|
public ObjectColConf(Collection collection, Class valueType) { |
||||||
|
super(collection, valueType); |
||||||
|
} |
||||||
|
|
||||||
|
public ObjectColConf(Collection collection, Class valueType, boolean order) { |
||||||
|
super(collection, valueType, order); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
package com.fanruan.api.conf.impl; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class ObjectMapConf<T extends Map> extends com.fr.config.holder.impl.ObjectMapConf<Map> { |
||||||
|
public ObjectMapConf(String property, Map map, Class keyType, Class valueType) { |
||||||
|
super(property, map, keyType, valueType); |
||||||
|
} |
||||||
|
|
||||||
|
public ObjectMapConf(String property, Map map, Class keyType, Class valueType, boolean order) { |
||||||
|
super(property, map, keyType, valueType, order); |
||||||
|
} |
||||||
|
|
||||||
|
public ObjectMapConf(Map map, Class keyType, Class valueType, boolean order) { |
||||||
|
super(map, keyType, valueType, order); |
||||||
|
} |
||||||
|
|
||||||
|
public ObjectMapConf(Map map, Class keyType, Class valueType) { |
||||||
|
super(map, keyType, valueType); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.fanruan.api.conf.impl; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class SimConf<T> extends com.fr.config.holder.impl.SimConf<T> { |
||||||
|
|
||||||
|
public SimConf(T t) { |
||||||
|
super(t); |
||||||
|
} |
||||||
|
|
||||||
|
public SimConf(String property, T t) { |
||||||
|
super(property, t); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,96 @@ |
|||||||
|
package com.fanruan.api.net; |
||||||
|
|
||||||
|
import com.fr.decision.webservice.url.alias.URLAlias; |
||||||
|
import com.fr.decision.webservice.url.alias.URLAliasFactory; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
* 路由工具类 |
||||||
|
* 宽泛匹配:/foo 和 /aaa/bbb/foo 是匹配的 |
||||||
|
*/ |
||||||
|
public class URLAliasKit { |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建路由的别名 |
||||||
|
* |
||||||
|
* @param aliasPath 别名 |
||||||
|
* @param targetURL 原始路由 |
||||||
|
* @return 别名对象 |
||||||
|
*/ |
||||||
|
public static URLAlias createRawAlias(String aliasPath, String targetURL) { |
||||||
|
return URLAliasFactory.createRawAlias(aliasPath, targetURL); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建路由的别名 |
||||||
|
* |
||||||
|
* @param aliasPath 别名 |
||||||
|
* @param targetURL 原始路由 |
||||||
|
* @param wideRange 是否宽泛匹配 |
||||||
|
* @return 别名对象 |
||||||
|
*/ |
||||||
|
public static URLAlias createRawAlias(String aliasPath, String targetURL, boolean wideRange) { |
||||||
|
return URLAliasFactory.createRawAlias(aliasPath, targetURL, wideRange); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建决策平台的路由别名 |
||||||
|
* |
||||||
|
* @param aliasPath 别名 |
||||||
|
* @param decisionTargetURL 原始路由地址 |
||||||
|
* @return 加了决策平台servlet名字前缀的别名对象 |
||||||
|
*/ |
||||||
|
public static URLAlias createDecisionAlias(String aliasPath, String decisionTargetURL) { |
||||||
|
return URLAliasFactory.createDecisionAlias(aliasPath, decisionTargetURL); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建决策平台的路由别名 |
||||||
|
* |
||||||
|
* @param aliasPath 别名 |
||||||
|
* @param decisionTargetURL 原始路由地址 |
||||||
|
* @param wideRange 是否宽泛匹配 |
||||||
|
* @return 加了决策平台servlet名字前缀的别名对象 |
||||||
|
*/ |
||||||
|
public static URLAlias createDecisionAlias(String aliasPath, String decisionTargetURL, boolean wideRange) { |
||||||
|
return URLAliasFactory.createDecisionAlias(aliasPath, decisionTargetURL, wideRange); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建插件的路由别名 |
||||||
|
* |
||||||
|
* @param aliasPath 别名 |
||||||
|
* @param pluginPath 插件请求地址 |
||||||
|
* @return 别名对象 |
||||||
|
*/ |
||||||
|
public static URLAlias createPluginAlias(String aliasPath, String pluginPath) { |
||||||
|
return URLAliasFactory.createPluginAlias(aliasPath, pluginPath); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建插件的路由别名 |
||||||
|
* |
||||||
|
* @param aliasPath 别名 |
||||||
|
* @param pluginPath 插件请求地址 |
||||||
|
* @param isPublic 是否为公开可访问的地址 |
||||||
|
* @return 别名对象 |
||||||
|
*/ |
||||||
|
public static URLAlias createPluginAlias(String aliasPath, String pluginPath, boolean isPublic) { |
||||||
|
return URLAliasFactory.createPluginAlias(aliasPath, pluginPath, isPublic); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建插件的路由别名 |
||||||
|
* |
||||||
|
* @param aliasPath 别名 |
||||||
|
* @param pluginPath 插件请求地址 |
||||||
|
* @param isPublic 是否为公开可访问的地址 |
||||||
|
* @param wideRange 是否宽泛匹配 |
||||||
|
* @return 别名对象 |
||||||
|
*/ |
||||||
|
public static URLAlias createPluginAlias(String aliasPath, String pluginPath, boolean isPublic, boolean wideRange) { |
||||||
|
return URLAliasFactory.createPluginAlias(aliasPath, pluginPath, isPublic, wideRange); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,59 @@ |
|||||||
|
package com.fanruan.api.data; |
||||||
|
|
||||||
|
import com.fanruan.api.conf.HolderKit; |
||||||
|
import com.fr.base.AbstractTableData; |
||||||
|
import com.fr.config.holder.Conf; |
||||||
|
import com.fr.general.data.DataModel; |
||||||
|
import com.fr.script.Calculator; |
||||||
|
import com.fr.stable.ParameterProvider; |
||||||
|
import com.fr.stable.xml.XMLPrintWriter; |
||||||
|
import com.fr.stable.xml.XMLableReader; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class TestTD extends AbstractTableData { |
||||||
|
|
||||||
|
private Conf<Integer> count = HolderKit.simple(10); |
||||||
|
|
||||||
|
public TestTD() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ParameterProvider[] getParameters(Calculator calculator) { |
||||||
|
return new ParameterProvider[0]; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public DataModel createDataModel(Calculator calculator) { |
||||||
|
return DataModel.EMPTY_DATAMODEL; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public DataModel createDataModel(Calculator calculator, String s) { |
||||||
|
return DataModel.EMPTY_DATAMODEL; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public DataModel createDataModel(Calculator calculator, int i) { |
||||||
|
return DataModel.EMPTY_DATAMODEL; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void readXML(XMLableReader xmLableReader) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void writeXML(XMLPrintWriter xmlPrintWriter) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
return obj instanceof TestTD; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,75 @@ |
|||||||
|
package com.fanruan.api.net; |
||||||
|
|
||||||
|
import com.fanruan.api.Prepare; |
||||||
|
import com.fr.decision.webservice.url.alias.URLAlias; |
||||||
|
import com.fr.decision.webservice.url.alias.impl.PluginURLAlias; |
||||||
|
import org.junit.Assert; |
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class URLAliasKitTest extends Prepare { |
||||||
|
|
||||||
|
@Test |
||||||
|
public void raw() { |
||||||
|
URLAlias alias = URLAliasKit.createRawAlias("/foo", "/aaa/bbb/foo"); |
||||||
|
Assert.assertEquals(alias.getShortPath(), "/foo"); |
||||||
|
Assert.assertEquals(alias.getTargetURL(), "/aaa/bbb/foo"); |
||||||
|
Assert.assertFalse(alias.isWideRange()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void raw2() { |
||||||
|
URLAlias alias = URLAliasKit.createRawAlias("/foo", "/aaa/bbb/foo", true); |
||||||
|
Assert.assertEquals(alias.getShortPath(), "/foo"); |
||||||
|
Assert.assertEquals(alias.getTargetURL(), "/aaa/bbb/foo"); |
||||||
|
Assert.assertTrue(alias.isWideRange()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void decision() { |
||||||
|
URLAlias alias = URLAliasKit.createDecisionAlias("/foo", "/aaa/bbb/foo"); |
||||||
|
Assert.assertEquals(alias.getShortPath(), "/foo"); |
||||||
|
Assert.assertEquals(alias.getTargetURL(), "/decision/aaa/bbb/foo"); |
||||||
|
Assert.assertFalse(alias.isWideRange()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void decision2() { |
||||||
|
URLAlias alias = URLAliasKit.createDecisionAlias("/foo", "/aaa/bbb/foo", true); |
||||||
|
Assert.assertEquals(alias.getShortPath(), "/foo"); |
||||||
|
Assert.assertEquals(alias.getTargetURL(), "/decision/aaa/bbb/foo"); |
||||||
|
Assert.assertTrue(alias.isWideRange()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void plugin() { |
||||||
|
URLAlias alias = URLAliasKit.createPluginAlias("/foo", "/aaa/bbb/foo"); |
||||||
|
((PluginURLAlias)alias).setPluginId("abcd"); |
||||||
|
Assert.assertEquals(alias.getShortPath(), "/foo"); |
||||||
|
Assert.assertEquals(alias.getTargetURL(), "/decision/plugin/private/abcd/aaa/bbb/foo"); |
||||||
|
Assert.assertFalse(alias.isWideRange()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void plugin2() { |
||||||
|
URLAlias alias = URLAliasKit.createPluginAlias("/foo", "/aaa/bbb/foo", true); |
||||||
|
((PluginURLAlias)alias).setPluginId("abcd"); |
||||||
|
Assert.assertEquals(alias.getShortPath(), "/foo"); |
||||||
|
Assert.assertEquals(alias.getTargetURL(), "/decision/plugin/public/abcd/aaa/bbb/foo"); |
||||||
|
Assert.assertFalse(alias.isWideRange()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void plugin3() { |
||||||
|
URLAlias alias = URLAliasKit.createPluginAlias("/foo", "/aaa/bbb/foo", true, true); |
||||||
|
((PluginURLAlias)alias).setPluginId("abcd"); |
||||||
|
Assert.assertEquals(alias.getShortPath(), "/foo"); |
||||||
|
Assert.assertEquals(alias.getTargetURL(), "/decision/plugin/public/abcd/aaa/bbb/foo"); |
||||||
|
Assert.assertTrue(alias.isWideRange()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
package com.fanruan.api.util; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
import static org.junit.Assert.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-08-19 |
||||||
|
*/ |
||||||
|
public class StringKitTest { |
||||||
|
|
||||||
|
@Test |
||||||
|
public void isEmpty() { |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void isNotEmpty() { |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void isBlank() { |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void isNotBlank() { |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue