io.milton.http.webdav2.UnlockHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of milton-server-ent Show documentation
Show all versions of milton-server-ent Show documentation
Milton Enterprise: Supports DAV level 2 and above, including Caldav and Carddav. Available on AGPL or
commercial licenses
The newest version!
/*
* Copyright 2012 McEvoy Software Ltd.
*/
package io.milton.http.webdav2;
import io.milton.http.ExistingEntityHandler;
import io.milton.http.HttpManager;
import io.milton.resource.Resource;
import io.milton.http.Response;
import io.milton.resource.LockableResource;
import io.milton.http.Request;
import io.milton.http.ResourceHandlerHelper;
import io.milton.http.exceptions.PreConditionFailedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.milton.http.Request.Method;
import io.milton.http.exceptions.BadRequestException;
import io.milton.http.exceptions.ConflictException;
import io.milton.http.exceptions.NotAuthorizedException;
import io.milton.http.webdav.WebDavResponseHandler;
import io.milton.webdav.utils.LockUtils;
public class UnlockHandler implements ExistingEntityHandler {
private final Logger log = LoggerFactory.getLogger(UnlockHandler.class);
private final ResourceHandlerHelper resourceHandlerHelper;
private final WebDavResponseHandler responseHandler;
public UnlockHandler( ResourceHandlerHelper resourceHandlerHelper, WebDavResponseHandler responseHandler ) {
this.resourceHandlerHelper = resourceHandlerHelper;
this.responseHandler = responseHandler;
}
@Override
public void process( HttpManager httpManager, Request request, Response response ) throws ConflictException, NotAuthorizedException, BadRequestException {
resourceHandlerHelper.process( httpManager, request, response, this );
}
@Override
public void processResource( HttpManager manager, Request request, Response response, Resource r ) throws NotAuthorizedException, ConflictException, BadRequestException {
resourceHandlerHelper.processResource( manager, request, response, r, this );
}
@Override
public void processExistingResource( HttpManager manager, Request request, Response response, Resource resource ) throws NotAuthorizedException, BadRequestException, ConflictException {
LockableResource r = (LockableResource) resource;
String sToken = request.getLockTokenHeader();
sToken = LockUtils.parse(sToken);
// this should be checked in processResource now
// if( r.getCurrentLock() != null &&
// !sToken.equals( r.getCurrentLock().tokenId) &&
// isLockedOut( request, resource ))
// {
// //Should this be unlocked easily? With other tokens?
// response.setStatus(Status.SC_LOCKED);
// log.info("cant unlock with token: " + sToken);
// return;
// }
log.debug("unlocking token: " + sToken);
try {
r.unlock( sToken );
responseHandler.respondNoContent( resource, response, request );
} catch( PreConditionFailedException ex ) {
responseHandler.respondPreconditionFailed( request, response, resource );
}
}
@Override
public String[] getMethods() {
return new String[]{Method.UNLOCK.code};
}
@Override
public boolean isCompatible( Resource handler ) {
return handler instanceof LockableResource;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy