summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorSupport.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorSupport.java')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorSupport.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorSupport.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorSupport.java
new file mode 100644
index 0000000..7ac30d9
--- /dev/null
+++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorSupport.java
@@ -0,0 +1,41 @@
+package io.trygvis.persistence;
+
+import javax.lang.model.element.Element;
+import javax.lang.model.element.VariableElement;
+import javax.lang.model.type.TypeMirror;
+import java.util.HashMap;
+import java.util.Map;
+
+public class GeneratorSupport {
+
+ private final Map<String, TypeHandler> primitiveTypeHandlers = new HashMap<>();
+ private final Map<String, TypeHandler> typeHandlers = new HashMap<>();
+
+ {
+ typeHandlers.put("java.lang.Integer", new TypeHandler.IntTypeHandler());
+ typeHandlers.put("java.lang.Long", new TypeHandler.LongTypeHandler());
+ typeHandlers.put("java.util.Date", new TypeHandler.DateTypeHandler());
+
+ primitiveTypeHandlers.putAll(typeHandlers);
+ }
+
+ public void addTypeHandler(String type, TypeHandler typeHandler) {
+ typeHandlers.put(type, typeHandler);
+ }
+
+ public TypeHandler typeHandler(Element element) {
+ String type = element.asType().toString();
+ TypeHandler typeHandler = typeHandlers.get(type);
+ if (typeHandler == null)
+ throw new RuntimeException("Unsupported field type: " + type);
+ return typeHandler;
+ }
+
+ public boolean isPrimitive(TypeMirror type) {
+ return primitiveTypeHandlers.containsKey(type.toString());
+ }
+
+ public boolean hasTypeHandler(TypeMirror type) {
+ return typeHandlers.containsKey(type.toString());
+ }
+}