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 }