From 84eafc935bb9b531078f83c981c226ff8e14f5bf Mon Sep 17 00:00:00 2001 From: "whitesource-bolt-for-github[bot]" <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2020 01:02:01 +0530 Subject: [PATCH 01/13] Configure WhiteSource Bolt for GitHub (#248) Co-authored-by: whitesource-bolt-for-github[bot] <42819689+whitesource-bolt-for-github[bot]@users.noreply.github.com> --- .whitesource | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .whitesource diff --git a/.whitesource b/.whitesource new file mode 100644 index 000000000..004ba821b --- /dev/null +++ b/.whitesource @@ -0,0 +1,11 @@ +{ + "scanSettings": { + "baseBranches": [] + }, + "checkRunSettings": { + "vulnerableCheckRunConclusionLevel": "failure" + }, + "issueSettings": { + "minSeverityLevel": "LOW" + } +} \ No newline at end of file From cb8b2a1c39f8dfcbb425046f23ef9036b690ffdd Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee <696662+anidotnet@users.noreply.github.com> Date: Fri, 21 Aug 2020 01:07:53 +0530 Subject: [PATCH 02/13] Delete .whitesource --- .whitesource | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .whitesource diff --git a/.whitesource b/.whitesource deleted file mode 100644 index 004ba821b..000000000 --- a/.whitesource +++ /dev/null @@ -1,11 +0,0 @@ -{ - "scanSettings": { - "baseBranches": [] - }, - "checkRunSettings": { - "vulnerableCheckRunConclusionLevel": "failure" - }, - "issueSettings": { - "minSeverityLevel": "LOW" - } -} \ No newline at end of file From 05a421e965c19dab7f6860dfff2053d26a204376 Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Thu, 24 Sep 2020 13:25:55 +0530 Subject: [PATCH 03/13] fixed #251 --- .gitignore | 3 +- gradlew | 0 .../org/dizitart/no2/fulltext/Languages.java | 3 + .../no2/fulltext/UniversalTextTokenizer.java | 3 + .../languages/BrazilianPortuguese.java | 165 ++ .../no2/fulltext/languages/Breton.java | 1350 +++++++++++++++-- .../java/org/dizitart/no2/NitriteTest.java | 51 + 7 files changed, 1427 insertions(+), 148 deletions(-) mode change 100644 => 100755 gradlew create mode 100644 nitrite/src/main/java/org/dizitart/no2/fulltext/languages/BrazilianPortuguese.java diff --git a/.gitignore b/.gitignore index ef00e1fb4..d4cc04017 100644 --- a/.gitignore +++ b/.gitignore @@ -451,4 +451,5 @@ captures/ !/nitrite-datagate/src/main/dist/bin/ /nitrite-datagate/src/main/dist/logs/ -.attach_pid* \ No newline at end of file +.attach_pid* +.diffblue \ No newline at end of file diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/nitrite/src/main/java/org/dizitart/no2/fulltext/Languages.java b/nitrite/src/main/java/org/dizitart/no2/fulltext/Languages.java index 606d606ed..94b36976d 100644 --- a/nitrite/src/main/java/org/dizitart/no2/fulltext/Languages.java +++ b/nitrite/src/main/java/org/dizitart/no2/fulltext/Languages.java @@ -18,6 +18,8 @@ package org.dizitart.no2.fulltext; +import org.dizitart.no2.fulltext.languages.*; + /** * All supported languages for full-text search. * @@ -30,6 +32,7 @@ public enum Languages { Armenian, Basque, Bengali, + BrazilianPortuguese, Breton, Bulgarian, Catalan, diff --git a/nitrite/src/main/java/org/dizitart/no2/fulltext/UniversalTextTokenizer.java b/nitrite/src/main/java/org/dizitart/no2/fulltext/UniversalTextTokenizer.java index 6edc7f55f..54f0e0c09 100644 --- a/nitrite/src/main/java/org/dizitart/no2/fulltext/UniversalTextTokenizer.java +++ b/nitrite/src/main/java/org/dizitart/no2/fulltext/UniversalTextTokenizer.java @@ -60,6 +60,9 @@ public void loadLanguage(Languages... languages) { case Bengali: registerLanguage(new Bengali()); break; + case BrazilianPortuguese: + registerLanguage(new BrazilianPortuguese()); + break; case Breton: registerLanguage(new Breton()); break; diff --git a/nitrite/src/main/java/org/dizitart/no2/fulltext/languages/BrazilianPortuguese.java b/nitrite/src/main/java/org/dizitart/no2/fulltext/languages/BrazilianPortuguese.java new file mode 100644 index 000000000..ff2790c2d --- /dev/null +++ b/nitrite/src/main/java/org/dizitart/no2/fulltext/languages/BrazilianPortuguese.java @@ -0,0 +1,165 @@ +/* + * + * Copyright 2017-2018 Nitrite author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.dizitart.no2.fulltext.languages; + +import org.dizitart.no2.fulltext.Language; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * Breton stop words + * + * @since 2.1.0 + * @author Anindya Chatterjee + */ +public class BrazilianPortuguese implements Language { + @Override + public Set stopWords() { + return new HashSet<>(Arrays.asList( + "a", + "ainda", + "alem", + "ambas", + "ambos", + "antes", + "ao", + "aonde", + "aos", + "apos", + "aquele", + "aqueles", + "as", + "assim", + "com", + "como", + "contra", + "contudo", + "cuja", + "cujas", + "cujo", + "cujos", + "da", + "das", + "de", + "dela", + "dele", + "deles", + "demais", + "depois", + "desde", + "desta", + "deste", + "dispoe", + "dispoem", + "diversa", + "diversas", + "diversos", + "do", + "dos", + "durante", + "e", + "ela", + "elas", + "ele", + "eles", + "em", + "entao", + "entre", + "essa", + "essas", + "esse", + "esses", + "esta", + "estas", + "este", + "estes", + "ha", + "isso", + "isto", + "logo", + "mais", + "mas", + "mediante", + "menos", + "mesma", + "mesmas", + "mesmo", + "mesmos", + "na", + "nao", + "nas", + "nem", + "nesse", + "neste", + "nos", + "o", + "os", + "ou", + "outra", + "outras", + "outro", + "outros", + "pelas", + "pelo", + "pelos", + "perante", + "pois", + "por", + "porque", + "portanto", + "propios", + "proprio", + "quais", + "qual", + "qualquer", + "quando", + "quanto", + "que", + "quem", + "quer", + "se", + "seja", + "sem", + "sendo", + "seu", + "seus", + "sob", + "sobre", + "sua", + "suas", + "tal", + "tambem", + "teu", + "teus", + "toda", + "todas", + "todo", + "todos", + "tua", + "tuas", + "tudo", + "um", + "uma", + "umas", + "uns" + )); + } +} diff --git a/nitrite/src/main/java/org/dizitart/no2/fulltext/languages/Breton.java b/nitrite/src/main/java/org/dizitart/no2/fulltext/languages/Breton.java index 7b64ab532..115cf273d 100644 --- a/nitrite/src/main/java/org/dizitart/no2/fulltext/languages/Breton.java +++ b/nitrite/src/main/java/org/dizitart/no2/fulltext/languages/Breton.java @@ -1,21 +1,3 @@ -/* - * - * Copyright 2017-2018 Nitrite author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - package org.dizitart.no2.fulltext.languages; import org.dizitart.no2.fulltext.Language; @@ -25,141 +7,1215 @@ import java.util.Set; /** - * Breton stop words - * - * @since 2.1.0 * @author Anindya Chatterjee */ public class Breton implements Language { @Override public Set stopWords() { return new HashSet<>(Arrays.asList( - "a", - "ainda", - "alem", - "ambas", - "ambos", - "antes", - "ao", - "aonde", - "aos", - "apos", - "aquele", - "aqueles", - "as", - "assim", - "com", - "como", - "contra", - "contudo", - "cuja", - "cujas", - "cujo", - "cujos", - "da", - "das", - "de", - "dela", - "dele", - "deles", - "demais", - "depois", - "desde", - "desta", - "deste", - "dispoe", - "dispoem", - "diversa", - "diversas", - "diversos", - "do", - "dos", - "durante", - "e", - "ela", - "elas", - "ele", - "eles", - "em", - "entao", - "entre", - "essa", - "essas", - "esse", - "esses", - "esta", - "estas", - "este", - "estes", - "ha", - "isso", - "isto", - "logo", - "mais", - "mas", - "mediante", - "menos", - "mesma", - "mesmas", - "mesmo", - "mesmos", - "na", - "nao", - "nas", - "nem", - "nesse", - "neste", - "nos", - "o", - "os", - "ou", - "outra", - "outras", - "outro", - "outros", - "pelas", - "pelo", - "pelos", - "perante", - "pois", - "por", - "porque", - "portanto", - "propios", - "proprio", - "quais", - "qual", - "qualquer", - "quando", - "quanto", - "que", - "quem", - "quer", - "se", - "seja", - "sem", - "sendo", - "seu", - "seus", - "sob", - "sobre", - "sua", - "suas", - "tal", - "tambem", - "teu", - "teus", - "toda", - "todas", - "todo", - "todos", - "tua", - "tuas", - "tudo", - "um", - "uma", - "umas", - "uns" + "'blam", + "'d", + "'m", + "'r", + "'ta", + "'vat", + "'z", + "'zo", + "a", + "a:", + "aba", + "abalamour", + "abaoe", + "ac'hane", + "ac'hanoc'h", + "ac'hanomp", + "ac'hanon", + "ac'hanout", + "adal", + "adalek", + "adarre", + "ae", + "aec'h", + "aed", + "aemp", + "aen", + "aent", + "aes", + "afe", + "afec'h", + "afed", + "afemp", + "afen", + "afent", + "afes", + "ag", + "ah", + "aimp", + "aint", + "aio", + "aiou", + "aje", + "ajec'h", + "ajed", + "ajemp", + "ajen", + "ajent", + "ajes", + "al", + "alato", + "alies", + "aliesañ", + "alkent", + "all", + "allas", + "allo", + "allô", + "am", + "amañ", + "amzer", + "an", + "anezhañ", + "anezhe", + "anezhi", + "anezho", + "anvet", + "aon", + "aotren", + "ar", + "arall", + "araok", + "araoki", + "araozañ", + "araozo", + "araozoc'h", + "araozomp", + "araozon", + "araozor", + "araozout", + "arbenn", + "arre", + "atalek", + "atav", + "az", + "azalek", + "azirazañ", + "azirazi", + "azirazo", + "azirazoc'h", + "azirazomp", + "azirazon", + "azirazor", + "azirazout", + "b:", + "ba", + "ba'l", + "ba'n", + "ba'r", + "bad", + "bah", + "bal", + "ban", + "bar", + "bastañ", + "befe", + "bell", + "benaos", + "benn", + "bennag", + "bennak", + "bennozh", + "bep", + "bepred", + "berr", + "berzh", + "bet", + "betek", + "betra", + "bev", + "bevet", + "bez", + "bezañ", + "beze", + "bezent", + "bezet", + "bezh", + "bezit", + "bezomp", + "bihan", + "bije", + "biou", + "biskoazh", + "blam", + "bo", + "boa", + "bominapl", + "boudoudom", + "bouez", + "boull", + "boum", + "bout", + "bras", + "brasañ", + "brav", + "bravo", + "bremañ", + "bres", + "brokenn", + "bronn", + "brrr", + "brutal", + "buhezek", + "c'h:", + "c'haout", + "c'he", + "c'hem", + "c'herz", + "c'heñver", + "c'hichen", + "c'hiz", + "c'hoazh", + "c'horre", + "c'houde", + "c'houst", + "c'hreiz", + "c'hwec'h", + "c'hwec'hvet", + "c'hwezek", + "c'hwi", + "ch:", + "chaous", + "chik", + "chit", + "chom", + "chut", + "d'", + "d'al", + "d'an", + "d'ar", + "d'az", + "d'e", + "d'he", + "d'ho", + "d'hol", + "d'hon", + "d'hor", + "d'o", + "d'ober", + "d'ul", + "d'un", + "d'ur", + "d:", + "da", + "dak", + "daka", + "dal", + "dalbezh", + "dalc'hmat", + "dalit", + "damdost", + "damheñvel", + "damm", + "dan", + "danvez", + "dao", + "daol", + "daonet", + "daou", + "daoust", + "daouzek", + "daouzekvet", + "darn", + "dastrewiñ", + "dav", + "davedoc'h", + "davedomp", + "davedon", + "davedor", + "davedout", + "davet", + "davetañ", + "davete", + "daveti", + "daveto", + "defe", + "dehou", + "dek", + "dekvet", + "den", + "deoc'h", + "deomp", + "deor", + "derc'hel", + "deus", + "dez", + "deze", + "dezhañ", + "dezhe", + "dezhi", + "dezho", + "di", + "diabarzh", + "diagent", + "diar", + "diaraok", + "diavaez", + "dibaoe", + "dibaot", + "dibar", + "dic'halañ", + "didiac'h", + "dienn", + "difer", + "diganeoc'h", + "diganeomp", + "diganeor", + "diganimp", + "diganin", + "diganit", + "digant", + "digantañ", + "digante", + "diganti", + "diganto", + "digemmesk", + "diget", + "digor", + "digoret", + "dija", + "dije", + "dimp", + "din", + "dinaou", + "dindan", + "dindanañ", + "dindani", + "dindano", + "dindanoc'h", + "dindanomp", + "dindanon", + "dindanor", + "dindanout", + "dioutañ", + "dioute", + "diouti", + "diouto", + "diouzh", + "diouzhin", + "diouzhit", + "diouzhoc'h", + "diouzhomp", + "diouzhor", + "dirak", + "dirazañ", + "dirazi", + "dirazo", + "dirazoc'h", + "dirazomp", + "dirazon", + "dirazor", + "dirazout", + "disheñvel", + "dispar", + "distank", + "dister", + "disterañ", + "disterig", + "distro", + "dit", + "divaez", + "diwar", + "diwezhat", + "diwezhañ", + "do", + "doa", + "doare", + "dont", + "dost", + "doue", + "douetus", + "douez", + "doug", + "draou", + "draoñ", + "dre", + "drede", + "dreist", + "dreistañ", + "dreisti", + "dreisto", + "dreistoc'h", + "dreistomp", + "dreiston", + "dreistor", + "dreistout", + "drek", + "dreñv", + "dring", + "dro", + "du", + "e", + "e:", + "eas", + "ebet", + "ec'h", + "edo", + "edoc'h", + "edod", + "edomp", + "edon", + "edont", + "edos", + "eer", + "eeun", + "efed", + "egedoc'h", + "egedomp", + "egedon", + "egedor", + "egedout", + "eget", + "egetañ", + "egete", + "egeti", + "egeto", + "eh", + "eil", + "eilvet", + "eizh", + "eizhvet", + "ejoc'h", + "ejod", + "ejomp", + "ejont", + "ejout", + "el", + "em", + "emaint", + "emaoc'h", + "emaomp", + "emaon", + "emaout", + "emañ", + "eme", + "emeur", + "emezañ", + "emezi", + "emezo", + "emezoc'h", + "emezomp", + "emezon", + "emezout", + "emporzhiañ", + "en", + "end", + "endan", + "endra", + "enep", + "ennañ", + "enni", + "enno", + "ennoc'h", + "ennomp", + "ennon", + "ennor", + "ennout", + "enta", + "eo", + "eomp", + "eont", + "eor", + "eot", + "er", + "erbet", + "erfin", + "esa", + "esae", + "espar", + "estlamm", + "estrañj", + "eta", + "etre", + "etreoc'h", + "etrezo", + "etrezoc'h", + "etrezomp", + "etrezor", + "euh", + "eur", + "eus", + "evel", + "evelato", + "eveldoc'h", + "eveldomp", + "eveldon", + "eveldor", + "eveldout", + "evelkent", + "eveltañ", + "evelte", + "evelti", + "evelto", + "evidoc'h", + "evidomp", + "evidon", + "evidor", + "evidout", + "evit", + "evitañ", + "evite", + "eviti", + "evito", + "ez", + "eñ", + "f:", + "fac'h", + "fall", + "fed", + "feiz", + "fenn", + "fezh", + "fin", + "finsalvet", + "foei", + "fouilhezañ", + "g:", + "gallout", + "ganeoc'h", + "ganeomp", + "ganin", + "ganit", + "gant", + "gantañ", + "ganti", + "ganto", + "gaout", + "gast", + "gein", + "gellout", + "genndost", + "gentañ", + "ger", + "gerz", + "get", + "geñver", + "gichen", + "gin", + "giz", + "glan", + "gloev", + "goll", + "gorre", + "goude", + "gouez", + "gouezit", + "gouezomp", + "goulz", + "gounnar", + "gour", + "goust", + "gouze", + "gouzout", + "gra", + "grak", + "grec'h", + "greiz", + "grenn", + "greomp", + "grit", + "groñs", + "gutez", + "gwall", + "gwashoc'h", + "gwazh", + "gwech", + "gwechall", + "gwechoù", + "gwell", + "gwezh", + "gwezhall", + "gwezharall", + "gwezhoù", + "gwig", + "gwirionez", + "gwitibunan", + "gêr", + "h:", + "ha", + "hag", + "han", + "hanter", + "hanterc'hantad", + "hanterkantved", + "harz", + "hañ", + "hañval", + "he", + "hebioù", + "hec'h", + "hei", + "hein", + "hem", + "hemañ", + "hen", + "hend", + "henhont", + "henn", + "hennezh", + "hent", + "hep", + "hervez", + "hervezañ", + "hervezi", + "hervezo", + "hervezoc'h", + "hervezomp", + "hervezon", + "hervezor", + "hervezout", + "heul", + "heuliañ", + "hevelep", + "heverk", + "heñvel", + "heñvelat", + "heñvelañ", + "heñveliñ", + "heñveloc'h", + "heñvelout", + "hi", + "hilh", + "hini", + "hirie", + "hirio", + "hiziv", + "hiziviken", + "ho", + "hoaliñ", + "hoc'h", + "hogen", + "hogos", + "hogozik", + "hol", + "holl", + "holà", + "homañ", + "hon", + "honhont", + "honnezh", + "hont", + "hop", + "hopala", + "hor", + "hou", + "houp", + "hudu", + "hue", + "hui", + "hum", + "hurrah", + "i", + "i:", + "in", + "int", + "is", + "ispisial", + "isurzhiet", + "it", + "ivez", + "izelañ", + "j:", + "just", + "k:", + "kae", + "kaer", + "kalon", + "kalz", + "kant", + "kaout", + "kar", + "kazi", + "keid", + "kein", + "keit", + "kel", + "kellies", + "keloù", + "kement", + "ken", + "kenkent", + "kenkoulz", + "kenment", + "kent", + "kentañ", + "kentizh", + "kentoc'h", + "kentre", + "ker", + "kerkent", + "kerz", + "kerzh", + "ket", + "keta", + "keñver", + "keñverel", + "keñverius", + "kichen", + "kichenik", + "kit", + "kiz", + "klak", + "klek", + "klik", + "komprenet", + "komz", + "kont", + "korf", + "korre", + "koulskoude", + "koulz", + "koust", + "krak", + "krampouezh", + "krec'h", + "kreiz", + "kuit", + "kwir", + "l:", + "la", + "laez", + "laoskel", + "laouen", + "lavar", + "lavaret", + "lavarout", + "lec'h", + "lein", + "leizh", + "lerc'h", + "leun", + "leuskel", + "lew", + "lies", + "liesañ", + "lod", + "lusk", + "lâr", + "lârout", + "m:", + "ma", + "ma'z", + "mac'h", + "mac'hat", + "mac'hañ", + "mac'hoc'h", + "mad", + "maez", + "maksimal", + "mann", + "mar", + "mard", + "marg", + "marzh", + "mat", + "mañ", + "me", + "memes", + "memestra", + "merkapl", + "mersi", + "mes", + "mesk", + "met", + "meur", + "mil", + "minimal", + "moan", + "moaniaat", + "mod", + "mont", + "mout", + "mui", + "muiañ", + "muioc'h", + "n", + "n'", + "n:", + "na", + "nag", + "naontek", + "naturel", + "nav", + "navet", + "ne", + "nebeudig", + "nebeut", + "nebeutañ", + "nebeutoc'h", + "neketa", + "nemedoc'h", + "nemedomp", + "nemedon", + "nemedor", + "nemedout", + "nemet", + "nemetañ", + "nemete", + "nemeti", + "nemeto", + "nemeur", + "neoac'h", + "nepell", + "nerzh", + "nes", + "neseser", + "netra", + "neubeudoù", + "neuhe", + "neuze", + "nevez", + "newazh", + "nez", + "ni", + "nikun", + "niverus", + "nul", + "o", + "o:", + "oa", + "oac'h", + "oad", + "oamp", + "oan", + "oant", + "oar", + "oas", + "ober", + "oc'h", + "oc'ho", + "oc'hola", + "oc'hpenn", + "oh", + "ohe", + "ollé", + "olole", + "olé", + "omp", + "on", + "ordin", + "ordinal", + "ouejoc'h", + "ouejod", + "ouejomp", + "ouejont", + "ouejout", + "ouek", + "ouezas", + "ouezi", + "ouezimp", + "ouezin", + "ouezint", + "ouezis", + "ouezo", + "ouezoc'h", + "ouezor", + "ouf", + "oufe", + "oufec'h", + "oufed", + "oufemp", + "oufen", + "oufent", + "oufes", + "ouie", + "ouiec'h", + "ouied", + "ouiemp", + "ouien", + "ouient", + "ouies", + "ouije", + "ouijec'h", + "ouijed", + "ouijemp", + "ouijen", + "ouijent", + "ouijes", + "out", + "outañ", + "outi", + "outo", + "ouzer", + "ouzh", + "ouzhin", + "ouzhit", + "ouzhoc'h", + "ouzhomp", + "ouzhor", + "ouzhpenn", + "ouzhpennik", + "ouzoc'h", + "ouzomp", + "ouzon", + "ouzont", + "ouzout", + "p'", + "p:", + "pa", + "pad", + "padal", + "paf", + "pan", + "panevedeoc'h", + "panevedo", + "panevedomp", + "panevedon", + "panevedout", + "panevet", + "panevetañ", + "paneveti", + "pas", + "paseet", + "pe", + "peadra", + "peder", + "pedervet", + "pedervetvet", + "pefe", + "pegeit", + "pegement", + "pegen", + "pegiz", + "pegoulz", + "pehini", + "pelec'h", + "pell", + "pemod", + "pemp", + "pempved", + "pemzek", + "penaos", + "penn", + "peogwir", + "peotramant", + "pep", + "perak", + "perc'hennañ", + "pergen", + "permetiñ", + "peseurt", + "pet", + "petiaoul", + "petoare", + "petra", + "peur", + "peurgetket", + "peurheñvel", + "peurliesañ", + "peurvuiañ", + "peus", + "peustost", + "peuz", + "pevar", + "pevare", + "pevarevet", + "pevarzek", + "pez", + "peze", + "pezh", + "pff", + "pfft", + "pfut", + "picher", + "pif", + "pife", + "pign", + "pije", + "pikol", + "pitiaoul", + "piv", + "plaouf", + "plok", + "plouf", + "po", + "poa", + "poelladus", + "pof", + "pok", + "posupl", + "pouah", + "pourc'henn", + "prest", + "prestik", + "prim", + "prin", + "provostapl", + "pst", + "pu", + "pur", + "r:", + "ra", + "rae", + "raec'h", + "raed", + "raemp", + "raen", + "raent", + "raes", + "rafe", + "rafec'h", + "rafed", + "rafemp", + "rafen", + "rafent", + "rafes", + "rag", + "raimp", + "raint", + "raio", + "raje", + "rajec'h", + "rajed", + "rajemp", + "rajen", + "rajent", + "rajes", + "rak", + "ral", + "ran", + "rankout", + "raok", + "razh", + "re", + "reas", + "reer", + "regennoù", + "reiñ", + "rejoc'h", + "rejod", + "rejomp", + "rejont", + "rejout", + "rener", + "rentañ", + "reoc'h", + "reomp", + "reont", + "reor", + "reot", + "resis", + "ret", + "reve", + "rez", + "ri", + "rik", + "rin", + "ris", + "rit", + "rouez", + "s:", + "sac'h", + "sant", + "sav", + "sañset", + "se", + "sed", + "seitek", + "seizh", + "seizhvet", + "sell", + "sellit", + "ser", + "setu", + "seul", + "seurt", + "siwazh", + "skignañ", + "skoaz", + "skouer", + "sort", + "souden", + "souvitañ", + "soñj", + "speriañ", + "spririñ", + "stad", + "stlabezañ", + "stop", + "stranañ", + "strewiñ", + "strishaat", + "stumm", + "sujed", + "surtoud", + "t:", + "ta", + "taer", + "tailh", + "tak", + "tal", + "talvoudegezh", + "tamm", + "tanav", + "taol", + "te", + "techet", + "teir", + "teirvet", + "telt", + "teltenn", + "teus", + "teut", + "teuteu", + "ti", + "tik", + "toa", + "tok", + "tost", + "tostig", + "toud", + "touesk", + "touez", + "toull", + "tra", + "trantenn", + "traoñ", + "trawalc'h", + "tre", + "trede", + "tregont", + "tremenet", + "tri", + "trivet", + "triwec'h", + "trizek", + "tro", + "trugarez", + "trumm", + "tsoin", + "tsouin", + "tu", + "tud", + "u:", + "ugent", + "uhel", + "uhelañ", + "ul", + "un", + "unan", + "unanez", + "unanig", + "unnek", + "unnekvet", + "ur", + "urzh", + "us", + "v:", + "va", + "vale", + "van", + "vare", + "vat", + "vefe", + "vefec'h", + "vefed", + "vefemp", + "vefen", + "vefent", + "vefes", + "vesk", + "vete", + "vez", + "vezan", + "vezañ", + "veze", + "vezec'h", + "vezed", + "vezemp", + "vezen", + "vezent", + "vezer", + "vezes", + "vezez", + "vezit", + "vezomp", + "vezont", + "vi", + "vihan", + "vihanañ", + "vije", + "vijec'h", + "vijed", + "vijemp", + "vijen", + "vijent", + "vijes", + "viken", + "vimp", + "vin", + "vint", + "vior", + "viot", + "virviken", + "viskoazh", + "vlan", + "vlaou", + "vo", + "vod", + "voe", + "voec'h", + "voed", + "voemp", + "voen", + "voent", + "voes", + "vont", + "vostapl", + "vrac'h", + "vrasañ", + "vremañ", + "w:", + "walc'h", + "war", + "warnañ", + "warni", + "warno", + "warnoc'h", + "warnomp", + "warnon", + "warnor", + "warnout", + "wazh", + "wech", + "wechoù", + "well", + "y:", + "you", + "youadenn", + "youc'hadenn", + "youc'hou", + "z:", + "za", + "zan", + "zaw", + "zeu", + "zi", + "ziar", + "zigarez", + "ziget", + "zindan", + "zioc'h", + "ziouzh", + "zirak", + "zivout", + "ziwar", + "ziwezhañ", + "zo", + "zoken", + "zokenoc'h", + "zouesk", + "zouez", + "zro", + "zu" )); } } diff --git a/nitrite/src/test/java/org/dizitart/no2/NitriteTest.java b/nitrite/src/test/java/org/dizitart/no2/NitriteTest.java index 78d8f2e8b..094a6eab2 100644 --- a/nitrite/src/test/java/org/dizitart/no2/NitriteTest.java +++ b/nitrite/src/test/java/org/dizitart/no2/NitriteTest.java @@ -42,6 +42,7 @@ import java.util.Locale; import java.util.Random; import java.util.Set; +import java.util.UUID; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -405,6 +406,56 @@ public void testIssue220() { assertEquals(doc, documents.firstOrDefault()); } + @Test + public void testIssue245() throws InterruptedException { + class ThreadRunner implements Runnable { + @Override + public void run() { + try { + long id = Thread.currentThread().getId(); + NitriteCollection collection = db.getCollection("testIssue245"); + + for (int i = 0; i < 5; i++) { + + System.out.println("Thread ID = " + id + " Inserting doc " + i); + Document doc = Document.createDocument(UUID.randomUUID().toString(), UUID.randomUUID().toString()); + + WriteResult result = collection.insert(doc);//db.commit(); + System.out.println("Result of insert = " + result.getAffectedCount()); + System.out.println("Thread id = " + id + " --> count = " + collection.size()); + + Thread.sleep(10); + + }//for closing + + collection.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + + Thread t0 = new Thread(new ThreadRunner()); + Thread t1 = new Thread(new ThreadRunner()); + Thread t2 = new Thread(new ThreadRunner()); + + t0.start(); + t1.start(); + t2.start(); + + Thread.sleep(10 * 1000); + + t0.join(); + t1.join(); + t2.join(); + + NitriteCollection collection = db.getCollection("testIssue245"); + System.out.println("No of Documents = " + collection.size()); + collection.close(); + db.close(); + } + @Data @NoArgsConstructor From f197a4df04404fa75f7ead9b69023323daa24265 Mon Sep 17 00:00:00 2001 From: boxheed Date: Fri, 30 Oct 2020 21:50:22 +0000 Subject: [PATCH 04/13] Issue #366 - added null check to the 'text' variable before passing into the StringTokenizer as this isn't a null safe call. --- .../dizitart/no2/fulltext/BaseTextTokenizer.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/nitrite/src/main/java/org/dizitart/no2/fulltext/BaseTextTokenizer.java b/nitrite/src/main/java/org/dizitart/no2/fulltext/BaseTextTokenizer.java index 699a20f99..84934d99d 100644 --- a/nitrite/src/main/java/org/dizitart/no2/fulltext/BaseTextTokenizer.java +++ b/nitrite/src/main/java/org/dizitart/no2/fulltext/BaseTextTokenizer.java @@ -37,12 +37,14 @@ public abstract class BaseTextTokenizer implements TextTokenizer { @Override public Set tokenize(String text) throws IOException { Set words = new HashSet<>(); - StringTokenizer tokenizer = new StringTokenizer(text, WHITESPACE_CHARS); - while (tokenizer.hasMoreTokens()) { - String word = tokenizer.nextToken(); - word = convertWord(word); - if (word != null) { - words.add(word); + if(text != null) { + StringTokenizer tokenizer = new StringTokenizer(text, WHITESPACE_CHARS); + while (tokenizer.hasMoreTokens()) { + String word = tokenizer.nextToken(); + word = convertWord(word); + if (word != null) { + words.add(word); + } } } return words; From 07eab406844aa5fd6b989051f3095991bb4e0ec1 Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Tue, 1 Dec 2020 00:12:28 +0530 Subject: [PATCH 05/13] fixed #386 --- .../org/dizitart/no2/store/NitriteMVMap.java | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/nitrite/src/main/java/org/dizitart/no2/store/NitriteMVMap.java b/nitrite/src/main/java/org/dizitart/no2/store/NitriteMVMap.java index c07f15fff..afc87d87a 100644 --- a/nitrite/src/main/java/org/dizitart/no2/store/NitriteMVMap.java +++ b/nitrite/src/main/java/org/dizitart/no2/store/NitriteMVMap.java @@ -20,6 +20,7 @@ import org.dizitart.no2.meta.Attributes; import org.h2.mvstore.MVMap; +import org.h2.mvstore.MVStore; import java.util.*; @@ -35,10 +36,12 @@ class NitriteMVMap implements NitriteMap { private final MVMap mvMap; private final NitriteStore nitriteStore; + private final MVStore mvStore; NitriteMVMap(MVMap mvMap, NitriteStore nitriteStore) { this.mvMap = mvMap; this.nitriteStore = nitriteStore; + this.mvStore = mvMap.store; } @Override @@ -58,8 +61,13 @@ public NitriteStore getStore() { @Override public void clear() { - updateAttributes(); - mvMap.clear(); + MVStore.TxCounter txCounter = mvStore.registerVersionUsage(); + try { + updateAttributes(); + mvMap.clear(); + } finally { + mvStore.deregisterVersionUsage(txCounter); + } } @Override @@ -74,8 +82,13 @@ public Collection values() { @Override public Value remove(Key key) { - updateAttributes(); - return mvMap.remove(key); + MVStore.TxCounter txCounter = mvStore.registerVersionUsage(); + try { + updateAttributes(); + return mvMap.remove(key); + } finally { + mvStore.deregisterVersionUsage(txCounter); + } } @Override @@ -85,8 +98,13 @@ public Set keySet() { @Override public void put(Key key, Value value) { - updateAttributes(); - mvMap.put(key, value); + MVStore.TxCounter txCounter = mvStore.registerVersionUsage(); + try { + updateAttributes(); + mvMap.put(key, value); + } finally { + mvStore.deregisterVersionUsage(txCounter); + } } @Override @@ -101,8 +119,13 @@ public long sizeAsLong() { @Override public Value putIfAbsent(Key nitriteId, Value document) { - updateAttributes(); - return mvMap.putIfAbsent(nitriteId, document); + MVStore.TxCounter txCounter = mvStore.registerVersionUsage(); + try { + updateAttributes(); + return mvMap.putIfAbsent(nitriteId, document); + } finally { + mvStore.deregisterVersionUsage(txCounter); + } } @Override From c5ed62d45aadc7c3b7c518796b3e739e5ec5af3c Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Sat, 12 Dec 2020 12:40:11 +0530 Subject: [PATCH 06/13] 3.4.3 release --- .travis.yml | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 07e58679e..8c9e76aaa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,5 +49,5 @@ deploy: env: global: - - NITRITE_VERSION=3.4.3-SNAPSHOT + - NITRITE_VERSION=3.4.3 - PGP_KEY_FILE=~/secring.gpg diff --git a/gradle.properties b/gradle.properties index 1630f2e4d..263420131 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ org.gradle.jvmargs=-Xmx1024m # artifact version -nitriteVersion=3.4.3-SNAPSHOT +nitriteVersion=3.4.3 # nitrite dependency asciidoctorVersion=1.5.6 From 9b3cd0226fd9123745b5f40d53a2ea665c0cac11 Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Sat, 12 Dec 2020 17:35:05 +0530 Subject: [PATCH 07/13] version bumped to 3.4.4-SNAPSHOT --- .travis.yml | 2 +- gradle.properties | 2 +- nitrite/src/docs/asciidoc/index.adoc | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8c9e76aaa..fc50c6829 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,5 +49,5 @@ deploy: env: global: - - NITRITE_VERSION=3.4.3 + - NITRITE_VERSION=3.4.4-SNAPSHOT - PGP_KEY_FILE=~/secring.gpg diff --git a/gradle.properties b/gradle.properties index 263420131..3cce95ba9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ org.gradle.jvmargs=-Xmx1024m # artifact version -nitriteVersion=3.4.3 +nitriteVersion=3.4.4-SNAPSHOT # nitrite dependency asciidoctorVersion=1.5.6 diff --git a/nitrite/src/docs/asciidoc/index.adoc b/nitrite/src/docs/asciidoc/index.adoc index c375d14f6..68d46c0ca 100644 --- a/nitrite/src/docs/asciidoc/index.adoc +++ b/nitrite/src/docs/asciidoc/index.adoc @@ -1,6 +1,6 @@ = Nitrite Anindya Chatterjee -v3.4.3, {docdate} {doctime} +v3.4.4, {docdate} {doctime} :description: Nitrite database is an open source Nosql embedded persistent document store written in Java. It has MongoDB like API. It supports both in-memory and single file based persistent store powered by MVStore engine of h2 database. Nitrite can be used in desktop as well as mobile applications like android. :keywords: nitrite, nosql, embedded, embedded document store, android, android nosql database, java, key value store, document store, object store, persistent store, index, indexing, fulltext search, embedded mongo, :page-layout: docs @@ -12,7 +12,7 @@ v3.4.3, {docdate} {doctime} :toclevels: 4 :title-logo-image: image:images/nitrite-logo.svg[pdfwidth=4.25in,align=center] :homepage: http://nitrite.dizitart.org -:version: 3.4.3 +:version: 3.4.4 :source-highlighter: pygments :pygments-style: tango :linkattrs: From 87845d6a1b39e0381521746f9c7241f78368dd0b Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Tue, 22 Mar 2022 23:12:08 +0530 Subject: [PATCH 08/13] few fixes --- build.gradle | 1 - .../src/main/resources/application.properties | 20 +------------------ .../src/test/resources/application.properties | 2 +- .../org/dizitart/no2/sync/SyncHandleTest.java | 2 +- 4 files changed, 3 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index f2e0d1e97..fac8368fd 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,6 @@ import io.franzbecker.gradle.lombok.task.DelombokTask buildscript { repositories { - jcenter() mavenCentral() mavenLocal() maven { diff --git a/nitrite-datagate/src/main/resources/application.properties b/nitrite-datagate/src/main/resources/application.properties index 49e392b78..7a7db343f 100644 --- a/nitrite-datagate/src/main/resources/application.properties +++ b/nitrite-datagate/src/main/resources/application.properties @@ -1,21 +1,3 @@ -# -# -# Copyright 2017-2018 Nitrite author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# - # Nitrite Data Gate server config server.display-name=Nitrite DataGate server.address=${DATAGATE_HOST:0.0.0.0} @@ -43,7 +25,7 @@ datagate.mongo.database=${DATAGATE_MONGO_DATABASE} datagate.http.port=${DATAGATE_HTTP_PORT:9090} datagate.https.port=${DATAGATE_HTTPS_PORT:9094} datagate.ssl.key-store=${DATAGATE_KEY_STORE:classpath:keystore.jks} -datagate.ssl.key-password=${DATAGATE_KEY_PASSWORD:secret} +datagate.ssl.key-password=${DATAGATE_KEY_PASSWORD:changeit} # Cleanup Config datagate.sync.log.cleanup.delay=${DATAGATE_SYNC_LOG_CLEANUP_DELAY:30} diff --git a/nitrite-datagate/src/test/resources/application.properties b/nitrite-datagate/src/test/resources/application.properties index 9118b99a1..d39fc6c59 100644 --- a/nitrite-datagate/src/test/resources/application.properties +++ b/nitrite-datagate/src/test/resources/application.properties @@ -43,7 +43,7 @@ datagate.mongo.database=${DATAGATE_MONGO_DATABASE:benchmark} datagate.http.port=${DATAGATE_HTTP_PORT:9090} datagate.https.port=${DATAGATE_HTTPS_PORT:9094} datagate.ssl.key-store=${DATAGATE_KEY_STORE:classpath:keystore.jks} -datagate.ssl.key-password=${DATAGATE_KEY_PASSWORD:secret} +datagate.ssl.key-password=${DATAGATE_KEY_PASSWORD:changeit} # Cleanup Config datagate.sync.log.cleanup.delay=30 \ No newline at end of file diff --git a/nitrite/src/test/java/org/dizitart/no2/sync/SyncHandleTest.java b/nitrite/src/test/java/org/dizitart/no2/sync/SyncHandleTest.java index f6837807d..a1f016bc3 100644 --- a/nitrite/src/test/java/org/dizitart/no2/sync/SyncHandleTest.java +++ b/nitrite/src/test/java/org/dizitart/no2/sync/SyncHandleTest.java @@ -188,7 +188,7 @@ public void testCancelSync() { await().atMost(5, TimeUnit.SECONDS).until(new Callable() { @Override - public Boolean call() throws Exception { + public Boolean call() { return secondary.find().size() == 3 && primary.find().size() == 3; } }); From 655713e634d790dbbe2e4e3b81284712eb85d4a4 Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Wed, 23 Mar 2022 00:02:23 +0530 Subject: [PATCH 09/13] fix for 697 --- gradle.properties | 8 ++++---- nitrite/src/main/java/org/dizitart/no2/Index.java | 1 + .../java/org/dizitart/no2/internals/IndexMetaService.java | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 3cce95ba9..72b1f45ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -29,10 +29,10 @@ nitriteVersion=3.4.4-SNAPSHOT # nitrite dependency asciidoctorVersion=1.5.6 asciidoctorPluginVersion=1.5.6 -awaitilityVersion=4.0.2 -commonsLang3Version=3.9 +awaitilityVersion=4.2.0 +commonsLang3Version=3.12.0 dokkaVersion=0.9.16 -errorProneVersion=2.0.17 +errorProneVersion=2.11.0 errorPronePluginVersion=0.0.8 h2Version=1.4.200 jacksonVersion=2.10.1 @@ -43,7 +43,7 @@ jodaTimeVersion=2.9.9 jongoVersion=1.4.0 junitVersion=4.12 kotlinVersion=1.3.61 -log4j2Version=2.13.0 +log4j2Version=2.17.2 lombokVersion=1.18.10 lombokPluginVersion=3.2.0 luceneVersion=7.2.1 diff --git a/nitrite/src/main/java/org/dizitart/no2/Index.java b/nitrite/src/main/java/org/dizitart/no2/Index.java index a2b201930..f06848546 100644 --- a/nitrite/src/main/java/org/dizitart/no2/Index.java +++ b/nitrite/src/main/java/org/dizitart/no2/Index.java @@ -40,6 +40,7 @@ @EqualsAndHashCode @ToString public class Index implements Comparable, Serializable { + private static final long serialVersionUID = 6727331412761083161L; /** * Specifies the type of the index. diff --git a/nitrite/src/main/java/org/dizitart/no2/internals/IndexMetaService.java b/nitrite/src/main/java/org/dizitart/no2/internals/IndexMetaService.java index 3c759c595..d79f753f6 100644 --- a/nitrite/src/main/java/org/dizitart/no2/internals/IndexMetaService.java +++ b/nitrite/src/main/java/org/dizitart/no2/internals/IndexMetaService.java @@ -155,6 +155,7 @@ private NitriteMap getIndexMetadata() { @EqualsAndHashCode @ToString private static class IndexMeta implements Serializable { + private static final long serialVersionUID = 1647971212L; private Index index; private String indexMap; private AtomicBoolean isDirty; From fda7227157aae1c21a5268d15b41aa14e0d4c460 Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Wed, 23 Mar 2022 00:02:49 +0530 Subject: [PATCH 10/13] Update Security.java --- nitrite/src/main/java/org/dizitart/no2/Security.java | 1 + 1 file changed, 1 insertion(+) diff --git a/nitrite/src/main/java/org/dizitart/no2/Security.java b/nitrite/src/main/java/org/dizitart/no2/Security.java index cec5f362d..6aa9c8a26 100644 --- a/nitrite/src/main/java/org/dizitart/no2/Security.java +++ b/nitrite/src/main/java/org/dizitart/no2/Security.java @@ -166,6 +166,7 @@ private static boolean isExpectedPassword(char[] password, byte[] salt, byte[] e @Data private static class UserCredential implements Serializable { + private static final long serialVersionUID = 1647971266L; private byte[] passwordHash; private byte[] passwordSalt; } From 6462e738e48987fc5596ae2cbf7565ce28237b6c Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Wed, 23 Mar 2022 12:48:42 +0530 Subject: [PATCH 11/13] 3.4.4 release --- gradle.properties | 2 +- nitrite-datagate/src/main/docker/datagate.sh | 0 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 nitrite-datagate/src/main/docker/datagate.sh diff --git a/gradle.properties b/gradle.properties index 72b1f45ee..57da8f71f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ org.gradle.jvmargs=-Xmx1024m # artifact version -nitriteVersion=3.4.4-SNAPSHOT +nitriteVersion=3.4.4 # nitrite dependency asciidoctorVersion=1.5.6 diff --git a/nitrite-datagate/src/main/docker/datagate.sh b/nitrite-datagate/src/main/docker/datagate.sh old mode 100644 new mode 100755 From 9afef01caab7a647dd6b43bd147288b8d6264780 Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Wed, 23 Mar 2022 12:59:33 +0530 Subject: [PATCH 12/13] version bumped to 3.4.5-SNAPSHOT --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 57da8f71f..3cfbda407 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ org.gradle.jvmargs=-Xmx1024m # artifact version -nitriteVersion=3.4.4 +nitriteVersion=3.4.5-SNAPSHOT # nitrite dependency asciidoctorVersion=1.5.6 From 8e3bdef42a04527ab5cdb56f8c812602d9dadfd1 Mon Sep 17 00:00:00 2001 From: Anindya Chatterjee Date: Sun, 12 Mar 2023 12:02:14 +0530 Subject: [PATCH 13/13] fix for #801 and #774 --- .../java/org/dizitart/no2/NitriteBuilder.java | 62 +++++++++---------- .../dizitart/no2/exceptions/ErrorCodes.java | 1 + .../dizitart/no2/exceptions/ErrorMessage.java | 8 ++- .../kotlin/org/dizitart/kno2/Documents.kt | 6 +- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/nitrite/src/main/java/org/dizitart/no2/NitriteBuilder.java b/nitrite/src/main/java/org/dizitart/no2/NitriteBuilder.java index 685457ded..618108cf6 100644 --- a/nitrite/src/main/java/org/dizitart/no2/NitriteBuilder.java +++ b/nitrite/src/main/java/org/dizitart/no2/NitriteBuilder.java @@ -479,8 +479,9 @@ private Nitrite openOrCreateInternal(String userId, String password) { store = builder.open(); } else { if (readOnly) { - throw new NitriteIOException(FAILED_TO_CREATE_IN_MEMORY_READONLY_DB, ise); + throw new NitriteIOException(FAILED_TO_OPEN_IN_READONLY_MODE, ise); } + throw new NitriteIOException(FAILED_TO_ACCESS_DB_FILE, ise); } } catch (InvalidOperationException ioe) { throw ioe; @@ -506,42 +507,39 @@ private Nitrite openOrCreateInternal(String userId, String password) { } } - if (store != null) { - NitriteContext context = new NitriteContext(); - context.setTextIndexingService(textIndexingService); - if (textTokenizer == null) { - textTokenizer = new EnglishTextTokenizer(); - } - context.setTextTokenizer(textTokenizer); - context.setFilePath(filePath); - if (autoCommitBufferSize > 0) { - context.setAutoCommitBufferSize(autoCommitBufferSize); - } else { - context.setAutoCommitBufferSize(1024); - } - context.setInMemory(isNullOrEmpty(filePath)); - context.setReadOnly(readOnly); - context.setCompressed(compress); - context.setAutoCommitEnabled(autoCommit); - context.setAutoCompactEnabled(autoCompact); - context.setNitriteMapper(nitriteMapper); - context.setJacksonModule(jacksonModules); + NitriteContext context = new NitriteContext(); + context.setTextIndexingService(textIndexingService); + if (textTokenizer == null) { + textTokenizer = new EnglishTextTokenizer(); + } + context.setTextTokenizer(textTokenizer); + context.setFilePath(filePath); + if (autoCommitBufferSize > 0) { + context.setAutoCommitBufferSize(autoCommitBufferSize); + } else { + context.setAutoCommitBufferSize(1024); + } + context.setInMemory(isNullOrEmpty(filePath)); + context.setReadOnly(readOnly); + context.setCompressed(compress); + context.setAutoCommitEnabled(autoCommit); + context.setAutoCompactEnabled(autoCompact); + context.setNitriteMapper(nitriteMapper); + context.setJacksonModule(jacksonModules); - NitriteStore nitriteStore = new NitriteMVStore(store); + NitriteStore nitriteStore = new NitriteMVStore(store); - // populate existing maps - context.setCollectionRegistry(populateCollections(nitriteStore)); - context.setRepositoryRegistry(populateRepositories(nitriteStore)); + // populate existing maps + context.setCollectionRegistry(populateCollections(nitriteStore)); + context.setRepositoryRegistry(populateRepositories(nitriteStore)); - Nitrite db = new Nitrite(nitriteStore, context); + Nitrite db = new Nitrite(nitriteStore, context); - // shutdown hook to close db file gracefully - if (shutdownHook) { - Runtime.getRuntime().addShutdownHook(new NitriteShutDownHook(db)); - } - return db; + // shutdown hook to close db file gracefully + if (shutdownHook) { + Runtime.getRuntime().addShutdownHook(new NitriteShutDownHook(db)); } - return null; + return db; } private Set populateCollections(NitriteStore store) { diff --git a/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorCodes.java b/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorCodes.java index 387892f9a..c2aca363e 100644 --- a/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorCodes.java +++ b/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorCodes.java @@ -131,6 +131,7 @@ public class ErrorCodes { public static final int NIOE_FILE_CREATE_FAILED = 2013; public static final int NIOE_IN_MEMORY_READONLY_DB = 2014; public static final int NIOE_PATH_IS_DIRECTORY = 2018; + public static final int NIOE_FAILED_TO_ACCESS_FILE = 2019; /* InvalidOperationException Codes */ public static final int IOE_IN_MEMORY_READONLY_DB = 3001; diff --git a/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorMessage.java b/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorMessage.java index 77ef505d9..16239f484 100644 --- a/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorMessage.java +++ b/nitrite/src/main/java/org/dizitart/no2/exceptions/ErrorMessage.java @@ -301,10 +301,14 @@ public static ErrorMessage errorMessage(String message, int errorCode) { new ErrorMessage("unable create readonly in-memory database", IOE_IN_MEMORY_READONLY_DB); - public static final ErrorMessage FAILED_TO_CREATE_IN_MEMORY_READONLY_DB = - new ErrorMessage("can not create readonly in-memory database", + public static final ErrorMessage FAILED_TO_OPEN_IN_READONLY_MODE = + new ErrorMessage("can not open database in readonly mode", NIOE_IN_MEMORY_READONLY_DB); + public static final ErrorMessage FAILED_TO_ACCESS_DB_FILE = + new ErrorMessage("can not access database file", + NIOE_FAILED_TO_ACCESS_FILE); + public static final ErrorMessage UNABLE_TO_SORT_ON_ARRAY = new ErrorMessage("can not sort on array or collection objects", IOE_SORT_ON_ARRAY_TYPE); diff --git a/potassium-nitrite/src/main/kotlin/org/dizitart/kno2/Documents.kt b/potassium-nitrite/src/main/kotlin/org/dizitart/kno2/Documents.kt index da7c72690..49aa16b85 100644 --- a/potassium-nitrite/src/main/kotlin/org/dizitart/kno2/Documents.kt +++ b/potassium-nitrite/src/main/kotlin/org/dizitart/kno2/Documents.kt @@ -44,7 +44,7 @@ fun documentOf() = emptyDocument() * * @return a [Document] containing the [pair] */ -fun documentOf(pair: Pair) : Document { +fun documentOf(pair: Pair) : Document { return emptyDocument().put(pair.first, pair.second)!! } @@ -53,12 +53,12 @@ fun documentOf(pair: Pair) : Document { * * @return a [Document] containing the [pairs] */ -fun documentOf(vararg pairs: Pair) : Document { +fun documentOf(vararg pairs: Pair) : Document { return if (pairs.isEmpty()) { emptyDocument() } else { val doc = emptyDocument() - pairs.forEach { pair -> doc.put(pair.first, pair.second) } + pairs.forEach { pair -> doc[pair.first] = pair.second } doc } }