Browse Source

数据连接API以及单元测试修改

master
richie 5 years ago
parent
commit
e740748957
  1. 30
      src/main/java/com/fanruan/api/data/ConnectionKit.java
  2. 32
      src/main/java/com/fanruan/api/util/ReflectKit.java
  3. 13
      src/test/java/com/fanruan/api/util/ReflectKitTest.java

30
src/main/java/com/fanruan/api/data/ConnectionKit.java

@ -1,16 +1,38 @@
package com.fanruan.api.data; package com.fanruan.api.data;
import com.fanruan.api.util.ReflectKit;
import com.fr.data.impl.Connection; import com.fr.data.impl.Connection;
import com.fr.file.DatasourceManager; import com.fr.file.ConnectionConfig;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* 数据连接相关工具类
*/
public class ConnectionKit { public class ConnectionKit {
/**
* 获取指定名字的数据连接
*
* @param name 名字
* @return 数据连接
*/
public @Nullable Connection getConnection(@NotNull String name) {
return ConnectionConfig.getInstance().getConnection(name);
}
/** /**
* 获取指定名字和指定类型的数据连接 * 获取指定名字和指定类型的数据连接
*
* @param name 数据连接的名字 * @param name 数据连接的名字
* @param type 类型 * @param type 类型
* @return 数据连接 * @return 数据连接
*
*/ */
public <T extends Connection> T getConnection(String name, Class<? extends Connection> type) { public <T extends Connection> @Nullable T getConnection(@NotNull String name, Class<? extends Connection> type) {
return DatasourceManager.getInstance().getConnection(name, type); Connection connection = getConnection(name);
if (ReflectKit.objectInstanceOf(connection, type)) {
return (T) connection;
}
return null;
} }
} }

32
src/main/java/com/fanruan/api/util/ReflectKit.java

@ -1,16 +1,32 @@
package com.fanruan.api.util; package com.fanruan.api.util;
import com.fr.stable.StableUtils;
public class ReflectKit { public class ReflectKit {
/** /**
* 判断一个类是否是另一个类的子类 * 判读指定的类是否是另一个类的子类
* @param current 当前类 *
* @param target 目标类 * @param current 指定的类
* @return 如果当前类是目标类的子类则返回true否则返回false * @param targetClass 另一个类
* @return 如果当前类是目标类的子类则返回true否则返回false
*/ */
public static boolean classInstanceOf(Class current, Class target) { public static boolean classInstanceOf(Class<?> current, Class<?> targetClass) {
return StableUtils.classInstanceOf(current, target); if (current == null || targetClass == null) {
return false;
}
return targetClass.isAssignableFrom(current);
}
/**
* 判读指定的类是否是另一个类的子类
*
* @param object 指定的类
* @param clazz 另一个类
* @return 如果指定类是另一个类的子类则返回true否则返回false
*/
public static boolean objectInstanceOf(Object object, Class clazz) {
if (object == null || clazz == null) {
return false;
}
return clazz.isInstance(object);
} }
} }

13
src/test/java/com/fanruan/api/util/ReflectKitTest.java

@ -1,14 +1,19 @@
package com.fanruan.api.util; package com.fanruan.api.util;
import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import static org.junit.Assert.*;
public class ReflectKitTest { public class ReflectKitTest {
@Test @Test
public void classInstanceOf() { public void classInstanceOf() {
assertEquals(ReflectKit.classInstanceOf(Integer.class,Object.class),true); Assert.assertTrue(ReflectKit.classInstanceOf(Integer.class, Object.class));
assertEquals(ReflectKit.classInstanceOf(Object.class,Integer.class),false); Assert.assertFalse(ReflectKit.classInstanceOf(Object.class, Integer.class));
}
@Test
public void objectInstanceOf() {
Assert.assertTrue(ReflectKit.objectInstanceOf(1, Integer.class));
Assert.assertFalse(ReflectKit.objectInstanceOf(1.0, Integer.class));
} }
} }
Loading…
Cancel
Save