Skip to content

Commit dfb9ef3

Browse files
committed
Do not use introspection to populate specific GlobType in source not in test.
1 parent 7fee3a3 commit dfb9ef3

13 files changed

Lines changed: 375 additions & 154 deletions
Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,49 @@
11
package org.globsframework.csv.annotation;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
55
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
66
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
77
import org.globsframework.core.metamodel.fields.BooleanField;
88
import org.globsframework.core.metamodel.fields.StringField;
9+
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
910
import org.globsframework.core.model.Key;
11+
import org.globsframework.core.model.KeyBuilder;
1012

1113
public class CsvHeader {
12-
public static GlobType TYPE;
14+
public static final GlobType TYPE;
1315

14-
public static StringField name;
16+
public static final StringField name;
1517

16-
public static BooleanField firstLineIsHeader;
18+
public static final BooleanField firstLineIsHeader;
1719

1820
// public static BooleanField noHeader;
1921

2022
// public static StringArrayField header;
2123

2224
@InitUniqueKey
23-
public static Key KEY;
25+
public static final Key KEY;
2426

2527
static {
26-
GlobTypeLoaderFactory.create(CsvHeader.class, "CsvHeader")
28+
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("CsvHeader");
29+
TYPE = typeBuilder.unCompleteType();
30+
name = typeBuilder.declareStringField("name");
31+
firstLineIsHeader = typeBuilder.declareBooleanField("firstLineIsHeader");
32+
typeBuilder.complete();
33+
KEY = KeyBuilder.newEmptyKey(TYPE);
34+
typeBuilder
2735
.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
28-
.set(name, ((CsvHeader_) annotation).value())
29-
.set(firstLineIsHeader, ((CsvHeader_) annotation).firstLineIsHeader())
36+
.set(name, ((CsvHeader_) annotation).value())
37+
.set(firstLineIsHeader, ((CsvHeader_) annotation).firstLineIsHeader()));
38+
39+
40+
// GlobTypeLoaderFactory.create(CsvHeader.class, "CsvHeader")
41+
// .register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
42+
// .set(name, ((CsvHeader_) annotation).value())
43+
// .set(firstLineIsHeader, ((CsvHeader_) annotation).firstLineIsHeader())
3044
// .set(noHeader, ((CsvHeader_) annotation).noHeader())
3145
// .set(header, ((CsvHeader_) annotation).header())
32-
)
33-
.load();
46+
// )
47+
// .load();
3448
}
3549
}
Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,35 @@
11
package org.globsframework.csv.annotation;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
55
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
66
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
77
import org.globsframework.core.metamodel.fields.StringField;
8+
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
89
import org.globsframework.core.model.Key;
10+
import org.globsframework.core.model.KeyBuilder;
911

1012
public class CsvSeparator {
11-
public static GlobType TYPE;
13+
public static final GlobType TYPE;
1214

13-
public static StringField SEPARATOR;
15+
public static final StringField SEPARATOR;
1416

1517
@InitUniqueKey
16-
public static Key KEY;
18+
public static final Key KEY;
1719

1820

1921
static {
20-
GlobTypeLoaderFactory.create(CsvSeparator.class, "CsvSeparator")
21-
.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
22-
.set(SEPARATOR, new String(new char[]{((CsvSeparator_) annotation).value()})))
23-
.load();
22+
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("CsvSeparator");
23+
TYPE = typeBuilder.unCompleteType();
24+
SEPARATOR = typeBuilder.declareStringField("separator");
25+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
26+
.set(SEPARATOR, new String(new char[]{((CsvSeparator_) annotation).value()})));
27+
typeBuilder.complete();
28+
KEY = KeyBuilder.newEmptyKey(TYPE);
29+
30+
// GlobTypeLoaderFactory.create(CsvSeparator.class, "CsvSeparator")
31+
// .register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
32+
// .set(SEPARATOR, new String(new char[]{((CsvSeparator_) annotation).value()})))
33+
// .load();
2434
}
2535
}
Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,33 @@
11
package org.globsframework.csv.annotation;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
55
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
66
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
77
import org.globsframework.core.metamodel.fields.StringField;
8+
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
89
import org.globsframework.core.model.Key;
10+
import org.globsframework.core.model.KeyBuilder;
911

1012
public class CsvValueSeparator {
11-
public static GlobType TYPE;
13+
public static final GlobType TYPE;
1214

13-
public static StringField SEPARATOR;
15+
public static final StringField SEPARATOR;
1416

1517
@InitUniqueKey
16-
public static Key KEY;
17-
18+
public static final Key KEY;
1819

1920
static {
20-
GlobTypeLoaderFactory.create(CsvValueSeparator.class, "ValueSeparator")
21-
.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
22-
.set(SEPARATOR, String.valueOf(((CsvValueSeparator_) annotation).value())))
23-
.load();
21+
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("ValueSeparator");
22+
TYPE = typeBuilder.unCompleteType();
23+
SEPARATOR = typeBuilder.declareStringField("separator");
24+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
25+
.set(SEPARATOR, String.valueOf(((CsvValueSeparator_) annotation).value())));
26+
typeBuilder.complete();
27+
KEY = KeyBuilder.newEmptyKey(TYPE);
28+
// GlobTypeLoaderFactory.create(CsvValueSeparator.class, "ValueSeparator")
29+
// .register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
30+
// .set(SEPARATOR, String.valueOf(((CsvValueSeparator_) annotation).value())))
31+
// .load();
2432
}
2533
}
Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,42 @@
11
package org.globsframework.csv.annotation;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
55
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
66
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
77
import org.globsframework.core.metamodel.fields.StringField;
8+
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
89
import org.globsframework.core.model.Key;
10+
import org.globsframework.core.model.KeyBuilder;
911

1012
public class ExportBooleanFormat {
11-
public static GlobType TYPE;
13+
public static final GlobType TYPE;
1214

13-
public static StringField TRUE_;
15+
public static final StringField TRUE_;
1416

15-
public static StringField FALSE_;
17+
public static final StringField FALSE_;
1618

1719
@InitUniqueKey
18-
public static Key KEY;
20+
public static final Key KEY;
1921

2022
static {
21-
GlobTypeLoaderFactory.create(ExportBooleanFormat.class, "ExportBooleanFormat")
22-
.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
23-
.set(TRUE_, ((ExportBooleanFormat_) annotation).true_())
24-
.set(FALSE_, ((ExportBooleanFormat_) annotation).false_())
25-
)
26-
.load();
23+
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("ExportBooleanFormat");
24+
TYPE = typeBuilder.unCompleteType();
25+
TRUE_ = typeBuilder.declareStringField("true");
26+
FALSE_ = typeBuilder.declareStringField("false");
27+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
28+
.set(TRUE_, ((ExportBooleanFormat_) annotation).true_())
29+
.set(FALSE_, ((ExportBooleanFormat_) annotation).false_())
30+
);
31+
typeBuilder.complete();
32+
33+
KEY = KeyBuilder.newEmptyKey(TYPE);
34+
35+
// GlobTypeLoaderFactory.create(ExportBooleanFormat.class, "ExportBooleanFormat")
36+
// .register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
37+
// .set(TRUE_, ((ExportBooleanFormat_) annotation).true_())
38+
// .set(FALSE_, ((ExportBooleanFormat_) annotation).false_())
39+
// )
40+
// .load();
2741
}
2842
}
Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,36 @@
11
package org.globsframework.csv.annotation;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
55
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
66
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
77
import org.globsframework.core.metamodel.fields.IntegerField;
8+
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
89
import org.globsframework.core.model.Key;
10+
import org.globsframework.core.model.KeyBuilder;
911

1012
public class ExportColumnSize {
11-
public static GlobType TYPE;
13+
public static final GlobType TYPE;
1214

13-
public static IntegerField SIZE;
15+
public static final IntegerField SIZE;
1416

1517
@InitUniqueKey
16-
public static Key KEY;
18+
public static final Key KEY;
1719

1820

1921
static {
20-
GlobTypeLoaderFactory.create(ExportColumnSize.class, "ExportColumnSize")
21-
.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
22-
.set(SIZE, ((ExportColumnSize_) annotation).value()))
23-
.load();
22+
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("ExportColumnSize");
23+
TYPE = typeBuilder.unCompleteType();
24+
SIZE = typeBuilder.declareIntegerField("size");
25+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
26+
.set(SIZE, ((ExportColumnSize_) annotation).value()));
27+
typeBuilder.complete();
28+
29+
KEY = KeyBuilder.newEmptyKey(TYPE);
30+
31+
// GlobTypeLoaderFactory.create(ExportColumnSize.class, "ExportColumnSize")
32+
// .register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
33+
// .set(SIZE, ((ExportColumnSize_) annotation).value()))
34+
// .load();
2435
}
2536
}
Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,48 @@
11
package org.globsframework.csv.annotation;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
55
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
66
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
77
import org.globsframework.core.metamodel.fields.StringField;
8+
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
89
import org.globsframework.core.model.Key;
10+
import org.globsframework.core.model.KeyBuilder;
911

1012
public class ExportDateFormat {
11-
public static GlobType TYPE;
13+
public static final GlobType TYPE;
1214

13-
public static StringField FORMAT;
15+
public static final StringField FORMAT;
1416

15-
public static StringField ZONE_ID;
17+
public static final StringField ZONE_ID;
1618

1719
@InitUniqueKey
18-
public static Key KEY;
20+
public static final Key KEY;
1921

2022
static {
21-
GlobTypeLoaderFactory.create(ExportDateFormat.class, "ExportDateFormat")
23+
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("ExportDateFormat");
24+
TYPE = typeBuilder.unCompleteType();
25+
FORMAT = typeBuilder.declareStringField("format");
26+
ZONE_ID = typeBuilder.declareStringField("zoneId");
27+
typeBuilder
2228
.register(GlobCreateFromAnnotation.class, annotation -> {
2329
String zoneId = ((ExportDateFormat_) annotation).zoneId();
2430
return TYPE.instantiate()
2531
.set(FORMAT, ((ExportDateFormat_) annotation).value())
2632
.set(ZONE_ID, zoneId.isEmpty() ? null : zoneId);
2733
}
28-
)
29-
.load();
34+
);
35+
typeBuilder.complete();
36+
KEY = KeyBuilder.newEmptyKey(TYPE);
37+
38+
// GlobTypeLoaderFactory.create(ExportDateFormat.class, "ExportDateFormat")
39+
// .register(GlobCreateFromAnnotation.class, annotation -> {
40+
// String zoneId = ((ExportDateFormat_) annotation).zoneId();
41+
// return TYPE.instantiate()
42+
// .set(FORMAT, ((ExportDateFormat_) annotation).value())
43+
// .set(ZONE_ID, zoneId.isEmpty() ? null : zoneId);
44+
// }
45+
// )
46+
// .load();
3047
}
3148
}
Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,37 @@
11
package org.globsframework.csv.annotation;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
5+
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
56
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
67
import org.globsframework.core.metamodel.fields.StringField;
8+
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
79
import org.globsframework.core.model.Key;
10+
import org.globsframework.core.model.KeyBuilder;
811

912
public class ExportDoubleFormat {
10-
public static GlobType TYPE;
13+
public static final GlobType TYPE;
1114

12-
public static StringField FORMAT;
15+
public static final StringField FORMAT;
1316

14-
public static StringField DECIMAL_SEPARATOR;
17+
public static final StringField DECIMAL_SEPARATOR;
1518

1619
@InitUniqueKey
17-
public static Key KEY;
20+
public static final Key KEY;
1821

1922
static {
20-
GlobTypeLoaderFactory.create(ExportDoubleFormat.class, "ExportDoubleFormat")
21-
.load();
23+
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("ExportDoubleFormat");
24+
TYPE = typeBuilder.unCompleteType();
25+
FORMAT = typeBuilder.declareStringField("format");
26+
DECIMAL_SEPARATOR = typeBuilder.declareStringField("decimalSeparator");
27+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation ->
28+
TYPE.instantiate()
29+
.set(FORMAT, ((ExportDoubleFormat_) annotation).format())
30+
.set(DECIMAL_SEPARATOR, ((ExportDoubleFormat_) annotation).decimalSeparator())
31+
);
32+
typeBuilder.complete();
33+
KEY = KeyBuilder.newEmptyKey(TYPE);
34+
// GlobTypeLoaderFactory.create(ExportDoubleFormat.class, "ExportDoubleFormat")
35+
// .load();
2236
}
2337
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.globsframework.csv.annotation;
2+
3+
import org.globsframework.core.metamodel.GlobType;
4+
5+
import java.lang.annotation.ElementType;
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.RetentionPolicy;
8+
9+
@Retention(RetentionPolicy.RUNTIME)
10+
@java.lang.annotation.Target({ElementType.FIELD})
11+
12+
public @interface ExportDoubleFormat_ {
13+
14+
String format();
15+
16+
String decimalSeparator() default ".";
17+
18+
GlobType TYPE = ExportDateFormat.TYPE;
19+
}

0 commit comments

Comments
 (0)