Search in sources :

Example 1 with Attribute

use of org.xwiki.rest.model.jaxb.Attribute in project xwiki-platform by xwiki.

the class ModelFactory method toRestClass.

public Class toRestClass(URI baseUri, com.xpn.xwiki.api.Class xwikiClass) {
    Class clazz = this.objectFactory.createClass();
    clazz.setId(xwikiClass.getName());
    clazz.setName(xwikiClass.getName());
    DocumentReference reference = xwikiClass.getReference();
    String wikiName = reference.getWikiReference().getName();
    for (java.lang.Object xwikiPropertyClassObject : xwikiClass.getProperties()) {
        PropertyClass xwikiPropertyClass = (PropertyClass) xwikiPropertyClassObject;
        Property property = this.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 = this.objectFactory.createAttribute();
            attribute.setName(xwikiProperty.getName());
            if (value != null) {
                attribute.setValue(value.toString());
            } else {
                attribute.setValue("");
            }
            property.getAttributes().add(attribute);
        }
        String propertyUri = Utils.createURI(baseUri, ClassPropertyResource.class, wikiName, xwikiClass.getName(), xwikiPropertyClass.getName()).toString();
        Link propertyLink = this.objectFactory.createLink();
        propertyLink.setHref(propertyUri);
        propertyLink.setRel(Relations.SELF);
        property.getLinks().add(propertyLink);
        clazz.getProperties().add(property);
    }
    String classUri = Utils.createURI(baseUri, ClassResource.class, wikiName, xwikiClass.getName()).toString();
    Link classLink = this.objectFactory.createLink();
    classLink.setHref(classUri);
    classLink.setRel(Relations.SELF);
    clazz.getLinks().add(classLink);
    String propertiesUri = Utils.createURI(baseUri, ClassPropertiesResource.class, wikiName, xwikiClass.getName()).toString();
    Link propertyLink = this.objectFactory.createLink();
    propertyLink.setHref(propertiesUri);
    propertyLink.setRel(Relations.PROPERTIES);
    clazz.getLinks().add(propertyLink);
    String objectsUri = Utils.createURI(baseUri, AllObjectsForClassNameResource.class, wikiName, xwikiClass.getName()).toString();
    Link objectsLink = this.objectFactory.createLink();
    objectsLink.setHref(objectsUri);
    objectsLink.setRel(Relations.OBJECTS);
    clazz.getLinks().add(objectsLink);
    return clazz;
}
Also used : ClassResource(org.xwiki.rest.resources.classes.ClassResource) Attribute(org.xwiki.rest.model.jaxb.Attribute) ClassPropertyResource(org.xwiki.rest.resources.classes.ClassPropertyResource) PropertyClass(com.xpn.xwiki.api.PropertyClass) ClassPropertiesResource(org.xwiki.rest.resources.classes.ClassPropertiesResource) AllObjectsForClassNameResource(org.xwiki.rest.resources.objects.AllObjectsForClassNameResource) ListClass(com.xpn.xwiki.objects.classes.ListClass) PropertyClass(com.xpn.xwiki.api.PropertyClass) Class(org.xwiki.rest.model.jaxb.Class) BaseClass(com.xpn.xwiki.objects.classes.BaseClass) Property(org.xwiki.rest.model.jaxb.Property) BaseProperty(com.xpn.xwiki.objects.BaseProperty) DocumentReference(org.xwiki.model.reference.DocumentReference) Link(org.xwiki.rest.model.jaxb.Link)

Example 2 with Attribute

use of org.xwiki.rest.model.jaxb.Attribute in project xwiki-platform by xwiki.

the class ModelFactory method toRestObject.

public Object toRestObject(URI baseUri, Document doc, BaseObject xwikiObject, boolean useVersion, Boolean withPrettyNames) {
    Object object = this.objectFactory.createObject();
    fillObjectSummary(object, doc, xwikiObject, withPrettyNames);
    XWikiContext xwikiContext = this.xcontextProvider.get();
    BaseClass xwikiClass = xwikiObject.getXClass(xwikiContext);
    for (java.lang.Object propertyClassObject : xwikiClass.getProperties()) {
        com.xpn.xwiki.objects.classes.PropertyClass propertyClass = (com.xpn.xwiki.objects.classes.PropertyClass) propertyClassObject;
        Property property = this.objectFactory.createProperty();
        for (java.lang.Object o : propertyClass.getProperties()) {
            BaseProperty baseProperty = (BaseProperty) o;
            Attribute attribute = this.objectFactory.createAttribute();
            attribute.setName(baseProperty.getName());
            /* Check for null values in order to prevent NPEs */
            if (baseProperty.getValue() != null) {
                attribute.setValue(baseProperty.getValue().toString());
            } else {
                attribute.setValue("");
            }
            property.getAttributes().add(attribute);
        }
        if (propertyClass instanceof ListClass) {
            ListClass listClass = (ListClass) propertyClass;
            List allowedValueList = listClass.getList(xwikiContext);
            if (!allowedValueList.isEmpty()) {
                Formatter f = new Formatter();
                for (int i = 0; i < allowedValueList.size(); i++) {
                    if (i != allowedValueList.size() - 1) {
                        f.format("%s,", allowedValueList.get(i).toString());
                    } else {
                        f.format("%s", allowedValueList.get(i).toString());
                    }
                }
                Attribute attribute = this.objectFactory.createAttribute();
                attribute.setName(Constants.ALLOWED_VALUES_ATTRIBUTE_NAME);
                attribute.setValue(f.toString());
                property.getAttributes().add(attribute);
            }
        }
        property.setName(propertyClass.getName());
        property.setType(propertyClass.getClassType());
        try {
            property.setValue(serializePropertyValue(xwikiObject.get(propertyClass.getName())));
        } catch (XWikiException e) {
        // Should never happen
        }
        String propertyUri;
        if (useVersion) {
            propertyUri = Utils.createURI(baseUri, ObjectPropertyAtPageVersionResource.class, doc.getWiki(), Utils.getSpacesFromSpaceId(doc.getSpace()), doc.getName(), doc.getVersion(), xwikiObject.getClassName(), xwikiObject.getNumber(), propertyClass.getName()).toString();
        } else {
            propertyUri = Utils.createURI(baseUri, ObjectPropertyResource.class, doc.getWiki(), Utils.getSpacesFromSpaceId(doc.getSpace()), doc.getName(), xwikiObject.getClassName(), xwikiObject.getNumber(), propertyClass.getName()).toString();
        }
        Link propertyLink = this.objectFactory.createLink();
        propertyLink.setHref(propertyUri);
        propertyLink.setRel(Relations.SELF);
        property.getLinks().add(propertyLink);
        object.getProperties().add(property);
    }
    Link objectLink = getObjectLink(this.objectFactory, baseUri, doc, xwikiObject, useVersion, Relations.SELF);
    object.getLinks().add(objectLink);
    return object;
}
Also used : Attribute(org.xwiki.rest.model.jaxb.Attribute) Formatter(java.util.Formatter) XWikiContext(com.xpn.xwiki.XWikiContext) PropertyClass(com.xpn.xwiki.api.PropertyClass) ListClass(com.xpn.xwiki.objects.classes.ListClass) BaseClass(com.xpn.xwiki.objects.classes.BaseClass) BaseObject(com.xpn.xwiki.objects.BaseObject) Object(org.xwiki.rest.model.jaxb.Object) List(java.util.List) ArrayList(java.util.ArrayList) BaseProperty(com.xpn.xwiki.objects.BaseProperty) Property(org.xwiki.rest.model.jaxb.Property) BaseProperty(com.xpn.xwiki.objects.BaseProperty) XWikiException(com.xpn.xwiki.XWikiException) Link(org.xwiki.rest.model.jaxb.Link)

Aggregations

PropertyClass (com.xpn.xwiki.api.PropertyClass)2 BaseProperty (com.xpn.xwiki.objects.BaseProperty)2 BaseClass (com.xpn.xwiki.objects.classes.BaseClass)2 ListClass (com.xpn.xwiki.objects.classes.ListClass)2 Attribute (org.xwiki.rest.model.jaxb.Attribute)2 Link (org.xwiki.rest.model.jaxb.Link)2 Property (org.xwiki.rest.model.jaxb.Property)2 XWikiContext (com.xpn.xwiki.XWikiContext)1 XWikiException (com.xpn.xwiki.XWikiException)1 BaseObject (com.xpn.xwiki.objects.BaseObject)1 ArrayList (java.util.ArrayList)1 Formatter (java.util.Formatter)1 List (java.util.List)1 DocumentReference (org.xwiki.model.reference.DocumentReference)1 Class (org.xwiki.rest.model.jaxb.Class)1 Object (org.xwiki.rest.model.jaxb.Object)1 ClassPropertiesResource (org.xwiki.rest.resources.classes.ClassPropertiesResource)1 ClassPropertyResource (org.xwiki.rest.resources.classes.ClassPropertyResource)1 ClassResource (org.xwiki.rest.resources.classes.ClassResource)1 AllObjectsForClassNameResource (org.xwiki.rest.resources.objects.AllObjectsForClassNameResource)1