summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sandbox/kgoodson/jagg/src/main/java/launch/Launch.java40
-rw-r--r--sandbox/kgoodson/jagg/src/main/java/services/Item.java54
-rw-r--r--sandbox/kgoodson/jagg/src/main/java/services/JiraQuery.java8
-rw-r--r--sandbox/kgoodson/jagg/src/main/java/services/JiraQueryImpl.java74
-rw-r--r--sandbox/kgoodson/jagg/src/main/java/services/PlanView.java34
-rw-r--r--sandbox/kgoodson/jagg/src/main/java/services/PlanViewImpl.java159
-rw-r--r--sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xml42
-rw-r--r--sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xsd103
8 files changed, 514 insertions, 0 deletions
diff --git a/sandbox/kgoodson/jagg/src/main/java/launch/Launch.java b/sandbox/kgoodson/jagg/src/main/java/launch/Launch.java
new file mode 100644
index 0000000000..dce7431349
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/java/launch/Launch.java
@@ -0,0 +1,40 @@
+/*
+ * 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 launch;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+
+public class Launch {
+ public static void main(String[] args) throws Exception {
+ System.out.println("Starting ...");
+ String contribution = ContributionLocationHelper.getContributionLocation(Launch.class);
+ Node node = NodeFactory.newInstance().createNode("plan.composite", new Contribution("test", contribution));
+ node.start();
+ System.out.println("plan.composite running");
+ System.in.read();
+ System.out.println("Stopping ...");
+ node.stop();
+ node.destroy();
+ System.out.println();
+ }
+}
diff --git a/sandbox/kgoodson/jagg/src/main/java/services/Item.java b/sandbox/kgoodson/jagg/src/main/java/services/Item.java
new file mode 100644
index 0000000000..d89712a791
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/java/services/Item.java
@@ -0,0 +1,54 @@
+/*
+ * 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;
+
+public class Item {
+ private String name;
+ private String price;
+
+ public Item() {
+ }
+
+ public Item(String name, String price) {
+ this.name = name;
+ this.price = price;
+ }
+
+ public Item(String name) {
+ this(name,"0.00");
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPrice() {
+ return price;
+ }
+
+ public void setPrice(String price) {
+ this.price = price;
+ }
+
+}
diff --git a/sandbox/kgoodson/jagg/src/main/java/services/JiraQuery.java b/sandbox/kgoodson/jagg/src/main/java/services/JiraQuery.java
new file mode 100644
index 0000000000..1b3d79f119
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/java/services/JiraQuery.java
@@ -0,0 +1,8 @@
+package services;
+
+import java.util.Collection;
+
+public interface JiraQuery {
+ public Collection<String> getJiraIDs();
+ public String getTitle(String ID);
+}
diff --git a/sandbox/kgoodson/jagg/src/main/java/services/JiraQueryImpl.java b/sandbox/kgoodson/jagg/src/main/java/services/JiraQueryImpl.java
new file mode 100644
index 0000000000..14931a1989
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/java/services/JiraQueryImpl.java
@@ -0,0 +1,74 @@
+package services;
+import java.io.IOException;
+import java.lang.String;
+import java.lang.reflect.Array;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+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 JiraQueryImpl implements JiraQuery {
+
+ private String rssfeed = null;
+ private HashMap entries = null;
+
+ public JiraQueryImpl() {
+
+ }
+
+ public JiraQueryImpl(String rssfeed) throws Exception {
+ this.rssfeed = rssfeed;
+
+ }
+ public Collection<String> getJiraIDs() {
+ try {
+ refreshFeedData();
+ } catch (IllegalArgumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (MalformedURLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (FeedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return entries.keySet();
+ }
+ public String getTitle(String ID) {
+ return ((SyndEntry)entries.get(ID)).getTitle();
+ }
+ private void refreshFeedData() throws IllegalArgumentException, MalformedURLException, FeedException, IOException {
+
+
+ SyndFeedInput input = new SyndFeedInput();
+ SyndFeed feed = input.build(new XmlReader(new URL(rssfeed)));
+
+ entries = new HashMap();
+
+ for(Object entry: feed.getEntries()){
+ SyndEntry syndEntry = (SyndEntry)entry;
+ String id = jiraNumber(syndEntry.getTitle());
+ entries.put(id, syndEntry);
+ }
+
+ }
+
+ private String jiraNumber(String title) {
+ String[] id = title.split("[\\[\\]]");
+ return id[1];
+ }
+
+}
diff --git a/sandbox/kgoodson/jagg/src/main/java/services/PlanView.java b/sandbox/kgoodson/jagg/src/main/java/services/PlanView.java
new file mode 100644
index 0000000000..2387da0519
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/java/services/PlanView.java
@@ -0,0 +1,34 @@
+/*
+ * 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 org.oasisopen.sca.annotation.Remotable;
+
+import com.example.ipo.jaxb.MileStone;
+import com.example.ipo.jaxb.PlanDTO;
+import com.example.ipo.jaxb.WorkItem;
+
+@Remotable
+public interface PlanView {
+
+ MileStone[] get();
+ MileStone[] getMilestones();
+ WorkItem[] getMilestoneWorkitems(String msid);
+} \ No newline at end of file
diff --git a/sandbox/kgoodson/jagg/src/main/java/services/PlanViewImpl.java b/sandbox/kgoodson/jagg/src/main/java/services/PlanViewImpl.java
new file mode 100644
index 0000000000..478b72dc07
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/java/services/PlanViewImpl.java
@@ -0,0 +1,159 @@
+/*
+ * 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.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Unmarshaller;
+
+import org.oasisopen.sca.annotation.Init;
+
+import com.example.ipo.jaxb.MileStone;
+import com.example.ipo.jaxb.Milestones;
+import com.example.ipo.jaxb.Plan;
+import com.example.ipo.jaxb.PlanDTO;
+import com.example.ipo.jaxb.WorkItem;
+import com.example.ipo.jaxb.WorkItems;
+
+public class PlanViewImpl implements PlanView {
+
+ private Plan _p = null;
+ private Map<String, MileStone> _milestoneMap = null;
+ private Map<String, WorkItem> _workItemMap = null;
+
+ @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();
+
+ _p = ((JAXBElement<Plan>) m.unmarshal(inputFile)).getValue();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ }
+
+ }
+ return _p;
+ }
+
+ private Map<String , MileStone> getMileStoneMap()
+ {
+ if(_milestoneMap == null) {
+ _milestoneMap = new HashMap<String, MileStone>();
+
+ Plan p = getPlan();
+ List<MileStone> ms = p.getMilestones().getMilestone();
+ for (Iterator<MileStone> iterator = ms.iterator(); iterator.hasNext();) {
+ MileStone mileStone = iterator.next();
+ _milestoneMap.put(mileStone.getID(), mileStone);
+ }
+ }
+ return _milestoneMap;
+ }
+
+ private Map<String, WorkItem> getWorkItemMap()
+ {
+ if(_workItemMap == null) {
+ _workItemMap = new HashMap<String, WorkItem>();
+
+ Plan p = getPlan();
+ List<WorkItem> ms = p.getWorkitems().getWorkitem();
+ for (Iterator<WorkItem> iterator = ms.iterator(); iterator.hasNext();) {
+ WorkItem workItem = iterator.next();
+ _workItemMap.put(workItem.getID(), workItem);
+ }
+ }
+ return _workItemMap;
+ }
+
+
+
+ public MileStone[] getMilestones() {
+
+ List<MileStone> ms = null;
+ Plan p = getPlan();
+ ms = p.getMilestones().getMilestone();
+ MileStone[] ma = new MileStone[(ms.size())];
+ ms.toArray(ma);
+
+ return ma;
+ }
+
+ public WorkItem[] getMilestoneWorkitems(String msid) {
+ Map<String,MileStone> msmap = getMileStoneMap();
+ Map<String,WorkItem> wimap = getWorkItemMap();
+ MileStone ms = msmap.get(msid);
+ List<String> wirefs = ms.getWorkItem();
+
+ WorkItem[] retval = new WorkItem[wirefs.size()];
+ int i=0;
+ for (Iterator<String> iterator = wirefs.iterator(); iterator.hasNext();) {
+ String wiref = iterator.next();
+ retval[i] = wimap.get(wiref);
+ i++;
+ }
+
+ return retval;
+ }
+
+ public MileStone[] get() {
+ Plan p = getPlan();
+
+
+ Milestones ms = p.getMilestones();
+ WorkItems ws = p.getWorkitems();
+
+ MileStone[] plan = new MileStone[ms.getMilestone().size()];
+
+
+ int i=0;
+ List<MileStone> lm = ms.getMilestone();
+
+ for (MileStone mileStone : lm) {
+ plan[i++] = mileStone;
+ }
+
+// List<WorkItem> lw = ws.getWorkitem();
+//
+// for (WorkItem workItem : lw) {
+// plan[i++] = workItem;
+// }
+
+
+ return plan;
+ }
+
+} \ No newline at end of file
diff --git a/sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xml b/sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xml
new file mode 100644
index 0000000000..0d534adce6
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jagg:plan xmlns:jagg="http://www.example.com/tracking" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/tracking JiraSideband.xsd ">
+ <milestones>
+ <milestone ID="V8_M5I14a">
+ <dueDate>2001-01-01</dueDate>
+ <deliveredby>deliveredby</deliveredby>
+ <note>note</note>
+ <workItem>ENHANCE_ART_PROC_PERF</workItem>
+ <workItem>CONTRIBS_IDENT_SPEC_VERS</workItem>
+ <workItem>SUPPORT_REFS_ON_OTHERS</workItem>
+ </milestone>
+ </milestones>
+ <workitems>
+ <workitem>
+ <ID>ENHANCE_ART_PROC_PERF</ID>
+ <responsible>LR</responsible>
+ <dueDate>2001-01-01</dueDate>
+ <jira>TUSCANY-3395</jira>
+ <status>status</status>
+ <repository_vid>repository_vid</repository_vid>
+ <note>note</note>
+ </workitem>
+ <workitem>
+ <ID>CONTRIBS_IDENT_SPEC_VERS</ID>
+ <responsible>LR</responsible>
+ <dueDate>2001-01-01</dueDate>
+ <jira>TUSCANY-3397</jira>
+ <status>status</status>
+ <repository_vid>repository_vid</repository_vid>
+ <note>note</note>
+ </workitem>
+ <workitem>
+ <ID>SUPPORT_REFS_ON_OTHERS</ID>
+ <responsible>LR</responsible>
+ <dueDate>2001-01-01</dueDate>
+ <jira>TUSCANY-2850</jira>
+ <status>status</status>
+ <repository_vid>repository_vid</repository_vid>
+ <note>note</note>
+ </workitem>
+ </workitems>
+</jagg:plan>
diff --git a/sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xsd b/sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xsd
new file mode 100644
index 0000000000..06bab086d3
--- /dev/null
+++ b/sandbox/kgoodson/jagg/src/main/resources/JiraSideband.xsd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+<xsd:schema targetNamespace="http://www.example.com/tracking"
+ xmlns:jagg="http://www.example.com/tracking"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="plan" type="jagg:Plan"></xsd:element>
+
+ <xsd:complexType name="Plan">
+ <xsd:sequence>
+ <xsd:element name="milestones" type="jagg:Milestones" maxOccurs="1" minOccurs="1"></xsd:element>
+ <xsd:element name="workitems" type="jagg:WorkItems" maxOccurs="1" minOccurs="1"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="WorkItem">
+ <xsd:annotation>
+ <xsd:documentation>The milestone or deliverable name that we require this function for</xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="ID" type="xsd:ID"></xsd:element>
+ <xsd:element name="responsible" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
+ <xsd:element name="dueDate" type="xsd:date"
+ nillable="true" maxOccurs="1" minOccurs="0">
+ </xsd:element>
+ <xsd:element name="jira" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
+ <xsd:element name="status" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
+
+ <xsd:element name="repository_vid" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
+ <xsd:element name="note" type="xsd:string" maxOccurs="1" minOccurs="0">
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="MileStone">
+
+ <xsd:sequence>
+ <xsd:element name="dueDate" type="xsd:date"></xsd:element>
+
+ <xsd:element name="deliveredby" type="xsd:string"
+ maxOccurs="1" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+ A tuscany source code repository branch name or
+ repository version number
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="note" type="xsd:string" maxOccurs="1"
+ minOccurs="0">
+ </xsd:element>
+ <xsd:element name="workItem" type="xsd:string" maxOccurs="unbounded" minOccurs="0"></xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="ID" type="xsd:ID"></xsd:attribute>
+ </xsd:complexType>
+
+ <xsd:complexType name="Milestones">
+ <xsd:sequence>
+ <xsd:element name="milestone" type="jagg:MileStone" maxOccurs="unbounded" minOccurs="0"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="WorkItems">
+ <xsd:sequence>
+ <xsd:element name="workitem" type="jagg:WorkItem" maxOccurs="unbounded" minOccurs="0"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="foo">
+ <xsd:sequence>
+ <xsd:element name="bar" type="xsd:string"></xsd:element>
+ <xsd:element name="fred" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="a" type="xsd:string"></xsd:attribute>
+ <xsd:attribute name="b" type="xsd:string"></xsd:attribute>
+ </xsd:complexType>
+
+ <xsd:complexType name="PlanDTO">
+ <xsd:sequence>
+ <xsd:element name="milestones" type="jagg:MileStone" maxOccurs="unbounded" minOccurs="0"></xsd:element>
+ <xsd:element name="workitems" type="jagg:WorkItem" maxOccurs="unbounded" minOccurs="0"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema> \ No newline at end of file