You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2007/06/01 17:22:52 UTC

svn commit: r543501 [1/2] - in /incubator/tuscany/sandbox/slaws/feed-aggregator: ./ src/main/java/org/apache/tuscany/sca/samples/aggregator/ src/main/resources/ src/main/resources/aggregator/ src/main/webapp/ src/main/webapp/META-INF/ src/main/webapp/W...

Author: slaws
Date: Fri Jun  1 08:22:50 2007
New Revision: 543501

URL: http://svn.apache.org/viewvc?view=rev&rev=543501
Log:
Adding JSONRPC binding

Added:
    incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.png   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertTypeNonSDOImpl.java   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsTypeNonSDOImpl.java   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/ConfigTypeNonSDOImpl.java   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerServiceImpl.java   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/SourceTypeNonSDOImpl.java   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/FeedAggregator.html   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/META-INF/
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/META-INF/sca-contribution.xml   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/WEB-INF/
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/WEB-INF/web.xml   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/pop.png   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/rss.png   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/service.smd   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/sources.smd   (with props)
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/webapp/style.css   (with props)
Removed:
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/resources/aggregator/
Modified:
    incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.svg
    incubator/tuscany/sandbox/slaws/feed-aggregator/pom.xml
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsServiceImpl.java
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesService.java
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesServiceImpl.java
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerService.java
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/resources/Alerts.xsd
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/resources/AlertsSources.wsdl
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/resources/alerts.composite
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/resources/sources.xml
    incubator/tuscany/sandbox/slaws/feed-aggregator/src/test/java/org/apache/tuscany/sca/samples/aggregator/AlertsTestCase.java

Added: incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.png
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.png?view=auto&rev=543501
==============================================================================
Binary file - no diff available.

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Modified: incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.svg
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.svg?view=diff&rev=543501&r1=543500&r2=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.svg (original)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/aggregator.svg Fri Jun  1 08:22:50 2007
@@ -15,7 +15,10 @@
    inkscape:version="0.44"
    sodipodi:docbase="C:\simon\Projects\Tuscany\java\sandbox\slaws\feed-aggregator"
    sodipodi:docname="aggregator.svg"
-   version="1.0">
+   version="1.0"
+   inkscape:export-filename="C:\simon\Projects\Tuscany\java\sandbox\slaws\feed-aggregator\aggregator.png"
+   inkscape:export-xdpi="52.84"
+   inkscape:export-ydpi="52.84">
   <defs
      id="defs4" />
   <sodipodi:namedview
@@ -30,13 +33,13 @@
      inkscape:pageshadow="2"
      inkscape:zoom="0.98994949"
      inkscape:cx="559.53502"
-     inkscape:cy="508.6155"
+     inkscape:cy="380.79143"
      inkscape:document-units="px"
-     inkscape:current-layer="g1887"
+     inkscape:current-layer="layer1"
      inkscape:window-width="1231"
      inkscape:window-height="883"
-     inkscape:window-x="39"
-     inkscape:window-y="33" />
+     inkscape:window-x="68"
+     inkscape:window-y="15" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -57,13 +60,13 @@
        transform="matrix(0.493398,0,0,0.905393,32.49726,0.213099)">
       <rect
          rx="15.307091"
-         ry="9.1542854"
-         y="192.00235"
+         ry="11.608842"
+         y="192.00241"
          x="258.31146"
-         height="216.37401"
+         height="274.39081"
          width="495.71429"
          id="rect2067"
-         style="opacity:1;fill:#90baf4;fill-opacity:1;stroke:#060000;stroke-width:2.99235129;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+         style="opacity:1;fill:#90baf4;fill-opacity:1;stroke:#060000;stroke-width:2.99235177;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
       <flowRoot
          id="flowRoot2954"
          xml:space="preserve"
@@ -76,14 +79,14 @@
              id="rect2958" /></flowRegion><flowPara
            id="flowPara2960">DisplayComposite - PHP</flowPara></flowRoot>    </g>
     <rect
-       style="fill:#317fed;fill-opacity:1;stroke:#060000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       style="fill:#317fed;fill-opacity:1;stroke:#060000;stroke-width:2.00000024;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
        id="rect2988"
        width="115.66247"
-       height="85.862968"
+       height="155.56354"
        x="224.91631"
-       y="240.73904"
+       y="240.73917"
        rx="6.9961648"
-       ry="7.1230249" />
+       ry="12.905249" />
     <flowRoot
        xml:space="preserve"
        id="flowRoot2966"
@@ -105,32 +108,32 @@
        ry="0" />
     <path
        style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 207.76582,272.58604 L 241.10086,272.58604 L 247.16177,285.71802 L 240.09071,297.83986 L 207.76582,297.83986 L 215.34197,285.71802 L 207.76582,272.58604 z "
+       d="M 207.76582,260.46421 L 241.10086,260.46421 L 247.16177,273.59619 L 240.09071,285.71803 L 207.76582,285.71803 L 215.34197,273.59619 L 207.76582,260.46421 z "
        id="path3017" />
     <path
        style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 321.01826,270.74776 L 354.3533,270.74776 L 360.41421,283.87974 L 353.34315,296.00158 L 321.01826,296.00158 L 328.59441,283.87974 L 321.01826,270.74776 z "
+       d="M 321.01826,362.74776 L 354.3533,362.74776 L 360.41421,375.87974 L 353.34315,388.00158 L 321.01826,388.00158 L 328.59441,375.87974 L 321.01826,362.74776 z "
        id="path3019" />
     <path
        style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 132.44488,264.3248 L 176.05464,264.3248 L 183.98368,284.1425 L 174.73314,302.43577 L 132.44488,302.43577 L 142.35619,284.1425 L 132.44488,264.3248 z "
+       d="M 132.44488,252.20297 L 176.05464,252.20297 L 183.98368,272.02067 L 174.73314,290.31394 L 132.44488,290.31394 L 142.35619,272.02067 L 132.44488,252.20297 z "
        id="path1883" />
     <path
        style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 373.8733,262.18185 L 423.52701,262.18185 L 432.55495,284.97097 L 422.02236,306.0071 L 373.8733,306.0071 L 385.15824,284.97097 L 373.8733,262.18185 z "
+       d="M 373.8733,354.18185 L 423.52701,354.18185 L 432.55495,376.97097 L 422.02236,398.0071 L 373.8733,398.0071 L 385.15824,376.97097 L 373.8733,354.18185 z "
        id="path1885" />
     <g
        id="g1887"
        transform="matrix(0.493398,0,0,0.905393,374.2831,0.162271)">
       <rect
          rx="27.634869"
-         ry="15.337877"
-         y="192.00246"
+         ry="18.594875"
+         y="192.0024"
          x="258.31131"
-         height="362.53162"
+         height="439.5152"
          width="894.9447"
          id="rect1889"
-         style="opacity:1;fill:#90baf4;fill-opacity:1;stroke:#060000;stroke-width:2.99235106;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+         style="opacity:1;fill:#90baf4;fill-opacity:1;stroke:#060000;stroke-width:2.99235058;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
       <flowRoot
          id="flowRoot1891"
          xml:space="preserve"
@@ -143,53 +146,50 @@
              id="rect1895" /></flowRegion><flowPara
            id="flowPara1897">AlerterComposite - Java</flowPara></flowRoot>    </g>
     <rect
-       style="fill:#317fed;fill-opacity:1;stroke:#060000;stroke-width:2.00000024;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       style="fill:#317fed;fill-opacity:1;stroke:#060000;stroke-width:2.00000119;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
        id="rect1899"
        width="115.66247"
-       height="121.21833"
+       height="237.38606"
        x="566.70215"
-       y="240.68829"
+       y="313.41953"
        rx="6.9961648"
-       ry="10.056037" />
+       ry="19.693087" />
     <flowRoot
        xml:space="preserve"
        id="flowRoot1901"
-       transform="translate(299.1114,34.74967)"><flowRegion
+       transform="translate(294.0606,125.6634)"><flowRegion
          id="flowRegion1903"><rect
            id="rect1905"
            width="170"
            height="61.42857"
            x="281.42856"
            y="212.66591" /></flowRegion><flowPara
-         id="flowPara1907">Alerter</flowPara></flowRoot>    <rect
+         id="flowPara1907">AlertsService</flowPara><flowPara
+         id="flowPara2023" /></flowRoot>    <rect
        style="opacity:1;fill:#fff62c;fill-opacity:1;stroke:#060000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
        id="rect1909"
        width="21.718224"
        height="20.708065"
-       x="612.66406"
-       y="225.03084"
+       x="611.65393"
+       y="302.81259"
        rx="10.859112"
        ry="0" />
     <path
        style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 549.55163,272.53523 L 582.88667,272.53523 L 588.94758,285.66721 L 581.87652,297.78905 L 549.55163,297.78905 L 557.12778,285.66721 L 549.55163,272.53523 z "
+       d="M 549.55163,364.53523 L 582.88667,364.53523 L 588.94758,377.66721 L 581.87652,389.78905 L 549.55163,389.78905 L 557.12778,377.66721 L 549.55163,364.53523 z "
        id="path1911" />
     <path
        style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 662.80407,270.69695 L 696.13911,270.69695 L 702.20002,283.82893 L 695.12896,295.95077 L 662.80407,295.95077 L 670.38022,283.82893 L 662.80407,270.69695 z "
+       d="M 662.80407,336.35687 L 696.13911,336.35687 L 702.20002,349.48885 L 695.12896,361.61069 L 662.80407,361.61069 L 670.38022,349.48885 L 662.80407,336.35687 z "
        id="path1913" />
     <path
        style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 474.23069,264.27399 L 517.84045,264.27399 L 525.76949,284.09169 L 516.51895,302.38496 L 474.23069,302.38496 L 484.142,284.09169 L 474.23069,264.27399 z "
+       d="M 474.23069,356.27399 L 517.84045,356.27399 L 525.76949,376.09169 L 516.51895,394.38496 L 474.23069,394.38496 L 484.142,376.09169 L 474.23069,356.27399 z "
        id="path1915" />
-    <path
-       style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 913.64901,260.11073 L 963.30272,260.11073 L 972.33071,282.89985 L 961.79807,303.93598 L 913.64901,303.93598 L 924.93395,282.89985 L 913.64901,260.11073 z "
-       id="path1917" />
     <flowRoot
        xml:space="preserve"
        id="flowRoot1919"
-       transform="translate(-136.1038,64.54669)"><flowRegion
+       transform="translate(-136.1038,52.42486)"><flowRegion
          id="flowRegion1921"><rect
            id="rect1923"
            width="170"
@@ -199,7 +199,7 @@
          id="flowPara1925">rest</flowPara></flowRoot>    <flowRoot
        xml:space="preserve"
        id="flowRoot1927"
-       transform="translate(110.8013,65.36407)"><flowRegion
+       transform="translate(110.8013,157.3641)"><flowRegion
          id="flowRegion1929"><rect
            id="rect1931"
            width="170"
@@ -208,53 +208,28 @@
            y="212.66591" /></flowRegion><flowPara
          id="flowPara1933">soap</flowPara></flowRoot>    <path
        style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 182.85715,283.3802 L 215,283.3802"
+       d="M 182.85715,271.25837 L 215,271.25837"
        id="path1941" />
     <path
        style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 359.28572,283.3802 L 385,283.3802"
+       d="M 359.28572,375.3802 L 385,375.3802"
        id="path1943" />
     <path
        style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 432.14286,284.80877 L 482.85715,284.09448"
+       d="M 432.14286,376.80877 L 482.85715,376.09448"
        id="path1945" />
     <path
        style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 525,284.09448 L 557.14286,284.09448"
+       d="M 525,376.09448 L 557.14286,376.09448"
        id="path1947" />
     <path
        style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 701.42857,283.3802 L 727.14286,282.66591"
+       d="M 524.65209,283.3802 L 727.14307,282.66591"
        id="path1949" />
-    <g
-       id="g1965"
-       transform="translate(-161.4285,-182.8571)">
-      <rect
-         ry="6.2971425"
-         rx="7.4499478"
-         y="442.66592"
-         x="221.42857"
-         height="44.285713"
-         width="48.57143"
-         id="rect1959"
-         style="opacity:1;fill:none;fill-opacity:1;stroke:#060000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6, 1;stroke-dashoffset:0;stroke-opacity:1" />
-      <path
-         id="path1961"
-         d="M 215,436.23734 L 276.42857,436.95163 L 276.42857,491.23734 L 213.57143,491.23734 L 215,436.23734 z "
-         style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <path
-         id="path1963"
-         d="M 275.71429,491.23734 L 287.85714,504.80877 L 203.57143,504.09448 L 214.28571,491.95163"
-         style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    </g>
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 115,283.3802 L 140.71429,283.3802"
-       id="path1970" />
     <flowRoot
        xml:space="preserve"
        id="flowRoot1921"
-       transform="translate(206.326,64.44333)"><flowRegion
+       transform="translate(206.326,156.4433)"><flowRegion
          id="flowRegion1923"><rect
            id="rect1925"
            width="170"
@@ -263,66 +238,237 @@
            y="212.66591" /></flowRegion><flowPara
          id="flowPara1927">soap</flowPara></flowRoot>    <path
        style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 664.17529,313.26442 L 697.51033,313.26442 L 703.57124,326.3964 L 696.50018,338.51824 L 664.17529,338.51824 L 671.75144,326.3964 L 664.17529,313.26442 z "
+       d="M 668.2159,379.93449 L 701.55094,379.93449 L 707.61185,393.06647 L 700.54079,405.18831 L 668.2159,405.18831 L 675.79205,393.06647 L 668.2159,379.93449 z "
        id="path1929" />
     <rect
        style="fill:#317fed;fill-opacity:1;stroke:#060000;stroke-width:1.99999976;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
        id="rect1932"
        width="115.66247"
        height="79.802025"
-       x="739.17145"
-       y="238.51563"
+       x="740.18158"
+       y="348.62225"
        rx="6.9961648"
        ry="6.6202211" />
     <flowRoot
        xml:space="preserve"
        id="flowRoot1934"
-       transform="translate(471.5807,32.57709)"><flowRegion
+       transform="translate(472.5909,142.6837)"><flowRegion
          id="flowRegion1936"><rect
            id="rect1938"
            width="170"
            height="61.42857"
            x="281.42856"
            y="212.66591" /></flowRegion><flowPara
-         id="flowPara1940">RSS</flowPara></flowRoot>    <rect
-       style="opacity:1;fill:#fff62c;fill-opacity:1;stroke:#060000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect1942"
-       width="21.718224"
-       height="20.708065"
-       x="785.13336"
-       y="222.85825"
-       rx="10.859112"
-       ry="0" />
-    <path
+         id="flowPara1940">RSS</flowPara></flowRoot>    <path
        style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 722.02086,270.36265 L 755.3559,270.36265 L 761.41681,283.49463 L 754.34575,295.61647 L 722.02086,295.61647 L 729.59701,283.49463 L 722.02086,270.36265 z "
+       d="M 723.03101,380.46928 L 756.36605,380.46928 L 762.42696,393.60126 L 755.3559,405.7231 L 723.03101,405.7231 L 730.60716,393.60126 L 723.03101,380.46928 z "
        id="path1944" />
-    <path
-       style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 835.2733,268.52437 L 868.60834,268.52437 L 874.66925,281.65635 L 867.59819,293.77819 L 835.2733,293.77819 L 842.84945,281.65635 L 835.2733,268.52437 z "
-       id="path1946" />
     <rect
        style="fill:#317fed;fill-opacity:1;stroke:#060000;stroke-width:2.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
        id="rect1950"
        width="115.66247"
        height="80.812263"
-       x="566.44305"
-       y="394.58182"
+       x="738.16901"
+       y="239.01831"
        rx="6.9961648"
        ry="6.7040281" />
     <path
        style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 549.01791,424.3812 L 582.35295,424.3812 L 588.41386,437.51318 L 581.3428,449.63502 L 549.01791,449.63502 L 556.59406,437.51318 L 549.01791,424.3812 z "
+       d="M 720.74384,268.81771 L 754.07888,268.81771 L 760.13979,281.94969 L 753.06873,294.07153 L 720.74384,294.07153 L 728.31999,281.94969 L 720.74384,268.81771 z "
        id="path1952" />
     <flowRoot
        xml:space="preserve"
        id="flowRoot1954"
-       transform="translate(299.113,191.0534)"><flowRegion
+       transform="translate(474.8795,36.50008)"><flowRegion
          id="flowRegion1956"><rect
            id="rect1958"
            width="170"
            height="61.42857"
            x="281.42856"
            y="212.66591" /></flowRegion><flowPara
-         id="flowPara1960">FeedRegistry</flowPara></flowRoot>  </g>
+         id="flowPara1960">AlertsSources</flowPara><flowPara
+         id="flowPara2055">Service</flowPara></flowRoot>    <path
+       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 208.57544,335.05504 L 241.91048,335.05504 L 247.97139,348.18702 L 240.90033,360.30886 L 208.57544,360.30886 L 216.15159,348.18702 L 208.57544,335.05504 z "
+       id="path1938" />
+    <path
+       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 133.2545,326.7938 L 176.86426,326.7938 L 184.7933,346.6115 L 175.54276,364.90477 L 133.2545,364.90477 L 143.16581,346.6115 L 133.2545,326.7938 z "
+       id="path1940" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot1942"
+       transform="translate(-135.2942,127.0157)"><flowRegion
+         id="flowRegion1944"><rect
+           id="rect1946"
+           width="170"
+           height="61.42857"
+           x="281.42856"
+           y="212.66591" /></flowRegion><flowPara
+         id="flowPara1948">jsonrpc</flowPara></flowRoot>    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 183.66677,345.8492 L 215.80962,345.8492"
+       id="path1950" />
+    <g
+       id="g1962"
+       transform="translate(-161.8716,-15.3322)">
+      <rect
+         ry="6.2971425"
+         rx="7.4499478"
+         y="442.66592"
+         x="221.42857"
+         height="44.285713"
+         width="48.57143"
+         id="rect1964"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#060000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6, 1;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         id="path1966"
+         d="M 215,436.23734 L 276.42857,436.95163 L 276.42857,491.23734 L 213.57143,491.23734 L 215,436.23734 z "
+         style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         id="path1968"
+         d="M 275.71429,491.23734 L 287.85714,504.80877 L 203.57143,504.09448 L 214.28571,491.95163"
+         style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 548.29258,444.51843 L 581.62762,444.51843 L 587.68853,457.65041 L 580.61747,469.77225 L 548.29258,469.77225 L 555.86873,457.65041 L 548.29258,444.51843 z "
+       id="path1971" />
+    <path
+       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 472.97164,436.25719 L 516.5814,436.25719 L 524.51044,456.07489 L 515.2599,474.36816 L 472.97164,474.36816 L 482.88295,456.07489 L 472.97164,436.25719 z "
+       id="path1973" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot1977"
+       transform="translate(205.067,236.4266)"><flowRegion
+         id="flowRegion1979"><rect
+           id="rect1981"
+           width="170"
+           height="61.42857"
+           x="281.42856"
+           y="212.66591" /></flowRegion><flowPara
+         id="flowPara1983">jsonrpc</flowPara></flowRoot>    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1.00000036px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 102.72894,420.84571 L 102.02544,349.12487 L 141.42142,349.12487"
+       id="path1985" />
+    <path
+       style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 663.16515,478.92943 L 696.50019,478.92943 L 702.5611,492.06141 L 695.49004,504.18325 L 663.16515,504.18325 L 670.7413,492.06141 L 663.16515,478.92943 z "
+       id="path2009" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 706.09663,392.5614 C 729.33014,392.5614 730.34029,392.5614 730.34029,392.5614"
+       id="path2011" />
+    <path
+       style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 915.89241,466.61326 L 965.54614,466.61326 L 974.57414,489.40238 L 964.04144,510.43851 L 915.89241,510.43851 L 927.17734,489.40238 L 915.89241,466.61326 z "
+       id="path2017" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 700.03492,487.94714 C 922.71649,487.94714 922.71649,487.94714 922.71649,487.94714"
+       id="path2019" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 114.14724,455.31268 C 480.83261,455.31268 480.83261,455.31268 480.83261,455.31268"
+       id="path2021" />
+    <path
+       style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 321.88845,274.15881 L 355.22349,274.15881 L 361.2844,287.29079 L 354.21334,299.41263 L 321.88845,299.41263 L 329.4646,287.29079 L 321.88845,274.15881 z "
+       id="path2025" />
+    <path
+       style="fill:#ae62bf;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 374.74349,265.5929 L 424.3972,265.5929 L 433.42514,288.38202 L 422.89255,309.41815 L 374.74349,309.41815 L 386.02843,288.38202 L 374.74349,265.5929 z "
+       id="path2027" />
+    <path
+       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 475.10088,267.68504 L 518.71064,267.68504 L 526.63968,287.50274 L 517.38914,305.79601 L 475.10088,305.79601 L 485.01219,287.50274 L 475.10088,267.68504 z "
+       id="path2029" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot2031"
+       transform="translate(111.6715,68.77515)"><flowRegion
+         id="flowRegion2033"><rect
+           id="rect2035"
+           width="170"
+           height="61.42857"
+           x="281.42856"
+           y="212.66591" /></flowRegion><flowPara
+         id="flowPara2037">soap</flowPara></flowRoot>    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 360.15591,286.79125 L 385.87019,286.79125"
+       id="path2039" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 433.01305,288.21982 L 483.72734,287.50553"
+       id="path2041" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot2043"
+       transform="translate(207.1962,67.85435)"><flowRegion
+         id="flowRegion2045"><rect
+           id="rect2047"
+           width="170"
+           height="61.42857"
+           x="281.42856"
+           y="212.66591" /></flowRegion><flowPara
+         id="flowPara2049">soap</flowPara></flowRoot>    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 703.06617,349.12484 L 710.13724,349.12484 L 711.14739,290.53599 L 723.26922,290.53599"
+       id="path2051" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot2057"
+       transform="translate(-175.6716,172.7177)"><flowRegion
+         id="flowRegion2059"><rect
+           id="rect2061"
+           width="170"
+           height="61.42857"
+           x="281.42856"
+           y="212.66591" /></flowRegion><flowPara
+         id="flowPara2063">TBD</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot2065"
+       transform="translate(648.7571,270.7025)"><flowRegion
+         id="flowRegion2067"><rect
+           id="rect2069"
+           width="170"
+           height="61.42857"
+           x="281.42856"
+           y="212.66591" /></flowRegion><flowPara
+         id="flowPara2071">feed</flowPara></flowRoot>    <path
+       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 549.01791,511.37615 L 582.35295,511.37615 L 588.41386,524.50813 L 581.3428,536.62997 L 549.01791,536.62997 L 556.59406,524.50813 L 549.01791,511.37615 z "
+       id="path2073" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 71.450234,421.856 L 70.205581,271.34321 L 139.90614,271.34321"
+       id="path2075" />
+    <path
+       style="fill:#5b9d05;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 474.25611,504.82574 L 517.86587,504.82574 L 525.79491,524.64344 L 516.54437,542.93671 L 474.25611,542.93671 L 484.16742,524.64344 L 474.25611,504.82574 z "
+       id="path2077" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot2079"
+       transform="translate(203.2798,305.0477)"><flowRegion
+         id="flowRegion2081"><rect
+           id="rect2083"
+           width="170"
+           height="61.42857"
+           x="281.42856"
+           y="212.66591" /></flowRegion><flowPara
+         id="flowPara2085">feed</flowPara></flowRoot>    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 524.36018,456.20101 L 556.50304,456.20101"
+       id="path2087" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 523.35003,523.88123 L 555.49289,523.88123"
+       id="path2089" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 482.85292,524.89138 C 83.842662,521.86092 83.842662,522.87107 83.842662,522.87107 L 83.842662,489.53604"
+       id="path2091" />
+  </g>
 </svg>

Added: incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml?view=auto&rev=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml (added)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml Fri Jun  1 08:22:50 2007
@@ -0,0 +1,91 @@
+<?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.
+-->
+<project name="DojoZipInstaller">
+	
+
+    <property name="dojo.version" value="0.4.0"/>
+    <property name="dojo.distro" value="ajax"/>
+    <property name="unpack.location" value="${basedir}/src/main/webapp/dojo"/>
+	
+
+    <target name="check-dojo-installed">
+        <condition property="already.installed" >
+            <available file="${localRepository}/dojo/dojo-${dojo.distro}/${dojo.version}/dojo-${dojo.distro}-${dojo.version}.zip"/>
+        </condition>
+        <condition property="maven.suffix" value="">
+            <os family="unix"/>
+        </condition>
+        <condition property="maven.suffix" value=".bat">
+            <os family="windows"/>
+        </condition>
+    </target>
+	
+
+    <target name="check-dojo-unpacked">
+        <condition property="already.unpacked" >
+            <available file="${unpack.location}"/>
+        </condition>
+    </target>
+
+    <target name="install-dojo" depends="check-dojo-installed" unless="already.installed">
+        <mkdir dir="${basedir}/target/dojo-download/"/>
+        <get src="http://download.dojotoolkit.org/release-${dojo.version}/dojo-${dojo.version}-${dojo.distro}.zip"
+            dest="${basedir}/target/dojo-download/dojo-${dojo.version}-${dojo.distro}.zip"
+            verbose="true"
+            usetimestamp="true"/>
+        <exec executable="mvn${maven.suffix}" dir="${basedir}" failonerror="false">
+            <arg line="install:install-file -DgroupId=dojo  -DartifactId=dojo-${dojo.distro} -Dversion=${dojo.version} -Dpackaging=zip -DgeneratePom=true -Dfile=${basedir}/target/dojo-download/dojo-${dojo.version}-${dojo.distro}.zip"/>
+        </exec>
+    </target>
+
+    <target name="install-dojo-nomaven" depends="check-dojo-installed" unless="already.installed">
+        <mkdir dir="${basedir}/target/dojo-download/"/>
+        <get src="http://download.dojotoolkit.org/release-${dojo.version}/dojo-${dojo.version}-${dojo.distro}.zip"
+            dest="${basedir}/target/dojo-download/dojo-${dojo.version}-${dojo.distro}.zip"
+            verbose="true"
+            usetimestamp="true"/>
+        <copy file="${basedir}/target/dojo-download/dojo-${dojo.version}-${dojo.distro}.zip" 
+              tofile="${localRepository}/dojo/dojo-${dojo.distro}/${dojo.version}/dojo-${dojo.distro}-${dojo.version}.zip"/>
+    </target>
+	
+
+    <target name="unpack-dojo-files" depends="check-dojo-installed, check-dojo-unpacked" unless="already.unpacked">
+        <fail message="dojo zip file not installed in local repository: ${localRepository}" unless="already.installed"/>
+        <mkdir dir="${basedir}/target/dojo-unpack-temp/"/>
+        <unzip src="${localRepository}/dojo/dojo-${dojo.distro}/${dojo.version}/dojo-${dojo.distro}-${dojo.version}.zip"
+               dest="${basedir}/target/dojo-unpack-temp/"
+               overwrite="false">
+            <patternset>
+                <include name="dojo-${dojo.version}-${dojo.distro}/**"/>
+                <exclude name="dojo-${dojo.version}-${dojo.distro}/demos/**"/>
+                <exclude name="dojo-${dojo.version}-${dojo.distro}/tests/**"/>
+            </patternset>
+        </unzip>
+        <move file="${basedir}/target/dojo-unpack-temp/dojo-${dojo.version}-${dojo.distro}"
+              tofile="${unpack.location}"
+              verbose="true"/>
+        <delete dir="${basedir}/target/dojo-unpack-temp/"/>
+    </target>
+	
+
+    <target name="clean-dojo-files">
+        <delete dir="${unpack.location}"/>
+    </target>
+</project>

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/build-dojo.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml?view=auto&rev=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml (added)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml Fri Jun  1 08:22:50 2007
@@ -0,0 +1,106 @@
+<!--
+ * 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.    
+-->
+<project name="helloworld-jsonrpc" default="package">
+    <property name="settings.localRepository" value="./target/repo" />
+    <property name="artifactId" value="sample-feed-aggregator" />
+	
+    <target name="init">
+        <mkdir dir="target/classes"/>
+    </target>
+	
+    <target name="compile" depends="init">
+        <javac srcdir="src/main/java"
+               destdir="target/classes"
+               debug="on"
+               source="1.5"
+               target="1.5">
+            <classpath>
+            	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
+            </classpath>
+        </javac> 
+        <copy todir="target/classes">
+            <fileset dir="src/main/resources"/>
+        </copy>
+    </target>	
+	
+    <target name="package" depends="compile">
+        <ant antfile="./build-dojo.xml" target="install-dojo-nomaven">
+          <property name="localRepository" value="${settings.localRepository}"/>
+        </ant>
+        
+        <ant antfile="./build-dojo.xml" target="unpack-dojo-files">
+          <property name="localRepository" value="${settings.localRepository}"/>
+          <property name="artifactId" value="${artifactId}"/>
+        </ant>   
+
+        <war destfile="target/sample-helloworldjsonrpc.war" 
+             webxml="src/main/webapp/WEB-INF/web.xml">
+            <fileset dir="src/main/webapp"/>
+            <zipfileset dir="../../modules" prefix="WEB-INF/lib">
+                <include name="sca-api-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-assembly-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-assembly-xml-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-binding-jsonrpc-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-contribution-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-contribution-impl-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-core-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-core-databinding-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-core-spi-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-databinding-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-host-embedded-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-host-http-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-host-webapp-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-implementation-java-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-implementation-java-runtime-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-implementation-java-xml-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-interface-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-interface-java-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-interface-java-runtime-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-interface-java-xml-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-interface-wsdl-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-interface-wsdl-runtime-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-interface-wsdl-xml-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="tuscany-policy-0.90-incubating-SNAPSHOT.jar"/>
+            </zipfileset>
+            <lib dir="../../lib">
+                <include name="commonj-api-0.90-incubating-SNAPSHOT.jar"/>
+                <include name="json-rpc-1.0.jar"/>
+                <include name="stax-api-1.0.1.jar"/>
+                <include name="wsdl4j-1.6.2.jar"/>
+                <include name="wstx-asl-3.2.0.jar"/>
+                <include name="XmlSchema-1.3.1.jar"/>
+                <include name="**/../../modules/*.jar"/>
+            </lib>
+            <classes dir="target/classes"/>
+        </war>
+
+        <ant antfile="./build-dojo.xml" target="clean-dojo-files">
+          <property name="localRepository" value="${settings.localRepository}"/>
+          <property name="artifactId" value="${artifactId}"/>
+        </ant> 
+     </target>
+
+
+		
+    <target name="clean">
+        <delete quiet="true" includeemptydirs="true">
+            <fileset dir="target"/>
+        </delete>
+    </target>
+</project>

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/build.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: incubator/tuscany/sandbox/slaws/feed-aggregator/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/pom.xml?view=diff&rev=543501&r1=543500&r2=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/pom.xml (original)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/pom.xml Fri Jun  1 08:22:50 2007
@@ -31,7 +31,7 @@
 
     <groupId>org.apache.tuscany.sca</groupId>
     <artifactId>feed-aggregator</artifactId>
-    <packaging>jar</packaging>
+    <packaging>war</packaging>
     <version>1.0-incubating-SNAPSHOT</version>
     <name>feed-aggregator</name>
     <url>http://cwiki.apache.org/TUSCANY</url>  
@@ -101,10 +101,27 @@
             <artifactId>tuscany-http-jetty</artifactId>
             <version>${pom.version}</version>
             <scope>test</scope>
-        </dependency>                  
+        </dependency>   
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-host-webapp</artifactId>
+            <version>1.0-incubating-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-binding-jsonrpc</artifactId>
+            <version>1.0-incubating-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>        
+		<dependency>
+		    <groupId>rome</groupId>
+		    <artifactId>rome</artifactId>
+		    <version>0.9</version>
+		</dependency>                       
     </dependencies>
     
     <build>
+        <finalName>sample-feed-aggregator</finalName>
         <plugins>  
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
@@ -140,6 +157,10 @@
                                     <javaPackage>org.apache.tuscany.sca.samples.aggregator.service</javaPackage>
                                 </configuration> 
                                 <configuration>
+                                    <fileName>${project.build.directory}/classes/AlertsSources.wsdl</fileName>
+                                    <javaPackage>org.apache.tuscany.sca.samples.aggregator.sources</javaPackage>
+                                </configuration>                                 
+                                <configuration>
                                     <fileName>${project.build.directory}/classes/Alerts.xsd</fileName>
                                     <javaPackage>org.apache.tuscany.sca.samples.aggregator.types</javaPackage>
                                 </configuration>                                                           
@@ -154,7 +175,58 @@
                     </execution>
                 </executions>
             </plugin>
-        </plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.1</version>
+                <executions>
+                    <execution> 
+                        <id>install-dojo</id>                       
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <tasks>
+                                <ant antfile="./build-dojo.xml" target="install-dojo">
+                                    <property name="localRepository" value="${settings.localRepository}"/>
+                                </ant>
+                            </tasks>
+                        </configuration>
+                    </execution>
+                    <execution> 
+                        <id>copy-dojo-files</id>                       
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <tasks>
+                                <ant antfile="./build-dojo.xml" target="unpack-dojo-files">
+                                    <property name="localRepository" value="${settings.localRepository}"/>
+                                    <property name="artifactId" value="${artifactId}"/>
+                                </ant>
+                            </tasks>
+                        </configuration>
+                    </execution>
+                    <execution> 
+                        <id>clean-dojo-files</id>                       
+                        <phase>clean</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <tasks>
+                                <ant antfile="./build-dojo.xml" target="clean-dojo-files">
+                                    <property name="localRepository" value="${settings.localRepository}"/>
+                                    <property name="artifactId" value="${artifactId}"/>
+                                </ant>
+                            </tasks>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>                       
+     </plugins>
     </build>
     
 </project>

Added: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertTypeNonSDOImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertTypeNonSDOImpl.java?view=auto&rev=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertTypeNonSDOImpl.java (added)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertTypeNonSDOImpl.java Fri Jun  1 08:22:50 2007
@@ -0,0 +1,330 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.sca.samples.aggregator;
+
+import commonj.sdo.Type;
+
+import org.apache.tuscany.sca.samples.aggregator.types.AlertType;
+import org.apache.tuscany.sca.samples.aggregator.types.TypesFactory;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+ 
+public class AlertTypeNonSDOImpl implements AlertType
+{
+
+  /**
+   * The default value of the '{@link #getTitle() <em>Title</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getTitle()
+   * @generated
+   * @ordered
+   */
+  protected static final String TITLE_DEFAULT_ = null;
+
+  /**
+   * The cached value of the '{@link #getTitle() <em>Title</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getTitle()
+   * @generated
+   * @ordered
+   */
+  protected String title = TITLE_DEFAULT_;
+
+  /**
+   * The default value of the '{@link #getSummary() <em>Summary</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSummary()
+   * @generated
+   * @ordered
+   */
+  protected static final String SUMMARY_DEFAULT_ = null;
+
+  /**
+   * The cached value of the '{@link #getSummary() <em>Summary</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSummary()
+   * @generated
+   * @ordered
+   */
+  protected String summary = SUMMARY_DEFAULT_;
+
+  /**
+   * The default value of the '{@link #getAddress() <em>Address</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getAddress()
+   * @generated
+   * @ordered
+   */
+  protected static final String ADDRESS_DEFAULT_ = null;
+
+  /**
+   * The cached value of the '{@link #getAddress() <em>Address</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getAddress()
+   * @generated
+   * @ordered
+   */
+  protected String address = ADDRESS_DEFAULT_;
+
+  /**
+   * The default value of the '{@link #getDate() <em>Date</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getDate()
+   * @generated
+   * @ordered
+   */
+  protected static final String DATE_DEFAULT_ = null;
+
+  /**
+   * The cached value of the '{@link #getDate() <em>Date</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getDate()
+   * @generated
+   * @ordered
+   */
+  protected String date = DATE_DEFAULT_;
+
+  /**
+   * The default value of the '{@link #getSourceId() <em>Source Id</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSourceId()
+   * @generated
+   * @ordered
+   */
+  protected static final String SOURCE_ID_DEFAULT_ = null;
+
+  /**
+   * The cached value of the '{@link #getSourceId() <em>Source Id</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSourceId()
+   * @generated
+   * @ordered
+   */
+  protected String sourceId = SOURCE_ID_DEFAULT_;
+
+  /**
+   * The default value of the '{@link #isUnread() <em>Unread</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isUnread()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean UNREAD_DEFAULT_ = false;
+
+  /**
+   * The cached value of the '{@link #isUnread() <em>Unread</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isUnread()
+   * @generated
+   * @ordered
+   */
+  protected boolean unread = UNREAD_DEFAULT_;
+
+  /**
+   * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getId()
+   * @generated
+   * @ordered
+   */
+  protected static final String ID_DEFAULT_ = null;
+
+  /**
+   * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getId()
+   * @generated
+   * @ordered
+   */
+  protected String id = ID_DEFAULT_;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public AlertTypeNonSDOImpl()
+  {
+    super();
+  }
+
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getTitle()
+  {
+    return title;
+  }
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setTitle(String newTitle)
+  {
+    title = newTitle;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getSummary()
+  {
+    return summary;
+  }
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setSummary(String newSummary)
+  {
+    summary = newSummary;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getAddress()
+  {
+    return address;
+  }
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setAddress(String newAddress)
+  {
+    address = newAddress;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getDate()
+  {
+    return date;
+  }
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setDate(String newDate)
+  {
+    date = newDate;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getSourceId()
+  {
+    return sourceId;
+  }
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setSourceId(String newSourceId)
+  {
+    sourceId = newSourceId;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isUnread()
+  {
+    return unread;
+  }
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setUnread(boolean newUnread)
+  {
+    unread = newUnread;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getId()
+  {
+    return id;
+  }
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setId(String newId)
+  {
+    id = newId;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (Title: ");
+    result.append(title);
+    result.append(", Summary: ");
+    result.append(summary);
+    result.append(", Address: ");
+    result.append(address);
+    result.append(", Date: ");
+    result.append(date);
+    result.append(", SourceId: ");
+    result.append(sourceId);
+    result.append(", Unread: ");
+    result.append(unread);
+    result.append(", Id: ");
+    result.append(id);
+    result.append(')');
+    return result.toString();
+  }
+
+} //AlertTypeImpl

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertTypeNonSDOImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertTypeNonSDOImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsServiceImpl.java?view=diff&rev=543501&r1=543500&r2=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsServiceImpl.java (original)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsServiceImpl.java Fri Jun  1 08:22:50 2007
@@ -19,12 +19,16 @@
 
 package org.apache.tuscany.sca.samples.aggregator;
 
+import java.text.DateFormat;
+import java.util.Date;
 import java.util.List;
 
 import org.apache.tuscany.sca.samples.aggregator.types.ConfigType;
+import org.apache.tuscany.sca.samples.aggregator.types.SourceType;
 import org.apache.tuscany.sca.samples.aggregator.types.TypesFactory;
 import org.apache.tuscany.sca.samples.aggregator.types.AlertsType;
 import org.apache.tuscany.sca.samples.aggregator.types.AlertType;
+import org.apache.tuscany.sca.samples.aggregator.types.impl.AlertsTypeImpl;
 
 import org.osoa.sca.annotations.Service;
 import org.osoa.sca.annotations.Reference;
@@ -37,13 +41,20 @@
 @Service(AlertsService.class)
 public class AlertsServiceImpl {
 
-    private RSSCheckerService rssChecker;
+    private RSSCheckerService    rssChecker;
+    
+    private AlertsSourcesService alertsSources;
 
     @Reference
     public void setRssChecker(RSSCheckerService rssChecker) {
         this.rssChecker = rssChecker;
     }
     
+    @Reference
+    public void alertsSources(AlertsSourcesService alertsSources) {
+        this.alertsSources = alertsSources;
+    }    
+    
     /**
      * Return a structure holding all of the new alerts that have been found
      * 
@@ -53,23 +64,60 @@
     {
         System.err.println("getAllNewAlerts(" + id + ")");
         
-        TypesFactory factory = TypesFactory.INSTANCE;
-        AlertsType returnAlerts = factory.createAlertsType();
+        //TypesFactory factory    = TypesFactory.INSTANCE;
+        //AlertsType returnAlerts = factory.createAlertsType();
+        AlertsType returnAlerts = new AlertsTypeNonSDOImpl();
+        List returnAlertList    = returnAlerts.getAlert();
         
-        List alertList = returnAlerts.getAlert();
+        // get the date/time now so that we can update the 
+        // alert source record so that next time we 
+        // only get the latest alerts
+        DateFormat dateFormatter = DateFormat.getDateTimeInstance();
+        Date now = new Date();
+        String nowString = dateFormatter.format(now);
+              
+        ConfigType alertSourceConfig = alertsSources.getAlertSources(id);
         
-        AlertType newAlert = factory.createAlertType();
-        newAlert.setTitle("Test Alert");
-        newAlert.setSummary("Test Summary");
-        newAlert.setAddress("www.bbc.co.uk");
-        newAlert.setDate("230407");
-        newAlert.setId("123");
-        newAlert.setUnread(true);
-        newAlert.setId("ABC");
-        
-        alertList.add(newAlert);
+        for (Object source : alertSourceConfig.getSource()){
+            SourceType sourceType = (SourceType)source;
+            
+            AlertsType alerts = null;
+            
+            if ( sourceType.getType_().equals("rss")){
+                alerts = rssChecker.getNewAlerts(sourceType.getFeedAddress(),
+                                                 sourceType.getLastChecked());
+            } else {
+                
+            }
+            
+            // extend return list with any alerts we found
+            for( Object alert : alerts.getAlert() ){
+                // set the id on the alert so we know which source it
+                // came from 
+                ((AlertType)alert).setSourceId(sourceType.getId());
+                
+                // convert from SDO to POJO so that the 
+                // JSONRPC binding will work. It can't currently
+                // handle SDOs
+                AlertType newAlert = new AlertTypeNonSDOImpl();
+
+                newAlert.setSourceId(((AlertType)alert).getSourceId());
+                newAlert.setTitle(((AlertType)alert).getTitle());
+                newAlert.setSummary(((AlertType)alert).getSummary());                    
+                newAlert.setAddress(((AlertType)alert).getAddress());
+                newAlert.setDate("Thu May 31 09:42:00");//((AlertType)alert).getDate());
+                newAlert.setId(((AlertType)alert).getId());
+                newAlert.setUnread(((AlertType)alert).isUnread());                
+                
+                returnAlertList.add(newAlert);
+            }
+            
+            // update the time last checked for this source
+            sourceType.setLastChecked(nowString);
+            //alertsSources.updateAlertSource(sourceType);
+        }
         
-        return returnAlerts;
+        return returnAlerts ;
         
     }
 }

Modified: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesService.java?view=diff&rev=543501&r1=543500&r2=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesService.java (original)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesService.java Fri Jun  1 08:22:50 2007
@@ -20,6 +20,7 @@
 package org.apache.tuscany.sca.samples.aggregator;
 
 import org.apache.tuscany.sca.samples.aggregator.types.ConfigType;
+import org.apache.tuscany.sca.samples.aggregator.types.SourceType;
 
 import org.osoa.sca.annotations.Remotable;
 import org.osoa.sca.annotations.Service;
@@ -39,5 +40,33 @@
      * @return the list of alert sources
      */
     public ConfigType getAlertSources (String id);
+    
+    /**
+     * Return a single alert source.
+     * @param id not currently used
+     * @return the alert source
+     */
+    public SourceType getAlertSource (String id); 
+    
+    /**
+     * Update an alert source.
+     *
+     * @param updatedSource the alert source to update
+     */
+    public void updateAlertSource (SourceType updatedSource);    
+      
+    /**
+     * Add an alert source.
+     *
+     * @param newSource the alert source to add
+     */
+    public String addAlertSource (SourceType newSource);   
+
+    /**
+     * Remove an alert source.
+     *
+     * @param oldSource the alert source to remove
+     */
+    public void removeAlertSource (String id); 
 
 }

Modified: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesServiceImpl.java?view=diff&rev=543501&r1=543500&r2=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesServiceImpl.java (original)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsSourcesServiceImpl.java Fri Jun  1 08:22:50 2007
@@ -23,12 +23,16 @@
 import java.io.InputStream;
 import java.util.List;
 
+import org.apache.tuscany.sca.samples.aggregator.types.AlertsType;
 import org.apache.tuscany.sca.samples.aggregator.types.ConfigType;
+import org.apache.tuscany.sca.samples.aggregator.types.SourceType;
 import org.apache.tuscany.sca.samples.aggregator.types.TypesFactory;
 import org.apache.tuscany.sca.samples.aggregator.types.impl.ConfigTypeImpl;
+import org.apache.tuscany.sca.samples.aggregator.types.impl.SourceTypeImpl;
 import org.apache.tuscany.sdo.helper.XMLStreamHelper;
 import org.apache.tuscany.sdo.util.SDOUtil;
 
+import org.osoa.sca.annotations.Scope;
 import org.osoa.sca.annotations.Service;
 
 import commonj.sdo.DataObject;
@@ -43,7 +47,33 @@
  * @version $Rev$ $Date$
  */
 @Service(AlertsSourcesService.class)
+@Scope("COMPOSITE")
 public class AlertsSourcesServiceImpl {
+    
+    ConfigType alertSources;
+    
+    /**
+     * Constructor reads the configuration to provide
+     * the initial list of alert sources
+     */
+    public AlertsSourcesServiceImpl(){
+        System.err.println("AlertsSourcesServiceImpl()");
+        try {
+            // read the alerts config from an XML file
+            InputStream is = this.getClass().getClassLoader().getResourceAsStream("sources.xml");
+            
+            if (is == null) {
+                throw new Exception("Can;t find sources.xml");
+            } else {
+                HelperContext helperContext = HelperProvider.getDefaultContext();
+                TypesFactory.INSTANCE.register(helperContext);
+                 XMLDocument xmlDoc = helperContext.getXMLHelper().load(is);
+                alertSources = (ConfigType)xmlDoc.getRootObject();
+            }
+        } catch (Exception ex) {
+            System.err.println("Exception " + ex.toString());
+        }
+    }
    
     /**
      * Return all of the configured alert sources.
@@ -51,23 +81,103 @@
      * @return the list of alert sources
      */
     public ConfigType getAlertSources (String id)
-    {
-        System.err.println("getAlertSources(" + id + ")");        
-        Object config = null;
-        
-        try
-        {
-            HelperContext helperContext = HelperProvider.getDefaultContext();
-            TypesFactory.INSTANCE.register(helperContext);
-            InputStream is = this.getClass().getResourceAsStream("/sources.xml");
-            XMLDocument xmlDoc = XMLHelper.INSTANCE.load(is);
-            config = xmlDoc.getRootObject();
-        } catch(Exception e) {
-            System.out.println("Reading sources.xml - Exception : " + e.toString());
-            e.printStackTrace();
+    {           
+        System.err.println("getAlertSources(" + id + ")");
+        
+        // convert alert sources to POJOs so that 
+        // the JSONRPC binding will work
+        ConfigTypeNonSDOImpl sources = new ConfigTypeNonSDOImpl();
+        
+        for (Object source : alertSources.getSource()) {
+            SourceTypeNonSDOImpl newSource = new SourceTypeNonSDOImpl();
+            newSource.setAddress(((SourceTypeImpl)source).getAddress());
+            newSource.setFeedAddress(((SourceTypeImpl)source).getFeedAddress());
+            newSource.setId(((SourceTypeImpl)source).getId());
+            newSource.setLastChecked("");//((SourceTypeImpl)source).getLastChecked())
+            newSource.setName(((SourceTypeImpl)source).getName());
+            newSource.setType(((SourceTypeImpl)source).getType_());
+            sources.getSource().add(newSource);
         }
-            
-        // return the SDO retrieved
-        return (ConfigType)config;
+        
+        return sources;
     }
+    
+    /**
+     * Return a single alert source.
+     * @param id the alert source id number
+     * @return the alert source
+     */
+    public SourceType getAlertSource (String id)
+    {           
+        System.err.println("getAlertSource(" + id + ")");
+        SourceType alertSource = null;
+        
+        for (Object source : alertSources.getSource()) {
+            if ( ((SourceType)source).getId().equals(id)) {
+                alertSource = (SourceType)source;
+            }
+        }
+        return alertSource;
+    } 
+    
+    /**
+     * Update an alert source.
+     *
+     * @param updatedSource the alert source to update
+     */
+    public void updateAlertSource (SourceType updatedSource)
+    {           
+        System.err.println("updateAlertSource()");
+            
+        Object originalSource = null;
+        
+        for (Object source : alertSources.getSource()) {
+            if ( ((SourceType)source).getId().equals(updatedSource.getId())) {
+                originalSource = source;
+                break;
+            }
+        }
+        
+        if (originalSource != null){
+            alertSources.getSource().add(updatedSource);
+            alertSources.getSource().remove(originalSource);
+        }
+    }    
+      
+    /**
+     * Add an alert source.
+     *
+     * @param newSource the alert source to add
+     */
+    public String addAlertSource (SourceType newSource)
+    {           
+        System.err.println("addAlertSource()");
+        alertSources.getSource().add(newSource);  
+        return "Done";
+    }    
+
+    /**
+     * Remove an alert source.
+     *
+     * @param oldSource the alert source to remove
+     */
+    public void removeAlertSource (String id)
+    {           
+        System.err.println("removeAlertSource()");
+        
+        Object originalSource = null;
+        
+        for (Object source : alertSources.getSource()) {
+            if ( ((SourceType)source).getId().equals(id)) {
+                originalSource = source;
+                break;
+            }
+        }  
+        
+        if (originalSource != null) {
+            alertSources.getSource().remove(originalSource);
+        }
+
+    } 
+ 
 }

Added: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsTypeNonSDOImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsTypeNonSDOImpl.java?view=auto&rev=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsTypeNonSDOImpl.java (added)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsTypeNonSDOImpl.java Fri Jun  1 08:22:50 2007
@@ -0,0 +1,68 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.sca.samples.aggregator;
+
+import commonj.sdo.Type;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.sca.samples.aggregator.types.AlertType;
+import org.apache.tuscany.sca.samples.aggregator.types.AlertsType;
+import org.apache.tuscany.sca.samples.aggregator.types.TypesFactory;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Alerts Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.apache.tuscany.sca.samples.aggregator.types.impl.AlertsTypeImpl#getAlert <em>Alert</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AlertsTypeNonSDOImpl implements AlertsType
+{
+
+  /**
+   * The cached value of the '{@link #getAlert() <em>Alert</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getAlert()
+   * @generated
+   * @ordered
+   */
+  
+  protected List alert = new ArrayList();
+  
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public AlertsTypeNonSDOImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public List getAlert()
+  {
+    return alert;
+  }
+
+} //AlertsTypeImpl

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsTypeNonSDOImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/AlertsTypeNonSDOImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/ConfigTypeNonSDOImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/ConfigTypeNonSDOImpl.java?view=auto&rev=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/ConfigTypeNonSDOImpl.java (added)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/ConfigTypeNonSDOImpl.java Fri Jun  1 08:22:50 2007
@@ -0,0 +1,49 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.sca.samples.aggregator;
+
+import commonj.sdo.Type;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.sca.samples.aggregator.types.ConfigType;
+import org.apache.tuscany.sca.samples.aggregator.types.SourceType;
+import org.apache.tuscany.sca.samples.aggregator.types.TypesFactory;
+
+import org.apache.tuscany.sdo.impl.DataObjectBase;
+
+
+public class ConfigTypeNonSDOImpl implements ConfigType
+{
+  
+  protected List source = new ArrayList();
+  
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ConfigTypeNonSDOImpl()
+  {
+    super();
+  }
+
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public List getSource()
+  {
+    return source;
+  }
+
+
+} //ConfigTypeImpl

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/ConfigTypeNonSDOImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/ConfigTypeNonSDOImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerService.java?view=diff&rev=543501&r1=543500&r2=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerService.java (original)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerService.java Fri Jun  1 08:22:50 2007
@@ -18,11 +18,13 @@
  */
 package org.apache.tuscany.sca.samples.aggregator;
 
+import org.apache.tuscany.sca.samples.aggregator.types.AlertsType;
+
 /**
  * The interface for the rss checker service
  */
 public interface RSSCheckerService {
 
-    public String getNewAlerts(String rssaddress, String lastchecktimestamp);
+    public AlertsType getNewAlerts(String rssaddress, String lastchecktimestamp);
 
 }

Added: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerServiceImpl.java?view=auto&rev=543501
==============================================================================
--- incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerServiceImpl.java (added)
+++ incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerServiceImpl.java Fri Jun  1 08:22:50 2007
@@ -0,0 +1,87 @@
+/*
+ * 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 org.apache.tuscany.sca.samples.aggregator;
+
+import java.net.URL;
+import java.util.Date;
+import java.util.List;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+import org.apache.tuscany.sca.samples.aggregator.types.AlertType;
+import org.apache.tuscany.sca.samples.aggregator.types.AlertsType;
+import org.apache.tuscany.sca.samples.aggregator.types.TypesFactory;
+
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.io.SyndFeedInput;
+import com.sun.syndication.io.XmlReader;
+
+/**
+ * The interface for the rss checker service
+ */
+public class RSSCheckerServiceImpl implements RSSCheckerService {
+
+    public AlertsType getNewAlerts(String rssaddress, String lastchecktimestamp){
+        // Create the list of alerts to return
+        TypesFactory factory    = TypesFactory.INSTANCE;
+        AlertsType returnAlerts = factory.createAlertsType();
+        List returnAlertList    = returnAlerts.getAlert();
+        
+        try {
+            // Turn the date into something we can process. 
+            DateFormat dateFormatter = DateFormat.getDateTimeInstance();
+            Date timestamp = dateFormatter.parse(lastchecktimestamp);
+            
+            // get the feed data from the supplied address            
+            SyndFeedInput input = new SyndFeedInput();
+            SyndFeed feed = input.build(new XmlReader(new URL(rssaddress)));
+            //System.out.println(feed);
+            
+            // check all the items to see if we have seen them before
+            List entries = feed.getEntries();
+            for(Object entry: entries){
+                SyndEntry syndEntry = (SyndEntry)entry;             
+                
+                if (syndEntry.getPublishedDate().after(timestamp)){
+                    AlertType newAlert = factory.createAlertType();
+                    
+                    newAlert.setTitle(syndEntry.getTitle());
+                 //   newAlert.setSummary("<![CDATA[" + 
+                //                        syndEntry.getDescription().getValue() +
+                //                        "]]>");
+                    newAlert.setSummary("");                    
+                    newAlert.setAddress(syndEntry.getLink());
+                    newAlert.setDate(syndEntry.getPublishedDate().toString());
+                    newAlert.setId(rssaddress);
+                    newAlert.setUnread(true);
+                    
+                    returnAlertList.add(newAlert);
+                }
+            }
+            
+        } catch(Exception ex) {
+            System.err.println("Exception " + ex.toString());
+        }
+
+        return returnAlerts;
+    }
+
+}

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerServiceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/slaws/feed-aggregator/src/main/java/org/apache/tuscany/sca/samples/aggregator/RSSCheckerServiceImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org