diff options
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 |