Skip to content

Commit e26504e

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 99a1677 commit e26504e

15 files changed

Lines changed: 749 additions & 130 deletions

pom.xml

Lines changed: 53 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<packaging>jar</packaging>
66
<artifactId>globs-generate</artifactId>
77
<name>Generic Lightweight ObjectS Asm generator</name>
8-
<version>4.1.0</version>
8+
<version>5.0-SNAPSHOT</version>
99

1010
<repositories>
1111
<repository>
@@ -29,8 +29,8 @@
2929
<artifactId>maven-compiler-plugin</artifactId>
3030
<version>3.11.0</version>
3131
<configuration>
32-
<source>17</source>
33-
<target>17</target>
32+
<source>21</source>
33+
<target>21</target>
3434
</configuration>
3535
</plugin>
3636
<plugin>
@@ -46,20 +46,27 @@
4646
</execution>
4747
</executions>
4848
</plugin>
49+
<plugin>
50+
<groupId>org.apache.maven.plugins</groupId>
51+
<artifactId>maven-compiler-plugin</artifactId>
52+
<configuration>
53+
<annotationProcessorPaths>
54+
<path>
55+
<groupId>org.openjdk.jmh</groupId>
56+
<artifactId>jmh-generator-annprocess</artifactId>
57+
<version>1.37</version>
58+
</path>
59+
</annotationProcessorPaths>
60+
</configuration>
61+
</plugin>
4962
</plugins>
5063
</build>
5164

5265
<dependencies>
5366
<dependency>
5467
<groupId>org.globsframework</groupId>
5568
<artifactId>globs</artifactId>
56-
<version>4.1.0</version>
57-
</dependency>
58-
<dependency>
59-
<groupId>junit</groupId>
60-
<artifactId>junit</artifactId>
61-
<version>4.13.2</version>
62-
<scope>test</scope>
69+
<version>5.0-SNAPSHOT</version>
6370
</dependency>
6471
<dependency>
6572
<groupId>org.apache.logging.log4j</groupId>
@@ -90,6 +97,42 @@
9097
<artifactId>asm-util</artifactId>
9198
<version>9.4</version>
9299
</dependency>
100+
<dependency>
101+
<groupId>org.globsframework</groupId>
102+
<artifactId>globs-bin-serialisation</artifactId>
103+
<version>4.5.0</version>
104+
<scope>test</scope>
105+
</dependency>
106+
<dependency>
107+
<groupId>org.junit.jupiter</groupId>
108+
<artifactId>junit-jupiter-api</artifactId>
109+
<version>5.10.3</version>
110+
<scope>test</scope>
111+
</dependency>
112+
<dependency>
113+
<groupId>org.junit.jupiter</groupId>
114+
<artifactId>junit-jupiter-engine</artifactId>
115+
<version>5.10.3</version>
116+
<scope>test</scope>
117+
</dependency>
118+
<dependency>
119+
<groupId>org.openjdk.jmh</groupId>
120+
<artifactId>jmh-java-benchmark-archetype</artifactId>
121+
<version>1.37</version>
122+
<scope>test</scope>
123+
</dependency>
124+
<dependency>
125+
<groupId>org.openjdk.jmh</groupId>
126+
<artifactId>jmh-core</artifactId>
127+
<version>1.37</version>
128+
<scope>test</scope>
129+
</dependency>
130+
<dependency>
131+
<groupId>com.esotericsoftware.kryo</groupId>
132+
<artifactId>kryo5</artifactId>
133+
<version>5.6.2</version>
134+
<scope>test</scope>
135+
</dependency>
93136
</dependencies>
94137

95138
</project>

src/main/java/org/globsframework/model/generator/FieldVisitorToVisitName.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public void visitDateTime(DateTimeField field) {
213213
};
214214
}
215215

216-
public void visitBlob(BlobField field) {
216+
public void visitBytes(BytesField field) {
217217
isArray = false;
218218
name = switch (characteristic) {
219219
case visitor -> "visitBlob";

src/main/java/org/globsframework/model/generator/object/AbstractGeneratedGlob32.java

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package org.globsframework.model.generator.object;
22

33
import org.globsframework.core.metamodel.GlobType;
4-
import org.globsframework.core.metamodel.fields.Field;
4+
import org.globsframework.core.metamodel.fields.*;
5+
import org.globsframework.core.model.Glob;
56
import org.globsframework.core.model.Key;
67
import org.globsframework.core.model.MutableGlob;
8+
import org.globsframework.core.model.ReservationException;
9+
import org.globsframework.core.model.globaccessor.get.GlobGetAccessor;
10+
import org.globsframework.core.model.globaccessor.get.GlobGetIntAccessor;
11+
import org.globsframework.core.model.globaccessor.get.impl.AbstractGlobGetIntAccessor;
712
import org.globsframework.core.model.impl.AbstractMutableGlob;
813
import org.globsframework.core.utils.exceptions.ItemNotFound;
914

1015
abstract public class AbstractGeneratedGlob32 implements AbstractMutableGlob {
1116
protected int hashCode;
1217
protected int isSet;
18+
private int reserve = 0;
1319

1420
final public void setSetAt(int index) {
1521
isSet |= (1 << index);
@@ -49,6 +55,7 @@ final public int hashCode() {
4955
return hashCode;
5056
}
5157

58+
5259
final public boolean isHashComputed() {
5360
return hashCode != 0;
5461
}
@@ -118,4 +125,65 @@ public boolean equals(Object o) {
118125
return true;
119126
}
120127

128+
@Override
129+
public void checkReserved() {
130+
if (reserve < 0) {
131+
throw new ReservationException("Data not reserved");
132+
}
133+
}
134+
135+
@Override
136+
public void reserve(int key) {
137+
if (key <= 0) {
138+
throw new ReservationException("Reserved key <= 0 Got " + key);
139+
}
140+
if (reserve > 0) {
141+
throw new ReservationException("Already reserved by " + key);
142+
}
143+
reserve = key;
144+
}
145+
146+
@Override
147+
public boolean release(int key) {
148+
if (key <= 0) {
149+
throw new ReservationException("Released key <= 0 Got " + key);
150+
}
151+
if (reserve == -key) {
152+
return false;
153+
}
154+
if (reserve != 0) {
155+
if (reserve != key) {
156+
throw new ReservationException("Can not release data : reserved by " + reserve + " != " + key);
157+
}
158+
reserve = -key;
159+
} else {
160+
throw new ReservationException("Can not release not own Glob '" + key + "'");
161+
}
162+
hashCode = 0;
163+
isSet = 0;
164+
return true;
165+
}
166+
167+
@Override
168+
public void unReserve() {
169+
hashCode = 0;
170+
reserve = 0;
171+
}
172+
173+
@Override
174+
public boolean isReserved() {
175+
return reserve > 0;
176+
}
177+
178+
@Override
179+
public boolean isReservedBy(int key) {
180+
return key > 0 && reserve == key;
181+
}
182+
183+
@Override
184+
public void checkWasReservedBy(int key) {
185+
if (key <= 0 || reserve != -key) {
186+
throw new ReservationException("Data was not reserved by " + reserve + " != " + key);
187+
}
188+
}
121189
}

src/main/java/org/globsframework/model/generator/object/AbstractGeneratedGlob64.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import org.globsframework.core.metamodel.fields.FieldValueVisitor;
66
import org.globsframework.core.model.Key;
77
import org.globsframework.core.model.MutableGlob;
8+
import org.globsframework.core.model.ReservationException;
89
import org.globsframework.core.model.impl.AbstractMutableGlob;
910
import org.globsframework.core.utils.exceptions.ItemNotFound;
1011

1112
abstract public class AbstractGeneratedGlob64 implements AbstractMutableGlob {
1213
private int hashCode;
14+
private int reserve = 0;
1315
private long isSet;
1416

1517
public boolean isSetAt(int index) {
@@ -114,4 +116,66 @@ public boolean equals(Object o) {
114116
}
115117
return true;
116118
}
119+
@Override
120+
public void checkReserved() {
121+
if (reserve < 0) {
122+
throw new ReservationException("Data not reserved");
123+
}
124+
}
125+
126+
@Override
127+
public void reserve(int key) {
128+
if (key <= 0) {
129+
throw new ReservationException("Reserved key <= 0 Got " + key);
130+
}
131+
if (reserve > 0) {
132+
throw new ReservationException("Already reserved by " + key);
133+
}
134+
reserve = key;
135+
}
136+
137+
@Override
138+
public boolean release(int key) {
139+
if (key <= 0) {
140+
throw new ReservationException("Released key <= 0 Got " + key);
141+
}
142+
if (reserve == -key) {
143+
return false;
144+
}
145+
if (reserve != 0) {
146+
if (reserve != key) {
147+
throw new ReservationException("Can not release data : reserved by " + reserve + " != " + key);
148+
}
149+
reserve = -key;
150+
} else {
151+
throw new ReservationException("Can not release not own Glob '" + key + "'");
152+
}
153+
hashCode = 0;
154+
isSet = 0;
155+
return true;
156+
}
157+
158+
@Override
159+
public void unReserve() {
160+
hashCode = 0;
161+
reserve = 0;
162+
}
163+
164+
@Override
165+
public boolean isReserved() {
166+
return reserve > 0;
167+
}
168+
169+
@Override
170+
public boolean isReservedBy(int key) {
171+
return key > 0 && reserve == key;
172+
}
173+
174+
@Override
175+
public void checkWasReservedBy(int key) {
176+
if (key <= 0 || reserve != -key) {
177+
throw new ReservationException("Data was not reserved by " + reserve + " != " + key);
178+
}
179+
}
180+
117181
}

0 commit comments

Comments
 (0)