Skip to content

Commit cdc4174

Browse files
Merge branch '21-string-list-properties' into dev
2 parents 2e9fac5 + 24c064c commit cdc4174

File tree

7 files changed

+60
-21
lines changed

7 files changed

+60
-21
lines changed

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,16 @@
1616

1717
package io.objectbox;
1818

19-
import java.io.Closeable;
20-
import java.util.List;
21-
22-
import javax.annotation.Nullable;
23-
import javax.annotation.concurrent.NotThreadSafe;
24-
2519
import io.objectbox.annotation.apihint.Beta;
2620
import io.objectbox.annotation.apihint.Internal;
2721
import io.objectbox.internal.CursorFactory;
2822
import io.objectbox.relation.ToMany;
2923

24+
import javax.annotation.Nullable;
25+
import javax.annotation.concurrent.NotThreadSafe;
26+
import java.io.Closeable;
27+
import java.util.List;
28+
3029
@SuppressWarnings({"unchecked", "SameParameterValue", "unused", "WeakerAccess", "UnusedReturnValue"})
3130
@Beta
3231
@Internal
@@ -107,7 +106,11 @@ protected static native long collect004000(long cursor, long keyIfComplete, int
107106
);
108107

109108
protected static native long collectStringArray(long cursor, long keyIfComplete, int flags,
110-
int idStringArray, String[] stringArray
109+
int idStringArray, @Nullable String[] stringArray
110+
);
111+
112+
protected static native long collectStringList(long cursor, long keyIfComplete, int flags,
113+
int idStringList, @Nullable List<String> stringList
111114
);
112115

113116
native int nativePropertyId(long cursor, String propertyValue);

tests/objectbox-java-test/src/main/java/io/objectbox/TestEntity.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.objectbox;
1818

1919
import java.util.Arrays;
20+
import java.util.List;
2021

2122
/** In "real" entity would be annotated with @Entity. */
2223
public class TestEntity {
@@ -42,6 +43,7 @@ public class TestEntity {
4243
private byte[] simpleByteArray;
4344
/** Not-null value. */
4445
private String[] simpleStringArray;
46+
private List<String> simpleStringList;
4547
/** In "real" entity would be annotated with @Unsigned. */
4648
private short simpleShortU;
4749
/** In "real" entity would be annotated with @Unsigned. */
@@ -59,7 +61,7 @@ public TestEntity(long id) {
5961
this.id = id;
6062
}
6163

62-
public TestEntity(long id, boolean simpleBoolean, byte simpleByte, short simpleShort, int simpleInt, long simpleLong, float simpleFloat, double simpleDouble, String simpleString, byte[] simpleByteArray, String[] simpleStringArray, short simpleShortU, int simpleIntU, long simpleLongU) {
64+
public TestEntity(long id, boolean simpleBoolean, byte simpleByte, short simpleShort, int simpleInt, long simpleLong, float simpleFloat, double simpleDouble, String simpleString, byte[] simpleByteArray, String[] simpleStringArray, List<String> simpleStringList, short simpleShortU, int simpleIntU, long simpleLongU) {
6365
this.id = id;
6466
this.simpleBoolean = simpleBoolean;
6567
this.simpleByte = simpleByte;
@@ -71,6 +73,7 @@ public TestEntity(long id, boolean simpleBoolean, byte simpleByte, short simpleS
7173
this.simpleString = simpleString;
7274
this.simpleByteArray = simpleByteArray;
7375
this.simpleStringArray = simpleStringArray;
76+
this.simpleStringList = simpleStringList;
7477
this.simpleShortU = simpleShortU;
7578
this.simpleIntU = simpleIntU;
7679
this.simpleLongU = simpleLongU;
@@ -172,6 +175,16 @@ public String[] getSimpleStringArray() {
172175
public void setSimpleStringArray(String[] simpleStringArray) {
173176
this.simpleStringArray = simpleStringArray;
174177
}
178+
179+
public List<String> getSimpleStringList() {
180+
return simpleStringList;
181+
}
182+
183+
public TestEntity setSimpleStringList(List<String> simpleStringList) {
184+
this.simpleStringList = simpleStringList;
185+
return this;
186+
}
187+
175188
public short getSimpleShortU() {
176189
return simpleShortU;
177190
}
@@ -213,6 +226,7 @@ public String toString() {
213226
", simpleString='" + simpleString + '\'' +
214227
", simpleByteArray=" + Arrays.toString(simpleByteArray) +
215228
", simpleStringArray=" + Arrays.toString(simpleStringArray) +
229+
", simpleStringList=" + simpleStringList +
216230
", simpleShortU=" + simpleShortU +
217231
", simpleIntU=" + simpleIntU +
218232
", simpleLongU=" + simpleLongU +

tests/objectbox-java-test/src/main/java/io/objectbox/TestEntityCursor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public Cursor<TestEntity> createCursor(io.objectbox.Transaction tx, long cursorH
5252
private final static int __ID_simpleString = TestEntity_.simpleString.id;
5353
private final static int __ID_simpleByteArray = TestEntity_.simpleByteArray.id;
5454
private final static int __ID_simpleStringArray = TestEntity_.simpleStringArray.id;
55+
private final static int __ID_simpleStringList = TestEntity_.simpleStringList.id;
5556
private final static int __ID_simpleShortU = TestEntity_.simpleShortU.id;
5657
private final static int __ID_simpleIntU = TestEntity_.simpleIntU.id;
5758
private final static int __ID_simpleLongU = TestEntity_.simpleLongU.id;
@@ -78,6 +79,12 @@ public final long put(TestEntity entity) {
7879
collectStringArray(cursor, 0, PUT_FLAG_FIRST,
7980
__id10, simpleStringArray);
8081

82+
java.util.List<String> simpleStringList = entity.getSimpleStringList();
83+
int __id11 = simpleStringList != null ? __ID_simpleStringList : 0;
84+
85+
collectStringList(cursor, 0, 0,
86+
__id11, simpleStringList);
87+
8188
String simpleString = entity.getSimpleString();
8289
int __id8 = simpleString != null ? __ID_simpleString : 0;
8390
byte[] simpleByteArray = entity.getSimpleByteArray();

tests/objectbox-java-test/src/main/java/io/objectbox/TestEntity_.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,17 @@ public final class TestEntity_ implements EntityInfo<TestEntity> {
8080
public final static io.objectbox.Property<TestEntity> simpleStringArray =
8181
new io.objectbox.Property<>(__INSTANCE, 10, 11, String[].class, "simpleStringArray", false, "simpleStringArray");
8282

83+
public final static io.objectbox.Property<TestEntity> simpleStringList =
84+
new io.objectbox.Property<>(__INSTANCE, 11, 15, java.util.List.class, "simpleStringList");
85+
8386
public final static io.objectbox.Property<TestEntity> simpleShortU =
84-
new io.objectbox.Property<>(__INSTANCE, 11, 12, short.class, "simpleShortU");
87+
new io.objectbox.Property<>(__INSTANCE, 12, 12, short.class, "simpleShortU");
8588

8689
public final static io.objectbox.Property<TestEntity> simpleIntU =
87-
new io.objectbox.Property<>(__INSTANCE, 12, 13, int.class, "simpleIntU");
90+
new io.objectbox.Property<>(__INSTANCE, 13, 13, int.class, "simpleIntU");
8891

8992
public final static io.objectbox.Property<TestEntity> simpleLongU =
90-
new io.objectbox.Property<>(__INSTANCE, 13, 14, long.class, "simpleLongU");
93+
new io.objectbox.Property<>(__INSTANCE, 14, 14, long.class, "simpleLongU");
9194

9295
@SuppressWarnings("unchecked")
9396
public final static io.objectbox.Property<TestEntity>[] __ALL_PROPERTIES = new io.objectbox.Property[]{
@@ -102,6 +105,7 @@ public final class TestEntity_ implements EntityInfo<TestEntity> {
102105
simpleString,
103106
simpleByteArray,
104107
simpleStringArray,
108+
simpleStringList,
105109
simpleShortU,
106110
simpleIntU,
107111
simpleLongU

tests/objectbox-java-test/src/test/java/io/objectbox/AbstractObjectBoxTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.File;
2424
import java.io.IOException;
2525
import java.util.ArrayList;
26+
import java.util.Arrays;
2627
import java.util.List;
2728
import java.util.Random;
2829
import java.util.concurrent.CountDownLatch;
@@ -240,6 +241,8 @@ private void addTestEntity(ModelBuilder modelBuilder, @Nullable IndexType simple
240241
}
241242
entityBuilder.property("simpleByteArray", PropertyType.ByteVector).id(TestEntity_.simpleByteArray.id, ++lastUid);
242243
entityBuilder.property("simpleStringArray", PropertyType.StringVector).id(TestEntity_.simpleStringArray.id, ++lastUid);
244+
entityBuilder.property("simpleStringList", PropertyType.StringVector).id(TestEntity_.simpleStringList.id, ++lastUid)
245+
.flags(PropertyFlags.NON_PRIMITIVE_TYPE);
243246

244247
// Unsigned integers.
245248
entityBuilder.property("simpleShortU", PropertyType.Short).id(TestEntity_.simpleShortU.id, ++lastUid)
@@ -284,7 +287,9 @@ protected TestEntity createTestEntity(@Nullable String simpleString, int nr) {
284287
entity.setSimpleFloat(200 + nr / 10f);
285288
entity.setSimpleDouble(2000 + nr / 100f);
286289
entity.setSimpleByteArray(new byte[]{1, 2, (byte) nr});
287-
entity.setSimpleStringArray(new String[]{simpleString});
290+
String[] stringArray = {simpleString};
291+
entity.setSimpleStringArray(stringArray);
292+
entity.setSimpleStringList(Arrays.asList(stringArray));
288293
entity.setSimpleShortU((short) (100 + nr));
289294
entity.setSimpleIntU(nr);
290295
entity.setSimpleLongU(1000 + nr);
@@ -304,9 +309,10 @@ protected void assertTestEntity(TestEntity actual, @Nullable String simpleString
304309
assertEquals(200 + nr / 10f, actual.getSimpleFloat(), 0);
305310
assertEquals(2000 + nr / 100f, actual.getSimpleDouble(), 0);
306311
assertArrayEquals(new byte[]{1, 2, (byte) nr}, actual.getSimpleByteArray());
307-
// null array items are ignored, so array will be empty
312+
// null array items are ignored, so array/list will be empty
308313
String[] expectedStringArray = simpleString == null ? new String[]{} : new String[]{simpleString};
309314
assertArrayEquals(expectedStringArray, actual.getSimpleStringArray());
315+
assertEquals(Arrays.asList(expectedStringArray), actual.getSimpleStringList());
310316
assertEquals((short) (100 + nr), actual.getSimpleShortU());
311317
assertEquals(nr, actual.getSimpleIntU());
312318
assertEquals(1000 + nr, actual.getSimpleLongU());

tests/objectbox-java-test/src/test/java/io/objectbox/BoxStoreTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public void validate() {
234234

235235
// No limit.
236236
long validated = store.validate(0, true);
237-
assertEquals(7, validated);
237+
assertEquals(8, validated);
238238

239239
// With limit.
240240
validated = store.validate(1, true);

tests/objectbox-java-test/src/test/java/io/objectbox/BoxTest.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.junit.Test;
2121

2222
import java.util.ArrayList;
23+
import java.util.Arrays;
2324
import java.util.Collection;
2425
import java.util.List;
2526
import java.util.Map;
@@ -52,41 +53,45 @@ public void testPutAndGet() {
5253
}
5354

5455
@Test
55-
public void testPutStringArray_withNull_ignoresNull() {
56+
public void testPutStrings_withNull_ignoresNull() {
5657
final String[] stringArray = new String[]{"sunrise", null, "sunset"};
5758
final String[] expectedStringArray = new String[]{"sunrise", "sunset"};
5859

5960
TestEntity entity = new TestEntity();
6061
entity.setSimpleStringArray(stringArray);
62+
entity.setSimpleStringList(Arrays.asList(stringArray));
6163
box.put(entity);
6264

6365
TestEntity entityRead = box.get(entity.getId());
6466
assertNotNull(entityRead);
6567
assertArrayEquals(expectedStringArray, entityRead.getSimpleStringArray());
68+
assertEquals(Arrays.asList(expectedStringArray), entityRead.getSimpleStringList());
6669
}
6770

6871
@Test
69-
public void testPutStringArray_onlyNull_isEmpty() {
70-
final String[] stringArray = new String[]{null};
71-
final String[] expectedStringArray = new String[]{};
72-
72+
public void testPutStrings_onlyNull_isEmpty() {
7373
TestEntity entity = new TestEntity();
74+
final String[] stringArray = new String[]{null};
7475
entity.setSimpleStringArray(stringArray);
76+
entity.setSimpleStringList(Arrays.asList(stringArray));
7577
box.put(entity);
7678

7779
TestEntity entityRead = box.get(entity.getId());
7880
assertNotNull(entityRead);
79-
assertArrayEquals(expectedStringArray, entityRead.getSimpleStringArray());
81+
assertArrayEquals(new String[]{}, entityRead.getSimpleStringArray());
82+
assertEquals(new ArrayList<>(), entityRead.getSimpleStringList());
8083
}
8184

8285
@Test
83-
public void testPutStringArray_null_isNull() {
86+
public void testPutStrings_null_isNull() {
87+
// Null String array and list.
8488
TestEntity entity = new TestEntity();
8589
box.put(entity);
8690

8791
TestEntity entityRead = box.get(entity.getId());
8892
assertNotNull(entityRead);
8993
assertNull(entityRead.getSimpleStringArray());
94+
assertNull(entityRead.getSimpleStringList());
9095
}
9196

9297
@Test

0 commit comments

Comments
 (0)