@Override
	public DataBuffers getFileData(HTTPRequest request) throws HTTPException
	{
		// split the uri by slashes -- the first char is always /!!
		final String[] url = request.getUrlPath().split("/");
		// first thing is to check for servlets
		if(url.length > 1)
		{
			final Class<? extends SimpleServlet> servletClass = config.getServletMan().findServlet(url[1]);
			if(servletClass != null)
			{
				return executeServlet(request,servletClass);
			}
		}

		// not a servlet, so it must be a file path
		final File pageFile = assembleFileRequest(request);
		if(pageFile.isDirectory())
			throw HTTPException.standardException(HTTPStatus.S500_INTERNAL_ERROR);

		final MIMEType mimeType = MIMEType.getMIMEType(pageFile.getName());
		DataBuffers buffers = null;
		try
		{
			buffers = new MWDataBuffers(); // before forming output, process range request
			final Class<? extends HTTPOutputConverter> converterClass=config.getConverters().findConverter(mimeType);
			if(converterClass != null)
			{
				buffers=config.getFileCache().getFileData(pageFile, null);
				//checkIfModifiedSince(request,buffers); this is RETARDED!!!
				HTTPOutputConverter converter;
				try {
					converter = converterClass.newInstance();
					return new MWDataBuffers(converter.convertOutput(config, request, pageFile, HTTPStatus.S200_OK, buffers.flushToBuffer()), System.currentTimeMillis());
				}
				catch (final Exception e) { }
				return buffers;
			}
			else
			{
				return config.getFileCache().getFileData(pageFile, null);
			}
		}
		catch(final HTTPException e)
		{
			buffers.close();
			throw e;
		}
	}