1 package org.pojomatic.internal.factory; 2 3 import java.util.Arrays; 4 import java.util.List; 5 6 import org.pojomatic.annotations.AutoDetectPolicy; 7 8 public class PojoDescriptor { 9 public final String className; 10 public final String packageName; 11 public final Access access; 12 public final PojoDescriptor parent; 13 public final List<PropertyDescriptor> properties; 14 public AutoDetectPolicy autoDetectPolicy; 15 16 public PojoDescriptor(PropertyDescriptor... properties) { 17 this("Pojo", properties); 18 } 19 20 public PojoDescriptor(String className, PropertyDescriptor... properties) { 21 this("pojos", className, properties); 22 } 23 24 public PojoDescriptor(String packageName, String className, PropertyDescriptor... properties) { 25 this(packageName, className, Access.PUBLIC, properties); 26 } 27 28 public PojoDescriptor(String packageName, String className, Access access, PropertyDescriptor... properties) { 29 this(packageName, className, access, null, properties); 30 } 31 32 public PojoDescriptor(String packageName, String className, Access access, PojoDescriptor parent, PropertyDescriptor... properties) { 33 this.packageName = packageName; 34 this.className = className; 35 this.access = access; 36 this.parent = parent; 37 this.properties = Arrays.asList(properties); 38 } 39 40 public PojoDescriptor withAutoDetectPolicy(AutoDetectPolicy autoDetectPolicy) { 41 this.autoDetectPolicy = autoDetectPolicy; 42 return this; 43 } 44 45 public String qualifiedName() { 46 return packageName + "." + className; 47 } 48 49 public String internalName() { 50 return packageName + "/" + className; 51 } 52 53 public String parentInternalName() { 54 return parent == null ? "java/lang/Object" : parent.internalName(); 55 } 56 }