Explore JSon approach
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / UserNature.java
index eceed398005fb04b3075341ce7565e59568a60c3..e2487b9ba7051b36b6a54d6d78a4c67dc585e85d 100644 (file)
@@ -1,5 +1,50 @@
 package org.argeo.security;
 
-public interface UserNature {
+import java.util.UUID;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.annotate.JsonAnySetter;
+import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonCreator;
+import org.codehaus.jackson.annotate.JsonMethod;
+
+//@JsonAutoDetect(value = { JsonMethod.GETTER, JsonMethod.SETTER })
+public class UserNature {
+       private final static Log log = LogFactory.getLog(UserNature.class);
+
+       private String uuid = UUID.randomUUID().toString();
+       private String type;
+
+       public String getUuid() {
+               return uuid;
+       }
+
+       public void setUuid(String uuid) {
+               this.uuid = uuid;
+       }
+
+       public String getType() {
+               if (type != null)
+                       return type;
+               else
+                       return getClass().getName();
+       }
+
+       public void setType(String type) {
+               this.type = type;
+       }
+
+       @JsonAnySetter
+       public void anySetter(String key, Object obj) {
+               if (obj != null)
+                       log.info("anySetter: " + key + "=" + obj + " (" + obj.getClass()
+                                       + "), natureType=" + type);
+       }
+
+       @JsonCreator
+       public static Object valueOf(String str) {
+               log.info("create: " + str);
+               return new UserNature();
+       }
 }