Quellcode durchsuchen

Moving DDProperty implementations to impl class.
Using MINIMAL_CLASS (.impl.$name) for Jackson JSON serializer.

Sam Jaffe vor 8 Jahren
Ursprung
Commit
5ceb0ed300

+ 5 - 5
resources/classes/Bard.json

@@ -6,11 +6,11 @@
   "will":"GOOD",
   "features":[
     [
-      {"@type":"Simple", "name":"Bardic Music"},
-      {"@type":"Simple", "name":"Bardic Knowledge"},
-      {"@type":"Simple", "name":"Countersong"},
-      {"@type":"Simple", "name":"Fascinate"},
-      {"@type":"Simple", "name":"Inspire Courage +1"}
+      {"@c": ".impl.Simple", "name": "Bardic Music"},
+      {"@c": ".impl.Simple", "name": "Bardic Knowledge"},
+      {"@c": ".impl.Simple", "name": "Countersong"},
+      {"@c": ".impl.Simple", "name": "Fascinate"},
+      {"@c": ".impl.Simple", "name": "Inspire Courage +1"}
     ],
     []
   ],

+ 1 - 1
resources/classes/Cleric.json

@@ -7,7 +7,7 @@
   "features":[
     [
       {
-        "@type": "Simple",
+        "@c": ".impl.Simple",
         "name":"Turn or Rebuke Undead"
       }
     ]

+ 2 - 2
resources/feats/default.json

@@ -7,7 +7,7 @@
     "properties": [
       {
         "applies": "Character::Initiative",
-        "@type": "Flat",
+        "@c": ".impl.Flat",
         "group": "NONE",
         "value": 4
       }
@@ -26,7 +26,7 @@
     "properties": [
       {
         "applies": "Spell::Conjuration::Healing",
-        "@type": "SpellLevel",
+        "@c": ".impl.PerSpellLevel",
         "group": "NONE",
         "value": 2
       }

+ 0 - 1
src/main/lombok/org/leumasjaffe/charsheet/model/DDCharacterClass.java

@@ -1,6 +1,5 @@
 package org.leumasjaffe.charsheet.model;
 
-import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;

+ 1 - 53
src/main/lombok/org/leumasjaffe/charsheet/model/features/DDProperty.java

@@ -1,65 +1,13 @@
 package org.leumasjaffe.charsheet.model.features;
 
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
 
-import lombok.AllArgsConstructor;
-
-@JsonTypeInfo(use=Id.NAME)
-@JsonSubTypes({
-	@Type(name="Simple", value=DDProperty.Simple.class),
-	@Type(name="Flat", value=DDProperty.Flat.class),
-	@Type(name="SpellLevel", value=DDProperty.PerSpellLevel.class)
-})
+@JsonTypeInfo(use=Id.MINIMAL_CLASS)
 public interface DDProperty {
 	public enum Group {
 		NONE
 	}
 	boolean appliesTo(String key);
 	<T> T value();
-	
-	@AllArgsConstructor
-	public class Simple implements DDProperty {
-		String name;
-		@Override public boolean appliesTo(String key) { return false; }
-		@Override public <T> T value() { return null; }
-	}
-
-	@AllArgsConstructor
-	public static class Flat implements DDProperty {
-		String applies;
-		Group group;
-		int value;
-		
-		@Override
-		public boolean appliesTo(String key) {
-			return applies.equals(key);
-		}
-
-		@SuppressWarnings("unchecked")
-		@Override
-		public Object value() {
-			return this.value;
-		}
-	}
-	
-	@AllArgsConstructor
-	public static class PerSpellLevel implements DDProperty {
-		String applies;
-		Group group;
-		int value;
-		
-		@Override
-		public boolean appliesTo(String key) {
-			return applies.equals(key);
-		}
-
-		@SuppressWarnings("unchecked")
-		@Override
-		public Object value() {
-			return this.value; // TODO consume spell level information
-		}
-	}
 }

+ 23 - 0
src/main/lombok/org/leumasjaffe/charsheet/model/features/impl/Flat.java

@@ -0,0 +1,23 @@
+package org.leumasjaffe.charsheet.model.features.impl;
+
+import org.leumasjaffe.charsheet.model.features.DDProperty;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public class Flat implements DDProperty {
+	String applies;
+	Group group;
+	int value;
+	
+	@Override
+	public boolean appliesTo(String key) {
+		return applies.equals(key);
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Object value() {
+		return this.value;
+	}
+}

+ 23 - 0
src/main/lombok/org/leumasjaffe/charsheet/model/features/impl/PerSpellLevel.java

@@ -0,0 +1,23 @@
+package org.leumasjaffe.charsheet.model.features.impl;
+
+import org.leumasjaffe.charsheet.model.features.DDProperty;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public class PerSpellLevel implements DDProperty {
+	String applies;
+	Group group;
+	int value;
+	
+	@Override
+	public boolean appliesTo(String key) {
+		return applies.equals(key);
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Object value() {
+		return this.value; // TODO consume spell level information
+	}
+}

+ 12 - 0
src/main/lombok/org/leumasjaffe/charsheet/model/features/impl/Simple.java

@@ -0,0 +1,12 @@
+package org.leumasjaffe.charsheet.model.features.impl;
+
+import org.leumasjaffe.charsheet.model.features.DDProperty;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public class Simple implements DDProperty {
+	String name;
+	@Override public boolean appliesTo(String key) { return false; }
+	@Override public <T> T value() { return null; }
+}