@Override public SolrInputDocument getSolrDocument(EntityReference entityReference) throws SolrIndexException, IllegalArgumentException { BaseObjectReference objectReference = new BaseObjectReference(entityReference); try { SolrInputDocument solrDocument = new SolrInputDocument(); DocumentReference classReference = objectReference.getXClassReference(); DocumentReference documentReference = new DocumentReference(objectReference.getParent()); XWikiDocument document = getDocument(documentReference); BaseObject object = document.getXObject(objectReference); solrDocument.addField(Fields.ID, getId(object.getReference())); addDocumentFields(documentReference, solrDocument); solrDocument.addField(Fields.TYPE, objectReference.getType().name()); solrDocument.addField(Fields.CLASS, localSerializer.serialize(classReference)); addLanguageAndContentFields(documentReference, solrDocument, object); return solrDocument; } catch (Exception e) { throw new SolrIndexException( String.format( "Failed to get Solr document for '%s'", serializer.serialize(objectReference)), e); } }
@Override public boolean setFieldsInternal( LengthSolrInputDocument solrDocument, EntityReference entityReference) throws Exception { BaseObjectReference objectReference = new BaseObjectReference(entityReference); DocumentReference classReference = objectReference.getXClassReference(); DocumentReference documentReference = new DocumentReference(objectReference.getParent()); XWikiDocument document = getDocument(documentReference); BaseObject object = document.getXObject(objectReference); if (object == null) { return false; } solrDocument.setField(FieldUtils.ID, resolver.getId(object.getReference())); setDocumentFields(documentReference, solrDocument); solrDocument.setField(FieldUtils.TYPE, objectReference.getType().name()); solrDocument.setField(FieldUtils.CLASS, localSerializer.serialize(classReference)); solrDocument.setField(FieldUtils.NUMBER, objectReference.getObjectNumber()); setLocaleAndContentFields(documentReference, solrDocument, object); return true; }