use of org.bedework.calfacade.configs.CardDavInfo in project bw-calendar-engine by Bedework.
the class AbstractDirImpl method find.
@Override
public List<BwPrincipalInfo> find(final String cua, final String cutype, final boolean expand, final Holder<Boolean> truncated) throws CalFacadeException {
final CardDavInfo cdi = getCardDavInfo(false);
if ((cdi == null) || (cdi.getHost() == null)) {
return null;
}
BasicHttpClient cdc = null;
try {
cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
final List<BwPrincipalInfo> pis = find(cdc, cdi, cua, cutype);
if (!expand) {
return pis;
}
for (final BwPrincipalInfo pi : pis) {
if (!Kind.GROUP.getValue().equalsIgnoreCase(pi.getKind())) {
continue;
}
final List<BwPrincipalInfo> memberPis = new ArrayList<>();
VCard card = pi.getCard();
List<Property> members = card.getProperties(Id.MEMBER);
if (members == null) {
continue;
}
for (final Property p : members) {
BwPrincipalInfo memberPi = fetch(cdc, cdi, p.getValue());
if (memberPi != null) {
memberPis.add(memberPi);
}
}
pi.setMembers(memberPis);
}
return pis;
} catch (final Throwable t) {
if (getLogger().isDebugEnabled()) {
error(t);
}
throw new CalFacadeException(t);
} finally {
if (cdc != null) {
try {
cdc.release();
} catch (final Throwable ignored) {
}
}
}
}
use of org.bedework.calfacade.configs.CardDavInfo in project bw-calendar-engine by Bedework.
the class AbstractDirImpl method getDirInfo.
@Override
public BwPrincipalInfo getDirInfo(final BwPrincipal p) throws CalFacadeException {
BwPrincipalInfo pi = principalInfoMap.get(p.getPrincipalRef());
if (pi != null) {
return pi;
}
// If carddav lookup is enabled - use that
final CardDavInfo cdi = getCardDavInfo(false);
if ((cdi == null) || (cdi.getHost() == null)) {
return null;
}
BasicHttpClient cdc = null;
pi = new BwPrincipalInfo();
try {
cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
pi.setPropertiesFromVCard(getCard(cdc, cdi.getContextPath(), p), "text/vcard");
} catch (final Throwable t) {
if (getLogger().isDebugEnabled()) {
error(t);
}
} finally {
if (cdc != null) {
cdc.close();
}
}
principalInfoMap.put(p.getPrincipalRef(), pi);
return pi;
}
use of org.bedework.calfacade.configs.CardDavInfo in project bw-calendar-engine by Bedework.
the class AbstractDirImpl method find.
@Override
public List<BwPrincipalInfo> find(final List<WebdavProperty> props, final List<WebdavProperty> returnProps, final String cutype, final Holder<Boolean> truncated) throws CalFacadeException {
final CardDavInfo cdi = getCardDavInfo(false);
if ((cdi == null) || (cdi.getHost() == null)) {
return null;
}
BasicHttpClient cdc = null;
final String path = getCutypePath(cutype, cdi);
String addrCtype = null;
/* See if we want address data in any particular form */
for (final WebdavProperty wd : returnProps) {
if (!wd.getTag().equals(CarddavTags.addressData)) {
continue;
}
addrCtype = wd.getAttr("content-type");
break;
}
try {
cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
final List<MatchResult> mrs = matching(cdc, cdi.getContextPath() + path, addrCtype, props);
final List<BwPrincipalInfo> pis = new ArrayList<>();
if (mrs == null) {
return pis;
}
for (final MatchResult mr : mrs) {
final BwPrincipalInfo pi = new BwPrincipalInfo();
pi.setPropertiesFromVCard(mr.card, addrCtype);
pis.add(pi);
}
return pis;
} catch (final Throwable t) {
if (getLogger().isDebugEnabled()) {
error(t);
}
throw new CalFacadeException(t);
} finally {
if (cdc != null) {
cdc.close();
}
}
}
Aggregations