diff --git a/falsework-client/src/main/java/META-INF/MANIFEST.MF b/falsework-client/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 6df2a18..0000000 --- a/falsework-client/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,50 +0,0 @@ -Manifest-Version: 1.0 -Main-Class: com.fx.client.AppStartup -Class-Path: tomcat-embed-core-9.0.41.jar Java-WebSocket-1.5.1.jar hystri - x-core-1.5.18.jar druid-spring-boot-starter-1.1.14.jar commons-lang-2.6 - .jar jersey-core-1.19.1.jar pagehelper-5.1.4.jar spring-security-web-5. - 4.2.jar spring-boot-starter-security-2.4.1.jar okhttp-3.14.6.jar datafx - -eventsystem-8.0.2-SNAPSHOT.jar spring-context-support-5.3.2.jar okio-1 - .17.2.jar ribbon-core-2.3.0.jar druid-1.1.14.jar junit-4.12.jar spring- - boot-starter-quartz-2.4.1.jar jackson-datatype-jsr310-2.11.3.jar spring - -jcl-5.3.2.jar tilesfx-1.6.8.jar spring-boot-2.4.1.jar datafx-flow-8.0. - 2-SNAPSHOT.jar HdrHistogram-2.1.9.jar slf4j-api-1.7.21.jar fontawesomef - x-8.9.jar netflix-statistics-0.1.1.jar spring-tx-5.3.2.jar feign-core-1 - 0.9.jar commons-codec-1.6.jar spring-context-5.3.2.jar jsr305-3.0.1.jar - archaius-core-0.7.6.jar DmJdbcDriver-1.0.0.jar spring-beans-5.3.2.jar - ribbon-loadbalancer-2.3.0.jar httpclient-4.2.1.jar spring-boot-starter- - logging-2.4.1.jar jjwt-0.7.0.jar jfoenix-8.0.10.jar spring-boot-starter - -tomcat-2.4.1.jar pagehelper-spring-boot-autoconfigure-1.2.5.jar httpco - re-4.2.1.jar c3p0-0.9.5.4.jar feign-hystrix-10.9.jar guava-16.0.1.jar j - avafx-base-11.0.2-mac.jar ikonli-javafx-2.4.0.jar spring-security-core- - 5.4.2.jar snakeyaml-1.27.jar jackson-datatype-jdk8-2.11.3.jar jakarta.a - nnotation-api-1.3.5.jar commons-logging-1.1.1.jar mchange-commons-java- - 0.2.15.jar javafx-media-11.0.2-mac.jar ribbon-httpclient-2.2.0.jar quar - tz-2.3.2.jar javafx-media-11.0.2.jar log4j-api-2.13.3.jar annotations-2 - .0.0.jar jackson-module-parameter-names-2.11.3.jar jakarta.el-3.0.3.jar - spring-boot-autoconfigure-1.5.12.RELEASE.jar jackson-databind-2.10.0.p - r3.jar tomcat-embed-websocket-9.0.41.jar logback-core-1.1.7.jar pagehel - per-spring-boot-starter-1.2.5.jar commons-configuration-1.8.jar mybatis - -3.5.6.jar commons-lang3-3.4.jar javafx-graphics-11.0.2-mac.jar ikonli- - fontawesome5-pack-2.4.0.jar feign-okhttp-10.9.jar jul-to-slf4j-1.7.30.j - ar spring-websocket-5.3.2.jar spring-messaging-5.3.2.jar spring-aop-5.3 - .2.jar spring-boot-starter-2.4.1.jar pinyin4j-2.5.0.jar jackson-annotat - ions-2.10.0.pr3.jar spring-web-5.3.2.jar spring-jdbc-5.3.1.jar spring-c - ore-5.3.2.jar javafx-controls-11.0.2.jar spring-expression-5.2.11.RELEA - SE.jar feign-slf4j-10.9.jar mybatis-spring-2.0.6.jar servo-core-0.10.1. - jar controlsfx-11.0.3.jar lombok-1.18.16.jar spring-boot-starter-websoc - ket-2.4.1.jar jersey-apache-client4-1.19.1.jar HikariCP-java7-2.4.13.ja - r javafx-graphics-11.0.2.jar servo-internal-0.10.1.jar log4j-to-slf4j-2 - .13.3.jar kotlin-compiler-1.0.6.jar datafx-injection-8.0.2-SNAPSHOT.jar - spring-security-config-5.4.2.jar jsqlparser-1.0.jar commons-collection - s-3.2.1.jar jsr311-api-1.1.1.jar jackson-core-2.10.0.pr3.jar spring-boo - t-starter-jdbc-2.4.0.jar logback-classic-1.1.7.jar spring-webmvc-5.3.2. - jar spring-boot-starter-json-2.4.1.jar javax.inject-1.jar joda-time-2.1 - 0.1.jar rxjava-1.2.0.jar netflix-commons-util-0.1.1.jar datafx-core-8.0 - .2-SNAPSHOT.jar spring-boot-starter-web-2.4.1.jar mybatis-spring-boot-s - tarter-2.1.4.jar hamcrest-core-1.3.jar mysql-connector-java-8.0.20.jar - HikariCP-3.4.5.jar ikonli-core-2.4.0.jar javafx-controls-11.0.2-mac.jar - javafx-base-11.0.2.jar feign-jackson-10.9.jar feign-ribbon-10.9.jar sp - ring-boot-starter-cache-2.4.1.jar javassist-3.18.1-GA.jar jersey-client - -1.19.1.jar mybatis-spring-boot-autoconfigure-2.1.4.jar - diff --git a/falsework-client/src/main/resources/META-INF/MANIFEST.MF b/falsework-client/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..8cda51e --- /dev/null +++ b/falsework-client/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,59 @@ +Manifest-Version: 1.0 +Main-Class: com.fx.client.AppStartup +Class-Path: . libs/kotlin-compiler-1.0.6.jar libs/datafx-flow-8.0.2-SNAP + SHOT.jar libs/jersey-apache-client4-1.19.1.jar libs/HikariCP-java7-2.4. + 13.jar libs/hystrix-core-1.5.18.jar libs/spring-boot-starter-web-2.4.1. + jar libs/HikariCP-3.4.5.jar libs/netflix-statistics-0.1.1.jar libs/comm + ons-lang3-3.4.jar libs/datafx-core-8.0.2-SNAPSHOT.jar libs/spring-boot- + starter-websocket-2.4.1.jar libs/jersey-core-1.19.1.jar libs/tilesfx-1. + 6.8.jar libs/spring-beans-5.3.2.jar libs/javax.inject-1.jar libs/spring + -boot-starter-security-2.4.1.jar libs/spring-expression-5.2.11.RELEASE. + jar libs/spring-websocket-5.3.2.jar libs/c3p0-0.9.5.4.jar libs/spring-w + ebmvc-5.3.2.jar libs/logback-classic-1.1.7.jar libs/spring-boot-autocon + figure-1.5.12.RELEASE.jar libs/jackson-databind-2.10.0.pr3.jar libs/rib + bon-httpclient-2.2.0.jar libs/spring-boot-starter-tomcat-2.4.1.jar libs + /spring-web-5.3.2.jar libs/feign-jackson-10.9.jar libs/httpclient-4.2.1 + .jar libs/junit-4.12.jar libs/mybatis-3.5.6.jar libs/spring-tx-5.3.2.ja + r libs/spring-messaging-5.3.2.jar libs/javafx-graphics-11.0.2.jar libs/ + javafx-base-11.0.2-mac.jar libs/spring-context-support-5.3.2.jar libs/d + atafx-eventsystem-8.0.2-SNAPSHOT.jar libs/javafx-base-11.0.2.jar libs/p + agehelper-spring-boot-autoconfigure-1.2.5.jar libs/slf4j-api-1.7.21.jar + libs/javassist-3.18.1-GA.jar libs/commons-logging-1.1.1.jar libs/mysql + -connector-java-8.0.20.jar libs/jakarta.el-3.0.3.jar libs/jackson-modul + e-parameter-names-2.11.3.jar libs/spring-boot-starter-cache-2.4.1.jar l + ibs/spring-security-web-5.4.2.jar libs/jul-to-slf4j-1.7.30.jar libs/spr + ing-security-config-5.4.2.jar libs/spring-boot-2.4.1.jar libs/pagehelpe + r-5.1.4.jar libs/ikonli-javafx-2.4.0.jar libs/spring-boot-starter-loggi + ng-2.4.1.jar libs/spring-jcl-5.3.2.jar libs/servo-core-0.10.1.jar libs/ + jackson-core-2.10.0.pr3.jar libs/log4j-to-slf4j-2.13.3.jar libs/hamcres + t-core-1.3.jar libs/spring-jdbc-5.3.1.jar libs/log4j-api-2.13.3.jar lib + s/jakarta.annotation-api-1.3.5.jar libs/mchange-commons-java-0.2.15.jar + libs/javafx-controls-11.0.2-mac.jar libs/jackson-datatype-jdk8-2.11.3. + jar libs/archaius-core-0.7.6.jar libs/pinyin4j-2.5.0.jar libs/mybatis-s + pring-boot-autoconfigure-2.1.4.jar libs/commons-configuration-1.8.jar l + ibs/tomcat-embed-core-9.0.41.jar libs/jsr305-3.0.1.jar libs/snakeyaml-1 + .27.jar libs/commons-codec-1.6.jar libs/druid-1.1.14.jar libs/feign-rib + bon-10.9.jar libs/spring-boot-starter-2.4.1.jar libs/spring-core-5.3.2. + jar libs/okio-1.17.2.jar libs/ikonli-core-2.4.0.jar libs/jjwt-0.7.0.jar + libs/rxjava-1.2.0.jar libs/DmJdbcDriver-1.0.0.jar libs/guava-16.0.1.ja + r libs/okhttp-3.14.6.jar libs/druid-spring-boot-starter-1.1.14.jar libs + /datafx-injection-8.0.2-SNAPSHOT.jar libs/mybatis-spring-boot-starter-2 + .1.4.jar libs/spring-boot-starter-jdbc-2.4.0.jar libs/ribbon-core-2.3.0 + .jar libs/logback-core-1.1.7.jar libs/feign-okhttp-10.9.jar libs/pagehe + lper-spring-boot-starter-1.2.5.jar libs/ikonli-fontawesome5-pack-2.4.0. + jar libs/feign-slf4j-10.9.jar libs/netflix-commons-util-0.1.1.jar libs/ + fontawesomefx-8.9.jar libs/Java-WebSocket-1.5.1.jar libs/HdrHistogram-2 + .1.9.jar libs/javafx-controls-11.0.2.jar libs/jersey-client-1.19.1.jar + libs/spring-aop-5.3.2.jar libs/tomcat-embed-websocket-9.0.41.jar libs/c + ontrolsfx-11.0.3.jar libs/spring-context-5.3.2.jar libs/javafx-media-11 + .0.2-mac.jar libs/jsr311-api-1.1.1.jar libs/jfoenix-9.0.10.jar libs/jsq + lparser-1.0.jar libs/spring-boot-starter-quartz-2.4.1.jar libs/annotati + ons-2.0.0.jar libs/ribbon-loadbalancer-2.3.0.jar libs/mybatis-spring-2. + 0.6.jar libs/spring-security-core-5.4.2.jar libs/commons-lang-2.6.jar l + ibs/commons-collections-3.2.1.jar libs/servo-internal-0.10.1.jar libs/f + eign-core-10.9.jar libs/feign-hystrix-10.9.jar libs/httpcore-4.2.1.jar + libs/javafx-graphics-11.0.2-mac.jar libs/joda-time-2.10.1.jar libs/lomb + ok-1.18.16.jar libs/quartz-2.3.2.jar libs/jackson-annotations-2.10.0.pr + 3.jar libs/jackson-datatype-jsr310-2.11.3.jar libs/javafx-media-11.0.2. + jar libs/spring-boot-starter-json-2.4.1.jar + diff --git a/falsework-client/src/test/java/DynamicEnumUtil.java b/falsework-client/src/test/java/DynamicEnumUtil.java deleted file mode 100644 index b42a630..0000000 --- a/falsework-client/src/test/java/DynamicEnumUtil.java +++ /dev/null @@ -1,129 +0,0 @@ -import sun.reflect.ConstructorAccessor; -import sun.reflect.FieldAccessor; -import sun.reflect.ReflectionFactory; - -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Array; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class DynamicEnumUtil { - - private static ReflectionFactory reflectionFactory = ReflectionFactory.getReflectionFactory(); - - private static void setFailsafeFieldValue(Field field, Object target, Object value) throws NoSuchFieldException, - IllegalAccessException { - - // let's make the field accessible - field.setAccessible(true); - - // next we change the modifier in the Field instance to - // not be final anymore, thus tricking reflection into - // letting us modify the static final field - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - int modifiers = modifiersField.getInt(field); - - // blank out the final bit in the modifiers int - modifiers &= ~Modifier.FINAL; - modifiersField.setInt(field, modifiers); - - FieldAccessor fa = reflectionFactory.newFieldAccessor(field, false); - fa.set(target, value); - } - - private static void blankField(Class enumClass, String fieldName) throws NoSuchFieldException, - IllegalAccessException { - for (Field field : Class.class.getDeclaredFields()) { - if (field.getName().contains(fieldName)) { - AccessibleObject.setAccessible(new Field[] { field }, true); - setFailsafeFieldValue(field, enumClass, null); - break; - } - } - } - - private static void cleanEnumCache(Class enumClass) throws NoSuchFieldException, IllegalAccessException { - blankField(enumClass, "enumConstantDirectory"); // Sun (Oracle?!?) JDK 1.5/6 - blankField(enumClass, "enumConstants"); // IBM JDK - } - - private static ConstructorAccessor getConstructorAccessor(Class enumClass, Class[] additionalParameterTypes) - throws NoSuchMethodException { - Class[] parameterTypes = new Class[additionalParameterTypes.length + 2]; - parameterTypes[0] = String.class; - parameterTypes[1] = int.class; - System.arraycopy(additionalParameterTypes, 0, parameterTypes, 2, additionalParameterTypes.length); - return reflectionFactory.newConstructorAccessor(enumClass.getDeclaredConstructor(parameterTypes)); - } - - private static Object makeEnum(Class enumClass, String value, int ordinal, Class[] additionalTypes, - Object[] additionalValues) throws Exception { - Object[] parms = new Object[additionalValues.length + 2]; - parms[0] = value; - parms[1] = Integer.valueOf(ordinal); - System.arraycopy(additionalValues, 0, parms, 2, additionalValues.length); -// parms[1] = parms[parms.length-1]; - return enumClass.cast(getConstructorAccessor(enumClass, additionalTypes).newInstance(parms)); - } - - /** - * Add an enum instance to the enum class given as argument - * - * @param the type of the enum (implicit) - * @param enumType the class of the enum to be modified - * @param enumName the name of the new enum instance to be added to the class. - */ - @SuppressWarnings("unchecked") - public static > T addEnum(Class enumType, String enumName, Class[] additionalTypes, Object[] additionalValues) { - - // 0. Sanity checks - if (!Enum.class.isAssignableFrom(enumType)) { - throw new RuntimeException("class " + enumType + " is not an instance of Enum"); - } - - // 1. Lookup "$VALUES" holder in enum class and get previous enum instances - Field valuesField = null; - Field[] fields = enumType.getDeclaredFields(); - for (Field field : fields) { - if (field.getName().contains("$VALUES")) { - valuesField = field; - break; - } - } - AccessibleObject.setAccessible(new Field[] { valuesField }, true); - - try { - - // 2. Copy it - T[] previousValues = (T[]) valuesField.get(enumType); - List values = new ArrayList(Arrays.asList(previousValues)); - - // 3. build new enum - T newValue = (T) makeEnum(enumType, enumName, values.size(), additionalTypes, additionalValues); - - // 4. add new value - values.add(newValue); - - // 5. Set new values field - setFailsafeFieldValue(valuesField, null, values.toArray((T[]) Array.newInstance(enumType, 0))); - - // 6. Clean enum cache - cleanEnumCache(enumType); - return newValue; - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(e.getMessage(), e); - } - } - - - public static void main(String[] args) { - - } - - -} \ No newline at end of file diff --git a/falsework-client/src/test/java/YesNoEnum.java b/falsework-client/src/test/java/YesNoEnum.java deleted file mode 100644 index 8ba925f..0000000 --- a/falsework-client/src/test/java/YesNoEnum.java +++ /dev/null @@ -1,49 +0,0 @@ -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -public enum YesNoEnum { - YES(1, "yes"), - NO(0, "no"); - - private Integer value; - private String name; - private static Map enumMap = new HashMap<>(); - - static { - // 可以在这里加载枚举的配置文件 比如从 properties 数据库中加载 - // 加载完后 使用DynamicEnumUtil.addEnum 动态增加枚举值 - // 然后正常使用枚举即可 - EnumSet set = EnumSet.allOf(YesNoEnum.class); - for (YesNoEnum each : set) { - // 增加一个缓存 减少对枚举的修改 - enumMap.put(each.value, each); - } - } - - YesNoEnum(Integer value, String name) { - this.value = value; - this.name = name; - } - - public Integer getValue() { - return value; - } - - public String getName() { - return name; - } - - // 根据关键字段获取枚举值 可以在这里做一些修改 来达到动态添加的效果 - public YesNoEnum getEnum(Integer value) { - // 这里可以做一些修改 比如若从 enumMap 中没有取得 则加载配置动态添加 - return enumMap.get(value); - } - - // 动态添加方法 添加完后加入缓存 减少对枚举的修改 - public YesNoEnum addEnum(String enumName, Integer value, String name) { - YesNoEnum yesNoEnum = DynamicEnumUtil.addEnum(YesNoEnum.class, enumName, new Class[]{Integer.class, String.class}, new Object[]{value, name}); - enumMap.put(value, yesNoEnum); - return yesNoEnum; - } -} \ No newline at end of file