lenya/src/java/org/apache/lenya/cms/cocoon/components/modules/input PageEnvelopeModule.java,NONE,1.1

Andreas Hartmann <[email protected]> Fri, 16 May 2003 17:17:01 +0200
Newsgroups gmane.comp.cms.wyona.cvs
Message-ID <[email protected]>
Update of /repository/lenya/src/java/org/apache/lenya/cms/cocoon/components/modules/input
In directory erbium:/tmp/cvs-serv29519/src/java/org/apache/lenya/cms/cocoon/components/modules/input

Added Files:
	PageEnvelopeModule.java 
Log Message:
- added PageEnvelopeModule
- PublicationFactory for creating Publication objects

--- NEW FILE: PageEnvelopeModule.java ---
/*
 * PageEnvelopeModule.java
 *
 * Created on 16. Mai 2003, 12:40
 */

package org.apache.lenya.cms.cocoon.components.modules.input;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.cocoon.ProcessingException;
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.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeException;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationFactory;

/**
 *
 * @author  andreas
 */
public class PageEnvelopeModule
    extends AbstractInputModule {
        
    protected PageEnvelope getEnvelope(Map objectModel) {
        
        PageEnvelope envelope = null;
        
        try {
            Publication publication = PublicationFactory.getPublication(objectModel);
            Request request = ObjectModelHelper.getRequest(objectModel);
            envelope = new PageEnvelope(publication, request);
        }
        catch (Exception e) {
            getLogger().error("Resolving page envelope failed: ", e);
        }
        
        return envelope;
    }
        
    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
        throws ConfigurationException {
            
        PageEnvelope envelope = getEnvelope(objectModel);
        Object value = null;
            
        if (name.equals(PageEnvelope.AREA)) {
            value = envelope.getArea();
        }
        if (name.equals(PageEnvelope.CONTEXT)) {
            value = envelope.getContext();
        }
        if (name.equals(PageEnvelope.PUBLICATION_ID)) {
            value = envelope.getPublication().getId();
        }
        if (name.equals(PageEnvelope.DOCUMENT_ID)) {
            value = envelope.getDocumentId();
        }
        if (name.equals(PageEnvelope.DOCUMENT_URL)) {
            value = envelope.getDocumentURL();
        }
        return value;
    }
    
    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
        throws ConfigurationException {
            
        return Arrays.asList(PageEnvelope.PARAMETER_NAMES).iterator();
    }
    
    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
        throws ConfigurationException {
        
        Object objects[] = { getAttribute(name, modeConf, objectModel) };
        return objects;
    }
    
}