@GET public Property getClassProperty( @PathParam("wikiName") String wikiName, @PathParam("className") String className, @PathParam("propertyName") String propertyName) throws XWikiException { String database = Utils.getXWikiContext(componentManager).getDatabase(); try { Utils.getXWikiContext(componentManager).setDatabase(wikiName); com.xpn.xwiki.api.Class xwikiClass = Utils.getXWikiApi(componentManager).getClass(className); if (xwikiClass == null) { throw new WebApplicationException(Status.NOT_FOUND); } Class clazz = DomainObjectFactory.createClass( objectFactory, uriInfo.getBaseUri(), wikiName, xwikiClass); for (Property property : clazz.getProperties()) { if (property.getName().equals(propertyName)) { String classUri = UriBuilder.fromUri(uriInfo.getBaseUri()) .path(ClassResource.class) .build(wikiName, xwikiClass.getName()) .toString(); Link classLink = objectFactory.createLink(); classLink.setHref(classUri); classLink.setRel(Relations.CLASS); property.getLinks().add(classLink); return property; } } throw new WebApplicationException(Status.NOT_FOUND); } finally { Utils.getXWiki(componentManager).setDatabase(database); } }
public static Class createClass( ObjectFactory objectFactory, URI baseUri, String wikiName, com.xpn.xwiki.api.Class xwikiClass) { Class clazz = objectFactory.createClass(); clazz.setId(xwikiClass.getName()); clazz.setName(xwikiClass.getName()); for (java.lang.Object xwikiPropertyClassObject : xwikiClass.getProperties()) { PropertyClass xwikiPropertyClass = (PropertyClass) xwikiPropertyClassObject; Property property = objectFactory.createProperty(); property.setName(xwikiPropertyClass.getName()); property.setType(xwikiPropertyClass.getxWikiClass().getName()); for (java.lang.Object xwikiPropertyObject : xwikiPropertyClass.getProperties()) { com.xpn.xwiki.api.Property xwikiProperty = (com.xpn.xwiki.api.Property) xwikiPropertyObject; java.lang.Object value = xwikiProperty.getValue(); Attribute attribute = objectFactory.createAttribute(); attribute.setName(xwikiProperty.getName()); if (value != null) { attribute.setValue(value.toString()); } else { attribute.setValue(""); } property.getAttributes().add(attribute); } String propertyUri = uri( baseUri, ClassPropertyResource.class, wikiName, xwikiClass.getName(), xwikiPropertyClass.getName()); Link propertyLink = objectFactory.createLink(); propertyLink.setHref(propertyUri); propertyLink.setRel(Relations.SELF); property.getLinks().add(propertyLink); clazz.getProperties().add(property); } String classUri = uri(baseUri, ClassResource.class, wikiName, xwikiClass.getName()); Link classLink = objectFactory.createLink(); classLink.setHref(classUri); classLink.setRel(Relations.SELF); clazz.getLinks().add(classLink); String propertiesUri = uri(baseUri, ClassPropertiesResource.class, wikiName, xwikiClass.getName()); Link propertyLink = objectFactory.createLink(); propertyLink.setHref(propertiesUri); propertyLink.setRel(Relations.PROPERTIES); clazz.getLinks().add(propertyLink); String objectsUri = uri(baseUri, AllObjectsForClassNameResource.class, wikiName, xwikiClass.getName()); Link objectsLink = objectFactory.createLink(); objectsLink.setHref(objectsUri); objectsLink.setRel(Relations.OBJECTS); clazz.getLinks().add(objectsLink); return clazz; }