Skip to content

Commit a27aed7

Browse files
committed
PropertyBuilder need to defer all properties into finish because of optional secondaryName
1 parent 8ae58c3 commit a27aed7

File tree

1 file changed

+41
-19
lines changed

1 file changed

+41
-19
lines changed

objectbox-java/src/main/java/io/objectbox/ModelBuilder.java

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,50 +48,50 @@ public class ModelBuilder {
4848
Long lastRelationUid;
4949

5050
public class PropertyBuilder {
51-
/** Deferred, so we can still add strings after constructor. */
5251
private final int type;
52+
private final int virtualTargetOffset;
53+
private final int propertyNameOffset;
54+
private final int targetEntityOffset;
55+
56+
private int secondaryNameOffset;
5357
boolean finished;
58+
private int flags;
59+
private int id;
60+
private long uid;
61+
private int indexId;
62+
private long indexUid;
5463

5564
PropertyBuilder(String name, String targetEntityName, String virtualTarget, int type) {
5665
this.type = type;
57-
int propertyNameOffset = fbb.createString(name);
58-
int targetEntityOffset = targetEntityName != null ? fbb.createString(targetEntityName) : 0;
59-
int virtualTargetOffset = virtualTarget != null ? fbb.createString(virtualTarget) : 0;
60-
ModelProperty.startModelProperty(fbb);
61-
ModelProperty.addName(fbb, propertyNameOffset);
62-
if (targetEntityOffset != 0) {
63-
ModelProperty.addTargetEntity(fbb, targetEntityOffset);
64-
}
65-
if (virtualTargetOffset != 0) {
66-
ModelProperty.addVirtualTarget(fbb, virtualTargetOffset);
67-
}
66+
propertyNameOffset = fbb.createString(name);
67+
targetEntityOffset = targetEntityName != null ? fbb.createString(targetEntityName) : 0;
68+
virtualTargetOffset = virtualTarget != null ? fbb.createString(virtualTarget) : 0;
6869
}
6970

7071
public PropertyBuilder id(int id, long uid) {
7172
checkNotFinished();
72-
int idOffset = IdUid.createIdUid(fbb, id, uid);
73-
ModelProperty.addId(fbb, idOffset);
73+
this.id = id;
74+
this.uid = uid;
7475
return this;
7576
}
7677

7778
public PropertyBuilder indexId(int indexId, long indexUid) {
7879
checkNotFinished();
79-
int idOffset = IdUid.createIdUid(fbb, indexId, indexUid);
80-
ModelProperty.addIndexId(fbb, idOffset);
80+
this.indexId = indexId;
81+
this.indexUid = indexUid;
8182
return this;
8283
}
8384

8485
public PropertyBuilder flags(int flags) {
8586
checkNotFinished();
86-
ModelProperty.addFlags(fbb, flags);
87+
this.flags = flags;
8788
return this;
8889
}
8990

9091
public PropertyBuilder secondaryName(String secondaryName) {
9192
checkNotFinished();
9293
if (secondaryName != null) {
93-
int offset = fbb.createString(secondaryName);
94-
ModelProperty.addNameSecondary(fbb, offset);
94+
secondaryNameOffset = fbb.createString(secondaryName);
9595
}
9696
return this;
9797
}
@@ -105,7 +105,29 @@ private void checkNotFinished() {
105105
public int finish() {
106106
checkNotFinished();
107107
finished = true;
108+
ModelProperty.startModelProperty(fbb);
109+
ModelProperty.addName(fbb, propertyNameOffset);
110+
if (targetEntityOffset != 0) {
111+
ModelProperty.addTargetEntity(fbb, targetEntityOffset);
112+
}
113+
if (virtualTargetOffset != 0) {
114+
ModelProperty.addVirtualTarget(fbb, virtualTargetOffset);
115+
}
116+
if (secondaryNameOffset != 0) {
117+
ModelProperty.addNameSecondary(fbb, secondaryNameOffset);
118+
}
119+
if (id != 0) {
120+
int idOffset = IdUid.createIdUid(fbb, id, uid);
121+
ModelProperty.addId(fbb, idOffset);
122+
}
123+
if (indexId != 0) {
124+
int indexIdOffset = IdUid.createIdUid(fbb, indexId, indexUid);
125+
ModelProperty.addIndexId(fbb, indexIdOffset);
126+
}
108127
ModelProperty.addType(fbb, type);
128+
if (flags != 0) {
129+
ModelProperty.addFlags(fbb, flags);
130+
}
109131
return ModelProperty.endModelProperty(fbb);
110132
}
111133
}

0 commit comments

Comments
 (0)