[Bedework-commit] caldavimpl r111 -
trunk/bwcaldav/src/org/bedework/caldav/bwserver
svnadmin at bedework.org
svnadmin at bedework.org
Tue Jul 26 09:42:27 EDT 2011
Author: douglm
Date: 2011-07-26 09:42:26 -0400 (Tue, 26 Jul 2011)
New Revision: 111
Modified:
trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwSysIntfImpl.java
trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwUpdates.java
trunk/bwcaldav/src/org/bedework/caldav/bwserver/PropertyUpdater.java
Log:
Fix category updates via SOAP. Requires a callback to allow creation of category entities.
Modified: trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwSysIntfImpl.java
===================================================================
--- trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwSysIntfImpl.java 2011-07-25 17:19:50 UTC (rev 110)
+++ trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwSysIntfImpl.java 2011-07-26 13:42:26 UTC (rev 111)
@@ -24,9 +24,9 @@
import org.bedework.caldav.server.CalDavHeaders;
import org.bedework.caldav.server.Organizer;
import org.bedework.caldav.server.PropertyHandler;
+import org.bedework.caldav.server.PropertyHandler.PropertyType;
import org.bedework.caldav.server.SysIntfReader;
import org.bedework.caldav.server.SysiIcalendar;
-import org.bedework.caldav.server.PropertyHandler.PropertyType;
import org.bedework.caldav.server.sysinterface.CalPrincipalInfo;
import org.bedework.caldav.server.sysinterface.RetrievalMode;
import org.bedework.caldav.server.sysinterface.SysIntf;
@@ -45,8 +45,8 @@
import org.bedework.calfacade.BwSystem;
import org.bedework.calfacade.BwUser;
import org.bedework.calfacade.RecurringRetrievalMode;
+import org.bedework.calfacade.RecurringRetrievalMode.Rmode;
import org.bedework.calfacade.ScheduleResult;
-import org.bedework.calfacade.RecurringRetrievalMode.Rmode;
import org.bedework.calfacade.ScheduleResult.ScheduleRecipientResult;
import org.bedework.calfacade.configs.DbConfig;
import org.bedework.calfacade.exc.CalFacadeAccessException;
@@ -61,8 +61,8 @@
import org.bedework.icalendar.IcalMalformedException;
import org.bedework.icalendar.IcalTranslator;
import org.bedework.icalendar.Icalendar;
+import org.bedework.icalendar.Icalendar.TimeZoneInfo;
import org.bedework.icalendar.VFreeUtil;
-import org.bedework.icalendar.Icalendar.TimeZoneInfo;
import org.bedework.sysevents.events.HttpEvent;
import org.bedework.sysevents.events.HttpOutEvent;
import org.bedework.sysevents.events.SysEvent.SysCode;
@@ -74,14 +74,14 @@
import edu.rpi.cct.webdav.servlet.shared.WebdavException;
import edu.rpi.cct.webdav.servlet.shared.WebdavForbidden;
import edu.rpi.cct.webdav.servlet.shared.WebdavNotFound;
+import edu.rpi.cct.webdav.servlet.shared.WebdavNsNode.PropertyTagEntry;
import edu.rpi.cct.webdav.servlet.shared.WebdavProperty;
-import edu.rpi.cct.webdav.servlet.shared.WebdavNsNode.PropertyTagEntry;
import edu.rpi.cmt.access.AccessPrincipal;
import edu.rpi.cmt.access.Acl;
import edu.rpi.cmt.access.Acl.CurrentAccess;
import edu.rpi.cmt.calendar.IcalDefs;
+import edu.rpi.cmt.calendar.IcalDefs.IcalComponentType;
import edu.rpi.cmt.calendar.XcalUtil;
-import edu.rpi.cmt.calendar.IcalDefs.IcalComponentType;
import edu.rpi.sss.util.xml.XmlEmit;
import edu.rpi.sss.util.xml.XmlUtil;
import edu.rpi.sss.util.xml.tagdefs.CaldavTags;
@@ -636,7 +636,8 @@
return new UpdateResult("No updates");
}
- UpdateResult ur = new BwUpdates().updateEvent(ei, updates);
+ UpdateResult ur = new BwUpdates().updateEvent(ei, updates,
+ getSvci().getIcalCallback());
if (!ur.getOk()) {
getSvci().rollbackTransaction();
return ur;
Modified: trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwUpdates.java
===================================================================
--- trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwUpdates.java 2011-07-25 17:19:50 UTC (rev 110)
+++ trunk/bwcaldav/src/org/bedework/caldav/bwserver/BwUpdates.java 2011-07-26 13:42:26 UTC (rev 111)
@@ -26,6 +26,7 @@
import org.bedework.calfacade.exc.CalFacadeException;
import org.bedework.calfacade.svc.EventInfo;
import org.bedework.calfacade.util.ChangeTable;
+import org.bedework.icalendar.IcalCallback;
import edu.rpi.cct.webdav.servlet.shared.WebdavException;
import edu.rpi.cmt.calendar.IcalDefs;
@@ -69,6 +70,8 @@
protected transient Logger log;
+ protected IcalCallback cb;
+
private static Map<QName, Integer> entTypes = new HashMap<QName, Integer>();
static {
@@ -173,7 +176,10 @@
* @throws WebdavException
*/
public UpdateResult updateEvent(final EventInfo ei,
- final List<SelectElementType> updates) throws WebdavException {
+ final List<SelectElementType> updates,
+ final IcalCallback cb) throws WebdavException {
+ this.cb = cb;
+
try {
if (updates == null) {
return new UpdateResult("No updates");
@@ -446,7 +452,7 @@
for (JAXBElement<? extends BaseUpdateType> el: chSel.getBaseUpdate()) {
UpdateInfo ui = new UpdateInfo();
- UpdateResult ur = ui.setUpdate(el.getValue(), pname);
+ UpdateResult ur = ui.setUpdate(el.getValue(), pname,cb);
if (ur != null) {
return ur;
@@ -484,7 +490,7 @@
}
UpdateInfo ui = new UpdateInfo();
- UpdateResult ur = ui.setUpdate(but, pname);
+ UpdateResult ur = ui.setUpdate(but, pname, cb);
if (ur != null) {
return ur;
@@ -496,6 +502,12 @@
}
}
+ try {
+ chg.processChanges(ei.getEvent(), true);
+ } catch (CalFacadeException cfe) {
+ throw new WebdavException(cfe);
+ }
+
return UpdateResult.getOkResult();
}
@@ -526,12 +538,16 @@
private QName propName;
+ private IcalCallback cb;
+
UpdateInfo() {
}
UpdateResult setUpdate(final BaseUpdateType but,
- final QName pname) {
+ final QName pname,
+ final IcalCallback cb) {
propName = pname;
+ this.cb = cb;
if (but instanceof AddType) {
add = true;
@@ -592,6 +608,10 @@
public QName getPropName() {
return propName;
}
+
+ public IcalCallback getIcalCallback() {
+ return cb;
+ }
}
/**
@@ -691,7 +711,7 @@
private static class CategoryPropUpdater implements PropertyUpdater {
public UpdateResult applyUpdate(final EventInfo ei,
final UpdateInfo ui,
- final ChangeTable chg) {
+ final ChangeTable chg) throws WebdavException {
BwEvent ev = ei.getEvent();
TextListPropertyType cats = (TextListPropertyType)ui.getUpdprop();
List<String> ss = cats.getText();
@@ -714,6 +734,12 @@
if (cat == null) {
cat = BwCategory.makeCategory();
cat.setWord(key);
+
+ try {
+ ui.getIcalCallback().addCategory(cat);
+ } catch (CalFacadeException cfe) {
+ throw new WebdavException(cfe);
+ }
}
chg.addValue(ui.getPropName().getLocalPart(), cat);
Modified: trunk/bwcaldav/src/org/bedework/caldav/bwserver/PropertyUpdater.java
===================================================================
--- trunk/bwcaldav/src/org/bedework/caldav/bwserver/PropertyUpdater.java 2011-07-25 17:19:50 UTC (rev 110)
+++ trunk/bwcaldav/src/org/bedework/caldav/bwserver/PropertyUpdater.java 2011-07-26 13:42:26 UTC (rev 111)
@@ -21,7 +21,10 @@
import org.bedework.caldav.server.sysinterface.SysIntf.UpdateResult;
import org.bedework.calfacade.svc.EventInfo;
import org.bedework.calfacade.util.ChangeTable;
+import org.bedework.icalendar.IcalCallback;
+import edu.rpi.cct.webdav.servlet.shared.WebdavException;
+
import org.oasis_open.docs.ns.wscal.calws_soap.NewValueType;
import ietf.params.xml.ns.icalendar_2.BasePropertyType;
@@ -66,15 +69,22 @@
*/
public BasePropertyType getUpdprop();
- /**
+ /** The returned value may be null if the change is to parameters for
+ * instance or we are deleting the selected value
+ *
* @return newValue
*/
public NewValueType getNewValue();
/**
- * @return QName for proeprty being updated
+ * @return QName for property being updated
*/
public QName getPropName();
+
+ /**
+ * @return object allowing callbacktoapi
+ */
+ public IcalCallback getIcalCallback();
}
/** Update the property in the given calendar object from the information
@@ -84,9 +94,10 @@
* @param ui - update information
* @param chg - change table
* @return UpdateResult - success or failure
+ * @throws WebdavException
*/
UpdateResult applyUpdate(final EventInfo ei,
final UpdateInfo ui,
- final ChangeTable chg);
+ final ChangeTable chg) throws WebdavException;
}
More information about the Bedework-commit
mailing list