diff --git a/pom.xml b/pom.xml
index f9c5a97..706907a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.alterdekim.game
actionScriptDecompiler
- 0.0.2
+ 0.0.3
jar
SWFDissect
diff --git a/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashField.java b/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashField.java
new file mode 100644
index 0000000..09cd06d
--- /dev/null
+++ b/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashField.java
@@ -0,0 +1,12 @@
+package com.alterdekim.flash.decompiler.mapper;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface FlashField {
+ String name() default "";
+}
diff --git a/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashMapper.java b/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashMapper.java
new file mode 100644
index 0000000..3eeb910
--- /dev/null
+++ b/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashMapper.java
@@ -0,0 +1,35 @@
+package com.alterdekim.flash.decompiler.mapper;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.tuple.Pair;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Map;
+
+@Slf4j
+public class FlashMapper {
+
+ public static T mapToObj(Map m, Class obj) {
+ try {
+ T result = obj.getDeclaredConstructor().newInstance();
+ Arrays.stream(obj.getDeclaredFields())
+ .filter(f -> m.containsKey(f.getName()) || (f.isAnnotationPresent(FlashField.class) && m.containsKey(f.getAnnotation(FlashField.class).name())))
+ .map(f -> Pair.of(f, f.isAnnotationPresent(FlashField.class) ? f.getAnnotation(FlashField.class).name() : f.getName()))
+ .forEach(p -> {
+ try {
+ Field f = p.getLeft();
+ String name = p.getRight();
+ f.setAccessible(true);
+ f.set(result, m.get(name));
+ } catch (IllegalAccessException e) {
+ log.error("FlashMapper valueSet error: {}", e.getMessage());
+ }
+ });
+ return result;
+ } catch (Exception e) {
+ log.error("FlashMapper error: {}", e.getMessage());
+ }
+ return null;
+ }
+}