Skip to content

Commit 45a080c

Browse files
committed
Update pom and code to glob v5 to managed removal of GlobTypeLoader (introspection) and GlobTypeBuilder init change (no more incomplete GlobType)
1 parent 9a121b0 commit 45a080c

14 files changed

Lines changed: 139 additions & 85 deletions

File tree

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<packaging>jar</packaging>
77
<artifactId>globs-xml</artifactId>
88
<name>xml utils</name>
9-
<version>4.10-SNAPSHOT</version>
9+
<version>5.0-SNAPSHOT</version>
1010

1111
<developers>
1212
<developer>
@@ -139,17 +139,17 @@
139139
<dependency>
140140
<groupId>org.globsframework</groupId>
141141
<artifactId>globs</artifactId>
142-
<version>4.16.0</version>
142+
<version>5.0-SNAPSHOT</version>
143143
</dependency>
144144
<dependency>
145145
<groupId>org.globsframework</groupId>
146146
<artifactId>saxstack</artifactId>
147-
<version>4.1.1</version>
147+
<version>5.0-SNAPSHOT</version>
148148
</dependency>
149149
<dependency>
150150
<groupId>org.globsframework</groupId>
151151
<artifactId>globs</artifactId>
152-
<version>4.16.0</version>
152+
<version>5.0-SNAPSHOT</version>
153153
<scope>test</scope>
154154
<type>test-jar</type>
155155
</dependency>

src/main/java/org/globsframework/xml/custom/ValueIsXml.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,19 @@ public static Glob create(String name) {
3131

3232
static {
3333
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("ValueIsXml");
34-
TYPE = typeBuilder.unCompleteType();
3534
NAME = typeBuilder.declareStringField("name");
36-
typeBuilder.complete();
35+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> createAnnotation((ValueIsXml_) annotation));
36+
TYPE = typeBuilder.build();
3737
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
38-
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> {
39-
final MutableGlob instantiate = TYPE.instantiate();
40-
if (Strings.isNotEmpty(((ValueIsXml_) annotation).value())) {
41-
instantiate.set(NAME, ((ValueIsXml_) annotation).value());
42-
}
43-
return instantiate;
44-
});
4538
DEFAULT = TYPE.instantiate();
46-
// GlobTypeLoaderFactory.create(XmlValue.class, "_XmlValue")
47-
// .register(GlobCreateFromAnnotation.class, annotation -> UNIQUE_GLOB)
48-
// .load();
39+
}
40+
41+
private static MutableGlob createAnnotation(ValueIsXml_ annotation) {
42+
final MutableGlob instantiate = TYPE.instantiate();
43+
if (Strings.isNotEmpty(annotation.value())) {
44+
instantiate.set(NAME, annotation.value());
45+
}
46+
return instantiate;
4947
}
5048

5149
}

src/main/java/org/globsframework/xml/custom/XmlAsNode.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,10 @@ public static Glob create() {
4040

4141
static {
4242
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("XmlAsNode");
43-
TYPE = typeBuilder.unCompleteType();
4443
NAME = typeBuilder.declareStringField("name");
4544
MANDATORY = typeBuilder.declareBooleanField("mandatory");
46-
typeBuilder.complete();
4745
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> create((XmlNode_) annotation));
46+
TYPE = typeBuilder.build();
4847
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
4948
UNIQUE_INSTANCE = TYPE.instantiate();
5049
}

src/main/java/org/globsframework/xml/custom/XmlExportDateFormat.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
77
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
88
import org.globsframework.core.metamodel.fields.StringField;
9+
import org.globsframework.core.model.Glob;
910
import org.globsframework.core.model.Key;
1011
import org.globsframework.core.model.KeyBuilder;
12+
import org.globsframework.core.model.MutableGlob;
1113

1214
public class XmlExportDateFormat {
1315
public static final GlobType TYPE;
@@ -21,21 +23,22 @@ public class XmlExportDateFormat {
2123

2224
static {
2325
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("XmlExportDateFormat");
24-
TYPE = typeBuilder.unCompleteType();
2526
FORMAT = typeBuilder.declareStringField("format");
2627
ZONE_ID = typeBuilder.declareStringField("zoneId");
27-
typeBuilder.complete();
28+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> createAnnotation((XmlExportDateFormat_) annotation));
29+
TYPE = typeBuilder.build();
2830
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
29-
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
30-
.set(FORMAT, ((XmlExportDateFormat_) annotation).value())
31-
.set(ZONE_ID, ((XmlExportDateFormat_) annotation).zoneId()));
32-
33-
// GlobTypeLoaderFactory.create(XmlExportDateFormat.class, "XmlExportDateFormat")
34-
// .register(GlobCreateFromAnnotation.class, annotation -> TYPE.instantiate()
35-
// .set(FORMAT, ((XmlExportDateFormat_) annotation).value())
36-
// .set(ZONE_ID, ((XmlExportDateFormat_) annotation).zoneId())
37-
// )
38-
// .load();
3931
}
4032

33+
private static MutableGlob createAnnotation(XmlExportDateFormat_ annotation) {
34+
return TYPE.instantiate()
35+
.set(FORMAT, annotation.value())
36+
.set(ZONE_ID, annotation.zoneId());
37+
}
38+
39+
public static Glob create(String format, String zone) {
40+
return TYPE.instantiate()
41+
.set(FORMAT, format)
42+
.set(ZONE_ID, zone);
43+
}
4144
}

src/main/java/org/globsframework/xml/custom/XmlNS.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
77
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
88
import org.globsframework.core.metamodel.fields.StringField;
9+
import org.globsframework.core.model.Glob;
910
import org.globsframework.core.model.Key;
1011
import org.globsframework.core.model.KeyBuilder;
1112
import org.globsframework.core.model.MutableGlob;
@@ -23,15 +24,17 @@ public class XmlNS {
2324

2425
static {
2526
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("XmlNS");
26-
TYPE = typeBuilder.unCompleteType();
2727
name = typeBuilder.declareStringField("name");
2828
url = typeBuilder.declareStringField("url");
29-
typeBuilder.complete();
30-
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
3129
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> create((XmlNS_) annotation));
32-
// GlobTypeLoaderFactory.create(XmlNS.class, "XmlNS")
33-
// .register(GlobCreateFromAnnotation.class, annotation -> create((XmlNS_) annotation))
34-
// .load();
30+
TYPE = typeBuilder.build();
31+
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
32+
}
33+
34+
public static Glob create(String name, String url) {
35+
return TYPE.instantiate()
36+
.set(XmlNS.name, name)
37+
.set(XmlNS.url, url);
3538
}
3639

3740
private static MutableGlob create(XmlNS_ annotation) {

src/main/java/org/globsframework/xml/custom/XmlUseParentNS.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
77
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
88
import org.globsframework.core.metamodel.fields.BooleanField;
9+
import org.globsframework.core.model.Glob;
910
import org.globsframework.core.model.Key;
1011
import org.globsframework.core.model.KeyBuilder;
1112
import org.globsframework.core.model.MutableGlob;
@@ -18,17 +19,18 @@ public class XmlUseParentNS {
1819
@InitUniqueKey
1920
public static final Key UNIQUE_KEY;
2021

22+
public static final Glob useParentNS;
23+
24+
public static final Glob doNotUseParentNS;
25+
2126
static {
2227
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("XmlUseParentNS");
23-
TYPE = typeBuilder.unCompleteType();
2428
useParent = typeBuilder.declareBooleanField("useParent");
25-
typeBuilder.complete();
26-
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
2729
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> create((XmlUseParentNS_) annotation));
28-
29-
// GlobTypeLoaderFactory.create(XmlUseParentNS.class, "XmlUseParentNS")
30-
// .register(GlobCreateFromAnnotation.class, annotation -> create((XmlUseParentNS_) annotation))
31-
// .load();
30+
TYPE = typeBuilder.build();
31+
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
32+
useParentNS = TYPE.instantiate().set(useParent, true);
33+
doNotUseParentNS = TYPE.instantiate().set(useParent, false);
3234
}
3335

3436
private static MutableGlob create(XmlUseParentNS_ annotation) {

src/main/java/org/globsframework/xml/custom/XmlValue.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ public class XmlValue {
2121

2222
static {
2323
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("XmlValue");
24-
TYPE = typeBuilder.unCompleteType();
25-
typeBuilder.complete();
24+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> getUniqueGlob());
25+
TYPE = typeBuilder.build();
2626
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
2727
UNIQUE_GLOB = TYPE.instantiate();
28-
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> UNIQUE_GLOB);
29-
// GlobTypeLoaderFactory.create(XmlValue.class, "_XmlValue")
30-
// .register(GlobCreateFromAnnotation.class, annotation -> UNIQUE_GLOB)
31-
// .load();
28+
}
29+
30+
private static Glob getUniqueGlob() {
31+
return UNIQUE_GLOB;
3232
}
3333

3434
}

src/main/java/org/globsframework/xml/custom/XmlValueAsCData.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@ public class XmlValueAsCData {
2121

2222
static {
2323
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("XmlAsCData");
24-
TYPE = typeBuilder.unCompleteType();
25-
typeBuilder.complete();
24+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> getUniqueGlob());
25+
TYPE = typeBuilder.build();
2626
UNIQUE_KEY = KeyBuilder.newEmptyKey(TYPE);
2727
UNIQUE_GLOB = TYPE.instantiate();
28-
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> UNIQUE_GLOB);
28+
}
2929

30-
// GlobTypeLoaderFactory.create(XmlValueAsCData.class, "_XmlAsCData")
31-
// .register(GlobCreateFromAnnotation.class, annotation -> UNIQUE_GLOB)
32-
// .load();
30+
private static Glob getUniqueGlob() {
31+
return UNIQUE_GLOB;
3332
}
3433
}

src/test/java/org/globsframework/xml/NamespaceTest.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package org.globsframework.xml;
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.GlobTypeBuilderFactory;
56
import org.globsframework.core.metamodel.annotations.FieldName_;
67
import org.globsframework.core.metamodel.annotations.Target;
78
import org.globsframework.core.metamodel.fields.GlobField;
@@ -73,7 +74,10 @@ public static class Y2EnvelopeType {
7374
public static GlobField body;
7475

7576
static {
76-
GlobTypeLoaderFactory.create(Y2EnvelopeType.class, "Envelope").load();
77+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Envelope");
78+
header = typeBuilder.declareStringField("Header", XmlAsNode.UNIQUE_INSTANCE);
79+
body = typeBuilder.declareGlobField("Body", () -> Y2SoapBodyType.TYPE);
80+
TYPE = typeBuilder.build();
7781
}
7882
}
7983

@@ -85,7 +89,9 @@ public static class Y2SoapBodyType {
8589
public static GlobField getCustomerDetailRequest;
8690

8791
static {
88-
GlobTypeLoaderFactory.create(Y2SoapBodyType.class).load();
92+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Y2SoapBodyType");
93+
getCustomerDetailRequest = typeBuilder.declareGlobField("GetCustomerDetail", () -> Y2GetCustomerDetailRequest.TYPE);
94+
TYPE = typeBuilder.build();
8995
}
9096
}
9197

@@ -103,7 +109,11 @@ public static class Y2GetCustomerDetailRequest {
103109
public static GlobField priosWithParentNS;
104110

105111
static {
106-
GlobTypeLoaderFactory.create(Y2GetCustomerDetailRequest.class).load();
112+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Y2GetCustomerDetailRequest");
113+
customerId = typeBuilder.declareStringField("customerId", XmlAsNode.UNIQUE_INSTANCE);
114+
priosWithParentNS = typeBuilder.declareGlobField("priosWithParentNS", () -> Y2GetCustomerDetailRequest.TYPE, XmlAsNode.UNIQUE_INSTANCE,
115+
XmlUseParentNS.useParentNS);
116+
TYPE = typeBuilder.build();
107117
}
108118

109119
}
@@ -117,7 +127,8 @@ public static class PriosOtherDetailRequest {
117127
public static StringField customerId;
118128

119129
static {
120-
GlobTypeLoaderFactory.create(PriosOtherDetailRequest.class).load();
130+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("PriosOtherDetailRequest");
131+
typeBuilder.addAnnotation(XmlNS.create("prios", "http://www.prios.fr"));
121132
}
122133

123134
}

src/test/java/org/globsframework/xml/XmlGlobParserTest.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.globsframework.xml;
22

33
import org.globsframework.core.metamodel.*;
4+
import org.globsframework.core.metamodel.annotations.KeyField;
45
import org.globsframework.core.metamodel.annotations.KeyField_;
56
import org.globsframework.core.metamodel.annotations.Target;
67
import org.globsframework.core.metamodel.fields.IntegerField;
@@ -151,12 +152,14 @@ public static class AnObjectLinkingToATypeWithNoNamingField {
151152
public static Link OBJ2;
152153

153154
static {
154-
GlobTypeLoader loader = GlobTypeLoaderFactory.create(AnObjectLinkingToATypeWithNoNamingField.class, true);
155-
loader.register(MutableGlobLinkModel.LinkRegister.class,
155+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("anObjectLinkingToATypeWithNoNamingField");
156+
ID = typeBuilder.declareIntegerField("id", KeyField.ZERO);
157+
OBJ2_ID = typeBuilder.declareIntegerField("obj2Id");
158+
typeBuilder.register(MutableGlobLinkModel.LinkRegister.class,
156159
mutableGlobLinkModel ->
157-
OBJ2 = mutableGlobLinkModel.getLinkBuilder(OBJ2)
160+
OBJ2 = mutableGlobLinkModel.getLinkBuilder(null, "obj2")
158161
.add(OBJ2_ID, DummyObject2.ID).publish());
159-
loader.load();
162+
TYPE = typeBuilder.build();
160163
}
161164
}
162165

@@ -214,7 +217,9 @@ public static class AnObject {
214217
public static IntegerField ID;
215218

216219
static {
217-
GlobTypeLoaderFactory.createAndLoad(AnObject.class, true);
220+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("anObject");
221+
ID = typeBuilder.declareIntegerField("id", KeyField.ZERO);
222+
TYPE = typeBuilder.build();
218223
}
219224
}
220225

@@ -234,18 +239,21 @@ public static class AnObjectWithTwoLinks {
234239
public static Link LINK2;
235240

236241
static {
237-
GlobTypeLoader loader = GlobTypeLoaderFactory.create(AnObjectWithTwoLinks.class, true);
238-
loader.register(MutableGlobLinkModel.LinkRegister.class,
242+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("anObjectWithTwoLinks");
243+
ID = typeBuilder.declareIntegerField("id", KeyField.ZERO);
244+
LINK1_ID = typeBuilder.declareIntegerField("link1Id");
245+
LINK2_ID = typeBuilder.declareIntegerField("link2Id");
246+
typeBuilder.register(MutableGlobLinkModel.LinkRegister.class,
239247
mutableGlobLinkModel ->
240248
{
241-
mutableGlobLinkModel.getDirectLinkBuilder(LINK1)
249+
LINK1 = mutableGlobLinkModel.getDirectLinkBuilder(null, "link1")
242250
.add(LINK1_ID, AnObject.ID)
243251
.publish();
244-
mutableGlobLinkModel.getDirectLinkBuilder(LINK2)
252+
LINK2 = mutableGlobLinkModel.getDirectLinkBuilder(null, "link2")
245253
.add(LINK2_ID, AnObject.ID)
246254
.publish();
247255
});
248-
loader.load();
256+
TYPE = typeBuilder.build();
249257
}
250258
}
251259

0 commit comments

Comments
 (0)