/*
* Copyright 2012 McEvoy Software Ltd.
*
*/
package io.milton.http.carddav;
import io.milton.http.webdav.ResourceTypeHelper;
import io.milton.resource.AddressBookDirectoryResource;
import io.milton.resource.AddressBookResource;
import io.milton.resource.Resource;
import io.milton.webdav.utils.LockUtils;
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author brad
*/
public class AddressBookResourceTypeHelper implements ResourceTypeHelper {
private static final Logger log = LoggerFactory.getLogger(AddressBookResourceTypeHelper.class);
private final ResourceTypeHelper wrapped;
public AddressBookResourceTypeHelper(ResourceTypeHelper wrapped) {
log.debug("CalendarResourceTypeHelper constructed :" + wrapped.getClass().getSimpleName());
this.wrapped = wrapped;
}
@Override
public List<QName> getResourceTypes(Resource r) {
if (log.isTraceEnabled()) {
log.trace("getResourceTypes:" + r.getClass().getCanonicalName());
}
QName qn, qn2;
List<QName> list = wrapped.getResourceTypes(r);
if (r instanceof AddressBookResource) {
log.trace("getResourceTypes: is a AddressBookResource");
qn = new QName(CardDavProtocol.CARDDAV_NS, "addressbook");
qn2 = new QName(CardDavProtocol.CARDDAV_NS, "directory");
if (list == null) {
list = new ArrayList<QName>();
}
if (r instanceof AddressBookDirectoryResource) {
list.add(qn2);
}
list.add(qn);
}
return list;
}
/**
*
*
* @param r
* @return
*/
@Override
public List<String> getSupportedLevels(Resource r) {
log.debug("getSupportedLevels");
List<String> list = wrapped.getSupportedLevels(r);
// if (r instanceof AddressBookResource) {
LockUtils.add(list,"3");
LockUtils.add(list,"addressbook");
LockUtils.add(list,"extended-mkcol");
// }
return list;
}
}