View Javadoc
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  }