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

com.payneteasy.superfly.service.impl.releasenotes.ReleaseNotesServiceImpl Maven / Gradle / Ivy

package com.payneteasy.superfly.service.impl.releasenotes;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.commons.digester.Digester;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.xml.sax.SAXException;

import com.payneteasy.superfly.model.releasenotes.Release;
import com.payneteasy.superfly.model.releasenotes.ReleaseItem;
import com.payneteasy.superfly.service.releasenotes.ReleaseNotesService;

public class ReleaseNotesServiceImpl implements ReleaseNotesService {

    private static Logger logger = LoggerFactory.getLogger(ReleaseNotesServiceImpl.class);

    private Resource resource = new ClassPathResource("release-notes.xml");

    private List listReleaseNotes;

    public void setResource(Resource resource) {
        this.resource = resource;
    }

    public synchronized List getReleaseNotes() {
        if (listReleaseNotes == null) {
            listReleaseNotes = new ArrayList();
            Digester digester = new Digester();
            digester.push(listReleaseNotes);
            digester.addObjectCreate("news/release", Release.class);
            digester.addSetProperties("news/release", "number", "number");
            digester.addSetProperties("news/release", "date", "date");
            digester.addObjectCreate("news/release/item", ReleaseItem.class);
            digester.addSetProperties("news/release/item", "type", "type");
            digester.addBeanPropertySetter("news/release/item/name", "name");
            digester.addBeanPropertySetter("news/release/item/description", "description");
            digester.addSetNext("news/release/item/name", "addItem");
            digester.addSetNext("news/release", "add", Release.class.getName());

            try {
                digester.parse(resource.getInputStream());
            } catch (IOException e) {
                logger.error("Could not parse release-notes.xml", e);

            } catch (SAXException e) {
                logger.error("Could not parse release-notes.xml", e);
            }

            listReleaseNotes = Collections.unmodifiableList(listReleaseNotes);
        }

        return listReleaseNotes;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy