remove implementation classes from api (moved to core.impl

git-svn-id: https://svn.apache.org/repos/asf/lenya/trunk@1033148 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java
deleted file mode 100644
index 20f8514..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Abstract superclass for classes which need access to the page envelope.
- * 
- * The web application URL can be provided in the attribute name, separated by a colon (":").
- */
-public abstract class AbstractPageEnvelopeModule extends OperationModule {
-
-    /**
-     * Get the the page envelope for the given objectModel.
-     * @param objectModel the objectModel for which the page enevelope is requested.
-     * @param name The attribute name.
-     * @return a <code>PageEnvelope</code>
-     * @throws ConfigurationException if the page envelope could not be instantiated.
-     */
-    protected PageEnvelope getEnvelope(Map objectModel, String name) throws ConfigurationException {
-
-        String webappUrl = null;
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        PageEnvelope envelope = (PageEnvelope) request.getAttribute(PageEnvelope.class.getName());
-        if (envelope == null) {
-
-            String[] snippets = name.split(":");
-            if (snippets.length > 1) {
-                webappUrl = snippets[1];
-            } else {
-                webappUrl = ServletHelper.getWebappURI(request);
-            }
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Resolving page envelope for URL [" + webappUrl + "]");
-            }
-
-            String contextPath = request.getContextPath();
-
-            try {
-                Session session = getSession();
-                Publication pub = null;
-                String pubId = new URLInformation(webappUrl).getPublicationId();
-                if (pubId != null && session.existsPublication(pubId)) {
-                    pub = session.getPublication(pubId);
-                }
-                envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(
-                        contextPath,
-                        webappUrl,
-                        pub);
-            } catch (Exception e) {
-                throw new ConfigurationException("Resolving page envelope failed: ", e);
-            }
-            request.setAttribute(PageEnvelope.class.getName(), envelope);
-        }
-        return envelope;
-    }
-
-    /**
-     * @param name The original attribute name.
-     * @return The attribute name without URL attachment.
-     */
-    protected String getAttributeName(String name) {
-        final String[] snippets = name.split(":");
-        return snippets[0];
-    }
-
-}
\ No newline at end of file
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DateConverterModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DateConverterModule.java
deleted file mode 100644
index 583cf0c..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DateConverterModule.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-
-/**
- * The DateConverterModule converts a date string from one format into 
- * another format. 
- * The conversion is defined by the nested elements &lt;src-pattern/&gt; and 
- * &lt;pattern/&gt; of the module declaration.
- *
- */
-public class DateConverterModule extends AbstractInputModule implements ThreadSafe {
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel) throws ConfigurationException {
-        
-        String srcPattern = (String) this.settings.get("src-pattern");
-        String pattern = (String) this.settings.get("pattern");
-        
-        if (modeConf != null) {
-            srcPattern = modeConf.getChild("src-pattern").getValue(srcPattern);
-            pattern = modeConf.getChild("pattern").getValue(pattern);
-        }
-
-        if (srcPattern==null) {
-            throw new ConfigurationException("Source date pattern not specified.");
-        }
-        if (pattern==null) {
-            throw new ConfigurationException("Date pattern not specified.");
-        }
-        
-        try {
-            SimpleDateFormat srcFormat = new SimpleDateFormat(srcPattern); 
-            SimpleDateFormat format = new SimpleDateFormat(pattern);
-            Date date = srcFormat.parse(name);
-            return format.format(date);
-        } catch (Exception e) {
-            throw new ConfigurationException("Could not convert date: "+name, e);
-        }
-    }
-}
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java
deleted file mode 100644
index 04c5444..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/* $Id:$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.Repository;
-import org.apache.lenya.cms.publication.Session;
-
-/**
- * Input module to get document information.
- * {doc-info:{publication-id}:{area}:{uuid}:{document-language}:{property}} where {property} may be:
- * <ul>
- * <li><strong><code>contentLength</code></strong> - the content length (number of bytes).</li>
- * <li><strong><code>expires</code></strong> - the expiration date in ISO 8601 format.</li>
- * <li><strong><code>lastModified</code></strong> - the last modification date in ISO 8601
- * format.</li>
- * <li><strong><code>mimeType</code></strong> - the MIME type</li>
- * <li><strong><code>nodeName</code></strong> - the name of the node in the site structure</li>
- * <li><strong><code>path</code></strong> - the path in the site structure (starting with a
- * slash) or an empty string if the document is not referenced in the site structure.</li>
- * <li><strong><code>resourceType</code></strong> - the name of the resource type</li>
- * <li><strong><code>sourceExtension</code></strong> - the source extension</li>
- * <li><strong><code>visibleInNav</code></strong> - <code>true</code> if the document's node
- * is visible in the navigation, <code>false</code> otherwise.</li>
- * <li><strong><code>webappUrl</code></strong> - the web application URL of the document or
- * an empty string if the document is not referenced in the site structure.</li>
- * </ul>
- */
-public class DocumentInfoModule extends AbstractInputModule {
-    
-    // Input module parameters:
-    protected final static String PARAM_PUBLICATION_ID = "publication-id";
-    protected final static String PARAM_AREA = "area";
-    protected final static String PARAM_UUID = "uuid";
-    protected final static String PARAM_DOCUMENT_LANGUAGE = "document-language";
-    protected final static String PARAM_PROPERTY = "property";
-    protected final static String PARAM_REVISION = "revision";
-    protected final static int MIN_MANDATORY_PARAMS = 5;
-
-    protected final static String UUID = "uuid";
-    protected final static String LANGUAGE = "language";
-    protected final static String PATH = "path";
-    protected final static String NODE_NAME = "nodeName";
-    protected final static String WEBAPP_URL = "webappUrl";
-    protected final static String DOCUMENT_URL = "documentUrl";
-    protected final static String RESOURCE_TYPE = "resourceType";
-    protected final static String LAST_MODIFIED = "lastModified";
-    protected final static String MIME_TYPE = "mimeType";
-    protected final static String CONTENT_LENGTH = "contentLength";
-    protected final static String SOURCE_EXTENSION = "sourceExtension";
-    protected final static String EXPIRES = "expires";
-    protected final static String VISIBLE_IN_NAVIGATION = "visibleInNav";
-
-    protected final static String[] PARAMS = { PARAM_PUBLICATION_ID, PARAM_AREA, PARAM_UUID,
-            PARAM_DOCUMENT_LANGUAGE, PARAM_PROPERTY, PARAM_REVISION };
-
-    protected final static String META_RESOURCE_TYPE = "resourceType";
-    protected final static String META_EXPIRES = "expires";
-
-    protected SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
-    
-    private Repository repository;
-    
-    /**
-     * Parse the parameters and return a document.
-     * @param publicationId The publication ID.
-     * @param area The area.
-     * @param uuid The document UUID.
-     * @param language The document language.
-     * @param revision The revision.
-     * @param objectModel The object model.
-     * @return The document object created.
-     * @throws ConfigurationException
-     */
-    protected Document getDocument(String publicationId, String area, String uuid, String language,
-            int revision, Map objectModel) throws ConfigurationException {
-        Document document = null;
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        try {
-            Session session = this.repository.getSession(request);
-            Publication pub = session.getPublication(publicationId);
-            document = pub.getArea(area).getDocument(uuid, language, revision);
-        } catch (Exception e) {
-            throw new ConfigurationException("Error getting document [" + publicationId + ":"
-                    + area + ":" + uuid + ":" + language + "]: " + e.getMessage(), e);
-        }
-        return document;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object value = null;
-
-        InputModuleParameters params = new InputModuleParameters(name, PARAMS, MIN_MANDATORY_PARAMS);
-        
-        try {
-            int rev = -1;
-            if (params.isParameter(PARAM_REVISION)) {
-                String revision = params.getParameter(PARAM_REVISION);
-                if (!revision.equals("")) {
-                    rev = Integer.valueOf(revision).intValue();
-                }
-            }
-
-            Document document = getDocument(params.getParameter(PARAM_PUBLICATION_ID), params
-                    .getParameter(PARAM_AREA), params.getParameter(PARAM_UUID), params
-                    .getParameter(PARAM_DOCUMENT_LANGUAGE), rev, objectModel);
-            
-            String attribute = params.getParameter(PARAM_PROPERTY);
-
-            if (attribute.equals(RESOURCE_TYPE)) {
-                value = document.getResourceType().getName();
-            } else if (attribute.equals(LAST_MODIFIED)) {
-                value = this.dateFormat.format(new Date(document.getLastModified()));
-            } else if (attribute.equals(MIME_TYPE)) {
-                value = document.getMimeType();
-            } else if (attribute.equals(CONTENT_LENGTH)) {
-                value = Long.toString(document.getContentLength());
-            } else if (attribute.equals(SOURCE_EXTENSION)) {
-                value = document.getSourceExtension();
-            } else if (attribute.equals(LANGUAGE)) {
-                value = document.getLanguage();
-            } else if (attribute.equals(PATH)) {
-                value = document.getPath();
-            } else if (attribute.equals(NODE_NAME)) {
-                value = document.getName();
-            } else if (attribute.equals(UUID)) {
-                value = document.getUUID();
-            } else if (attribute.equals(WEBAPP_URL)) {
-                value = document.getCanonicalWebappURL();
-            } else if (attribute.equals(DOCUMENT_URL)) {
-                value = document.getCanonicalDocumentURL();
-            } else if (attribute.equals(EXPIRES)) {
-                try {
-                    Date expires = document.getExpires();
-                    value = this.dateFormat.format(expires);
-                } catch (DocumentException e) {
-                    throw new ConfigurationException("Error getting expires date from document.", e);
-                }
-            } else if (attribute.equals(VISIBLE_IN_NAVIGATION)) {
-                value = Boolean.toString(isVisibleInNavigation(document));
-            } else {
-                throw new ConfigurationException("Attribute '" + attribute + "' not supported ["
-                        + name + "]");
-            }
-        } catch (ConfigurationException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new ConfigurationException("Error getting input module parameters.", e);
-        }
-
-        return value;
-    }
-
-    protected boolean isVisibleInNavigation(Document document) throws ConfigurationException {
-        try {
-            return document.getLink().getNode().isVisible();
-        } catch (DocumentException e) {
-            throw new ConfigurationException("Obtaining navigation visibility failed [" + document
-                    + "]: " + e.getMessage(), e);
-        }
-
-    }
-
-    public void setRepository(Repository repository) {
-        this.repository = repository;
-    }
-
-    public Repository getRepository() {
-        return repository;
-    }
-}
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentURLModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentURLModule.java
deleted file mode 100644
index 610e170..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentURLModule.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.cms.publication.util.DocumentHelper;
-
-/**
- * <p>
- * This module constructs the document url taking into account difference in the language .version
- * being created and used.
- * </p>
- * <p>
- * Example:
- * <code>{document-url:{page-envelope:area}:{page-envelope:document-uuid}:{page-envelope:document-language}}</code>
- * </p>
- * @version $Id$
- */
-public class DocumentURLModule extends AbstractPageEnvelopeModule {
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        String url;
-
-        final String[] attributes = name.split(":");
-
-        if (attributes.length < 3) {
-            throw new ConfigurationException("Invalid number of parameters: " + attributes.length
-                    + ". Expected 3 (area, document-uuid, language)");
-        }
-
-        final String area = attributes[0];
-        final String uuid = attributes[1];
-        final String language = attributes[2];
-
-        try {
-            DocumentHelper helper = new DocumentHelper(objectModel);
-            url = helper.getDocumentUrl(uuid, area, language);
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
-        }
-
-        return url;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-        return objects;
-    }
-
-}
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/FallbackModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/FallbackModule.java
deleted file mode 100644
index d09133f..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/FallbackModule.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.commons.lang.Validate;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.store.impl.MRUMemoryStore;
-import org.apache.lenya.cms.cocoon.source.FallbackSourceFactory;
-import org.apache.lenya.cms.publication.Repository;
-import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * <p>
- * This module returns the actual source URI of a fallback:// source. The protocol (fallback,
- * template-fallback, ...) is configurable via the <em>protocol</em> parameter.
- * </p>
- */
-public class FallbackModule extends AbstractInputModule {
-
-    private String protocol;
-    protected MRUMemoryStore store;
-    private Repository repository;
-    private SourceResolver resolver;
-    private static Boolean useCache = null;
-
-    public void setRepository(Repository repo) {
-        this.repository = repo;
-    }
-
-    protected boolean useCache() {
-        return this.store != null;
-    }
-
-    public void setStore(MRUMemoryStore store) {
-        Validate.notNull(store);
-        this.store = store;
-    }
-
-    protected MRUMemoryStore getStore() {
-        return this.store;
-    }
-
-    protected String getPublicationId(Map objectModel) {
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        String webappUri = ServletHelper.getWebappURI(request);
-        URLInformation info = new URLInformation(webappUri);
-        String pubId = null;
-        try {
-            Session session = this.repository.getSession(request);
-            String pubIdCandidate = info.getPublicationId();
-            if (pubIdCandidate != null && session.existsPublication(pubIdCandidate)) {
-                pubId = pubIdCandidate;
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return pubId;
-    }
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        String uri;
-        String fallbackUri = getFallbackUri(name);
-        if (useCache()) {
-            final String pubId = getPublicationId(objectModel);
-            String cacheKey = FallbackSourceFactory.getCacheKey(pubId, fallbackUri);
-            MRUMemoryStore store = getStore();
-            if (store.containsKey(cacheKey)) {
-                uri = (String) store.get(cacheKey);
-            } else {
-                uri = resolveSourceUri(name);
-            }
-        } else {
-            uri = resolveSourceUri(name);
-        }
-        return uri;
-    }
-
-    protected String resolveSourceUri(String name) throws ConfigurationException {
-        Source source = null;
-        try {
-            source = this.resolver.resolveURI(getFallbackUri(name));
-            return source.getURI();
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving fallback source [" + name + "] failed: ", e);
-        } finally {
-            if (source != null) {
-                this.resolver.release(source);
-            }
-        }
-    }
-
-    protected String getFallbackUri(String name) {
-        return this.protocol + "://" + name;
-    }
-
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-        return objects;
-    }
-
-    public void setProtocol(String protocol) {
-        Validate.notNull(protocol);
-        this.protocol = protocol;
-    }
-    
-    public void setSourceResolver(SourceResolver resolver) {
-        this.resolver = resolver;
-    }
-
-}
\ No newline at end of file
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/InputModuleParameters.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/InputModuleParameters.java
deleted file mode 100644
index 2ab073d..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/InputModuleParameters.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/* $Id:$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-
-/**
- * Input module parameter class.
- * Parses input module parameters and offers accessors for the parameters.
- * The parameters are expected to be separated by ":".
- */
-public class InputModuleParameters {
-    
-    protected final static char PARAM_SEPARATOR = ':';
-    
-    protected Parameters params;
-    protected final String[] paramList;
-    
-    /**
-     * Parse input module parameters. 
-     * @param parameters Parameter to be parsed.
-     * @param paramList List of expected parameters.
-     * @param minParams Minimum number of parameters expected.
-     * @throws ConfigurationException if there is an error parsing the parameters.
-     */
-    public InputModuleParameters(String parameters, final String[] paramList, int minParams)
-    throws ConfigurationException
-    {
-        params = new Parameters();
-        this.paramList = (String[])paramList.clone();
-        parseParameters(parameters, minParams);
-    }
-    
-    /**
-     * Parse parameters according to the parameter list passed.
-     * @param parameters
-     * @param minParams Minimum number of parameters.
-     * @return Parameters object initialized with parsed parameters.
-     * @throws ConfigurationException
-     */
-    protected Parameters parseParameters(String parameters, int minParams)
-    throws ConfigurationException
-    {
-        // Parse parameters
-        int start = 0;
-        int end = parameters.indexOf(PARAM_SEPARATOR);
-        for (int i=0; i<paramList.length; i++) {
-            if (end != -1) {
-                String paramToken = parameters.substring(start, end);
-                params.setParameter(paramList[i], paramToken);
-                start = end+1;
-                end = parameters.indexOf(PARAM_SEPARATOR, start+1);
-            } else {
-                if ((i+1) < minParams) {
-                    // A mandatory parameter is missing.
-                    throw new ConfigurationException("Error parsing parameters: mandatory parameter '"
-                            + paramList[i] + "' not found [" + parameters + "]");
-                } else if (i == 0) {
-                    // Zero or one parameter passed.
-                    if (parameters.length() != 0) {
-                        params.setParameter(paramList[i], parameters);
-                    }
-                    break;
-                } else {
-                    // All parameters parsed except the last one.
-                    String paramToken = parameters.substring(start);
-                    if (paramToken.length() != 0) {
-                        params.setParameter(paramList[i], paramToken);
-                    }
-                    break;
-                }
-            }
-        }
-        return params;
-    }
-    
-    /**
-     * Get a parameter.
-     * @param param Name of requested parameter.
-     * @return Requested parameter.
-     * @throws ParameterException if the specified parameter cannot be found
-     */
-    public String getParameter(String param) throws ParameterException
-    {
-        return params.getParameter(param);
-    }
-    
-    /**
-     * Does a parameter with given name exists?
-     * @param param Parameter name.
-     * @return True if parameters exists, otherwise false.
-     */
-    public boolean isParameter(String param) {
-        return params.isParameter(param);
-    }
-}
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/OperationModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/OperationModule.java
deleted file mode 100644
index b90d45a..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/OperationModule.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.processing.ProcessInfoProvider;
-import org.apache.cocoon.spring.configurator.WebAppContextUtils;
-import org.apache.lenya.cms.publication.Repository;
-import org.apache.lenya.cms.publication.Session;
-
-/**
- * Super class for operation-based input modules.
- * 
- * @version $Id$
- */
-public class OperationModule extends AbstractInputModule {
-
-    private Repository repository;
-    private org.apache.lenya.cms.publication.Session session;
-
-    protected Session getSession() {
-        if (this.session == null) {
-            ProcessInfoProvider processInfo = (ProcessInfoProvider) WebAppContextUtils
-                    .getCurrentWebApplicationContext().getBean(ProcessInfoProvider.ROLE);
-            HttpServletRequest request = processInfo.getRequest();
-            this.session = this.getRepository().getSession(request);
-        }
-        return this.session;
-    }
-
-    public void setRepository(Repository repository) {
-        this.repository = repository;
-    }
-
-    public Repository getRepository() {
-        return repository;
-    }
-
-}
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
deleted file mode 100644
index 1058c29..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.net.MalformedURLException;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.commons.lang.StringUtils;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Input module wrapping the page envelope. This module provides publication
- * related information such as document-uuid, area, publication-id.
- * 
- * @see org.apache.lenya.cms.publication.PageEnvelope
- * @deprecated use DocumentInfoModule instead.
- */
-public class PageEnvelopeModule extends AbstractPageEnvelopeModule {
-
-    protected static final String URI_PARAMETER_DOCTYPE = "doctype";
-    
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object getAttribute(final String attributeName, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        final String name = getAttributeName(attributeName);
-
-        if (!Arrays.asList(PageEnvelope.PARAMETER_NAMES).contains(name)) {
-            throw new ConfigurationException("The attribute [" + name + "] is not supported!");
-        }
-
-        PageEnvelope envelope = getEnvelope(objectModel, attributeName);
-        Object value = null;
-
-        try {
-            if (name.equals(PageEnvelope.AREA)) {
-                value = envelope.getArea();
-            } else if (name.equals(PageEnvelope.CONTEXT)) {
-                value = envelope.getContext();
-            } else if (name.equals(PageEnvelope.IS_PUBLICATION)) {
-                value = Boolean.toString(envelope.getPublication() != null);
-            } else if (name.equals(PageEnvelope.PUBLICATION_ID)) {
-                Publication pub = envelope.getPublication();
-                value = pub != null ? pub.getId() : "";
-            } else if (name.equals(PageEnvelope.PUBLICATION)) {
-                value = envelope.getPublication();
-            } else if (name.equals(PageEnvelope.PUBLICATION_LANGUAGES_CSV)) {
-                value = StringUtils.join(envelope.getPublication().getLanguages(), ',');
-            } else if (name.equals(PageEnvelope.DEFAULT_LANGUAGE)) {
-                value = envelope.getPublication().getDefaultLanguage();
-            } else if (name.equals(PageEnvelope.LANGUAGE)) {
-                value = envelope.getLanguage();
-            } else if (name.equals(PageEnvelope.BREADCRUMB_PREFIX)) {
-                value = envelope.getPublication().getBreadcrumbPrefix();
-            } else if (name.equals(PageEnvelope.DOCUMENT_PATH)) {
-                value = getPath(envelope, objectModel);
-            } else {
-                Document document = envelope.getDocument();
-                if (document != null) {
-                    if (name.equals(PageEnvelope.DOCUMENT)) {
-                        value = document;
-                    } else if (name.equals(PageEnvelope.DOCUMENT_ID)) {
-                        getLogger().warn(
-                                "This attribute [ " + name + " ] is deprecated."
-                                        + " Use document-path or document-uuid instead!");
-                        value = document.getUUID();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_PARENT)) {
-                        value = document.getLocator().getParent().getPath();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_NAME)) {
-                        value = document.getName();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LABEL)) {
-                        value = document.getLink().getLabel();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_URL)) {
-                        value = document.getCanonicalDocumentURL();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_URL_WITHOUT_LANGUAGE)) {
-                        value = document.getCanonicalWebappURL();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_EXTENSION)) {
-                        value = document.getExtension();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_SOURCE_EXTENSION)) {
-                        value = document.getSourceExtension();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_UUID)) {
-                        value = document.getUUID();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LANGUAGE)) {
-                        value = document.getLanguage();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LANGUAGES)) {
-                        value = document.getLanguages();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LANGUAGES_CSV)) {
-                        value = StringUtils.join(document.getLanguages(), ',');
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LASTMODIFIED)) {
-                        Date date = new Date(document.getLastModified());
-                        value = new SimpleDateFormat(DATE_FORMAT).format(date);
-                    } else if (name.equals(PageEnvelope.DOCUMENT_MIME_TYPE)) {
-                        value = document.getMimeType();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_TYPE)) {
-                        ResourceType resourceType = document.getResourceType();
-                        if (resourceType == null) {
-                            value = null;
-                        } else {
-                            value = resourceType.getName();
-                        }
-                    }
-                }
-            }
-        } catch (final Exception e) {
-            throw new ConfigurationException("Getting attribute for name [" + name + "] failed: ",
-                    e);
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Returning [" + name + "] = [" + value + "]");
-        }
-
-        return value;
-    }
-
-    protected String getPath(PageEnvelope envelope, Map objectModel) throws SiteException {
-        String path;
-        Document doc = envelope.getDocument();
-        if (doc == null) {
-            Publication pub = envelope.getPublication();
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            String url = ServletHelper.getWebappURI(request);
-            DocumentLocator loc;
-            try {
-                loc = pub.getDocumentBuilder().getLocator(pub.getSession(), url);
-            } catch (MalformedURLException e) {
-                throw new SiteException(e);
-            }
-            path = loc.getPath();
-        } else {
-            path = doc.getLocator().getPath();
-        }
-        return path;
-    }
-
-    /**
-     * <code>DATE_FORMAT</code> The date format
-     */
-    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss Z";
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Arrays.asList(PageEnvelope.PARAMETER_NAMES).iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-
-        return objects;
-    }
-
-}
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java
deleted file mode 100644
index c40ab46..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Checks if a certain resource exists and returns either the string "true" or "false".
- * @version $Id$
- */
-public class ResourceExistsModule extends AbstractInputModule implements Serviceable, Disposable {
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        String resourceURI = name;
-
-        Source source = null;
-        boolean exists = false;
-        try {
-            source = this.resolver.resolveURI(resourceURI);
-            exists = source.exists();
-        } catch (SourceNotFoundException e) {
-            exists = false;
-        } catch (Exception e) {
-            getLogger().warn("Exception resolving resource [" + resourceURI + "]", e);
-            exists = false;
-        } finally {
-            if (source != null) {
-                this.resolver.release(source);
-            }
-        }
-
-        return Boolean.toString(exists);
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    private ServiceManager manager;
-    private SourceResolver resolver;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-        this.resolver = (SourceResolver) _manager.lookup(SourceResolver.ROLE);
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-        this.manager.release(this.resolver);
-        this.resolver = null;
-        this.manager = null;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object result = this.getAttribute(name, modeConf, objectModel);
-        return (result == null ? null : new Object[] { result });
-    }
-
-}
\ No newline at end of file
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
deleted file mode 100644
index c80abdf..0000000
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.commons.lang.StringUtils;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.Repository;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.publication.ResourceTypeResolver;
-import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * <p>
- * Resource type module.
- * </p>
- * <p>
- * The syntax is either <code>{resource-type:&lt;attribute&gt;}</code> (which uses the resource type
- * of the currenlty requested document) or
- * <code>{resource-type:&lt;name&gt;:&lt;attribute&gt;}</code> (which allows to access an arbitrary
- * resource type).
- * </p>
- * <p>
- * Attributes:
- * </p>
- * <ul>
- * <li><strong><code>expires</code></strong> - the expiration date in RFC 822/1123 format, see
- * {@link org.apache.lenya.cms.publication.ResourceType#getExpires()}</li>
- * <li><strong><code>schemaUri</code></strong> - see {@link org.apache.lenya.xml.Schema#getURI()}</li>
- * <li><strong><code>httpSchemaUri</code></strong> - the URI to request the schema over HTTP,
- * without Proxy and context (use {proxy:} around it).</li>
- * <li><strong><code>supportsFormat:{format}</code></strong> - true if the resource type supports
- * this format, false otherwise</li>
- * </ul>
- */
-public class ResourceTypeModule extends AbstractInputModule {
-
-    protected static final String SCHEMA_URI = "schemaUri";
-    protected static final String HTTP_SCHEMA_URI = "httpSchemaUri";
-    protected static final String EXPIRES = "expires";
-    protected static final String SUPPORTS_FORMAT = "supportsFormat";
-
-    private Repository repository;
-    private ResourceTypeResolver resourceTypeResolver;
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object value = null;
-
-        try {
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            Session session = this.repository.getSession(request);
-
-            ResourceType resourceType;
-            Publication pub = null;
-            String attribute;
-
-            String[] steps = name.split(":");
-            if (steps.length == 1) {
-                String webappUrl = ServletHelper.getWebappURI(request);
-                Document document = session.getUriHandler().getDocument(webappUrl);
-                pub = document.getPublication();
-
-                attribute = name;
-                resourceType = document.getResourceType();
-            } else {
-                attribute = steps[1];
-                String resourceTypeName = steps[0];
-                resourceType = getResourceTypeResolver().getResourceType(resourceTypeName);
-            }
-
-            if (attribute.startsWith("format-")) {
-                String[] formatSteps = name.split("-");
-                String format = formatSteps[1];
-                value = resourceType.getFormatURI(format);
-            } else if (attribute.equals(SCHEMA_URI)) {
-                value = resourceType.getSchema().getURI();
-            } else if (attribute.equals(HTTP_SCHEMA_URI)) {
-                String uri = resourceType.getSchema().getURI();
-                value = transformFallbackUriToHttp(pub.getId(), uri);
-            } else if (attribute.equals(EXPIRES)) {
-                Date expires = resourceType.getExpires();
-                SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss zzz");
-                value = sdf.format(expires);
-            } else if (attribute.equals(SUPPORTS_FORMAT)) {
-                String format = steps[steps.length - 1];
-                String[] formats = resourceType.getFormats();
-                return Boolean.toString(Arrays.asList(formats).contains(format));
-            } else {
-                throw new ConfigurationException("Attribute [" + name + "] not supported!");
-            }
-
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
-        }
-
-        return value;
-    }
-
-    /**
-     * Transforms a fallback URI for resources into a HTTP URL.
-     * 
-     * Currently only supports module urls:
-     * 
-     * fallback://lenya/modules/foo/resources/schemas/bar.rng ->
-     * prefix/pubid/modules/foo/schemas/bar.rng
-     * 
-     * FIXME: allow other kind of fallback URIs
-     * 
-     * @param pubid publication id of the current document
-     * @param prefix prefix which will be prepended to the resulting URL
-     * @param uri fallback uri, must start with fallback://
-     * @return A string.
-     * @throws ConfigurationException
-     */
-    protected String transformFallbackUriToHttp(String pubid, String uri)
-            throws ConfigurationException {
-        if (uri.startsWith("fallback://lenya/modules/")) {
-            String path = StringUtils.substringAfter(uri, "fallback://lenya/modules/");
-            String module = StringUtils.substringBefore(path, "/");
-            path = StringUtils.substringAfter(path, module + "/resources");
-            return "/" + pubid + "/modules/" + module + path;
-        } else {
-            throw new ConfigurationException("Don't know how to create HTTP URL from : " + uri);
-        }
-    }
-
-    public void setResourceTypeResolver(ResourceTypeResolver resourceTypeResolver) {
-        this.resourceTypeResolver = resourceTypeResolver;
-    }
-
-    public ResourceTypeResolver getResourceTypeResolver() {
-        return resourceTypeResolver;
-    }
-
-    public void setRepository(Repository repository) {
-        this.repository = repository;
-    }
-
-}
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
index 8e598c7..3061260 100644
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
+++ b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
@@ -45,6 +45,8 @@
 
 /**
  * @version $Id$
+ * @deprecated use o.a.l.utils.SourceUtil instead see the usage of sourceutils.checkin and checkout functions not keep in o.a.l.utils.SourceUtil
+ * because they are related to lenyaDocument and not really to sources
  */
 public final class SourceUtil {
 
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java
index d92a9e4..1148f20 100644
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java
+++ b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java
@@ -41,7 +41,13 @@
 import org.xml.sax.SAXException;
 
 /**
- * Servlet utility class.
+ * Servlet utility class
+ * 
+ * @deprecated use org.apache.lenya.utils.ServletHelper instead because 
+ * this class return the current servlet and with the C2.2 servlet protocol, we don't retrieve the "main" servlet (associated to the browser url)
+ *  but the servlet generated by the servlet protocol.
+ * we may have to build a servletHelper that allow to navigate throw the servlet stack and have information on each servlet. 
+ * .
  */
 public final class ServletHelper {
 
@@ -81,6 +87,7 @@
      * @return A string.
      */
     public static String getWebappURI(String context, String requestUri) {
+        
         if (context == null) {
             context = "";
         }
@@ -88,8 +95,8 @@
         if (url.length() > 0 && !url.startsWith("/")) {
             url = "/" + url;
         }
-
         return url;
+        
     }
 
     /**
diff --git a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/DocumentHelper.java b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/DocumentHelper.java
index baffa93..d3189bb 100644
--- a/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/DocumentHelper.java
+++ b/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/DocumentHelper.java
@@ -54,6 +54,8 @@
 /**
  * Various utility methods to work with JAXP.
  * @version $Id$
+ * 
+ * @deprecated use o.a.l.utils.xml.DocumentHelper instead
  */
 public class DocumentHelper {