diff --git a/.gitignore b/.gitignore
index 3f9fde51b..5575323a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,5 @@ out
*~
# OS X generated file
.DS_Store
+# Claude Code
+CLAUDE.md
diff --git a/core/pom.xml b/core/pom.xml
index ad8b24252..65053e5e8 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -91,6 +91,12 @@
true
+
+ org.openjdk.jol
+ jol-core
+ test
+
+
org.jboss.marshalling
jboss-marshalling
diff --git a/core/src/main/java/org/infinispan/protostream/annotations/impl/ProtoMessageTypeMetadata.java b/core/src/main/java/org/infinispan/protostream/annotations/impl/ProtoMessageTypeMetadata.java
index 84644d890..6e3beaad9 100644
--- a/core/src/main/java/org/infinispan/protostream/annotations/impl/ProtoMessageTypeMetadata.java
+++ b/core/src/main/java/org/infinispan/protostream/annotations/impl/ProtoMessageTypeMetadata.java
@@ -10,7 +10,8 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedList;
+
+
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -80,7 +81,7 @@ public class ProtoMessageTypeMetadata extends ProtoTypeMetadata {
private XMethod unknownFieldSetSetter;
- private final Map innerTypes = new HashMap<>();
+ private final List innerTypes = new ArrayList<>();
protected ProtoMessageTypeMetadata(BaseProtoSchemaGenerator protoSchemaGenerator, XClass annotatedClass, XClass javaClass) {
super(getProtoName(annotatedClass, javaClass), javaClass);
@@ -159,7 +160,7 @@ public SortedMap getFields() {
}
protected void addInnerType(ProtoTypeMetadata typeMetadata) {
- innerTypes.put(typeMetadata.getJavaClass(), typeMetadata);
+ innerTypes.add(typeMetadata);
}
@Override
@@ -192,13 +193,13 @@ public void generateProto(IndentWriter iw, ProtoSyntax syntax) {
reserved.generate(iw);
- for (ProtoTypeMetadata t : innerTypes.values()) {
+ for (ProtoTypeMetadata t : innerTypes) {
t.generateProto(iw, syntax);
}
- LinkedList unprocessedFields = new LinkedList<>(fieldsByNumber.values());
+ List unprocessedFields = new ArrayList<>(fieldsByNumber.values());
while (!unprocessedFields.isEmpty()) {
- ProtoFieldMetadata f = unprocessedFields.remove();
+ ProtoFieldMetadata f = unprocessedFields.remove(0);
if (f.getOneof() == null) {
f.generateProto(iw, syntax);
} else {
diff --git a/core/src/main/java/org/infinispan/protostream/descriptors/AnnotatedDescriptor.java b/core/src/main/java/org/infinispan/protostream/descriptors/AnnotatedDescriptor.java
index 8345fb370..cebe3fc2f 100644
--- a/core/src/main/java/org/infinispan/protostream/descriptors/AnnotatedDescriptor.java
+++ b/core/src/main/java/org/infinispan/protostream/descriptors/AnnotatedDescriptor.java
@@ -37,8 +37,11 @@ public interface AnnotatedDescriptor {
/**
* Return the documentation text associated with this descriptor.
*
- * @return the documentation text or {@code null} if not present
+ * @return always {@code null}, documentation is no longer retained after annotation parsing
+ * @deprecated Documentation is no longer retained. Use {@link #getAnnotations()} or
+ * {@link #getProcessedAnnotation(String)} to access parsed annotation data.
*/
+ @Deprecated(forRemoval = true)
String getDocumentation();
/**
diff --git a/core/src/main/java/org/infinispan/protostream/descriptors/Descriptor.java b/core/src/main/java/org/infinispan/protostream/descriptors/Descriptor.java
index 764d3a2ab..c37ff4004 100644
--- a/core/src/main/java/org/infinispan/protostream/descriptors/Descriptor.java
+++ b/core/src/main/java/org/infinispan/protostream/descriptors/Descriptor.java
@@ -118,6 +118,11 @@ void setFileDescriptor(FileDescriptor fileDescriptor) {
for (FieldDescriptor fieldDescriptor : fields) {
fieldDescriptor.setFileDescriptor(fileDescriptor);
}
+ for (OneOfDescriptor oneOf : oneofs) {
+ for (FieldDescriptor fieldDescriptor : oneOf.getFields()) {
+ fieldDescriptor.setFileDescriptor(fileDescriptor);
+ }
+ }
for (Descriptor nested : nestedMessageTypes) {
nested.setFileDescriptor(fileDescriptor);
}
diff --git a/core/src/main/java/org/infinispan/protostream/descriptors/EnumValueDescriptor.java b/core/src/main/java/org/infinispan/protostream/descriptors/EnumValueDescriptor.java
index 5c5d409c6..927009c40 100644
--- a/core/src/main/java/org/infinispan/protostream/descriptors/EnumValueDescriptor.java
+++ b/core/src/main/java/org/infinispan/protostream/descriptors/EnumValueDescriptor.java
@@ -18,7 +18,6 @@ public final class EnumValueDescriptor {
private String fullName;
private String scopedName; // the name of this enum value constant in its scope
private final int number;
- private final String documentation;
private final List
+
+ org.openjdk.jol
+ jol-core
+ ${version.jol}
+ test
+
+
org.apache.maven
maven-core