Stworzenie metody setAllElements w Czytniku RSS

0

Siemano. Stworzyłem taki amatorski Czytnik RSS. Moje metody były olbrzymie i dlatego pewien użytkownik poradził mi, żebym rozbił to na mniejsze metody które robią jedną czynność. Także wyciągnąłem z metody kilka Stringów, otwieranie Url i tworzenie czytanie Eventów, ale mam problem z wyciągnięciem przypisania Elementów do tablicy. Dostaje "NullPointerException" Wszystko wygląda tak:

import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.XMLEvent;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by Maciek on 2015-11-15.
 */
public class RSSFeedParser {

    private static final String TITLE = "title";
    private static final String DESCRIPTION = "description";
    private static final String LANGUAGE = "language";
    private static final String COPYRIGHT = "copyright";
    private static final String LINK = "link";
    private static final String AUTHOR = "author";
    private static final String ITEM = "item";
    private static final String PUB_DATE = "pubDate";
    private static final String GUID = "guid";
    private static String description = "";
    private static String title = "";
    private static String link = "";
    private static String language = "";
    private static String copyright = "";
    private static String author = "";
    private static String pubDate = "";
    private static String guid = "";

    public InputStream in;
    private XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    private XMLEventReader eventReader;


    final URL url;

    public RSSFeedParser(String feedUrl) {
        try {
            url = new URL(feedUrl);
            in = read();
            eventReader = inputFactory.createXMLEventReader(in);
            read().close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public Feed readFeed() {
        Feed feed = null;
        try {
            boolean isFeedHeader = true;
            while (eventReader.hasNext()) {
                XMLEvent event = eventReader.nextEvent();
                if (event.isStartElement()) {
                    String localPart = event.asStartElement().getName().getLocalPart();
                    switch (localPart) {
                        case ITEM:
                            if (isFeedHeader) {
                                isFeedHeader = false;
                                feed = new Feed(title, link, description, language, copyright, pubDate);
                            }
                            event = eventReader.nextEvent();
                            break;
                        case TITLE:
                            title = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                        case DESCRIPTION:
                            description = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                        case LINK:
                            link = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                        case GUID:
                            guid = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                        case LANGUAGE:
                            language = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                        case AUTHOR:
                            author = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                        case PUB_DATE:
                            pubDate = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                        case COPYRIGHT:
                            copyright = getCharacterData(event, eventReader);
                            eventReader.close();
                            break;
                    }
                    eventReader.close();
                } else if (event.isEndElement()) {
                    if (event.asEndElement().getName().getLocalPart() == (ITEM)) {
                        FeedMessage message = new FeedMessage();
                        message.setAuthor(author);
                        message.setDescription(description);
                        message.setGuid(guid);
                        message.setLink(link);
                        message.setTitle(title);
                        feed.getMessages().add(message);
                    }
                    //NULL POINTER EXCEPTION:
//                        getLastElemnet();
//                    }
                }
            }

        } catch (XMLStreamException e) {
            throw new RuntimeException(e);
        }
        return feed;
    }
// NULLPOINTEREXCEPTION:
//    public Feed setAllElements() throws XMLStreamException {
//        Feed feed = null;
//        FeedMessage message = new FeedMessage();
//        message.setAuthor(author);
//        message.setDescription(description);
//        message.setGuid(guid);
//        message.setLink(link);
//        message.setTitle(title);
//        feed.getMessages().add(message);
//        return feed;
//    }


    private InputStream read() throws XMLStreamException {
        try {
            return url.openStream();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private String getCharacterData(XMLEvent event, XMLEventReader eventReader) throws XMLStreamException {
        String results = "";
        event = eventReader.nextEvent();
        if (event instanceof Characters) {
            results = event.asCharacters().getData();
        }
        return results;
    }
}
1
public Feed setAllElements() throws XMLStreamException {
       Feed feed = null; // NO TO JEST MEGA CIEKAWE DLACZEGO DOSTAJESZ NULL POINTER EXCEPTION SKORO TUTAJ TEN FEED JEST NULLEM 
        FeedMessage message = new FeedMessage();
        message.setAuthor(author);
        message.setDescription(description);
        message.setGuid(guid);
        message.setLink(link);
        message.setTitle(title);
        feed.getMessages().add(message);
        return feed;
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1