Search in sources :

Example 11 with WebdavForbidden

use of org.bedework.webdav.servlet.shared.WebdavForbidden in project bw-calendar-engine by Bedework.

the class BwSysIntfImpl method getFiles.

/* (non-Javadoc)
   * @see org.bedework.caldav.server.SysIntf#getFiles(org.bedework.caldav.server.CalDAVCollection)
   */
@Override
public Collection<CalDAVResource> getFiles(final CalDAVCollection coll) throws WebdavException {
    try {
        Collection<BwResource> bwrs = getSvci().getResourcesHandler().getAll(coll.getPath());
        if (bwrs == null) {
            return null;
        }
        Collection<CalDAVResource> rs = new ArrayList<CalDAVResource>();
        for (BwResource r : bwrs) {
            rs.add(new BwCalDAVResource(this, r));
        }
        return rs;
    } catch (CalFacadeAccessException cfae) {
        throw new WebdavForbidden();
    } catch (CalFacadeException cfe) {
        throw new WebdavException(cfe);
    } catch (Throwable t) {
        throw new WebdavException(t);
    }
}
Also used : CalDAVResource(org.bedework.caldav.server.CalDAVResource) WebdavForbidden(org.bedework.webdav.servlet.shared.WebdavForbidden) BwResource(org.bedework.calfacade.BwResource) ArrayList(java.util.ArrayList) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) CalFacadeAccessException(org.bedework.calfacade.exc.CalFacadeAccessException) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException)

Example 12 with WebdavForbidden

use of org.bedework.webdav.servlet.shared.WebdavForbidden in project bw-calendar-engine by Bedework.

the class BwSysIntfImpl method init.

@Override
public String init(final HttpServletRequest req, final String account, final boolean service, final boolean calWs, final boolean synchWs, final boolean notifyWs, final boolean socketWs, final String opaqueData) throws WebdavException {
    try {
        this.calWs = calWs;
        this.synchWs = synchWs;
        final HttpReqInfo reqi = new HttpReqInfo(req);
        // In case we reinit
        principalInfo = null;
        if (req != null) {
            urlHandler = new UrlHandler(req, !calWs);
        } else {
            urlHandler = new UrlHandler("", null, true);
        }
        // final HttpSession session = req.getSession();
        // final ServletContext sc = session.getServletContext();
        // final String appName = sc.getInitParameter("bwappname");
        // if ((appName == null) || (appName.length() == 0)) {
        // throw new WebdavException("bwappname is not set in web.xml");
        // }
        // Notification service calling?
        final String id;
        final String notePr = reqi.notePr();
        if (notifyWs) {
            id = doNoteHeader(reqi.note(), notePr);
        } else if (socketWs) {
            final String tkn = reqi.socketToken();
            if ((tkn == null) || !tkn.equals(getSystemProperties().getSocketToken())) {
                throw new WebdavForbidden();
            }
            id = reqi.socketPr();
        } else {
            id = account;
        }
        doBedeworkExtensions(reqi.bedeworkExtensions());
        /* Find the mbean and get the config */
        // ObjectName mbeanName = new ObjectName(CalDAVConf.getServiceName(appName));
        // Call to set up ThreadLocal variables
        boolean publicAdmin = false;
        boolean adminCreateEprops = false;
        if (!notifyWs && (opaqueData != null)) {
            final String[] vals = opaqueData.split("\t");
            for (final String val : vals) {
                if (val.startsWith("public-admin=")) {
                    publicAdmin = Boolean.valueOf(val.substring(13));
                    continue;
                }
                if (val.startsWith("adminCreateEprops=")) {
                    adminCreateEprops = Boolean.valueOf(val.substring(18));
                }
            }
        }
        getSvci(id, reqi.runAs(), service, publicAdmin, reqi.clientId(), adminCreateEprops);
        authProperties = svci.getAuthProperties();
        sysProperties = configs.getSystemProperties();
        basicSysProperties = configs.getBasicSystemProperties();
        svci.postNotification(new HttpEvent(SysCode.CALDAV_IN));
        reqInTime = System.currentTimeMillis();
        currentPrincipal = svci.getUsersHandler().getUser(id);
        if (notifyWs && (notePr != null)) {
            final String principalToken = reqi.principalToken();
            if (principalToken == null) {
                throw new WebdavUnauthorized();
            }
            final BwPreferences prefs = svci.getPrefsHandler().get();
            if ((prefs == null) || (prefs.getNotificationToken() == null) || !principalToken.equals(prefs.getNotificationToken())) {
                throw new WebdavUnauthorized();
            }
        }
        return id;
    } catch (final WebdavException we) {
        throw we;
    } catch (final Throwable t) {
        throw new WebdavException(t);
    }
}
Also used : BwPreferences(org.bedework.calfacade.svc.BwPreferences) UrlHandler(org.bedework.webdav.servlet.shared.UrlHandler) WebdavForbidden(org.bedework.webdav.servlet.shared.WebdavForbidden) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) WebdavUnauthorized(org.bedework.webdav.servlet.shared.WebdavUnauthorized) HttpEvent(org.bedework.sysevents.events.HttpEvent)

Example 13 with WebdavForbidden

use of org.bedework.webdav.servlet.shared.WebdavForbidden in project bw-calendar-engine by Bedework.

the class BwSysIntfImpl method updateEvent.

@Override
public void updateEvent(final CalDAVEvent event) throws WebdavException {
    try {
        EventInfo ei = getEvinfo(event);
        getSvci().getEventsHandler().update(ei, false);
    } catch (CalFacadeAccessException cfae) {
        throw new WebdavForbidden();
    } catch (CalFacadeForbidden cff) {
        throw new WebdavForbidden(cff.getQname(), cff.getMessage());
    } catch (CalFacadeException cfe) {
        if (CalFacadeException.duplicateGuid.equals(cfe.getMessage())) {
            throw new WebdavBadRequest("Duplicate-guid");
        }
        throw new WebdavException(cfe);
    } catch (Throwable t) {
        throw new WebdavException(t);
    }
}
Also used : WebdavBadRequest(org.bedework.webdav.servlet.shared.WebdavBadRequest) EventInfo(org.bedework.calfacade.svc.EventInfo) WebdavForbidden(org.bedework.webdav.servlet.shared.WebdavForbidden) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) CalFacadeForbidden(org.bedework.calfacade.exc.CalFacadeForbidden) CalFacadeAccessException(org.bedework.calfacade.exc.CalFacadeAccessException) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException)

Example 14 with WebdavForbidden

use of org.bedework.webdav.servlet.shared.WebdavForbidden in project bw-calendar-engine by Bedework.

the class BwSysIntfImpl method getSyncToken.

@Override
public String getSyncToken(final CalDAVCollection col) throws WebdavException {
    try {
        BwCalendar bwcol = ((BwCalDAVCollection) col).getCol();
        String path = col.getPath();
        if (bwcol.getInternalAlias()) {
            path = bwcol.getAliasTarget().getPath();
        }
        return "data:," + getSvci().getCalendarsHandler().getSyncToken(path);
    } catch (CalFacadeAccessException cfae) {
        throw new WebdavForbidden();
    } catch (CalFacadeException cfe) {
        throw new WebdavException(cfe);
    } catch (Throwable t) {
        throw new WebdavException(t);
    }
}
Also used : WebdavForbidden(org.bedework.webdav.servlet.shared.WebdavForbidden) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) BwCalendar(org.bedework.calfacade.BwCalendar) CalFacadeAccessException(org.bedework.calfacade.exc.CalFacadeAccessException) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException)

Example 15 with WebdavForbidden

use of org.bedework.webdav.servlet.shared.WebdavForbidden in project bw-calendar-engine by Bedework.

the class BwSysIntfImpl method copyMove.

/* (non-Javadoc)
   * @see org.bedework.caldav.server.SysIntf#copyMove(org.bedework.caldav.server.CalDAVCollection, org.bedework.caldav.server.CalDAVCollection, boolean, boolean)
   */
@Override
public void copyMove(final CalDAVCollection from, final CalDAVCollection to, final boolean copy, final boolean overwrite) throws WebdavException {
    try {
        BwCalendar bwFrom = unwrap(from);
        BwCalendar bwTo = unwrap(to);
        if (!copy) {
            /* Move the from collection to the new location "to".
         * If the parent calendar is the same in both cases, this is just a rename.
         */
            if ((bwFrom.getColPath() == null) || (bwTo.getColPath() == null)) {
                throw new WebdavForbidden("Cannot move root");
            }
            if (bwFrom.getColPath().equals(bwTo.getColPath())) {
                // Rename
                getSvci().getCalendarsHandler().rename(bwFrom, to.getName());
                return;
            }
        }
    } catch (CalFacadeAccessException cfae) {
        throw new WebdavForbidden();
    } catch (CalFacadeException cfe) {
        throw new WebdavException(cfe);
    } catch (Throwable t) {
        throw new WebdavException(t);
    }
    throw new WebdavException("unimplemented");
}
Also used : WebdavForbidden(org.bedework.webdav.servlet.shared.WebdavForbidden) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) BwCalendar(org.bedework.calfacade.BwCalendar) CalFacadeAccessException(org.bedework.calfacade.exc.CalFacadeAccessException) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException)

Aggregations

WebdavForbidden (org.bedework.webdav.servlet.shared.WebdavForbidden)21 WebdavException (org.bedework.webdav.servlet.shared.WebdavException)20 CalFacadeException (org.bedework.calfacade.exc.CalFacadeException)15 CalFacadeAccessException (org.bedework.calfacade.exc.CalFacadeAccessException)13 EventInfo (org.bedework.calfacade.svc.EventInfo)8 BwCalendar (org.bedework.calfacade.BwCalendar)7 WebdavBadRequest (org.bedework.webdav.servlet.shared.WebdavBadRequest)7 ArrayList (java.util.ArrayList)6 BwEvent (org.bedework.calfacade.BwEvent)4 SysiIcalendar (org.bedework.caldav.server.SysiIcalendar)3 CalFacadeForbidden (org.bedework.calfacade.exc.CalFacadeForbidden)3 Icalendar (org.bedework.icalendar.Icalendar)3 CalDAVEvent (org.bedework.caldav.server.CalDAVEvent)2 BwResource (org.bedework.calfacade.BwResource)2 ScheduleResult (org.bedework.calfacade.ScheduleResult)2 IcalMalformedException (org.bedework.icalendar.IcalMalformedException)2 UrlHandler (org.bedework.webdav.servlet.shared.UrlHandler)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 InputStream (java.io.InputStream)1