Skip to content

Commit f366d6a

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 743092b commit f366d6a

File tree

8 files changed

+88
-42
lines changed

8 files changed

+88
-42
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<packaging>jar</packaging>
77
<artifactId>globs-commandline</artifactId>
88
<name>Generic Lightweight ObjectS command line</name>
9-
<version>4.3-SNAPSHOT</version>
9+
<version>5.0-SNAPSHOT</version>
1010

1111
<developers>
1212
<developer>
@@ -131,7 +131,7 @@
131131
<dependency>
132132
<groupId>org.globsframework</groupId>
133133
<artifactId>globs</artifactId>
134-
<version>4.14.0</version>
134+
<version>5.0-SNAPSHOT</version>
135135
</dependency>
136136
<!-- <dependency>-->
137137
<!-- <groupId>org.globsframework</groupId>-->

src/main/java/org/globsframework/commandline/ArraySeparator.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
77
import org.globsframework.core.metamodel.fields.StringField;
88
import org.globsframework.core.metamodel.impl.DefaultGlobTypeBuilder;
9+
import org.globsframework.core.model.Glob;
910
import org.globsframework.core.model.Key;
1011
import org.globsframework.core.model.KeyBuilder;
1112

@@ -17,17 +18,17 @@ public class ArraySeparator {
1718
@InitUniqueKey
1819
public static final Key KEY;
1920

21+
public static Glob create(char separator) {
22+
return TYPE.instantiate()
23+
.set(SEPARATOR, String.valueOf(separator));
24+
}
25+
2026
static {
2127
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("ArraySeparator");
22-
TYPE = typeBuilder.unCompleteType();
2328
SEPARATOR = typeBuilder.declareStringField("separator");
24-
typeBuilder.complete();
25-
KEY = KeyBuilder.newEmptyKey(TYPE);
2629
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> ArraySeparator.TYPE.instantiate()
2730
.set(SEPARATOR, String.valueOf(((ArraySeparator_) annotation).value())));
28-
// GlobTypeLoaderFactory.create(ArraySeparator.class, "ArraySeparator")
29-
// .register(GlobCreateFromAnnotation.class, annotation -> ArraySeparator.TYPE.instantiate()
30-
// .set(SEPARATOR, new String(new char[]{((ArraySeparator_) annotation).value()})))
31-
// .load();
31+
TYPE = typeBuilder.build();
32+
KEY = KeyBuilder.newEmptyKey(TYPE);
3233
}
3334
}

src/main/java/org/globsframework/commandline/Mandatory.java

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

2222
static {
2323
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("Mandatory");
24-
TYPE = typeBuilder.unCompleteType();
25-
typeBuilder.complete();
24+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> getUnique());
25+
TYPE = typeBuilder.build();
2626
KEY = KeyBuilder.newEmptyKey(TYPE);
2727
UNIQUE = TYPE.instantiate();
28-
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> UNIQUE);
28+
}
2929

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

src/main/java/org/globsframework/commandline/UnNamed.java

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

2222
static {
2323
GlobTypeBuilder typeBuilder = new DefaultGlobTypeBuilder("UnNamed");
24-
TYPE = typeBuilder.unCompleteType();
25-
typeBuilder.complete();
24+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> getUnique());
25+
TYPE = typeBuilder.build();
2626
KEY = KeyBuilder.newEmptyKey(TYPE);
2727
UNIQUE = TYPE.instantiate();
28-
typeBuilder
29-
.register(GlobCreateFromAnnotation.class, annotation -> UNIQUE);
30-
// GlobTypeLoaderFactory.create(UnNamed.class, "UnNamed")
31-
// .register(GlobCreateFromAnnotation.class, annotation -> UNIQUE)
32-
// .load();
28+
}
29+
30+
private static Glob getUnique() {
31+
return UNIQUE;
3332
}
3433
}

src/test/java/org/globsframework/commandline/MultiLevelCommandLineTest.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package org.globsframework.commandline;
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.Targets;
67
import org.globsframework.core.metamodel.fields.GlobUnionField;
78
import org.globsframework.core.metamodel.fields.StringField;
@@ -11,6 +12,7 @@
1112

1213
import java.util.ArrayList;
1314
import java.util.Arrays;
15+
import java.util.function.Supplier;
1416

1517
public class MultiLevelCommandLineTest {
1618

@@ -35,7 +37,10 @@ public static class Options {
3537
public static GlobUnionField cmd;
3638

3739
static {
38-
GlobTypeLoaderFactory.create(Options.class).load();
40+
GlobTypeBuilder builder = GlobTypeBuilderFactory.create("Options");
41+
name = builder.declareStringField("name");
42+
cmd = builder.declareGlobUnionField("cmd", new Supplier[]{() -> Cmd1.TYPE, () -> Cmd2.TYPE});
43+
TYPE = builder.build();
3944
}
4045
}
4146

@@ -46,7 +51,10 @@ public static class Cmd1 {
4651
public static StringField arg2;
4752

4853
static {
49-
GlobTypeLoaderFactory.create(Cmd1.class, "cmd1").load();
54+
GlobTypeBuilder builder = GlobTypeBuilderFactory.create("cmd1");
55+
arg1 = builder.declareStringField("arg1");
56+
arg2 = builder.declareStringField("arg2");
57+
TYPE = builder.build();
5058
}
5159
}
5260

@@ -56,7 +64,10 @@ public static class Cmd2 {
5664
public static StringField arg2;
5765

5866
static {
59-
GlobTypeLoaderFactory.create(Cmd2.class, "cmd2").load();
67+
GlobTypeBuilder builder = GlobTypeBuilderFactory.create("cmd2");
68+
arg1 = builder.declareStringField("arg1");
69+
arg2 = builder.declareStringField("arg2");
70+
TYPE = builder.build();
6071
}
6172
}
6273
}

src/test/java/org/globsframework/commandline/ParseCommandLineTest.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.globsframework.commandline;
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;
6+
import org.globsframework.core.metamodel.annotations.DefaultInteger;
57
import org.globsframework.core.metamodel.annotations.DefaultInteger_;
68
import org.globsframework.core.metamodel.annotations.FieldName_;
79
import org.globsframework.core.metamodel.fields.*;
@@ -108,17 +110,23 @@ public static class Opt1 {
108110
public static IntegerField VAL;
109111

110112
static {
111-
GlobTypeLoaderFactory.create(Opt1.class, true).load();
113+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("opt1");
114+
NAME = typeBuilder.declareStringField("name");
115+
MULTIVALUES = typeBuilder.declareStringArrayField("value", ArraySeparator.create(','));
116+
VAL = typeBuilder.declareIntegerField("val", DefaultInteger.create(123));
117+
TYPE = typeBuilder.build();
112118
}
113119
}
114120

115121
public static class Opt2 {
116-
public static GlobType TYPE;
122+
public static final GlobType TYPE;
117123

118-
public static StringField otherName;
124+
public static final StringField otherName;
119125

120126
static {
121-
GlobTypeLoaderFactory.create(Opt2.class, true).load();
127+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("opt2");
128+
otherName = typeBuilder.declareStringField("otherName");
129+
TYPE = typeBuilder.build();
122130
}
123131
}
124132

@@ -129,7 +137,9 @@ public static class OptWithMandatory {
129137
public static StringField otherName;
130138

131139
static {
132-
GlobTypeLoaderFactory.create(OptWithMandatory.class, true).load();
140+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("optWithMandatory");
141+
otherName = typeBuilder.declareStringField("otherName", Mandatory.UNIQUE);
142+
TYPE = typeBuilder.build();
133143
}
134144
}
135145

@@ -141,7 +151,10 @@ public static class ArgWithDate {
141151
public static DateField date;
142152

143153
static {
144-
GlobTypeLoaderFactory.create(ArgWithDate.class).load();
154+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("date");
155+
dateTime = typeBuilder.declareDateTimeField("dateTime");
156+
date = typeBuilder.declareDateField("date");
157+
TYPE = typeBuilder.build();
145158
}
146159
}
147160

src/test/java/org/globsframework/commandline/ParseEnvironmentTest.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.globsframework.commandline;
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;
6+
import org.globsframework.core.metamodel.annotations.DefaultString;
57
import org.globsframework.core.metamodel.annotations.DefaultString_;
68
import org.globsframework.core.metamodel.annotations.FieldName_;
79
import org.globsframework.core.metamodel.fields.IntegerField;
@@ -103,7 +105,9 @@ public static class Opt1 {
103105
public static StringField NAME;
104106

105107
static {
106-
GlobTypeLoaderFactory.create(Opt1.class, true).load();
108+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("opt1");
109+
NAME = typeBuilder.declareStringField("name");
110+
TYPE = typeBuilder.build();
107111
}
108112
}
109113

@@ -115,7 +119,10 @@ public static class OptMulti {
115119
public static StringField ANOTHER_NAME;
116120

117121
static {
118-
GlobTypeLoaderFactory.create(OptMulti.class, true).load();
122+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("optMulti");
123+
NAME = typeBuilder.declareStringField("name", Mandatory.UNIQUE);
124+
ANOTHER_NAME = typeBuilder.declareStringField("anotherName");
125+
TYPE = typeBuilder.build();
119126
}
120127
}
121128

@@ -127,7 +134,10 @@ public static class OptDefault {
127134
public static StringField ANOTHER_NAME;
128135

129136
static {
130-
GlobTypeLoaderFactory.create(OptDefault.class, true).load();
137+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("optDefault");
138+
NAME = typeBuilder.declareStringField("name");
139+
ANOTHER_NAME = typeBuilder.declareStringField("anotherName", DefaultString.create("Marc"));
140+
TYPE = typeBuilder.build();
131141
}
132142
}
133143

@@ -138,7 +148,10 @@ public static class OptWithInts {
138148
public static IntegerField INT_FIELD;
139149

140150
static {
141-
GlobTypeLoaderFactory.create(OptWithInts.class, true).load();
151+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("optWithInts");
152+
NAME = typeBuilder.declareStringField("name");
153+
INT_FIELD = typeBuilder.declareIntegerField("intField");
154+
TYPE = typeBuilder.build();
142155
}
143156
}
144157

@@ -149,7 +162,10 @@ public static class OptWithStringArray {
149162
public static StringArrayField arrayField;
150163

151164
static {
152-
GlobTypeLoaderFactory.create(OptWithStringArray.class, true).load();
165+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("optWithStringArray");
166+
NAME = typeBuilder.declareStringField("name");
167+
arrayField = typeBuilder.declareStringArrayField("arrayField");
168+
TYPE = typeBuilder.build();
153169
}
154170
}
155171

@@ -162,7 +178,10 @@ public static class OptWithPoint {
162178
public static StringField withPoint;
163179

164180
static {
165-
GlobTypeLoaderFactory.create(OptWithPoint.class, true).load();
181+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("optWithPoint");
182+
NAME = typeBuilder.declareStringField("name");
183+
withPoint = typeBuilder.declareStringField("point.field");
184+
TYPE = typeBuilder.build();
166185
}
167186
}
168187

src/test/java/org/globsframework/commandline/UnNamedTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package org.globsframework.commandline;
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.fields.StringArrayField;
67
import org.globsframework.core.metamodel.fields.StringField;
78
import org.globsframework.core.model.Glob;
@@ -28,7 +29,10 @@ public static class Arg {
2829
public static StringArrayField otherArgs;
2930

3031
static {
31-
GlobTypeLoaderFactory.create(Arg.class).load();
32+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Arg");
33+
firstArg = typeBuilder.declareStringField("firstArg", UnNamed.UNIQUE);
34+
otherArgs = typeBuilder.declareStringArrayField("otherArgs", UnNamed.UNIQUE);
35+
TYPE = typeBuilder.build();
3236
}
3337
}
3438
}

0 commit comments

Comments
 (0)