Search in sources :

Example 1 with CompactNodeTypeDefWriter

use of org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefWriter in project jackrabbit by apache.

the class WorkspaceResourceImpl method getProperty.

@Override
public DavProperty<?> getProperty(DavPropertyName name) {
    DavProperty prop = super.getProperty(name);
    if (prop == null) {
        StringWriter writer = null;
        try {
            if (ItemResourceConstants.JCR_NODETYPES_CND.equals(name)) {
                writer = new StringWriter();
                Session s = getRepositorySession();
                CompactNodeTypeDefWriter cndWriter = new CompactNodeTypeDefWriter(writer, s, true);
                NodeTypeIterator ntIterator = s.getWorkspace().getNodeTypeManager().getAllNodeTypes();
                while (ntIterator.hasNext()) {
                    cndWriter.write(ntIterator.nextNodeType());
                }
                cndWriter.close();
                /*
                    NOTE: avoid having JCR_NODETYPES_CND exposed upon allprop
                          PROPFIND request since it needs to be calculated.
                          nevertheless, this property can be altered using
                          PROPPATCH, which is not consistent with the specification
                    */
                prop = new DefaultDavProperty<String>(ItemResourceConstants.JCR_NODETYPES_CND, writer.toString(), true);
            } else if (SecurityConstants.SUPPORTED_PRIVILEGE_SET.equals(name)) {
                prop = new JcrSupportedPrivilegesProperty(getRepositorySession(), null).asDavProperty();
            } else if (SecurityConstants.CURRENT_USER_PRIVILEGE_SET.equals(name)) {
                prop = new JcrUserPrivilegesProperty(getRepositorySession(), null).asDavProperty();
            }
        } catch (RepositoryException e) {
            log.error("Failed to access NodeTypeManager: " + e.getMessage());
        } catch (IOException e) {
            log.error("Failed to write compact node definition: " + e.getMessage());
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    log.error(e.getMessage());
                }
            }
        }
    }
    return prop;
}
Also used : StringWriter(java.io.StringWriter) DefaultDavProperty(org.apache.jackrabbit.webdav.property.DefaultDavProperty) DavProperty(org.apache.jackrabbit.webdav.property.DavProperty) NodeTypeIterator(javax.jcr.nodetype.NodeTypeIterator) RepositoryException(javax.jcr.RepositoryException) IOException(java.io.IOException) JcrSupportedPrivilegesProperty(org.apache.jackrabbit.webdav.jcr.security.JcrSupportedPrivilegesProperty) JcrUserPrivilegesProperty(org.apache.jackrabbit.webdav.jcr.security.JcrUserPrivilegesProperty) CompactNodeTypeDefWriter(org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefWriter) Session(javax.jcr.Session)

Example 2 with CompactNodeTypeDefWriter

use of org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefWriter in project jackrabbit-oak by apache.

the class NodeTypeImpl method getCnd.

/**
     * Returns the namespace neutral CND of the given node type definition.
     * @param def the node type definition
     * @return the CND
     */
private static String getCnd(NodeTypeDefinition def) {
    StringWriter out = new StringWriter();
    CompactNodeTypeDefWriter cndWriter = new CompactNodeTypeDefWriter(out, new CompactNodeTypeDefWriter.NamespaceMapping() {

        @Override
        public String getNamespaceURI(String s) {
            return s;
        }
    }, false);
    try {
        cndWriter.write(def);
    } catch (IOException e) {
        // should never occur
        log.error("Error generating CND of " + def, e);
        throw new IllegalStateException(e);
    }
    return out.toString();
}
Also used : StringWriter(java.io.StringWriter) IOException(java.io.IOException) CompactNodeTypeDefWriter(org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefWriter)

Aggregations

IOException (java.io.IOException)2 StringWriter (java.io.StringWriter)2 CompactNodeTypeDefWriter (org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefWriter)2 RepositoryException (javax.jcr.RepositoryException)1 Session (javax.jcr.Session)1 NodeTypeIterator (javax.jcr.nodetype.NodeTypeIterator)1 JcrSupportedPrivilegesProperty (org.apache.jackrabbit.webdav.jcr.security.JcrSupportedPrivilegesProperty)1 JcrUserPrivilegesProperty (org.apache.jackrabbit.webdav.jcr.security.JcrUserPrivilegesProperty)1 DavProperty (org.apache.jackrabbit.webdav.property.DavProperty)1 DefaultDavProperty (org.apache.jackrabbit.webdav.property.DefaultDavProperty)1