@Override public ObjectPropertyReference replaceParent(EntityReference oldParent, EntityReference newParent) { if (newParent == oldParent) { return this; } return new ObjectPropertyReference(this, oldParent, newParent); }
@Override public ObjectPropertyReference replaceParent(EntityReference newParent) { if (newParent == getParent()) { return this; } return new ObjectPropertyReference(this, newParent); } }
@Override public boolean equals(Object o) { if (o instanceof LESSObjectPropertyResourceReference) { LESSObjectPropertyResourceReference lessObjectPropertyResourceReference = (LESSObjectPropertyResourceReference) o; return objectPropertyReference.equals(lessObjectPropertyResourceReference.objectPropertyReference); } return false; }
@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; }
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 int hashCode() { return objectPropertyReference.hashCode(); }
@Override public ObjectPropertyReference resolve(String propertyReferenceRepresentation, Object... parameters) { return new ObjectPropertyReference(this.entityReferenceResolver.resolve(propertyReferenceRepresentation, EntityType.OBJECT_PROPERTY, parameters)); }
@Override public ObjectPropertyReference resolve(String propertyReferenceRepresentation) { return new ObjectPropertyReference( this.entityReferenceResolver.resolve(propertyReferenceRepresentation, EntityType.OBJECT_PROPERTY)); } }
/** * {@inheritDoc} * * @see org.xwiki.model.reference.ObjectPropertyReferenceResolver#resolve(java.lang.Object) */ public ObjectPropertyReference resolve(String propertyReferenceRepresentation) { return new ObjectPropertyReference(entityReferenceResolver.resolve(propertyReferenceRepresentation, EntityType.OBJECT_PROPERTY)); } }
/** * @param stringRepresentation an object property reference specified as {@link String} (using the * "wiki:space.page^object.property" format and with special characters escaped where required) * @param hint the hint of the resolver to use in case any part of the reference is missing (no wiki specified, no * space or no page) * @param parameters extra parameters to pass to the resolver; you can use these parameters to resolve an object * property reference relative to another entity reference * @return the corresponding typed {@link ObjectPropertyReference} object * @since 3.2M3 */ public ObjectPropertyReference resolveObjectProperty(String stringRepresentation, String hint, Object... parameters) { try { EntityReferenceResolver<String> resolver = this.componentManager.getInstance(EntityReferenceResolver.TYPE_STRING, hint); return new ObjectPropertyReference( resolver.resolve(stringRepresentation, EntityType.OBJECT_PROPERTY, parameters)); } catch (ComponentLookupException e) { return null; } }
@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 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 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 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); } }
/** * {@inheritDoc} * <p> * Overridden to ensure that the parent of a block is either a document or an object property. * </p> * * @see org.xwiki.model.reference.EntityReference#setParent(org.xwiki.model.reference.EntityReference) */ @Override protected void setParent(EntityReference parent) { if (parent == null || parent instanceof DocumentReference || parent instanceof ObjectPropertyReference) { super.setParent(parent); return; } if ((parent.getType() != EntityType.DOCUMENT && parent.getType() != EntityType.OBJECT_PROPERTY)) { throw new IllegalArgumentException("Invalid parent reference [" + parent + "] in a block reference"); } if (parent.getType() == EntityType.DOCUMENT) { super.setParent(new DocumentReference(parent)); } else { super.setParent(new ObjectPropertyReference(parent)); } }
@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); } } } } }
Utils.getComponent(LESSResourceReferenceFactory.class); ObjectPropertyReference objectPropertyReference = new ObjectPropertyReference(CONTENT_PROPERTY_NAME, sxObj.getReference()); LESSResourceReference lessResourceReference = lessResourceReferenceFactory.createReferenceForXObjectProperty(objectPropertyReference);
@Override public String getSource(String reference) throws IOServiceException { try { EntityReference ref = referenceResolver.resolve(reference, EntityType.DOCUMENT); if (ref.getType() == EntityType.OBJECT_PROPERTY) { return getObjectPropertyContent(new ObjectPropertyReference(ref)); } else if (ref.getType() == EntityType.DOCUMENT) { return dab.getTranslatedDocumentInstance(new DocumentReference(ref)).getContent(); } else { // it was parsed as something else, just ignore the parsing and get the document content as its initial // name was return dab.getDocumentContent(reference); } } catch (Exception e) { throw new IOServiceException("An exception has occurred while getting the source for " + reference, e); } }
@Override public XDOM getXDOM(String reference, String syntax) throws IOServiceException { String sourceSyntaxId = syntax; // get if unspecified, get the source from the io service if (sourceSyntaxId == null) { sourceSyntaxId = getSourceSyntax(reference); } try { EntityReference ref = referenceResolver.resolve(reference, EntityType.DOCUMENT); if (ref.getType() == EntityType.OBJECT_PROPERTY) { return getTransformedXDOM(getObjectPropertyContent(new ObjectPropertyReference(ref)), sourceSyntaxId); } else if (ref.getType() == EntityType.DOCUMENT) { return getDocumentXDOM(new DocumentReference(ref)); } else { // it was parsed as something else, just ignore the parsing and get the document content as its initial // name was return getTransformedXDOM(dab.getDocumentContent(reference), sourceSyntaxId); } } catch (Exception e) { throw new IOServiceException("An exception has occurred while getting the XDOM for " + reference, e); } }
/** * Disable Syntax Highlighting. * * @since 9.7RC1 */ public void disableSyntaxHighlighting() throws Exception { ObjectPropertyReference enabledPropertyReference = new ObjectPropertyReference("enabled", new ObjectReference("SyntaxHighlighting.ConfigurationClass[0]", new DocumentReference(getCurrentWiki(), "SyntaxHighlighting", "Configuration"))); Property property = new Property(); property.setValue("0"); TestUtils.assertStatusCodes( rest().executePut(ObjectPropertyResource.class, property, rest().toElements(enabledPropertyReference)), true, STATUS_ACCEPTED); } }