[Bedework-commit] caldav r466 - in trunk:
server/src/org/bedework/caldav/server
server/src/org/bedework/caldav/server/calquery
server/src/org/bedework/caldav/server/get
server/src/org/bedework/caldav/server/sysinterface
util/src/org/bedework/caldav/util
svnadmin at bedework.org
svnadmin at bedework.org
Wed Sep 15 11:05:11 EDT 2010
Author: douglm
Date: 2010-09-15 11:05:09 -0400 (Wed, 15 Sep 2010)
New Revision: 466
Modified:
trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java
trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java
trunk/server/src/org/bedework/caldav/server/CaldavComponentNode.java
trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java
trunk/server/src/org/bedework/caldav/server/CaldavResourceNode.java
trunk/server/src/org/bedework/caldav/server/PostMethod.java
trunk/server/src/org/bedework/caldav/server/calquery/CalendarData.java
trunk/server/src/org/bedework/caldav/server/calquery/FreeBusyQuery.java
trunk/server/src/org/bedework/caldav/server/get/WebcalGetHandler.java
trunk/server/src/org/bedework/caldav/server/sysinterface/SysIntf.java
trunk/util/src/org/bedework/caldav/util/CalDAVConfig.java
Log:
Pay some attention to the ACCEPT values or the data type in the calendar-data element. Allow for different default content-types for caldav and web service.
Implement generation of XML and produce that when appropriate
Modified: trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -626,7 +626,7 @@
/* =================== Try for calendar fetch ======================= */
- if ((accept != null) &&
+ if (node.isCollection() && (accept != null) &&
"text/calendar".equals(accept.trim())) {
GetHandler handler = new WebcalGetHandler(this);
RequestPars pars = new RequestPars(req, this, getResourceUri(req));
@@ -651,10 +651,9 @@
}
Content c = new Content();
+ c.written = true;
- c.rdr = node.getContent();
- c.contentType = node.getContentType();
- c.contentLength = node.getContentLen();
+ node.writeContent(null, resp.getWriter(), accept);
return c;
} catch (WebdavException we) {
@@ -1030,7 +1029,7 @@
xml.newline();
xml.value(" "); // Just to indent
xml.attribute("href", cn.getUrlValue());
- xml.endTag();
+ xml.endOpeningTag();
xml.newline();
for (PropertyTagXrdEntry pxe: node.getXrdNames()) {
@@ -1409,7 +1408,6 @@
}
CalendarData caldata = (CalendarData)pr;
- String content = null;
if (debug) {
trace("do CalendarData for " + node.getUri());
@@ -1417,24 +1415,21 @@
int status = HttpServletResponse.SC_OK;
try {
- content = caldata.process(node);
+ /* Output the (transformed) node.
+ */
+
+ xml.openTagNoNewline(CaldavTags.calendarData);
+ caldata.process(node, xml);
+ xml.closeTagNoblanks(CaldavTags.calendarData);
+
+ return true;
} catch (WebdavException wde) {
status = wde.getStatusCode();
if (debug && (status != HttpServletResponse.SC_NOT_FOUND)) {
error(wde);
}
- }
-
- if (status != HttpServletResponse.SC_OK) {
- // XXX should be passing status back
return false;
}
-
- /* Output the (transformed) node.
- */
-
- xml.cdataProperty(CaldavTags.calendarData, content);
- return true;
}
if (tag.equals(CaldavTags.maxAttendeesPerInstance)) {
Modified: trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -28,6 +28,7 @@
import org.bedework.caldav.server.sysinterface.CalPrincipalInfo;
import org.bedework.caldav.server.sysinterface.SysIntf;
+import org.bedework.caldav.server.sysinterface.SysIntf.MethodEmitted;
import edu.rpi.cct.webdav.servlet.shared.WdEntity;
import edu.rpi.cct.webdav.servlet.shared.WebdavBadRequest;
@@ -46,10 +47,9 @@
import edu.rpi.sss.util.xml.tagdefs.CaldavTags;
import edu.rpi.sss.util.xml.tagdefs.WebdavTags;
-import net.fortuna.ical4j.model.Calendar;
-
import org.w3c.dom.Element;
+import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -62,12 +62,10 @@
* @author Mike Douglass douglm at rpi.edu
*/
public class CaldavCalNode extends CaldavBwNode {
- private Calendar ical;
+ private CalDAVEvent ical;
private AccessPrincipal owner;
- private String vfreeBusyString;
-
private CurrentAccess currentAccess;
private final static HashMap<QName, PropertyTagEntry> propertyNames =
@@ -270,16 +268,10 @@
* @param fbcal
* @throws WebdavException
*/
- public void setFreeBusy(final Calendar fbcal) throws WebdavException {
+ public void setFreeBusy(final CalDAVEvent fbcal) throws WebdavException {
try {
ical = fbcal;
- if (ical != null) {
- vfreeBusyString = ical.toString();
- } else {
- vfreeBusyString = null;
- }
-
allowsGet = true;
} catch (Throwable t) {
if (debug) {
@@ -289,6 +281,29 @@
}
}
+ @Override
+ public boolean writeContent(final XmlEmit xml,
+ final Writer wtr,
+ final String contentType) throws WebdavException {
+ try {
+ Collection<CalDAVEvent> evs = new ArrayList<CalDAVEvent>();
+
+ evs.add(ical);
+
+ getSysi().writeCalendar(evs,
+ MethodEmitted.noMethod,
+ xml,
+ wtr,
+ contentType);
+ } catch (WebdavException we) {
+ throw we;
+ } catch (Throwable t) {
+ throw new WebdavException(t);
+ }
+
+ return true;
+ }
+
/* (non-Javadoc)
* @see edu.rpi.cct.webdav.servlet.shared.WebdavNsNode#getContentString()
*/
@@ -300,7 +315,7 @@
return null;
}
- return vfreeBusyString;
+ return ical.toString();
}
/* (non-Javadoc)
@@ -331,11 +346,13 @@
*/
@Override
public long getContentLen() throws WebdavException {
- if (vfreeBusyString != null) {
- return vfreeBusyString.length();
+ String s = getContentString();
+
+ if (s == null) {
+ return 0;
}
- return 0;
+ return s.getBytes().length;
}
/* (non-Javadoc)
@@ -343,7 +360,7 @@
*/
@Override
public String getContentType() throws WebdavException {
- if (vfreeBusyString != null) {
+ if (ical != null) {
return "text/calendar; charset=UTF-8";
}
Modified: trunk/server/src/org/bedework/caldav/server/CaldavComponentNode.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavComponentNode.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/CaldavComponentNode.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -26,6 +26,7 @@
package org.bedework.caldav.server;
import org.bedework.caldav.server.sysinterface.SysIntf;
+import org.bedework.caldav.server.sysinterface.SysIntf.MethodEmitted;
import edu.rpi.cct.webdav.servlet.shared.WebdavException;
import edu.rpi.cct.webdav.servlet.shared.WebdavNsIntf;
@@ -44,6 +45,7 @@
import org.w3c.dom.Element;
+import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -441,6 +443,38 @@
*/
@Override
+ public boolean writeContent(final XmlEmit xml,
+ final Writer wtr,
+ final String contentType) throws WebdavException {
+ try {
+ Collection<CalDAVEvent> evs = new ArrayList<CalDAVEvent>();
+
+ evs.add(event);
+
+ MethodEmitted method;
+
+ if ((col.getCalType() == CalDAVCollection.calTypeInbox) ||
+ (col.getCalType() == CalDAVCollection.calTypeOutbox)) {
+ method = MethodEmitted.eventMethod;
+ } else {
+ method = MethodEmitted.noMethod;
+ }
+
+ getSysi().writeCalendar(evs,
+ method,
+ xml,
+ wtr,
+ contentType);
+ } catch (WebdavException we) {
+ throw we;
+ } catch (Throwable t) {
+ throw new WebdavException(t);
+ }
+
+ return true;
+ }
+
+ @Override
public String getContentString() throws WebdavException {
getIcal(); // init content
Modified: trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -44,7 +44,6 @@
import edu.rpi.cct.webdav.servlet.shared.WebdavNsNode;
import edu.rpi.cct.webdav.servlet.shared.WebdavProperty;
import edu.rpi.cct.webdav.servlet.shared.WebdavStatusCode;
-import edu.rpi.cct.webdav.servlet.shared.WebdavNsIntf.Content;
import edu.rpi.sss.util.Util;
import edu.rpi.sss.util.xml.XmlUtil;
import edu.rpi.sss.util.xml.tagdefs.CaldavTags;
@@ -55,9 +54,7 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import java.io.Reader;
import java.io.StringReader;
-import java.io.Writer;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Collection;
@@ -580,8 +577,17 @@
throw new WebdavBadRequest();
}
- intf.getFreeBusy((CaldavCalNode)node, freeBusy, defaultDepth(depth, 0));
+ CaldavCalNode cnode = (CaldavCalNode)node;
+ intf.getFreeBusy(cnode, freeBusy, defaultDepth(depth, 0));
+ resp.setContentLength(-1);
+ try {
+ cnode.writeContent(null, resp.getWriter(), "text/calendar");
+ } catch (Throwable t) {
+ throw new WebdavException(t);
+ }
+
+ /*
Writer out;
try {
out = resp.getWriter();
@@ -590,7 +596,7 @@
}
/** Get the content now to set up length, type etc.
- */
+ * /
Content c = getNsIntf().getContent(req, resp, node);
if ((c == null) || (c.rdr == null)) {
if (debug) {
@@ -607,12 +613,13 @@
writeContent(c.rdr, out);
}
+ */
}
// XXX Make the following part of the interface.
/** size of buffer used for copying content to response.
- */
+ * /
private static final int bufferSize = 4096;
private void writeContent(final Reader in, final Writer out)
@@ -640,6 +647,6 @@
out.close();
} catch (Throwable t) {}
}
- }
+ }*/
}
Modified: trunk/server/src/org/bedework/caldav/server/CaldavResourceNode.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavResourceNode.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/CaldavResourceNode.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -32,10 +32,12 @@
import edu.rpi.cmt.access.PrivilegeDefs;
import edu.rpi.cmt.access.Acl.CurrentAccess;
import edu.rpi.sss.util.DateTimeUtil;
+import edu.rpi.sss.util.xml.XmlEmit;
import org.w3c.dom.Element;
import java.io.InputStream;
+import java.io.Writer;
import javax.xml.namespace.QName;
@@ -277,6 +279,13 @@
* Required webdav properties
* ==================================================================== */
+ @Override
+ public boolean writeContent(final XmlEmit xml,
+ final Writer wtr,
+ final String contentType) throws WebdavException {
+ return false;
+ }
+
/* (non-Javadoc)
* @see edu.rpi.cct.webdav.servlet.shared.WebdavNsNode#getContentBinary()
*/
Modified: trunk/server/src/org/bedework/caldav/server/PostMethod.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/PostMethod.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/PostMethod.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -41,6 +41,7 @@
import edu.rpi.cmt.calendar.IcalDefs.IcalComponentType;
import edu.rpi.sss.util.xml.tagdefs.CaldavTags;
import edu.rpi.sss.util.xml.tagdefs.WebdavTags;
+import edu.rpi.sss.util.xml.tagdefs.XcalTags;
import java.io.Reader;
import java.util.Collection;
@@ -72,9 +73,15 @@
/** */
public String resourceUri;
+ /** from accept header */
+ public String acceptType;
+
+ /** type of request body */
String contentType;
- String[] contentTypePars;
+ /** Broken out content type */
+ public String[] contentTypePars;
+
/** value of the Originator header */
public String originator;
@@ -117,6 +124,8 @@
CalDAVConfig conf = intf.getConfig();
+ acceptType = req.getHeader("ACCEPT");
+
contentType = req.getContentType();
if (contentType != null) {
@@ -456,7 +465,8 @@
*/
/* (CALDAV:supported-calendar-data) */
- if (!pars.contentTypePars[0].equals("text/calendar")) {
+ if (!pars.contentTypePars[0].equals("text/calendar") &&
+ !pars.contentTypePars[0].equals(XcalTags.mimetype)) {
if (debug) {
debugMsg("Bad content type: " + pars.contentType);
}
Modified: trunk/server/src/org/bedework/caldav/server/calquery/CalendarData.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/calquery/CalendarData.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/calquery/CalendarData.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -32,27 +32,29 @@
import edu.rpi.cct.webdav.servlet.shared.WebdavException;
import edu.rpi.cct.webdav.servlet.shared.WebdavNsNode;
import edu.rpi.cct.webdav.servlet.shared.WebdavProperty;
+import edu.rpi.sss.util.xml.XmlEmit;
import edu.rpi.sss.util.xml.XmlUtil;
import edu.rpi.sss.util.xml.tagdefs.CaldavTags;
-
-import java.util.Collection;
-import java.util.Iterator;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.namespace.QName;
-
import net.fortuna.ical4j.model.Calendar;
import net.fortuna.ical4j.model.Component;
import net.fortuna.ical4j.model.ComponentList;
-import net.fortuna.ical4j.model.component.VEvent;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.PropertyList;
+import net.fortuna.ical4j.model.component.VEvent;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
+
/** Class to represent a calendar-query calendar-data element
*
* @author Mike Douglass douglm at rpi.edu
@@ -152,8 +154,8 @@
* @param tag QName name
* @param debug
*/
- public CalendarData(QName tag,
- boolean debug) {
+ public CalendarData(final QName tag,
+ final boolean debug) {
super(tag, null);
this.debug = debug;
}
@@ -198,7 +200,7 @@
* @param nd
* @throws WebdavException
*/
- public void parse(Node nd) throws WebdavException {
+ public void parse(final Node nd) throws WebdavException {
/* Either empty - show everything or
comp + optional (expand-recurrence-set or
limit-recurrence-set)
@@ -272,18 +274,20 @@
/** Given the CaldavBwNode, returns the transformed content.
*
* @param wdnode
- * @return String content
+ * @param xml
* @throws WebdavException
*/
- public String process(WebdavNsNode wdnode) throws WebdavException {
+ public void process(final WebdavNsNode wdnode,
+ final XmlEmit xml) throws WebdavException {
if (!(wdnode instanceof CaldavComponentNode)) {
- return null;
+ return;
}
CaldavComponentNode node = (CaldavComponentNode)wdnode;
if (comp == null) {
- return node.getContentString();
+ node.writeContent(xml, null, returnContentType);
+ return;
}
/** Ensure node exists */
@@ -298,7 +302,8 @@
}
if (comp.getAllcomp()) {
- return node.getContentString();
+ node.writeContent(xml, null, returnContentType);
+ return;
}
// Assume all properties for that level.
@@ -313,23 +318,29 @@
if ("VEVENT".equals(subcomp.getName())) {
if (subcomp.getAllprop()) {
- return node.getContentString();
+ node.writeContent(xml, null, returnContentType);
+ return;
}
- return transformVevent(node.getIcal(), subcomp.getProps());
+ try {
+ xml.cdataValue(transformVevent(node.getIcal(), subcomp.getProps()));
+ } catch (IOException ioe) {
+ throw new WebdavException(ioe);
+ }
+ return;
}
}
// No special instructions.
- return node.getContentString();
+ node.writeContent(xml, null, returnContentType);
}
/* Transform one or more VEVENT objects based on a list of required
* properties.
*/
- private String transformVevent(Calendar ical,
- Collection<Prop> props) throws WebdavException {
+ private String transformVevent(final Calendar ical,
+ final Collection<Prop> props) throws WebdavException {
try {
Calendar nical = new Calendar();
PropertyList pl = ical.getProperties();
@@ -384,7 +395,7 @@
* Private parsing methods
* ==================================================================== */
- private Comp parseComp(Node nd) throws WebdavException {
+ private Comp parseComp(final Node nd) throws WebdavException {
/* Either allcomp + (either allprop or 0 or more prop) or
0 or more comp + (either allprop or 0 or more prop)
*/
@@ -443,7 +454,7 @@
return c;
}
- private Prop parseProp(Node nd) throws WebdavException {
+ private Prop parseProp(final Node nd) throws WebdavException {
NamedNodeMap nnm = nd.getAttributes();
if ((nnm == null) || (nnm.getLength() == 0)) {
@@ -476,7 +487,7 @@
return pr;
}
- private Element[] getChildren(Node nd) throws WebdavException {
+ private Element[] getChildren(final Node nd) throws WebdavException {
try {
return XmlUtil.getElementsArray(nd);
} catch (Throwable t) {
@@ -523,7 +534,7 @@
* @return String
* @throws WebdavException
*/
- public String getOnlyAttrVal(Node nd, String name) throws WebdavException {
+ public String getOnlyAttrVal(final Node nd, final String name) throws WebdavException {
NamedNodeMap nnm = nd.getAttributes();
if ((nnm == null) || (nnm.getLength() != 1)) {
@@ -579,15 +590,15 @@
return log;
}
- protected void debugMsg(String msg) {
+ protected void debugMsg(final String msg) {
getLogger().debug(msg);
}
- protected void logIt(String msg) {
+ protected void logIt(final String msg) {
getLogger().info(msg);
}
- protected void trace(String msg) {
+ protected void trace(final String msg) {
getLogger().debug(msg);
}
}
Modified: trunk/server/src/org/bedework/caldav/server/calquery/FreeBusyQuery.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/calquery/FreeBusyQuery.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/calquery/FreeBusyQuery.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -26,6 +26,7 @@
package org.bedework.caldav.server.calquery;
import org.bedework.caldav.server.CalDAVCollection;
+import org.bedework.caldav.server.CalDAVEvent;
import org.bedework.caldav.server.sysinterface.SysIntf;
import org.bedework.caldav.util.ParseUtil;
import org.bedework.caldav.util.TimeRange;
@@ -35,8 +36,6 @@
import edu.rpi.sss.util.xml.XmlUtil;
import edu.rpi.sss.util.xml.tagdefs.CaldavTags;
-import net.fortuna.ical4j.model.Calendar;
-
import org.apache.log4j.Logger;
import org.w3c.dom.Node;
@@ -93,8 +92,8 @@
* @return BwEvent
* @throws WebdavException
*/
- public Calendar getFreeBusy(final SysIntf sysi, final CalDAVCollection col,
- final int depth) throws WebdavException {
+ public CalDAVEvent getFreeBusy(final SysIntf sysi, final CalDAVCollection col,
+ final int depth) throws WebdavException {
try {
return sysi.getFreeBusy(col, depth, timeRange);
} catch (WebdavException wde) {
Modified: trunk/server/src/org/bedework/caldav/server/get/WebcalGetHandler.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/get/WebcalGetHandler.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/get/WebcalGetHandler.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -30,13 +30,14 @@
import org.bedework.caldav.server.CaldavComponentNode;
import org.bedework.caldav.server.PostMethod.RequestPars;
import org.bedework.caldav.server.sysinterface.SystemProperties;
+import org.bedework.caldav.server.sysinterface.SysIntf.MethodEmitted;
import org.bedework.caldav.util.ParseUtil;
import org.bedework.caldav.util.TimeRange;
import edu.rpi.cct.webdav.servlet.shared.WebdavException;
import edu.rpi.cct.webdav.servlet.shared.WebdavNsIntf;
import edu.rpi.cct.webdav.servlet.shared.WebdavNsNode;
-import edu.rpi.cmt.calendar.ScheduleMethods;
+import edu.rpi.sss.util.xml.tagdefs.XcalTags;
import java.util.ArrayList;
import java.util.Collection;
@@ -115,13 +116,29 @@
}
+ String suffix;
+ String acceptType = pars.acceptType;
+ if (acceptType == null) {
+ acceptType = getSysi().getDefaultContentType();
+ }
+
+ if (acceptType.equals(XcalTags.mimetype)) {
+ // No charset
+ resp.setContentType(acceptType);
+ suffix = ".xcs";
+ } else {
+ resp.setContentType(acceptType + "; charset=UTF-8");
+ suffix = ".ics";
+ }
+
resp.setHeader("Content-Disposition",
"Attachment; Filename=\"" +
- node.getDisplayname() + ".ics\"");
- resp.setContentType("text/calendar; charset=UTF-8");
+ node.getDisplayname() + suffix + "\"");
- getSysi().writeCalendar(evs, ScheduleMethods.methodTypePublish,
- resp.getWriter());
+ getSysi().writeCalendar(evs, MethodEmitted.publish,
+ null,
+ resp.getWriter(),
+ acceptType);
} catch (WebdavException wde) {
throw wde;
} catch (Throwable t) {
Modified: trunk/server/src/org/bedework/caldav/server/sysinterface/SysIntf.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/sysinterface/SysIntf.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/server/src/org/bedework/caldav/server/sysinterface/SysIntf.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -44,6 +44,7 @@
import edu.rpi.cmt.access.Acl;
import edu.rpi.cmt.access.Acl.CurrentAccess;
import edu.rpi.cmt.calendar.ScheduleStates;
+import edu.rpi.sss.util.xml.XmlEmit;
import net.fortuna.ical4j.model.Calendar;
@@ -85,6 +86,13 @@
*/
public SystemProperties getSystemProperties() throws WebdavException;
+ /** Return default content type for this service.
+ *
+ * @return String - never null.
+ * @throws WebdavException
+ */
+ public String getDefaultContentType() throws WebdavException;
+
/** Return the current principal
*
* @return String
@@ -384,12 +392,12 @@
* @param col
* @param depth
* @param timeRange
- * @return Calendar
+ * @return CalDAVEvent - as a freebusy entity
* @throws WebdavException
*/
- public Calendar getFreeBusy(final CalDAVCollection col,
- final int depth,
- final TimeRange timeRange) throws WebdavException;
+ public CalDAVEvent getFreeBusy(final CalDAVCollection col,
+ final int depth,
+ final TimeRange timeRange) throws WebdavException;
/** Check the access for the given entity. Returns the current access
* or null or optionally throws a no access exception.
@@ -612,16 +620,32 @@
*/
public String toIcalString(Calendar cal) throws WebdavException;
+ /** What method do we want emitted */
+ public static enum MethodEmitted {
+ /** No method for calendar */
+ noMethod,
+
+ /** Method from event */
+ eventMethod,
+
+ /** It's a publish */
+ publish
+ }
+
/** Write a collection of events as an ical calendar.
*
* @param evs
- * @param method
- * @param wtr
+ * @param method - what scheduling method?
+ * @param xml - if this is embedded in an xml stream
+ * @param wtr - if standalone output or no xml stream initialized.
+ * @param contentType
* @throws WebdavException
*/
public void writeCalendar(Collection<CalDAVEvent> evs,
- int method,
- Writer wtr) throws WebdavException;
+ MethodEmitted method,
+ XmlEmit xml,
+ Writer wtr,
+ String contentType) throws WebdavException;
/** Expected result type */
public enum IcalResultType {
Modified: trunk/util/src/org/bedework/caldav/util/CalDAVConfig.java
===================================================================
--- trunk/util/src/org/bedework/caldav/util/CalDAVConfig.java 2010-09-09 14:24:11 UTC (rev 465)
+++ trunk/util/src/org/bedework/caldav/util/CalDAVConfig.java 2010-09-15 15:05:09 UTC (rev 466)
@@ -54,6 +54,8 @@
/* Set at server init */
private boolean calWS;
+ private boolean timezonesByReference;
+
/**
* @param val
*/
@@ -168,6 +170,10 @@
*/
public void setCalWS(final boolean val) {
calWS = val;
+
+ if (val) {
+ setTimezonesByReference(true);
+ }
}
/**
@@ -176,4 +182,18 @@
public boolean getCalWS() {
return calWS;
}
+
+ /**
+ * @param val boolean true if we are not including the full tz specification..
+ */
+ public void setTimezonesByReference(final boolean val) {
+ timezonesByReference = val;
+ }
+
+ /**
+ * @return true if we are not including the full tz specification
+ */
+ public boolean getTimezonesByReference() {
+ return timezonesByReference;
+ }
}
More information about the Bedework-commit
mailing list