/*
* $Id: WebdavExtendedServlet.java,v 1.8 2009/01/07 11:41:27 tryggvil Exp $
* Created on 31.5.2006 in project com.idega.slide
*
* Copyright (C) 2006 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.slide.webdavservlet;
import java.io.IOException;
import java.util.concurrent.locks.ReentrantLock;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.slide.webdav.WebdavServlet;
import com.idega.servlet.ServletConfigWrapper;
import com.idega.servlet.ServletWrapper;
import com.idega.util.expression.ELUtil;
/**
* <p>
* TODO tryggvil Describe Type WebavExtendedServlet
* </p>
* Last modified: $Date: 2009/01/07 11:41:27 $ by $Author: tryggvil $
*
* @author <a href="mailto:tryggvil@idega.com">tryggvil</a>
* @version $Revision: 1.8 $
*/
public class WebdavExtendedServlet extends ServletWrapper {
private static final long serialVersionUID = 8066220379268246523L;
private static ReentrantLock LOCK = new ReentrantLock();
@Override
protected void initializeServletWrapper(ServletConfig config) {
setServlet(new WebdavServlet());
}
@Override
public void init() throws ServletException{
super.init();
}
/* (non-Javadoc)
* @see com.idega.slide.webdavservlet.ServletWrapper#init(javax.servlet.ServletConfig)
*/
@Override
public void init(ServletConfig config) throws ServletException {
ServletConfig newConfig=config;
String domainparam = config.getInitParameter("domain");
if (domainparam == null || domainparam.equals("autodetect")) {
ServletConfigWrapper wrapperConfig = new ServletConfigWrapper(config.getServletContext(),config.getServletName());
DomainConfig domainConfig = ELUtil.getInstance().getBean(DomainConfig.SPRING_BEAN_IDENTIFIER);
domainConfig.setServletConfig(newConfig);
domainConfig.initialize();
setDefaultConfig(wrapperConfig);
newConfig=wrapperConfig;
}
else {
ServletConfigWrapper wrapperConfig = new ServletConfigWrapper(config);
setDefaultConfig(wrapperConfig);
newConfig=wrapperConfig;
}
super.init(newConfig);
}
/**
* <p>
* Set default init-properties for Slide for idegaWeb if they are not set in web.xml
* </p>
* @param newConfig
*/
private void setDefaultConfig(ServletConfigWrapper newConfig) {
newConfig.setInitParameterIfNotSet("namespace","slide");
newConfig.setInitParameterIfNotSet("scope","");
newConfig.setInitParameterIfNotSet("depth-limit","1000");
newConfig.setInitParameterIfNotSet("default-mime-type","application/octet-stream");
newConfig.setInitParameterIfNotSet("default-servlet","false");
newConfig.setInitParameterIfNotSet("directory-browsing","false");
newConfig.setInitParameterIfNotSet("directory-browsing-hide-acl","true");
newConfig.setInitParameterIfNotSet("directory-browsing-hide-locks","true");
newConfig.setInitParameterIfNotSet("optimizePropfindOutput","true");
newConfig.setInitParameterIfNotSet("debug","0");
newConfig.setInitParameterIfNotSet("extendedAllprop","false");
newConfig.setInitParameterIfNotSet("lockdiscoveryIncludesPrincipalURL","false");
newConfig.setInitParameterIfNotSet("updateLastModified","true");
}
public static synchronized boolean isLocked() {
return LOCK.isLocked();
}
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
LOCK.lock();
try {
super.service(request, response);
} finally {
try {
LOCK.unlock();
} catch (IllegalMonitorStateException e) {}
}
}
}