/* * 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 services; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.Unmarshaller; import org.oasisopen.sca.annotation.Init; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import com.example.ipo.jaxb.Item; import com.example.ipo.jaxb.JiraData; import com.example.ipo.jaxb.Milestone; import com.example.ipo.jaxb.Plan; import com.example.ipo.jaxb.RSS; import com.example.ipo.jaxb.WorkItem; import com.example.ipo.jaxb.JiraRSS; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.io.FeedException; import com.sun.syndication.io.SyndFeedInput; import com.sun.syndication.io.XmlReader; public class PlanViewImpl implements PlanView { private com.example.ipo.jaxb.Plan _p = null; static String rssPrefix = "http://issues.apache.org/jira/si/jira.issueviews:issue-xml/"; // TUSCANY-1178/TUSCANY-1178.xml @Init public void init() { } private Plan getPlan() { if (_p == null) { try { JAXBContext jaxbContext = JAXBContext .newInstance("com.example.ipo.jaxb"); Unmarshaller m = jaxbContext.createUnmarshaller(); File inputFile = new File("src/main/resources/jiraSideBand.xml") .getAbsoluteFile(); // Reader r = new XMLReader() // InputSource s = new InputSource(r); _p = ((JAXBElement) m.unmarshal(inputFile)).getValue(); augment_plan(_p); } catch (Exception e) { e.printStackTrace(); } finally { } } return _p; } private void augment_plan(Plan plan) { for(Milestone m : plan.getMilestone()) { for (WorkItem wi: m.getWorkItem()) { String jira = wi.getJira(); if(jira != null) { String feed = rssPrefix += jira + "/" + jira + ".xml"; JiraData jd = new JiraData(); wi.setJiraData(jd); jd.setID(jira); try { JAXBContext jaxbContext = JAXBContext .newInstance("com.example.ipo.jaxb"); Unmarshaller m2 = jaxbContext.createUnmarshaller(); // File inputFile = new File("src/main/resources/exampleJira.xml") // .getAbsoluteFile(); // // RSS j = ((JAXBElement) m2.unmarshal(inputFile)).getValue(); InputStream is = null; RSS j; try{ URL url = new URL("http://issues.apache.org/jira/si/jira.issueviews:issue-xml/"+jira+"/"+jira+".xml"); is = url.openStream(); j = ((JAXBElement) m2.unmarshal(is)).getValue(); } finally { if(is != null) is.close(); } Item i = j.getChannel().getItem(); System.out.println(i.toString()); List> c = i.getContent(); for (JAXBElement element : c) { if("title".equals(element.getName().getLocalPart())) { String jtitle = (String)element.getValue(); jd.setTitle(jtitle.substring(jtitle.indexOf(']')+1, jtitle.length())); } else if("status".equals(element.getName().getLocalPart())){ jd.setStatus((String)element.getValue()); } else if("assignee".equals(element.getName().getLocalPart())) { jd.setAssignedTo((String)element.getValue()); } } } catch (Exception e) { e.printStackTrace(); } finally { } } } } } public Plan get() { com.example.ipo.jaxb.Plan modelplan = getPlan(); // dto.Plan dtoplan = new dto.Plan(modelplan); return modelplan; } }