use of org.apache.jackrabbit.webdav.MultiStatusResponse in project jackrabbit by apache.
the class AclPrincipalReport method init.
/**
* @see Report#init(DavResource, ReportInfo)
*/
@Override
public void init(DavResource resource, ReportInfo info) throws DavException {
super.init(resource, info);
// build the DAV:responses objects.
DavProperty<?> acl = resource.getProperty(SecurityConstants.ACL);
if (!(acl instanceof AclProperty)) {
throw new DavException(DavServletResponse.SC_INTERNAL_SERVER_ERROR, "DAV:acl property expected.");
}
DavResourceLocator loc = resource.getLocator();
Map<String, MultiStatusResponse> respMap = new HashMap<String, MultiStatusResponse>();
List<AclProperty.Ace> list = (List<AclProperty.Ace>) ((AclProperty) acl).getValue();
for (AclProperty.Ace ace : list) {
String href = ace.getPrincipal().getHref();
if (href == null || respMap.containsKey(href)) {
// ignore non-href principals and principals that have been listed before
continue;
}
// href-principal that has not been found before
DavResourceLocator princLocator = loc.getFactory().createResourceLocator(loc.getPrefix(), href);
DavResource principalResource = resource.getFactory().createResource(princLocator, resource.getSession());
respMap.put(href, new MultiStatusResponse(principalResource, info.getPropertyNameSet()));
}
this.responses = respMap.values().toArray(new MultiStatusResponse[respMap.size()]);
}
use of org.apache.jackrabbit.webdav.MultiStatusResponse in project jackrabbit by apache.
the class ExpandPropertyReport method addResponses.
/**
* Fills the specified <code>MultiStatus</code> object by generating a
* <code>MultiStatusResponse</code> for the given resource (and
* its member according to the depth value).
*
* @param res
* @param depth
* @param ms
* @see #getResponse(DavResource, Iterator)
*/
private void addResponses(DavResource res, int depth, MultiStatus ms) {
MultiStatusResponse response = getResponse(res, propertyElements);
ms.addResponse(response);
if (depth > 0 && res.isCollection()) {
DavResourceIterator it = res.getMembers();
while (it.hasNext()) {
addResponses(it.nextResource(), depth - 1, ms);
}
}
}
Aggregations