Skip to content

Commit ba29eae

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 3b10755 commit ba29eae

7 files changed

Lines changed: 139 additions & 12 deletions

File tree

.github/workflows/maven-build.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# This workflow will build a package using Maven and then publish it to GitHub packages when a release is created
2+
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path
3+
4+
name: Maven Package build
5+
6+
on: [ push, pull_request, workflow_dispatch ]
7+
8+
jobs:
9+
build:
10+
11+
runs-on: ubuntu-latest
12+
permissions:
13+
contents: read
14+
packages: write
15+
16+
steps:
17+
- uses: actions/checkout@v2
18+
- name: Set up JDK 17
19+
uses: actions/setup-java@v2
20+
with:
21+
java-version: '17'
22+
distribution: 'adopt'
23+
24+
- name: Build with Maven
25+
env:
26+
GH_MAVEN_REGISTRY_USER: ${{ secrets.GH_MAVEN_REGISTRY_USER }}
27+
GH_MAVEN_REGISTRY_ACCESS_TOKEN: ${{ secrets.GH_MAVEN_REGISTRY_ACCESS_TOKEN }}
28+
run: mvn -s settings.xml -B package
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# This workflow will build a package using Maven and then publish it to GitHub packages when a release is created
2+
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path
3+
4+
name: Maven Package deploy
5+
6+
on:
7+
release:
8+
types: [ created ]
9+
10+
jobs:
11+
build:
12+
13+
runs-on: ubuntu-latest
14+
permissions:
15+
contents: read
16+
packages: write
17+
18+
steps:
19+
- uses: actions/checkout@v2
20+
- name: Set up JDK 17
21+
uses: actions/setup-java@v2
22+
with:
23+
java-version: '17'
24+
distribution: 'adopt'
25+
26+
- name: Build with Maven
27+
env:
28+
GH_MAVEN_REGISTRY_USER: ${{ secrets.GH_MAVEN_REGISTRY_USER }}
29+
GH_MAVEN_REGISTRY_ACCESS_TOKEN: ${{ secrets.GH_MAVEN_REGISTRY_ACCESS_TOKEN }}
30+
run: mvn -B package -s settings.xml
31+
32+
- name: Publish to GitHub Packages Apache Maven
33+
env:
34+
GH_MAVEN_REGISTRY_USER: ${{ secrets.GH_MAVEN_REGISTRY_USER }}
35+
GH_MAVEN_REGISTRY_ACCESS_TOKEN: ${{ secrets.GH_MAVEN_REGISTRY_ACCESS_TOKEN }}
36+
run: mvn deploy -s settings.xml

pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<packaging>jar</packaging>
88
<artifactId>globs-etcd</artifactId>
99
<name>Generic Lightweight ObjectS for etcD</name>
10-
<version>4.3-SNAPSHOT</version>
10+
<version>5.0-SNAPSHOT</version>
1111

1212
<developers>
1313
<developer>
@@ -143,17 +143,17 @@
143143
<dependency>
144144
<groupId>org.globsframework</groupId>
145145
<artifactId>globs</artifactId>
146-
<version>4.2.0</version>
146+
<version>5.0-SNAPSHOT</version>
147147
</dependency>
148148
<dependency>
149149
<groupId>org.globsframework</groupId>
150150
<artifactId>globs-gson</artifactId>
151-
<version>4.1.1</version>
151+
<version>5.0-SNAPSHOT</version>
152152
</dependency>
153153
<dependency>
154154
<groupId>org.globsframework</groupId>
155155
<artifactId>globs-bin-serialisation</artifactId>
156-
<version>4.3.0</version>
156+
<version>5.0-SNAPSHOT</version>
157157
</dependency>
158158

159159
<dependency>
@@ -165,7 +165,7 @@
165165
<dependency>
166166
<groupId>org.globsframework</groupId>
167167
<artifactId>globs</artifactId>
168-
<version>4.2.0</version>
168+
<version>5.0-SNAPSHOT</version>
169169
<type>test-jar</type>
170170
<scope>test</scope>
171171
</dependency>

src/main/java/org/globsframework/shared/EtcDSharedDataAccess.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import org.globsframework.core.model.FieldValues;
1818
import org.globsframework.core.model.Glob;
1919
import org.globsframework.core.utils.Utils;
20+
import org.globsframework.core.utils.serialization.DefaultSerializationOutput;
2021
import org.globsframework.json.GSonUtils;
21-
import org.globsframework.serialisation.BinReader;
2222
import org.globsframework.serialisation.BinReaderFactory;
2323
import org.globsframework.serialisation.BinWriterFactory;
2424
import org.globsframework.shared.model.PathIndex;
@@ -96,12 +96,12 @@ public static SharedDataAccess createBin(Client client, String prefix, String se
9696
final BinReaderFactory binReaderFactory = BinReaderFactory.create();
9797
GlobSerializer serializer = glob -> {
9898
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
99-
binWriterFactory.create(outputStream).write(glob);
99+
binWriterFactory.create(new DefaultSerializationOutput(outputStream)).write(glob);
100100
return outputStream.toByteArray();
101101
};
102102
GlobDeserializer deserializer = (type, data) ->
103-
binReaderFactory.createGlobBinReader(new ByteArrayInputStream(data))
104-
.read(type);
103+
Optional.ofNullable(binReaderFactory.createFromStream(new ByteArrayInputStream(data))
104+
.read(type));
105105
return new EtcDSharedDataAccess(client, serializer, deserializer, prefix, separator);
106106
}
107107

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.globsframework.shared.model;
2+
3+
import org.globsframework.core.metamodel.GlobType;
4+
import org.globsframework.core.metamodel.GlobTypeBuilder;
5+
import org.globsframework.core.metamodel.GlobTypeBuilderFactory;
6+
import org.globsframework.core.metamodel.annotations.GlobCreateFromAnnotation;
7+
import org.globsframework.core.metamodel.annotations.InitUniqueKey;
8+
import org.globsframework.core.metamodel.fields.IntegerField;
9+
import org.globsframework.core.model.Glob;
10+
import org.globsframework.core.model.Key;
11+
import org.globsframework.core.model.KeyBuilder;
12+
13+
public class PathIndex {
14+
public static final GlobType TYPE;
15+
16+
public static final IntegerField index;
17+
18+
@InitUniqueKey
19+
public static final Key KEY;
20+
21+
static {
22+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("PathIndex");
23+
index = typeBuilder.declareIntegerField("index");
24+
typeBuilder.register(GlobCreateFromAnnotation.class, annotation -> PathIndex.TYPE.instantiate()
25+
.set(PathIndex.index, ((PathIndex_) annotation).value()));
26+
TYPE = typeBuilder.build();
27+
KEY = KeyBuilder.newEmptyKey(TYPE);
28+
}
29+
30+
static public Glob create(int index) {
31+
return TYPE.instantiate().set(PathIndex.index, index);
32+
}
33+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.globsframework.shared.model;
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.Target;
8+
9+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
10+
11+
@Retention(RUNTIME)
12+
@Target({ElementType.FIELD})
13+
public @interface PathIndex_ {
14+
int value();
15+
16+
GlobType TYPE = PathIndex.TYPE;
17+
}

src/test/java/org/globsframework/shared/EtcDSharedDataAccessTest.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@
66
import io.etcd.jetcd.KV;
77
import io.etcd.jetcd.options.DeleteOption;
88
import org.globsframework.core.metamodel.GlobType;
9-
import org.globsframework.core.metamodel.GlobTypeLoaderFactory;
9+
import org.globsframework.core.metamodel.GlobTypeBuilder;
10+
import org.globsframework.core.metamodel.GlobTypeBuilderFactory;
1011
import org.globsframework.core.metamodel.fields.IntegerField;
1112
import org.globsframework.core.metamodel.fields.StringField;
1213
import org.globsframework.core.model.FieldValues;
1314
import org.globsframework.core.model.FieldValuesBuilder;
1415
import org.globsframework.core.model.Glob;
1516
import org.globsframework.core.model.MutableGlob;
17+
import org.globsframework.serialisation.model.FieldNumber;
1618
import org.globsframework.serialisation.model.FieldNumber_;
19+
import org.globsframework.shared.model.PathIndex;
1720
import org.globsframework.shared.model.PathIndex_;
1821
import org.junit.*;
1922

@@ -494,7 +497,12 @@ public static class Data1 {
494497
public static StringField someData;
495498

496499
static {
497-
GlobTypeLoaderFactory.create(Data1.class).load();
500+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Data1");
501+
shop = typeBuilder.declareStringField("shop", FieldNumber.create(1), PathIndex.create(1));
502+
workerName = typeBuilder.declareStringField("workerName", FieldNumber.create(2), PathIndex.create(2));
503+
num = typeBuilder.declareIntegerField("num", FieldNumber.create(3), PathIndex.create(3));
504+
someData = typeBuilder.declareStringField("someData", FieldNumber.create(4));
505+
TYPE = typeBuilder.build();
498506
}
499507
}
500508

@@ -516,7 +524,12 @@ public static class Data2 {
516524
public static StringField someData;
517525

518526
static {
519-
GlobTypeLoaderFactory.create(Data2.class).load();
527+
GlobTypeBuilder typeBuilder = GlobTypeBuilderFactory.create("Data2");
528+
shop = typeBuilder.declareStringField("shop", FieldNumber.create(1), PathIndex.create(1));
529+
workerName = typeBuilder.declareStringField("workerName", FieldNumber.create(2), PathIndex.create(2));
530+
num = typeBuilder.declareIntegerField("num", FieldNumber.create(3), PathIndex.create(3));
531+
someData = typeBuilder.declareStringField("someData", FieldNumber.create(4));
532+
TYPE = typeBuilder.build();
520533
}
521534
}
522535
}

0 commit comments

Comments
 (0)