use of org.bedework.calfacade.BwPrincipalInfo 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.BwPrincipalInfo in project bw-calendar-engine by Bedework.
the class AbstractDirImpl method find.
private List<BwPrincipalInfo> find(final BasicHttpClient cdc, final CardDavInfo cdi, final String cua, final String cutype) throws CalFacadeException {
/* Typically a group entry in a directory doesn't have a mail -
The cua is a uri which often looks like a mailto.
*/
final List<WebdavProperty> props = new ArrayList<>();
final CalAddr ca = new CalAddr(cua);
if ((cutype != null) && cutype.equalsIgnoreCase(CuType.GROUP.getValue())) {
final WebdavProperty fnProp = new WebdavProperty(WebdavTags.displayname, ca.getId());
props.add(fnProp);
}
final WebdavProperty emailProp = new WebdavProperty(BedeworkServerTags.emailProp, ca.getNoScheme());
props.add(emailProp);
final List<BwPrincipalInfo> pis = new ArrayList<>();
final List<MatchResult> mrs = matching(cdc, cdi.getContextPath() + getCutypePath(cutype, cdi), null, props);
if (mrs == null) {
return pis;
}
for (final MatchResult mr : mrs) {
final BwPrincipalInfo pi = new BwPrincipalInfo();
pi.setPropertiesFromVCard(mr.card, null);
pis.add(pi);
}
return pis;
}
use of org.bedework.calfacade.BwPrincipalInfo 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