private String getObjectPropertyContent(ObjectPropertyReference reference) { BaseObjectReference objRef = new BaseObjectReference(reference.getParent()); DocumentReference docRef = new DocumentReference(objRef.getParent()); if (objRef.getObjectNumber() != null) { return dab.getProperty(docRef, objRef.getXClassReference(), objRef.getObjectNumber(), reference.getName()) .toString(); } else { return dab.getProperty(docRef, objRef.getXClassReference(), reference.getName()).toString(); } } }
@Override public String getQuery(EntityReference reference) throws SolrIndexerException { BaseObjectReference objectReference = new BaseObjectReference(reference); StringBuilder builder = new StringBuilder(); EntityReference documentReference = reference.extractReference(EntityType.DOCUMENT); builder.append(this.documentResolverProvider.get().getQuery(documentReference)); builder.append(QUERY_AND); builder.append(FieldUtils.CLASS); builder.append(':'); builder .append(ClientUtils.escapeQueryChars(this.localSerializer.serialize(objectReference.getXClassReference()))); builder.append(QUERY_AND); builder.append(FieldUtils.NUMBER); builder.append(':'); builder.append(ClientUtils.escapeQueryChars(String.valueOf(objectReference.getObjectNumber()))); return builder.toString(); } }
@Override public String getDefaultVisibility() { DocumentReference preferencesDocument = this.resolver.resolve(TEMPLATE_DOCUMENT); DocumentReference configurationClassDocument = this.resolver.resolve(Visibility.CLASS_REFERENCE); String visibilityName = (String) this.dab.getProperty(new ObjectPropertyReference("visibility", new BaseObjectReference(configurationClassDocument, 0, preferencesDocument))); return StringUtils.defaultIfBlank(visibilityName, null); }
DocumentReference objectClassReference = objectReference.getXClassReference(); String number = String.valueOf(objectReference.getObjectNumber()); if (event instanceof XObjectAddedEvent) { newEvent = new AnnotationAddedEvent(documentReference, number);
@Override public DocumentReference getDocumentReference() { return (DocumentReference) objectReference.getParent(); }
BaseObjectReference xObjectReference = xObject.getReference(); builderHelper = this.entityReferenceSerializer.serialize(xObjectReference.getXClassReference());
protected List<Event> getCacheCleanupEvents() { RegexEntityReference classMatcher = BaseObjectReference.any(this.referenceSerializer.serialize(getClassReference())); return Arrays.<Event>asList(new XObjectAddedEvent(classMatcher), new XObjectDeletedEvent(classMatcher), new XObjectUpdatedEvent(classMatcher), new WikiDeletedEvent()); }
@Override public void beginWikiObject(String name, FilterEventParameters parameters) throws WikiStreamException { if (name != null) { this.currentEntityReference = new EntityReference(name, EntityType.OBJECT, this.currentEntityReference); } this.currentXObject = new BaseObject(); int number = getInt(WikiObjectFilter.PARAMETER_NUMBER, parameters, -1); String className = getString(WikiObjectFilter.PARAMETER_CLASS_REFERENCE, parameters, null); if (className == null) { BaseObjectReference reference = new BaseObjectReference(this.currentEntityReference); this.currentXObject.setXClassReference(reference.getXClassReference()); if (number < 0 && reference.getObjectNumber() != null) { number = reference.getObjectNumber(); } } else { this.currentXObject.setClassName(className); } if (number < 0) { this.document.addXObject(this.currentXObject); } else { this.document.setXObject(number, this.currentXObject); } this.currentXObject.setGuid(getString(WikiObjectFilter.PARAMETER_GUID, parameters, null)); }
@Override public boolean isVisibilityDisabled(String visibilityName) { DocumentReference preferencesDocument = this.resolver.resolve(PREFERENCES_DOCUMENT); DocumentReference configurationClassDocument = this.resolver.resolve(VISIBILITY_CONFIGURATION_CLASS_REFERENCE); @SuppressWarnings("unchecked") List<String> disabledVisibilities = (List<String>) this.dab.getProperty(new ObjectPropertyReference("disabledLevels", new BaseObjectReference(configurationClassDocument, 0, preferencesDocument))); return disabledVisibilities != null && disabledVisibilities.contains(visibilityName); } }
@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 originalDocument = getDocument(documentReference); BaseObject object = originalDocument.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; }
@Override public String getDefaultVisibility() { DocumentReference preferencesDocument = this.resolver.resolve(TEMPLATE_DOCUMENT); DocumentReference configurationClassDocument = this.resolver.resolve(Visibility.CLASS_REFERENCE); String visibilityName = (String) this.dab.getProperty(new ObjectPropertyReference("visibility", new BaseObjectReference(configurationClassDocument, 0, preferencesDocument))); return StringUtils.defaultIfBlank(visibilityName, null); }
@Override public boolean setFieldsInternal(LengthSolrInputDocument solrDocument, EntityReference entityReference) throws Exception { ObjectPropertyReference objectPropertyReference = new ObjectPropertyReference(entityReference); BaseObjectReference objectReference = new BaseObjectReference(objectPropertyReference.getParent()); DocumentReference classReference = objectReference.getXClassReference(); DocumentReference documentReference = new DocumentReference(objectReference.getParent()); XWikiDocument originalDocument = getDocument(documentReference); BaseProperty<ObjectPropertyReference> objectProperty = originalDocument.getXObjectProperty(objectPropertyReference); if (objectProperty == null) { return false; } // Object solrDocument.setField(FieldUtils.CLASS, localSerializer.serialize(classReference)); solrDocument.setField(FieldUtils.NUMBER, objectReference.getObjectNumber()); // Property solrDocument.setField(FieldUtils.PROPERTY_NAME, objectPropertyReference.getName()); setLocaleAndContentFields(documentReference, solrDocument, objectProperty); return true; }
@Override public boolean isVisibilityDisabled(String visibilityName) { DocumentReference preferencesDocument = this.resolver.resolve(PREFERENCES_DOCUMENT); DocumentReference configurationClassDocument = this.resolver.resolve(VISIBILITY_CONFIGURATION_CLASS_REFERENCE); @SuppressWarnings("unchecked") List<String> disabledVisibilities = (List<String>) this.dab.getProperty(new ObjectPropertyReference("disabledLevels", new BaseObjectReference(configurationClassDocument, 0, preferencesDocument))); return disabledVisibilities != null && disabledVisibilities.contains(visibilityName); } }
/** * @param objectEvent the event involving an object * @return the {@link BaseObjectReference} of the object corresponding to the object event */ private BaseObjectReference getBaseObjectReference(XObjectEvent objectEvent) { EntityReference objectReference = objectEvent.getReference(); BaseObjectReference baseObjectReference = null; if (objectReference instanceof BaseObjectReference) { baseObjectReference = (BaseObjectReference) objectEvent.getReference(); } else { baseObjectReference = new BaseObjectReference(objectEvent.getReference()); } return baseObjectReference; } }
@Override public void onEvent(Event event, Object source, Object data) { XWikiDocument document = (XWikiDocument) source; String currentWiki = wikiDescriptorManager.getCurrentWikiId(); DocumentReference ssxDocRef = new DocumentReference(currentWiki, "XWiki", "StyleSheetExtension"); List<BaseObject> ssxObjects = document.getXObjects(ssxDocRef); if (ssxObjects != null && !ssxObjects.isEmpty()) { for (BaseObject obj : ssxObjects) { if (obj == null) { continue; } if ("LESS".equals(obj.getStringValue("contentType"))) { ObjectPropertyReference objectPropertyReference = new ObjectPropertyReference("code", new BaseObjectReference(ssxDocRef, obj.getNumber(), document.getDocumentReference())); LESSResourceReference lessResourceReference = lessResourceReferenceFactory.createReferenceForXObjectProperty(objectPropertyReference); lessResourcesCache.clearFromLESSResource(lessResourceReference); colorThemeCache.clearFromLESSResource(lessResourceReference); } } } } }