Skip to content

Commit 4f4df78

Browse files
committed
Merge branch 'develop' into release
2 parents 75d8222 + a7822e9 commit 4f4df78

File tree

43 files changed

+1046
-208
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1046
-208
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
## Release 4.2.2 - Mar 5, 2024
2+
3+
### Issue Fixes
4+
5+
- Fix for #917
6+
- Fix for #916
7+
- Fix for #911
8+
- Version upgrade for several dependencies
9+
110
## Release 4.2.1 - Feb 19, 2024
211

312
### Issue Fixes

nitrite-bom/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>org.dizitart</groupId>
66
<artifactId>nitrite-java</artifactId>
7-
<version>4.2.1</version>
7+
<version>4.2.2-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>nitrite-bom</artifactId>

nitrite-jackson-mapper/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>org.dizitart</groupId>
66
<artifactId>nitrite-java</artifactId>
7-
<version>4.2.1</version>
7+
<version>4.2.2-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>nitrite-jackson-mapper</artifactId>

nitrite-jackson-mapper/src/test/java/org/dizitart/no2/integration/NitriteTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.dizitart.no2.collection.Document;
2525
import org.dizitart.no2.collection.NitriteCollection;
2626
import org.dizitart.no2.common.mapper.JacksonMapperModule;
27+
import org.dizitart.no2.exceptions.IndexingException;
2728
import org.dizitart.no2.exceptions.NitriteIOException;
2829
import org.dizitart.no2.exceptions.ValidationException;
2930
import org.dizitart.no2.index.IndexOptions;
@@ -241,6 +242,24 @@ public void testGetCollectionInvalidName() {
241242
db.getCollection(META_MAP_NAME);
242243
}
243244

245+
@Test(expected = IndexingException.class)
246+
public void testUniqueAndTextIndex() {
247+
try (final Nitrite nitrite = Nitrite.builder()
248+
.loadModule(new JacksonMapperModule())
249+
.openOrCreate()) {
250+
nitrite.getRepository(EntityUniqueFullText.class);
251+
}
252+
}
253+
254+
@Test(expected = IndexingException.class)
255+
public void testNoUniqueAndTextIndex() {
256+
try (final Nitrite nitrite = Nitrite.builder()
257+
.loadModule(new JacksonMapperModule())
258+
.openOrCreate()) {
259+
nitrite.getRepository(EntityNoUniqueFullText.class);
260+
}
261+
}
262+
244263

245264
@Data
246265
@NoArgsConstructor
@@ -263,4 +282,26 @@ public enum Status {
263282

264283
public static class EmptyClass {
265284
}
285+
286+
@Indices({
287+
@Index(fields = "value", type = IndexType.FULL_TEXT),
288+
@Index(fields = "value")
289+
})
290+
@Data
291+
@NoArgsConstructor
292+
@AllArgsConstructor
293+
public static class EntityUniqueFullText {
294+
private String value;
295+
}
296+
297+
@Indices({
298+
@Index(fields = "value", type = IndexType.FULL_TEXT),
299+
@Index(fields = "value", type = IndexType.NON_UNIQUE)
300+
})
301+
@Data
302+
@NoArgsConstructor
303+
@AllArgsConstructor
304+
public static class EntityNoUniqueFullText {
305+
private String value;
306+
}
266307
}

nitrite-mvstore-adapter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>org.dizitart</groupId>
66
<artifactId>nitrite-java</artifactId>
7-
<version>4.2.1</version>
7+
<version>4.2.2-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>nitrite-mvstore-adapter</artifactId>

nitrite-mvstore-adapter/src/main/java/org/dizitart/no2/mvstore/NitriteMVMap.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public Value putIfAbsent(Key key, Value value) {
133133

134134
@Override
135135
public RecordStream<Pair<Key, Value>> entries() {
136-
return () -> new Iterator<Pair<Key, Value>>() {
136+
return () -> new Iterator<>() {
137137
final Iterator<Map.Entry<Key, Value>> entryIterator = mvMap.entrySet().iterator();
138138

139139
@Override
@@ -154,6 +154,16 @@ public RecordStream<Pair<Key, Value>> reversedEntries() {
154154
return () -> new ReverseIterator<>(mvMap);
155155
}
156156

157+
@Override
158+
public Key firstKey() {
159+
return mvMap.firstKey();
160+
}
161+
162+
@Override
163+
public Key lastKey() {
164+
return mvMap.lastKey();
165+
}
166+
157167
@Override
158168
public Key higherKey(Key key) {
159169
return mvMap.higherKey(key);

nitrite-mvstore-adapter/src/main/java/org/dizitart/no2/mvstore/compat/v1/UpgradeUtil.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
import java.util.concurrent.ConcurrentSkipListSet;
3939
import java.util.concurrent.CopyOnWriteArrayList;
4040

41-
import static org.dizitart.no2.common.Constants.INDEX_PREFIX;
42-
import static org.dizitart.no2.common.Constants.STORE_INFO;
41+
import static org.dizitart.no2.common.Constants.*;
4342
import static org.dizitart.no2.common.util.ObjectUtils.convertToObjectArray;
4443
import static org.dizitart.no2.common.util.StringUtils.isNullOrEmpty;
4544

@@ -91,9 +90,12 @@ private static void copyData(MVMap oldMap, org.h2.mvstore.MVMap newMap) {
9190

9291
if (key instanceof Compat.NitriteId) {
9392
newKey = nitriteId((Compat.NitriteId) key);
93+
} else if (oldMap.getName().contains(INDEX_META_PREFIX)) {
94+
// index meta map, wrap with Field
95+
newKey = key == null ? Fields.withNames() : Fields.withNames((String) key);
9496
} else if (oldMap.getName().contains(INDEX_PREFIX)) {
9597
// index map, wrap with DBValue
96-
newKey = newKey == null ? DBNull.getInstance() : new DBValue((Comparable<?>) newKey);
98+
newKey = key == null ? DBNull.getInstance() : new DBValue((Comparable<?>) key);
9799
}
98100

99101
Object newValue = migrateValue(entry.getValue());

nitrite-mvstore-adapter/src/main/java/org/dizitart/no2/mvstore/compat/v1/mvstore/fs/FilePathDisk.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,14 +305,13 @@ public InputStream newInputStream() throws IOException {
305305
}
306306

307307
static void freeMemoryAndFinalize() {
308-
IOUtils.trace("freeMemoryAndFinalize", (String)null, (Object)null);
308+
IOUtils.trace("freeMemoryAndFinalize", null, null);
309309
Runtime var0 = Runtime.getRuntime();
310310
long var1 = var0.freeMemory();
311311

312312
for(int var3 = 0; var3 < 16; ++var3) {
313313
var0.gc();
314314
long var4 = var0.freeMemory();
315-
var0.runFinalization();
316315
if (var4 == var1) {
317316
break;
318317
}

nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/NitriteTest.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import static org.dizitart.no2.collection.Document.createDocument;
6464
import static org.dizitart.no2.common.Constants.INTERNAL_NAME_SEPARATOR;
6565
import static org.dizitart.no2.common.Constants.META_MAP_NAME;
66+
import static org.dizitart.no2.common.util.Iterables.listOf;
6667
import static org.dizitart.no2.filters.Filter.ALL;
6768
import static org.dizitart.no2.filters.Filter.and;
6869
import static org.dizitart.no2.filters.FluentFilter.where;
@@ -186,38 +187,53 @@ public void testReopen() throws ParseException {
186187
NitriteCollection testCollection = db.getCollection("test");
187188
assertNotNull(testCollection);
188189
long prevSize = testCollection.find().size();
190+
ObjectRepository<Receipt> repository = db.getRepository(Receipt.class);
191+
assertNotNull(repository);
192+
long prevRepoSize = repository.size();
189193

190194
db.close();
191-
192195
db = null;
193196

194-
db = TestUtil.createDb(fileName, "test-user", "test-password");
195-
197+
db = TestUtil.createDb(fileName, "test-user", "test-password", listOf(new Receipt.Converter()));
196198
assertNotNull(db);
197199
testCollection = db.getCollection("test");
198200
assertNotNull(testCollection);
199201
long sizeNow = testCollection.find().size();
200202
assertEquals(prevSize, sizeNow);
203+
repository = db.getRepository(Receipt.class);
204+
assertNotNull(repository);
205+
long repoSizeNow = repository.size();
206+
assertEquals(prevRepoSize, repoSizeNow);
201207

202208
db.close();
203209
db = null;
204-
db = TestUtil.createDb(fileName, "test-user", "test-password");
210+
db = TestUtil.createDb(fileName, "test-user", "test-password", listOf(new Receipt.Converter()));
205211

206212
testCollection = db.getCollection("test");
207213
testCollection.insert(createDocument("firstName", "fn12")
208214
.put("lastName", "ln12")
209215
.put("birthDay", simpleDateFormat.parse("2010-07-01T16:02:48.440Z"))
210216
.put("data", new byte[]{10, 20, 30})
211217
.put("body", "a quick brown fox jump over the lazy dog"));
218+
repository = db.getRepository(Receipt.class);
219+
Receipt r = new Receipt();
220+
r.status = Receipt.Status.COMPLETED;
221+
r.clientRef = "10";
222+
r.synced = false;
223+
repository.insert(r);
212224

213225
db.close();
214226
db = null;
215-
db = TestUtil.createDb(fileName, "test-user", "test-password");
227+
db = TestUtil.createDb(fileName, "test-user", "test-password", listOf(new Receipt.Converter()));
216228

217229
testCollection = db.getCollection("test");
218230
assertNotNull(testCollection);
219231
sizeNow = testCollection.find().size();
220232
assertEquals(prevSize + 1, sizeNow);
233+
repository = db.getRepository(Receipt.class);
234+
assertNotNull(repository);
235+
repoSizeNow = repository.size();
236+
assertEquals(prevRepoSize + 1, repoSizeNow);
221237
}
222238

223239
@Test
@@ -491,9 +507,7 @@ public void testReadCompatibility() throws IOException {
491507
Files.copy(stream, Paths.get(System.getProperty("java.io.tmpdir") + File.separator + "old.db"));
492508

493509
String oldDbFile = System.getProperty("java.io.tmpdir") + File.separator + "old.db";
494-
Nitrite db = TestUtil.createDb(oldDbFile, "test-user", "test-password");
495-
SimpleNitriteMapper documentMapper = (SimpleNitriteMapper) db.getConfig().nitriteMapper();
496-
documentMapper.registerEntityConverter(new Receipt.Converter());
510+
Nitrite db = TestUtil.createDb(oldDbFile, "test-user", "test-password", listOf(new Receipt.Converter()));
497511

498512
NitriteCollection collection = db.getCollection("test");
499513

@@ -517,6 +531,8 @@ public void testReadCompatibility() throws IOException {
517531
assertNotNull(repository.getAttributes());
518532

519533
db.close();
534+
535+
//TODO: CHeck reopen with repo. That should also fails too.
520536
}
521537

522538
@Test

nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/integration/TestUtil.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import lombok.extern.slf4j.Slf4j;
2626
import org.dizitart.no2.Nitrite;
2727
import org.dizitart.no2.collection.Document;
28+
import org.dizitart.no2.common.mapper.EntityConverter;
2829
import org.dizitart.no2.exceptions.ObjectMappingException;
2930
import org.dizitart.no2.mvstore.MVStoreModule;
3031

@@ -125,6 +126,20 @@ public static Nitrite createDb(String filePath, String user, String password) {
125126
.openOrCreate(user, password);
126127
}
127128

129+
public static Nitrite createDb(String filePath, String user, String password,
130+
List<EntityConverter<?>> entityConverters) {
131+
MVStoreModule storeModule = MVStoreModule.withConfig()
132+
.filePath(filePath)
133+
.compress(true)
134+
.build();
135+
136+
return Nitrite.builder()
137+
.loadModule(storeModule)
138+
.loadModule(() -> new HashSet<>(entityConverters))
139+
.fieldSeparator(".")
140+
.openOrCreate(user, password);
141+
}
142+
128143
public static Document parse(String json) {
129144
try {
130145
ObjectMapper objectMapper = createObjectMapper();

0 commit comments

Comments
 (0)