All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.sling.atom.taglib.FeedTagHandler Maven / Gradle / Ivy

/*
 * 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.sling.atom.taglib;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.jsp.JspException;

import org.apache.abdera.model.Feed;

public class FeedTagHandler extends AbstractAbderaHandler {

    private static final long serialVersionUID = 1L;

    private String baseUri;

    private String icon;

    private String id;

    private String logo;

    public String getLogo() {
        return logo;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

    private String language;

    private Date updated = new Date();

    public String getBaseUri() {
        return baseUri;
    }

    public void setBaseUri(String baseUri) {
        this.baseUri = baseUri;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public Date getUpdated() {
        return updated;
    }

    public void setUpdated(Date updated) {
        this.updated = updated;
    }

    @Override
    public int doEndTag() throws JspException {
        final ServletRequest request = pageContext.getRequest();
        final ServletResponse response = pageContext.getResponse();
        // get the current feed
        Feed feed = getFeed(request);

        // we need tags for that
        /*
         * feed.addEntry(null);
         */

        // write the feed
        try {
            response.setContentType("application/atom+xml");

            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
            Thread.currentThread().setContextClassLoader(
                getClass().getClassLoader());
            try {
                feed.writeTo(response.getOutputStream());
            } finally {
                Thread.currentThread().setContextClassLoader(classLoader);
            }
        } catch (IOException e) {
            throw new JspException("Unable to write feed", e);
        } catch (Exception e) {
            throw new JspException("Unable to write feed", e);
        }
        return super.doEndTag();
    }

    @Override
    public int doStartTag() throws JspException {
        final ServletRequest request = pageContext.getRequest();
        // create a feed
        Feed feed = getFeed(request);

        // setting basic feed properties
        feed.setBaseUri(baseUri);
        feed.setIcon(icon);
        feed.setId(id);
        feed.setLanguage(language);
        feed.setLogo(logo);
        feed.setUpdated(updated);

        return EVAL_BODY_INCLUDE;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy