Project

General

Profile

« Previous | Next » 

Revision 56900

Added by Enrico Ottonello over 4 years ago

schema fields are retrieved before docmapper function creation

View differences:

modules/dnet-data-provision-services/branches/saxonHE-SOLR772/src/main/java/eu/dnetlib/index/actors/IndexFeedActorImpl.java
4 4
import java.util.concurrent.ExecutorService;
5 5
import java.util.concurrent.Executors;
6 6
import java.util.function.Function;
7
import java.util.stream.StreamSupport;
7 8

  
8 9
import com.google.common.collect.Maps;
10

  
11
import eu.dnetlib.clients.index.model.Any.ValueType;
9 12
import eu.dnetlib.clients.index.model.document.IndexDocument;
10 13
import eu.dnetlib.clients.index.utils.IndexFieldUtility;
11 14
import eu.dnetlib.clients.index.utils.ServiceTools;
......
84 87
			final IndexServerDAO serverDAO = indexServerDAOMap.getIndexServerDAO(backendId);
85 88
			final DocumentMapperFactory docMapperFactory = serverDAO.getDocumentMapperFactory();
86 89
            final String version = IndexDateUtility.getParsedDateField(DateUtils.now_ISO8601());
87
            final Function<String, IndexDocument> docMapper = docMapperFactory.getRecordMapper(serverDAO.getSchema(mdref), mdref, dsId, version, emptyResult);
90
            Map<String, ValueType> fields = serverDAO.getSchema(mdref);
91
            final Function<String, IndexDocument> docMapper = docMapperFactory.getRecordMapper(fields, mdref, dsId, version, emptyResult);
88 92

  
89 93
			Iterable<IndexDocument> result = DnetStreamSupport.generateStreamFromIterator(docIterator.iterator()).map(docMapper)::iterator;
90

  
94
					
91 95
			indexCollection = serverDAO.getIndexCollection(mdref);
92 96
			final FeedResult res = threadPool.submit(new DocumentFeeder(indexCollection, result)).get();
93

  
97
			
94 98
			cleanMarkedDocuments(indexCollection, dsId);
95 99
			if (feedMode.equals(FeedMode.REFRESH)) {
96 100
                deleteByVersion(indexCollection, dsId, version);

Also available in: Unified diff