From 95e2fec70154325abc892264ae19a240ed8a05c3 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Sun, 1 Sep 2019 17:04:13 +0200 Subject: [PATCH] implementation search method Issue #554 --- .../workflow/engine/index/SchemaService.java | 19 ++++ .../workflow/engine/index/SearchService.java | 43 +-------- .../engine/lucene/LuceneIndexService.java | 8 +- .../engine/lucene/LuceneSearchService.java | 65 ++----------- .../engine/lucene/LuceneUpdateService.java | 3 +- .../engine/solr/SolrIndexService.java | 93 +++++++++++++++---- .../engine/solr/SolrSearchService.java | 76 +++++++-------- .../engine/solr/SolrUpdateService.java | 1 - .../engine/solr/TestParseSolrJSONResult.java | 20 ++-- 9 files changed, 147 insertions(+), 181 deletions(-) diff --git a/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SchemaService.java b/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SchemaService.java index 2a019c527..92c727e7f 100644 --- a/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SchemaService.java +++ b/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SchemaService.java @@ -29,7 +29,9 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.StringTokenizer; import java.util.logging.Logger; @@ -96,6 +98,7 @@ public class SchemaService { private List fieldListAnalyse = null; private List fieldListNoAnalyse = null; private List fieldListStore = null; + private Set uniqueFieldList = null; // default field lists private static List DEFAULT_SEARCH_FIELD_LIST = Arrays.asList("$workflowsummary", "$workflowabstract"); @@ -192,6 +195,13 @@ void init() { fieldListAnalyse.add(fieldName); } } + + + // build unique field list containing all field names + uniqueFieldList=new HashSet(); + uniqueFieldList.addAll(fieldListStore); + uniqueFieldList.addAll(fieldListAnalyse); + uniqueFieldList.addAll(fieldListNoAnalyse); } @@ -234,6 +244,15 @@ public List getFieldListStore() { return fieldListStore; } + /** + * Returns a unique list of all fields part of the index schema. + * @return + */ + public Set getUniqueFieldList() { + return uniqueFieldList; + } + + /** * Returns the Lucene schema configuration * diff --git a/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SearchService.java b/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SearchService.java index 01c0920cc..e43e98740 100644 --- a/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SearchService.java +++ b/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/index/SearchService.java @@ -49,48 +49,7 @@ public interface SearchService { // number of hits public static final int DEFAULT_PAGE_SIZE = 100; // default docs in one page - /** - * Returns a collection of documents matching the provided search term. The - * provided search team will we extended with a users roles to test the read - * access level of each workitem matching the search term. - * - * @param sSearchTerm - * @return collection of search result - * @throws QueryException - */ - //public List search(String sSearchTerm) throws QueryException; - - /** - * Returns a collection of documents matching the provided search term. The - * provided search team will we extended with a users roles to test the read - * access level of each workitem matching the search term. - * - * @param pageSize - * - docs per page - * @param pageIndex - * - page number - * - * @return collection of search result - * @throws QueryException - */ - //public List search(String sSearchTerm, int pageSize, int pageIndex) throws QueryException; - - /** - * Returns a collection of documents matching the provided search term. The term - * will be extended with the current users roles to test the read access level - * of each workitem matching the search term. - *

- * The method returns the full loaded documents. If you only want to search for - * document stubs use instead the method - *

- * search(String searchTerm, int pageSize, int pageIndex, Sort sortOrder, - Operator defaultOperator, boolean loadStubs) - *

- * - */ -// public List search(String sSearchTerm, int pageSize, int pageIndex, SortOrder sortOrder, -// DefaultOperator defaultOperator) throws QueryException; - + /** * Returns a collection of documents matching the provided search term. The term * will be extended with the current users roles to test the read access level diff --git a/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneIndexService.java b/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneIndexService.java index df7fd224a..d3252502d 100644 --- a/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneIndexService.java +++ b/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneIndexService.java @@ -89,6 +89,9 @@ public class LuceneIndexService { @PersistenceContext(unitName = "org.imixs.workflow.jpa") private EntityManager manager; + private SimpleDateFormat luceneDateFormat=new SimpleDateFormat("yyyyMMddHHmmss"); + + @Inject @ConfigProperty(name = "lucence.indexDir", defaultValue = DEFAULT_INDEX_DIRECTORY) @@ -392,13 +395,12 @@ protected Document createDocument(ItemCollection aworkitem) { continue; if (o instanceof Calendar || o instanceof Date) { - SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMddHHmmss"); // convert calendar to string String sDateValue; if (o instanceof Calendar) - sDateValue = dateformat.format(((Calendar) o).getTime()); + sDateValue = luceneDateFormat.format(((Calendar) o).getTime()); else - sDateValue = dateformat.format((Date) o); + sDateValue = luceneDateFormat.format((Date) o); sValue += sDateValue + ","; } else diff --git a/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneSearchService.java b/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneSearchService.java index 0d2b04cc7..f2b9a9792 100644 --- a/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneSearchService.java +++ b/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneSearchService.java @@ -101,11 +101,11 @@ public class LuceneSearchService implements SearchService { @Inject - @ConfigProperty(name = "lucene.defaultOperator", defaultValue = "AND") + @ConfigProperty(name = "index.defaultOperator", defaultValue = "AND") private String luceneDefaultOperator; @Inject - @ConfigProperty(name = "lucene.splitOnWhitespace", defaultValue = "true") + @ConfigProperty(name = "index.splitOnWhitespace", defaultValue = "true") private boolean luceneSplitOnWhitespace; @Inject @@ -119,60 +119,7 @@ public class LuceneSearchService implements SearchService { private static Logger logger = Logger.getLogger(LuceneSearchService.class.getName()); - /** - * Returns a collection of documents matching the provided search term. The - * provided search team will we extended with a users roles to test the read - * access level of each workitem matching the search term. - * - * @param sSearchTerm - * @return collection of search result - * @throws QueryException - */ -// @Override -// public List search(String sSearchTerm) throws QueryException { -// // no sort order -// return search(sSearchTerm, DEFAULT_MAX_SEARCH_RESULT, 0, null, DefaultOperator.AND); -// } - - /** - * Returns a collection of documents matching the provided search term. The - * provided search team will we extended with a users roles to test the read - * access level of each workitem matching the search term. - * - * @param pageSize - * - docs per page - * @param pageIndex - * - page number - * - * @return collection of search result - * @throws QueryException - */ -// @Override -// public List search(String sSearchTerm, int pageSize, int pageIndex) throws QueryException { -// // no sort order -// return search(sSearchTerm, pageSize, pageIndex, null, null); -// } - - /** - * Returns a collection of documents matching the provided search term. The term - * will be extended with the current users roles to test the read access level - * of each workitem matching the search term. - *

- * The method returns the full loaded documents. If you only want to search for - * document stubs use instead the method - *

- * search(String searchTerm, int pageSize, int pageIndex, Sort sortOrder, - Operator defaultOperator, boolean loadStubs) - *

- * - */ -// @Override -// public List search(String sSearchTerm, int pageSize, int pageIndex, -// org.imixs.workflow.engine.index.SortOrder sortOrder, DefaultOperator defaultOperator) -// throws QueryException { -// return search(sSearchTerm, pageSize, pageIndex, sortOrder, defaultOperator, false); -// } - + /** * Returns a collection of documents matching the provided search term. The term * will be extended with the current users roles to test the read access level @@ -245,10 +192,10 @@ public List search(String searchTerm, int pageSize, int pageInde parser.setAllowLeadingWildcard(true); // set default operator? - if (defaultOperator == DefaultOperator.AND) { - parser.setDefaultOperator(org.apache.lucene.queryparser.classic.QueryParser.Operator.AND); - } else { + if (defaultOperator == DefaultOperator.OR) { parser.setDefaultOperator(org.apache.lucene.queryparser.classic.QueryParser.Operator.OR); + } else { + parser.setDefaultOperator(org.apache.lucene.queryparser.classic.QueryParser.Operator.AND); } long lsearchtime = System.currentTimeMillis(); diff --git a/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneUpdateService.java b/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneUpdateService.java index d622ebfff..797397e96 100644 --- a/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneUpdateService.java +++ b/imixs-workflow-index-lucene/src/main/java/org/imixs/workflow/engine/lucene/LuceneUpdateService.java @@ -65,8 +65,7 @@ */ @Singleton public class LuceneUpdateService implements UpdateService { - - + @Inject private LuceneIndexService luceneIndexService; diff --git a/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrIndexService.java b/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrIndexService.java index 5b8e2e2da..f2ad6cb9a 100644 --- a/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrIndexService.java +++ b/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrIndexService.java @@ -55,7 +55,9 @@ import org.imixs.workflow.engine.EventLogService; import org.imixs.workflow.engine.SetupEvent; import org.imixs.workflow.engine.adminp.AdminPService; +import org.imixs.workflow.engine.index.DefaultOperator; import org.imixs.workflow.engine.index.SchemaService; +import org.imixs.workflow.engine.index.SortOrder; import org.imixs.workflow.engine.jpa.EventLog; import org.imixs.workflow.exceptions.IndexException; import org.imixs.workflow.exceptions.QueryException; @@ -79,6 +81,7 @@ @Stateless public class SolrIndexService { + public static final String DEFAULT_SEARCH_FIELD = "_text_"; public static final int EVENTLOG_ENTRY_FLUSH_COUNT = 16; public static final int DEFAULT_MAX_SEARCH_RESULT = 9999; // limiting the // total @@ -180,8 +183,6 @@ public void setup(@Observes SetupEvent setupEvent) throws RestAPIException { */ public void updateSchema(String schema) throws RestAPIException { - - // create the schema.... String schemaUpdate = buildUpdateSchema(schema); // test if the schemaUdpate contains instructions.... @@ -220,8 +221,10 @@ public void indexDocuments(List documents) throws RestAPIExcepti } else { String xmlRequest = buildAddDoc(documents); - String uri = host + "/solr/" + core + "/update"; - logger.info("...update documents '" + core + "':"); + if (logger.isLoggable(Level.FINEST)) { + logger.finest(xmlRequest); + } + String uri = host + "/solr/" + core + "/update?commit=true"; restClient.post(uri, xmlRequest, "text/xml"); } @@ -270,7 +273,7 @@ public void removeDocuments(List documents) throws RestAPIException { xmlDelete.append(""); String xmlRequest = xmlDelete.toString(); String uri = host + "/solr/" + core + "/update"; - logger.info("...delete documents '" + core + "':"); + logger.finest("......delete documents '" + core + "':"); restClient.post(uri, xmlRequest, "text/xml"); } @@ -313,16 +316,59 @@ public void rebuildIndex() { * @return * @throws QueryException */ - public String query(String searchTerm) throws QueryException { + public String query(String searchTerm, int pageSize, int pageIndex, SortOrder sortOrder, + DefaultOperator defaultOperator) throws QueryException { + + logger.fine("...search solr index: " + searchTerm + "..."); - logger.info("...search solr index: " + searchTerm + "..."); + StringBuffer uri = new StringBuffer(); // URL Encode the query string.... try { - String uri = host + "/solr/" + core + "/query?q=" + URLEncoder.encode(searchTerm, "UTF-8"); + uri.append(host + "/solr/" + core + "/query"); + + // set default operator? + if (defaultOperator == DefaultOperator.OR) { + uri.append("?q.op=" + defaultOperator); + } else { + // if not define we default in any case to AND + uri.append("?q.op=AND"); + } - logger.info("... uri=" + uri); - String result = restClient.get(uri); + // set sort order.... + if (sortOrder != null) { + // sorted by sortoder + String sortField = sortOrder.getField(); + // for Solr we need to replace the leading $ with _ + if (sortField.startsWith("$")) { + sortField = "_" + sortField.substring(1); + } + if (sortOrder.isReverse()) { + uri.append("&sort=" + sortField + "%20desc"); + } else { + uri.append("&sort=" + sortField + "%20asc"); + } + } + + // page size + if (pageSize <= 0) { + pageSize = DEFAULT_PAGE_SIZE; + } + + if (pageIndex < 0) { + pageIndex = 0; + } + + uri.append("&rows=" + (pageSize)); + if (pageIndex > 0) { + uri.append("&start=" + (pageIndex * pageSize)); + } + + // append query + uri.append("&q=" + URLEncoder.encode(searchTerm, "UTF-8")); + + logger.finest("...... uri=" + uri.toString()); + String result = restClient.get(uri.toString()); return result; } catch (RestAPIException | UnsupportedEncodingException e) { @@ -381,13 +427,12 @@ protected String buildUpdateSchema(String oldSchema) { // remove white space from oldSchema to simplify string compare... oldSchema = oldSchema.replace(" ", ""); - - logger.finest("......old schema="+oldSchema); - + logger.finest("......old schema=" + oldSchema); + updateSchema.append("{"); // finally add the default content field - addFieldDefinitionToUpdateSchema(updateSchema, oldSchema, "content", "text_general", false, false); + addFieldDefinitionToUpdateSchema(updateSchema, oldSchema, DEFAULT_SEARCH_FIELD, "text_general", false, false); // add each field from the fieldListAnalyse for (String field : fieldListAnalyse) { boolean store = fieldListStore.contains(field); @@ -429,11 +474,13 @@ protected String buildAddDoc(List documents) { StringBuffer xmlContent = new StringBuffer(); - xmlContent.append(""); + xmlContent.append(""); for (ItemCollection document : documents) { xmlContent.append(""); + xmlContent.append("" + document.getUniqueID() + ""); + // add all content fields defined in the schema String content = ""; for (String field : fieldList) { @@ -466,8 +513,9 @@ protected String buildAddDoc(List documents) { content += sValue + ","; } } - logger.finest("......add index field content=" + content); - xmlContent.append("" + content + ""); + logger.finest("......add index field " + DEFAULT_SEARCH_FIELD + "=" + content); + // if XML is part of the content, the we need to add a wrapping CDATA + xmlContent.append(""); // now add all analyzed fields... for (String aFieldname : fieldListAnalyse) { @@ -480,7 +528,7 @@ protected String buildAddDoc(List documents) { // add $uniqueid not analyzed addFieldValuesToUpdateRequest(xmlContent, document, WorkflowKernel.UNIQUEID); - + xmlContent.append(""); } @@ -584,6 +632,11 @@ private void addFieldValuesToUpdateRequest(StringBuffer xmlContent, final ItemCo // default convertedValue = singleValue.toString(); } + + // if XML is part of the content, the we need to add a wrapping CDATA + if (convertedValue.contains("<") || convertedValue.contains("<")) { + convertedValue = ""; + } xmlContent.append("" + convertedValue + ""); } @@ -626,13 +679,13 @@ protected boolean flushEventLogByCount(int count) { workitem.setAllItems(doc.getData()); if (!workitem.getItemValueBoolean(DocumentService.NOINDEX)) { indexDocument(workitem); - logger.info("......solr added workitem '" + eventLogEntry.getId() + "' to index in " + logger.finest("......solr added workitem '" + eventLogEntry.getId() + "' to index in " + (System.currentTimeMillis() - l2) + "ms"); } } else { long l2 = System.currentTimeMillis(); removeDocument(eventLogEntry.getId()); - logger.info("......solr remove workitem '" + eventLogEntry.getId() + "' from index in " + logger.finest("......solr removed workitem '" + eventLogEntry.getId() + "' from index in " + (System.currentTimeMillis() - l2) + "ms"); } diff --git a/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrSearchService.java b/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrSearchService.java index 6e3f440c5..bbd7ea8b3 100644 --- a/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrSearchService.java +++ b/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrSearchService.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.List; import java.util.NoSuchElementException; +import java.util.Set; import java.util.logging.Logger; import javax.annotation.security.DeclareRoles; @@ -45,10 +46,12 @@ import org.eclipse.microprofile.config.inject.ConfigProperty; import org.imixs.workflow.ItemCollection; +import org.imixs.workflow.WorkflowKernel; import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.index.DefaultOperator; import org.imixs.workflow.engine.index.SchemaService; import org.imixs.workflow.engine.index.SearchService; +import org.imixs.workflow.engine.index.SortOrder; import org.imixs.workflow.exceptions.QueryException; /** @@ -87,6 +90,8 @@ public class SolrSearchService implements SearchService { private static Logger logger = Logger.getLogger(SolrSearchService.class.getName()); + private SimpleDateFormat luceneDateFormat=new SimpleDateFormat("yyyyMMddHHmmss"); + /** * Returns a collection of documents matching the provided search term. The term * will be extended with the current users roles to test the read access level @@ -119,18 +124,11 @@ public class SolrSearchService implements SearchService { */ @Override public List search(String searchTerm, int pageSize, int pageIndex, - org.imixs.workflow.engine.index.SortOrder sortOrder, DefaultOperator defaultOperator, boolean loadStubs) + SortOrder sortOrder, DefaultOperator defaultOperator, boolean loadStubs) throws QueryException { long ltime = System.currentTimeMillis(); - // see issue #382 - /* - * if (sSearchTerm.toLowerCase().contains("$processid")) { logger. - * warning("The field $processid is deprecated. Please use $taskid instead. " + - * "searching a workitem with an deprecated $processid is still supported."); } - */ - if (pageSize <= 0) { pageSize = DEFAULT_PAGE_SIZE; } @@ -150,7 +148,7 @@ public List search(String searchTerm, int pageSize, int pageInde } // post query.... - String result = solarIndexService.query(searchTerm); + String result = solarIndexService.query(searchTerm, pageSize, pageIndex,sortOrder,defaultOperator); logger.finest("......Result = " + result); if (result != null && !result.isEmpty()) { @@ -159,9 +157,9 @@ public List search(String searchTerm, int pageSize, int pageInde workitems.addAll(documentStubs); } else { // load workitems - for (ItemCollection stub: documentStubs) { - ItemCollection document=documentService.load(stub.getUniqueID()); - if (document!=null) { + for (ItemCollection stub : documentStubs) { + ItemCollection document = documentService.load(stub.getUniqueID()); + if (document != null) { workitems.add(document); } } @@ -210,8 +208,7 @@ protected List parseQueryResult(String json) { result.add(itemCol); event = parser.next(); } - - + if (event.name().equals(Event.END_ARRAY.toString())) { break; @@ -227,7 +224,7 @@ protected List parseQueryResult(String json) { } } - logger.info("******* total parsing time " + (System.currentTimeMillis() - l) + "ms"); + logger.finest("......total parsing time " + (System.currentTimeMillis() - l) + "ms"); return result; } @@ -246,7 +243,7 @@ private ItemCollection parseDoc(JsonParser parser) { logger.finest("......found item " + itemName); List itemValue = parseItem(parser); // convert itemName and value.... - itemName=adaptItemName(itemName); + itemName = adaptItemName(itemName); document.replaceItemValue(itemName, itemValue); event = parser.next(); } @@ -261,7 +258,7 @@ private ItemCollection parseDoc(JsonParser parser) { * @return */ private List parseItem(JsonParser parser) { - SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMddHHmmss"); + List result = new ArrayList(); Event event = null; while (true) { @@ -272,14 +269,14 @@ private List parseItem(JsonParser parser) { event = parser.next(); // a single doc.. if (event.name().equals(Event.VALUE_STRING.toString())) { // just return the next json object here - - result.add(convertLuceneValue(parser.getString(),dateformat)); + + result.add(convertLuceneValue(parser.getString())); } if (event.name().equals(Event.VALUE_NUMBER.toString())) { // just return the next json object here - //result.add(parser.getBigDecimal()); - - result.add(convertLuceneValue(parser.getString(),dateformat)); + // result.add(parser.getBigDecimal()); + + result.add(convertLuceneValue(parser.getString())); } if (event.name().equals(Event.VALUE_TRUE.toString())) { // just return the next json object here @@ -320,18 +317,19 @@ private List parseItem(JsonParser parser) { } /** - * This + * This + * * @param stringValue * @return */ - private Object convertLuceneValue(String stringValue, SimpleDateFormat luceneDateformat) { + private Object convertLuceneValue(String stringValue) { Object objectValue = null; // check for numbers.... if (isNumeric(stringValue)) { // is date? if (stringValue.length() == 14 && !stringValue.contains(".")) { try { - objectValue = luceneDateformat.parse(stringValue); + objectValue = luceneDateFormat.parse(stringValue); } catch (java.text.ParseException e) { // no date! } @@ -351,7 +349,6 @@ private Object convertLuceneValue(String stringValue, SimpleDateFormat luceneDat } return objectValue; } - /** * Helper method to check for numbers. @@ -377,28 +374,27 @@ private static boolean isNumeric(String str) { return true; } - + /** - * This method adapts an item name to the corresponding Imixs Item name + * This method adapts an item name to the corresponding Imixs Item name. Because + * Solr does not accept $ char at the beginning of an field we need to replace + * starting _ with $ * * @param itemName * @return */ private String adaptItemName(String itemName) { - - String[] from = { "_uniqueid", "_modified", "_created" }; - String[] to = { "$uniqueid", "$modified", "$created" }; - - int max = from.length; - for (int i = 0; i < max; i++) { - if (from[i].equalsIgnoreCase(itemName)) { - itemName = to[i]; - break; + if (itemName==null || itemName.isEmpty() || schemaService==null) { + return itemName; + } + if (itemName.charAt(0)=='_') { + String adaptedName="$"+itemName.substring(1); + Set uniqueFieldList = schemaService.getUniqueFieldList(); + uniqueFieldList.add(WorkflowKernel.UNIQUEID); + if (uniqueFieldList.contains(adaptedName)) { + return adaptedName; } } - - - return itemName; } diff --git a/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrUpdateService.java b/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrUpdateService.java index 77a0b7745..ec6ad7991 100644 --- a/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrUpdateService.java +++ b/imixs-workflow-index-solr/src/main/java/org/imixs/workflow/engine/solr/SolrUpdateService.java @@ -60,7 +60,6 @@ public class SolrUpdateService implements UpdateService { SolrIndexService solrIndexService; private static Logger logger = Logger.getLogger(SolrUpdateService.class.getName()); - /** diff --git a/imixs-workflow-index-solr/src/test/java/org/imixs/workflow/engine/solr/TestParseSolrJSONResult.java b/imixs-workflow-index-solr/src/test/java/org/imixs/workflow/engine/solr/TestParseSolrJSONResult.java index eeae341d1..be9fe4312 100644 --- a/imixs-workflow-index-solr/src/test/java/org/imixs/workflow/engine/solr/TestParseSolrJSONResult.java +++ b/imixs-workflow-index-solr/src/test/java/org/imixs/workflow/engine/solr/TestParseSolrJSONResult.java @@ -1,12 +1,8 @@ package org.imixs.workflow.engine.solr; -import java.io.StringReader; import java.util.List; import java.util.logging.Logger; -import javax.json.Json; -import javax.json.stream.JsonParser; - import org.imixs.workflow.ItemCollection; import org.imixs.workflow.exceptions.ModelException; import org.imixs.workflow.exceptions.PluginException; @@ -24,17 +20,13 @@ public class TestParseSolrJSONResult { + @SuppressWarnings("unused") private final static Logger logger = Logger.getLogger(TestParseSolrJSONResult.class.getName()); SolrSearchService solrSearchService=null; @Before public void setUp() throws PluginException, ModelException { - - // init parser just to measure time correctly - - JsonParser parser = Json.createParser(new StringReader("{}")); - solrSearchService=new SolrSearchService(); } @@ -77,14 +69,14 @@ public void testParseResult() { document=result.get(0); Assert.assertEquals("model", document.getItemValueString("type")); - Assert.assertEquals("3a182d18-33d9-4951-8970-d9eaf9d337ff", document.getUniqueID()); - Assert.assertEquals(1567278977000l, document.getItemValueDate("$modified").getTime()); - Assert.assertEquals(1567278977000l, document.getItemValueDate("$created").getTime()); + Assert.assertEquals("3a182d18-33d9-4951-8970-d9eaf9d337ff", document.getItemValueString("id")); + Assert.assertEquals(1567278977000l, document.getItemValueDate("_modified").getTime()); + Assert.assertEquals(1567278977000l, document.getItemValueDate("_created").getTime()); document=result.get(1); Assert.assertEquals("adminp", document.getItemValueString("type")); - Assert.assertEquals("60825929-4d7d-4346-9333-afd7dbfca457", document.getUniqueID()); - Assert.assertEquals(1567278978000l, document.getItemValueDate("$created").getTime()); + Assert.assertEquals("60825929-4d7d-4346-9333-afd7dbfca457",document.getItemValueString("id")); + Assert.assertEquals(1567278978000l, document.getItemValueDate("_created").getTime()); }