Class AbstractDocumentBuilder<T>
- java.lang.Object
- 
- com.broadleafcommerce.search.index.core.document.AbstractDocumentBuilder<T>
 
- 
- Type Parameters:
- T- The type of document to build
 - All Implemented Interfaces:
- DocumentBuilder<T>
 
 public abstract class AbstractDocumentBuilder<T> extends Object implements DocumentBuilder<T> Builds documents from indexables based onFieldDefinitionsfor theirIndexableType.Executes DocumentBuilderPreProcessorson the indexables prior to creating documents, and skips archived indexables by default. After documents are created,DocumentBuilderContributorsare executed on them to add any additional information.
- 
- 
Constructor SummaryConstructors Constructor Description AbstractDocumentBuilder(IndexerSearchService<com.broadleafcommerce.search.api.domain.FieldDefinition> searchFieldService, List<DocumentBuilderContributor<T>> contributors, List<DocumentBuilderPreProcessor> preProcessors)AbstractDocumentBuilder(IndexerSearchService<com.broadleafcommerce.search.api.domain.FieldDefinition> searchFieldService, List<DocumentBuilderContributor<T>> contributors, List<DocumentBuilderPreProcessor> preProcessors, com.jayway.jsonpath.Configuration jsonPathConfiguration)
 - 
Method SummaryAll Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description List<T>buildDocuments(List<? extends com.broadleafcommerce.search.api.domain.Indexable<?>> indexables)Build documents to be indexed by the search engine.protected abstract StringbuildId(com.broadleafcommerce.search.api.domain.Indexable<?> indexable)Build an ID value which routes documents based on context ID and is a unique representation of its context.protected abstract TcreateDocument(com.broadleafcommerce.search.api.domain.Indexable<?> indexable)Creates a new document.protected voidexecuteContributors(List<DocumentBuilderContributor<T>> contributors, com.broadleafcommerce.search.api.domain.Indexable<?> indexable, T document, com.jayway.jsonpath.DocumentContext context, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fields)Execute all of the definedDocumentBuilderContributorson the indexable.protected voidexecutePreProcessors(List<? extends com.broadleafcommerce.search.api.domain.Indexable<?>> indexables)Execute all of the definedDocumentBuilderPreProcessorson the indexables together.protected List<DocumentBuilderContributor<T>>getContributorsForIndexableType(com.broadleafcommerce.search.api.type.IndexableType indexableType)protected List<DocumentBuilderContributor<T>>getDefaultContributors()protected com.jayway.jsonpath.ConfigurationgetDefaultJsonPathConfiguration()protected Map<com.broadleafcommerce.search.api.type.IndexableType,List<DocumentBuilderContributor<T>>>getIndexableTypeContributors()If any contributors have been defined for a specificIndexableTypevia anIndexableTypeDocumentBuilderContributor, then the contributors listed here will be used instead ofdefaultContributors.protected com.jayway.jsonpath.ConfigurationgetJsonPathConfiguration()protected List<DocumentBuilderPreProcessor>getPreProcessors()protected IndexerSearchService<com.broadleafcommerce.search.api.domain.FieldDefinition>getSearchFieldService()protected abstract voidpopulateDocument(com.broadleafcommerce.search.api.domain.Indexable<?> indexable, T document, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fields, com.jayway.jsonpath.DocumentContext context)Populate the document for the indexable with the given fields.protected booleanshouldIndex(com.broadleafcommerce.search.api.domain.Indexable<?> indexable)Check whether a document should be indexed for this indexable.- 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface com.broadleafcommerce.search.index.core.document.DocumentBuilderbuildDocuments
 
- 
 
- 
- 
- 
Constructor Detail- 
AbstractDocumentBuilderpublic AbstractDocumentBuilder(IndexerSearchService<com.broadleafcommerce.search.api.domain.FieldDefinition> searchFieldService, @Nullable List<DocumentBuilderContributor<T>> contributors, @Nullable List<DocumentBuilderPreProcessor> preProcessors) 
 - 
AbstractDocumentBuilderpublic AbstractDocumentBuilder(IndexerSearchService<com.broadleafcommerce.search.api.domain.FieldDefinition> searchFieldService, @Nullable List<DocumentBuilderContributor<T>> contributors, @Nullable List<DocumentBuilderPreProcessor> preProcessors, @Nullable com.jayway.jsonpath.Configuration jsonPathConfiguration) 
 
- 
 - 
Method Detail- 
buildDocumentspublic List<T> buildDocuments(List<? extends com.broadleafcommerce.search.api.domain.Indexable<?>> indexables) throws com.broadleafcommerce.search.api.SearchIndexException Description copied from interface:DocumentBuilderBuild documents to be indexed by the search engine. If the indexable has any trackable behavior, then the parameterindexablesshould include all objects sharing the same ID.- Specified by:
- buildDocumentsin interface- DocumentBuilder<T>
- Parameters:
- indexables- The indexables to be converted into documents.
- Returns:
- The documents to index, including IDs of any documents to be deleted from the index.
- Throws:
- com.broadleafcommerce.search.api.SearchIndexException- if an error occurs preventing indexing
 
 - 
executePreProcessorsprotected void executePreProcessors(List<? extends com.broadleafcommerce.search.api.domain.Indexable<?>> indexables) Execute all of the definedDocumentBuilderPreProcessorson the indexables together.- Parameters:
- indexables- indexable objects to be pre-processed together
 
 - 
getContributorsForIndexableTypeprotected List<DocumentBuilderContributor<T>> getContributorsForIndexableType(com.broadleafcommerce.search.api.type.IndexableType indexableType) 
 - 
shouldIndexprotected boolean shouldIndex(com.broadleafcommerce.search.api.domain.Indexable<?> indexable) Check whether a document should be indexed for this indexable.- Parameters:
- indexable- The indexable to check
- Returns:
- Whether or not a document should be indexed. If it should not be indexed, this generally means it should be deleted from the index.
 
 - 
buildIdprotected abstract String buildId(com.broadleafcommerce.search.api.domain.Indexable<?> indexable) Build an ID value which routes documents based on context ID and is a unique representation of its context.Indexables with the same context ID, catalog, sandbox, and sandbox owner context should produce the same ID. - Parameters:
- indexable- The indexable to create an ID for
- Returns:
- an ID unique by indexable context id, catalog, sandbox, and sandbox owner
 
 - 
createDocumentprotected abstract T createDocument(com.broadleafcommerce.search.api.domain.Indexable<?> indexable) Creates a new document.- Parameters:
- indexable- The indexable to create a document for
- Returns:
- new document
 
 - 
populateDocumentprotected abstract void populateDocument(com.broadleafcommerce.search.api.domain.Indexable<?> indexable, T document, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fields, com.jayway.jsonpath.DocumentContext context) throws com.broadleafcommerce.search.api.SearchIndexExceptionPopulate the document for the indexable with the given fields.- Parameters:
- indexable- The indexable with data to populate into the document
- document- The document to be populated with data
- fields- The fields to be populated
- context- The document context for the indexable's JSON map
- Throws:
- com.broadleafcommerce.search.api.SearchIndexException
 
 - 
executeContributorsprotected void executeContributors(List<DocumentBuilderContributor<T>> contributors, com.broadleafcommerce.search.api.domain.Indexable<?> indexable, T document, com.jayway.jsonpath.DocumentContext context, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fields) throws com.broadleafcommerce.search.api.SearchIndexException Execute all of the definedDocumentBuilderContributorson the indexable.- Parameters:
- contributors- the contributors which should modify this indexable object
- indexable- indexable object used to create document
- document- document created from indexable object
- context- the context object derived from the indexable
- fields- fields which belong to the indexable's- IndexableType
- Throws:
- com.broadleafcommerce.search.api.SearchIndexException- if a contributor encounters an error preventing indexing
 
 - 
getDefaultJsonPathConfigurationprotected com.jayway.jsonpath.Configuration getDefaultJsonPathConfiguration() - Returns:
- The default JsonPath configuration.
 
 - 
getSearchFieldServiceprotected IndexerSearchService<com.broadleafcommerce.search.api.domain.FieldDefinition> getSearchFieldService() 
 - 
getDefaultContributorsprotected List<DocumentBuilderContributor<T>> getDefaultContributors() 
 - 
getIndexableTypeContributorsprotected Map<com.broadleafcommerce.search.api.type.IndexableType,List<DocumentBuilderContributor<T>>> getIndexableTypeContributors() If any contributors have been defined for a specificIndexableTypevia anIndexableTypeDocumentBuilderContributor, then the contributors listed here will be used instead ofdefaultContributors.For such an indexable type, this will contain the indexable-type-specific contributors in addition to the default contributors, excluding those which were extended by the indexable-type-specific contributors. 
 - 
getPreProcessorsprotected List<DocumentBuilderPreProcessor> getPreProcessors() 
 - 
getJsonPathConfigurationprotected com.jayway.jsonpath.Configuration getJsonPathConfiguration() 
 
- 
 
-