summaryrefslogtreecommitdiffstats
path: root/sandbox/slaws/httpserver.php/htdocs
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/slaws/httpserver.php/htdocs')
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/AlertDisplay.php274
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/AlertDisplayJson.php56
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/Alerter.xsd74
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/Alerts.wsdl88
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/Alerts.xsd80
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/AlertsSources.wsdl124
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/Cached_Alerts.xml2
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/index.html280
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/phpinfo.php5
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/pop.pngbin0 -> 244 bytes
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/rss.pngbin0 -> 689 bytes
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/service.smd1
-rw-r--r--sandbox/slaws/httpserver.php/htdocs/style.css166
13 files changed, 1150 insertions, 0 deletions
diff --git a/sandbox/slaws/httpserver.php/htdocs/AlertDisplay.php b/sandbox/slaws/httpserver.php/htdocs/AlertDisplay.php
new file mode 100644
index 0000000000..94b5352818
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/AlertDisplay.php
@@ -0,0 +1,274 @@
+<!--
+ 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.
+-->
+<?php
+include 'SCA/SCA.php';
+
+/**
+ * @service
+ * @binding.restrpc
+ * @types http://tuscany.apache.org/sca/samples/aggregator/types ./Alerts.xsd
+ */
+class AlertDisplay
+{
+ /**
+ * @reference
+ * @binding.soap ./Alerts.wsdl
+ */
+ public $alert_service;
+
+ /**
+ * @reference
+ * @binding.soap ./AlertsSources.wsdl
+ */
+ public $alert_sources_service;
+
+ /**
+ * @return string
+ */
+ public function getAlertsHTMLTable()
+ {
+ $xmldas = SDO_DAS_XML::create("./Alerts.xsd");
+ $doc = $xmldas->loadFile("./Cached_Alerts.xml");
+ $cached_alerts = $doc->getRootDataObject();
+
+ // Use the alertService reference
+ $request = $this->alert_service->createDataObject("http://tuscany.apache.org/sca/samples/aggregator/service",
+ "getAllNewAlerts");
+ $request->parm = "AString";
+ $new_alerts = $this->alert_service->getAllNewAlerts($request);
+
+ foreach($new_alerts->parm->Alert as $alert){
+ $new_alert = $cached_alerts->createDataObject('Alert');
+ $new_alert->Title = $alert->Title;
+ $new_alert->Summary = $alert->Summary;
+ $new_alert->Address = $alert->Address;
+ $new_alert->Date = $alert->Date;
+ $new_alert->SourceId = $alert->SourceId;
+ $new_alert->Unread = true;
+ }
+
+ $return_table = "<TABLE border=\'0\'>";
+ $alert_id_number = 0;
+ foreach($cached_alerts->Alert as $alert){
+ $alert->Id = "alert_" . $alert_id_number;
+ $title = substr($alert->Title,0,80);
+ $summary = substr($alert->Summary,0,40);
+ $unread_string = $alert->Unread ? "unread_title" : "read_title";
+ $return_row = <<<ALERTROW
+<TR class="source_$alert->SourceId clickable" onclick="displayAlert('$alert->Address', '')">
+ <TD>
+ <SPAN id="$alert->Id" class="$unread_string">$title</SPAN>
+ <SPAN class="summary"> - $summary ...</SPAN>
+ </TD>
+ <TD>
+ $alert->Date
+ </TD>
+</TR>
+ALERTROW;
+ $return_table = $return_table . $return_row;
+ $alert_id_number += 1;
+ }
+ $return_table = $return_table . "</TABLE>";
+
+ // as php is one shot we have to save away the alerts we want to cache
+ $xmldas->saveFile($doc, "./Cached_Alerts.xml");
+
+ return $return_table;
+ }
+
+ /**
+ * @param string $alert_id
+ * @return string
+ */
+ public function readAlert($alert_id)
+ {
+ $xmldas = SDO_DAS_XML::create("./Alerter.xsd");
+ $doc = $xmldas->loadFile("./Cached_Alerts.xml");
+ $cached_alerts = $doc->getRootDataObject();
+
+ $return_summary = "";
+
+ foreach($cached_alerts->alert as $alert){
+ if (strcmp($alert->Id,$alert_Id) == 0){
+ SCA::$logger->log("Match");
+ $alert->Unread = false;
+ $return_summary = "<PRE>" . $alert->Summary . "</PRE>";
+ }
+ }
+
+ // as php is one shot we have to save away the alerts we want to cache
+ $xmldas->saveFile($doc, "./Cached_Alerts.xml");
+
+ return $return_summary;
+ }
+
+ /**
+ * @return string
+ */
+ public function getAlertSourcesHTMLTable()
+ {
+ $request = $this->alert_sources_service->createDataObject("http://tuscany.apache.org/sca/samples/aggregator/sources",
+ "getAlertSources");
+ $request->parm = "AString";
+ $alert_sources = $this->alert_sources_service->getAlertSources($request);
+
+ $return_table = "<TABLE border='0'>\n";
+
+ $no_of_sources = 0;
+
+ foreach ($alert_sources->parm->Source as $alert_source){
+ $source_id = $alert_source->Id;
+ $return_row = <<<SOURCEROW
+<TR CLASS="source_$source_id" >
+ <TD CLASS="clickable" ONCLICK="displayAlert('$alert_source->Address', '')">
+ <IMG SRC="rss.png"/>&nbsp;&nbsp;$alert_source->Name
+ </TD>
+ <TD CLASS="clickable link" ONCLICK="showEditSource('$source_id')">Edit</TD>
+ <TD CLASS="clickable link" ONCLICK="deleteSource('$source_id')">Delete</TD>
+</TR>
+<TR ID="edit_source_$source_id" CLASS="hidden source_$source_id">
+ <TD COLSPAN="3">
+ <TABLE CLASS="sourceDetailsTable">
+ <TR>
+ <TD>Source name:</TD>
+ <TD>
+ <INPUT ID="source_{$source_id}_name" TYPE="TEXT" SIZE="50" VALUE="$alert_source->Name"/>
+ </TD>
+ </TR>
+ <TR>
+ <TD>Source address:</TD>
+ <TD>
+ <INPUT ID="source_{$source_id}_address" TYPE="TEXT" SIZE="50" VALUE="$alert_source->Address"/>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <INPUT ID="source_{$source_id}_type" TYPE="HIDDEN" VALUE="$source_id"/>
+ <INPUT TYPE="BUTTON" VALUE="Update" ONCLICK="updateSource('$source_id')"/>
+ <INPUT TYPE="BUTTON" VALUE="Cancel" ONCLICK="hideEditSource('$source_id')"/>
+ </TD>
+ </TR>
+ </TABLE>
+ </TD>
+</TR>
+SOURCEROW;
+ $return_table = $return_table . $return_row;
+ $no_of_sources = $no_of_sources + 1;
+ }
+
+ $source_id = $no_of_sources + 1;
+
+ $return_row = <<<ADDROW
+<TR CLASS="source_$source_id">
+ <TD COLSPAN="4" CLASS="clickable link" ONCLICK="showAddNewSource('$source_id')">Add new Alert Source</TD>
+</TR>
+<TR ID="add_source_$source_id" CLASS="hidden source_$source_id">
+ <TD COLSPAN="4">
+ <TABLE CLASS="sourceDetailsTable">
+ <TR>
+ <TD>Source name:</TD>
+ <TD>
+ <INPUT ID="source_{$source_id}_name" TYPE="TEXT" SIZE="50">
+ </TD>
+ </TR>
+ <TR>
+ <TD>Source address:</TD>
+ <TD>
+ <INPUT ID="source_{$source_id}_address" TYPE="TEXT" SIZE="50">
+ </TD>
+ </TR>
+ <TR>
+ <TD>Source type:</TD>
+ <TD>
+ <SELECT ID="source_{$source_id}_type" ONCHANGE="showSourceType('$source_id')">
+ <OPTION value="rss" selected="selected">RSS/Atom feed</OPTION>"
+ </SELECT>
+ </TD>
+ </TR>
+ <TR ID="add_rss_source">
+ <TD COLSPAN="2">
+ <TABLE CLASS="sourceDetailsTable">
+ <TR>
+ <TD>Feed address:</TD>
+ <TD>
+ <INPUT ID="source_{$source_id}_feedAddress" TYPE="TEXT" SIZE="50"/>
+ </TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ <TR>
+ <TD>
+ <INPUT TYPE="BUTTON" VALUE="Add" ONCLICK="addSource('$source_id')">
+ <INPUT TYPE="BUTTON" VALUE="Cancel" ONCLICK="hideAddNewSource('$source_id')">
+ </TD>
+ </TR>
+ </TABLE>
+ </TD>
+</TR>
+ADDROW;
+
+ $return_table = $return_table . $return_row;
+ $return_table = $return_table . "</TABLE>\n";
+ return $return_table;
+ }
+
+ /**
+ * @param integer $source_id
+ * @return string
+ */
+ public function deleteAlertSource($source_id){
+ $this->alert_sources_service->removeAlertSource($source_id);
+ }
+
+ /**
+ * @param SingleSourceType $alert_source http://tuscany.apache.org/sca/samples/aggregator/types
+ */
+ public function addAlertSource($alert_source){
+ $request = $this->alert_sources_service->createDataObject("http://tuscany.apache.org/sca/samples/aggregator/sources",
+ "addAlertSource");
+ $source = $request->createDataObject("parm");
+
+ $source->Name = $alert_source->Name;
+ $source->Address = $alert_source->Address;
+ $source->Id = $alert_source->Id;
+ $source->Type = $alert_source->Type;
+
+ $this->alert_sources_service->addAlertSource($request);
+ }
+
+ /**
+ * @param SourceType $alert_source http://tuscany.apache.org/sca/samples/aggregator/types
+ */
+ public function updateAlertSource($alert_source){
+ $this->alert_sources_service->updateAlertSource($alert_source);
+ }
+}
+
+/* Some debugging lines
+ob_start();
+print_r( $new_alerts );
+$debug = ob_get_contents();
+ob_end_clean();
+SCA::$logger->log($debug);
+*/
+?>
+
+
+
diff --git a/sandbox/slaws/httpserver.php/htdocs/AlertDisplayJson.php b/sandbox/slaws/httpserver.php/htdocs/AlertDisplayJson.php
new file mode 100644
index 0000000000..5953f02209
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/AlertDisplayJson.php
@@ -0,0 +1,56 @@
+<?php
+/*
++----------------------------------------------------------------------+
+| Copyright IBM Corporation 2007. |
+| All Rights Reserved. |
++----------------------------------------------------------------------+
+| |
+| Licensed 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. |
++----------------------------------------------------------------------+
+| Author: SL |
++----------------------------------------------------------------------+
+$Id: ContactEmailService.php,v 1.1.2.1 2007/04/27 11:17:45 slaws Exp $
+*/
+
+include 'SCA/SCA.php';
+
+/**
+ * Service for sending emails
+ *
+ * @service
+ * @binding.restrpc
+ */
+class AlertDisplayJson {
+
+ /**
+ * @reference
+ * @binding.jsonrpc C:\simon\Projects\Tuscany\service.smd
+ */
+ public $alert_service;
+
+
+
+ /**
+ * Send a simple text email with the options of using short names for addresses.
+ *
+ * @return string
+ */
+ public function getAlerts() {
+
+ $alerts = $this->alert_service->getAllNewAlerts("SomeString");
+
+ return $alerts;
+
+ }
+}
+
+?>
diff --git a/sandbox/slaws/httpserver.php/htdocs/Alerter.xsd b/sandbox/slaws/httpserver.php/htdocs/Alerter.xsd
new file mode 100644
index 0000000000..58b9982d38
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/Alerter.xsd
@@ -0,0 +1,74 @@
+<?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.
+-->
+<schema targetNamespace="http://tuscany.apache.org/samples/alerter"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ns="http://tuscany.apache.org/samples/alerter">
+ <element name="alerts" type="ns:alerts"/>
+
+ <complexType name="alert">
+ <sequence>
+ <element name="title" type="string"/>
+ <element name="summary" type="string"/>
+ <element name="address" type="anyURI" maxOccurs="1" minOccurs="1"/>
+ <element name="date" type="string" maxOccurs="1" minOccurs="1"/>
+ </sequence>
+ <attribute name="sourceid" type="string" use="optional"/>
+ <attribute name="unread" type="boolean" use="optional"/>
+ <attribute name="id" type="string" use="optional"/>
+ </complexType>
+
+ <complexType name="alerts">
+ <sequence>
+ <element name="alert" type="ns:alert" maxOccurs="unbounded" minOccurs="0" />
+ </sequence>
+ </complexType>
+
+ <element name="config" type="ns:config"/>
+ <element name="source" type="ns:source"/>
+
+ <complexType name="source">
+ <sequence>
+ <element name="name" type="string" maxOccurs="1" minOccurs="1"/>
+ <element name="address" type="anyURI" maxOccurs="1" minOccurs="1"/>
+ <element name="lastChecked" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="feedAddress" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="popServer" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="popUsername" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="popPassword" type="string" maxOccurs="1" minOccurs="0"/>
+ <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="id" type="string" use="optional"/>
+ <attribute name="type" use="required">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="rss"/>
+ <enumeration value="pop"/>
+ <enumeration value="nntp"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </complexType>
+
+ <complexType name="config">
+ <sequence>
+ <element name="source" type="ns:source" maxOccurs="unbounded" minOccurs="0"/>
+ </sequence>
+ </complexType>
+</schema> \ No newline at end of file
diff --git a/sandbox/slaws/httpserver.php/htdocs/Alerts.wsdl b/sandbox/slaws/httpserver.php/htdocs/Alerts.wsdl
new file mode 100644
index 0000000000..9150abbaf4
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/Alerts.wsdl
@@ -0,0 +1,88 @@
+<?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.
+-->
+<wsdl:definitions targetNamespace="http://tuscany.apache.org/sca/samples/aggregator/service"
+ xmlns:tns="http://tuscany.apache.org/sca/samples/aggregator/service"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ name="Alerter">
+
+ <wsdl:types>
+ <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://tuscany.apache.org/sca/samples/aggregator/service"
+ xmlns:alerter="http://tuscany.apache.org/sca/samples/aggregator/types"
+ elementFormDefault="qualified">
+
+ <xsd:import namespace="http://tuscany.apache.org/sca/samples/aggregator/types"
+ schemaLocation="Alerts.xsd" />
+
+ <element name="getAllNewAlerts">
+ <xsd:complexType>
+ <sequence>
+ <element name="parm" type="string" />
+ </sequence>
+ </xsd:complexType>
+ </element>
+
+ <element name="getAllNewAlertsResponse">
+ <complexType>
+ <sequence>
+ <element name="parm" type="alerter:AlertsType" />
+ </sequence>
+ </complexType>
+ </element>
+
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="GetAllNewAlertsRequest">
+ <wsdl:part element="tns:getAllNewAlerts" name="parameters" />
+ </wsdl:message>
+ <wsdl:message name="GetAllNewAlertsResponse">
+ <wsdl:part element="tns:getAllNewAlertsResponse" name="parameters" />
+ </wsdl:message>
+
+ <wsdl:portType name="AlertsPortType">
+ <wsdl:operation name="getAllNewAlerts">
+ <wsdl:input message="tns:GetAllNewAlertsRequest" name="GetAllNewAlertsRequestMsg" />
+ <wsdl:output message="tns:GetAllNewAlertsResponse" name="GetAllNewAlertsResponseMsg" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="AlertsBinding" type="tns:AlertsPortType">
+ <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getAllNewAlerts">
+ <wsdlsoap:operation soapAction="" />
+ <wsdl:input name="GetAllNewAlertsRequestMsg">
+ <wsdlsoap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="GetAllNewAlertsResponseMsg">
+ <wsdlsoap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="AlertsService">
+ <wsdl:port name="AlertsPort" binding="tns:AlertsBinding">
+ <wsdlsoap:address location="http://localhost:8080/services/AlertsServiceWebServiceBinding" />
+ </wsdl:port>
+ </wsdl:service>
+
+</wsdl:definitions>
diff --git a/sandbox/slaws/httpserver.php/htdocs/Alerts.xsd b/sandbox/slaws/httpserver.php/htdocs/Alerts.xsd
new file mode 100644
index 0000000000..1e80da0487
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/Alerts.xsd
@@ -0,0 +1,80 @@
+<?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.
+-->
+<schema targetNamespace="http://tuscany.apache.org/sca/samples/aggregator/types"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ns="http://tuscany.apache.org/sca/samples/aggregator/types">
+ <element name="Alerts" type="ns:AlertsType"/>
+
+ <complexType name="AlertType">
+ <sequence>
+ <element name="Title" type="string"/>
+ <element name="Summary" type="string"/>
+ <element name="Address" type="anyURI" maxOccurs="1" minOccurs="1"/>
+ <element name="Date" type="string" maxOccurs="1" minOccurs="1"/>
+ </sequence>
+ <attribute name="SourceId" type="string" use="optional"/>
+ <attribute name="Unread" type="boolean" use="optional"/>
+ <attribute name="Id" type="string" use="optional"/>
+ </complexType>
+
+ <complexType name="AlertsType">
+ <sequence>
+ <element name="Alert" type="ns:AlertType" maxOccurs="unbounded" minOccurs="0" />
+ </sequence>
+ </complexType>
+
+ <complexType name="SourceType">
+ <sequence>
+ <element name="Name" type="string" maxOccurs="1" minOccurs="1"/>
+ <element name="Address" type="anyURI" maxOccurs="1" minOccurs="1"/>
+ <element name="LastChecked" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="FeedAddress" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="PopServer" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="PopUsername" type="string" maxOccurs="1" minOccurs="0"/>
+ <element name="PopPassword" type="string" maxOccurs="1" minOccurs="0"/>
+ <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="string" use="optional"/>
+ <attribute name="Type" use="required">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="rss"/>
+ <enumeration value="pop"/>
+ <enumeration value="nntp"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </complexType>
+
+ <complexType name="ConfigType">
+ <sequence>
+ <element name="Source" type="ns:SourceType" maxOccurs="unbounded" minOccurs="0"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="SingleSourceType">
+ <sequence>
+ <element name="Source" type="ns:SourceType"/>
+ </sequence>
+ </complexType>
+
+ <element name="Config" type="ns:ConfigType"/>
+ <element name="Source" type="ns:SourceType"/>
+</schema> \ No newline at end of file
diff --git a/sandbox/slaws/httpserver.php/htdocs/AlertsSources.wsdl b/sandbox/slaws/httpserver.php/htdocs/AlertsSources.wsdl
new file mode 100644
index 0000000000..82422c82ef
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/AlertsSources.wsdl
@@ -0,0 +1,124 @@
+<?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.
+-->
+<wsdl:definitions targetNamespace="http://tuscany.apache.org/sca/samples/aggregator/sources"
+ xmlns:tns="http://tuscany.apache.org/sca/samples/aggregator/sources"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ name="Alerter">
+
+ <wsdl:types>
+ <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://tuscany.apache.org/sca/samples/aggregator/sources"
+ xmlns:alerter="http://tuscany.apache.org/sca/samples/aggregator/types"
+ elementFormDefault="qualified">
+
+ <xsd:import namespace="http://tuscany.apache.org/sca/samples/aggregator/types"
+ schemaLocation="Alerts.xsd" />
+
+ <element name="getAlertSources">
+ <xsd:complexType>
+ <sequence>
+ <element name="parm" type="string" />
+ </sequence>
+ </xsd:complexType>
+ </element>
+
+ <element name="getAlertSourcesResponse">
+ <complexType>
+ <sequence>
+ <element name="parm" type="alerter:ConfigType" />
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="addAlertSource">
+ <xsd:complexType>
+ <sequence>
+ <element name="parm" type="alerter:SourceType"/>
+ </sequence>
+ </xsd:complexType>
+ </element>
+
+ <element name="addAlertSourceResponse">
+ <complexType>
+ <sequence>
+ <element name="parm" type="string" />
+ </sequence>
+ </complexType>
+ </element>
+
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="GetAlertSourcesRequest">
+ <wsdl:part element="tns:getAlertSources" name="parameters" />
+ </wsdl:message>
+ <wsdl:message name="GetAlertSourcesResponse">
+ <wsdl:part element="tns:getAlertSourcesResponse" name="parameters" />
+ </wsdl:message>
+
+ <wsdl:message name="AddAlertSourceRequest">
+ <wsdl:part element="tns:addAlertSource" name="parameters" />
+ </wsdl:message>
+ <wsdl:message name="AddAlertSourceResponse">
+ <wsdl:part element="tns:addAlertSourceResponse" name="parameters" />
+ </wsdl:message>
+
+ <wsdl:portType name="AlertsSourcesPortType">
+ <wsdl:operation name="getAlertSources">
+ <wsdl:input message="tns:GetAlertSourcesRequest" name="GetAlertSourcesRequestMsg" />
+ <wsdl:output message="tns:GetAlertSourcesResponse" name="GetAlertSourcesResponseMsg" />
+ </wsdl:operation>
+ <wsdl:operation name="addAlertSource">
+ <wsdl:input message="tns:AddAlertSourceRequest" name="AddAlertSourceRequestMsg" />
+ <wsdl:output message="tns:AddAlertSourceResponse" name="AddAlertSourceResponseMsg" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="AlertsSourcesBinding" type="tns:AlertsSourcesPortType">
+ <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getAlertSources">
+ <wsdlsoap:operation soapAction="" />
+ <wsdl:input name="GetAlertSourcesRequestMsg">
+ <wsdlsoap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="GetAlertSourcesResponseMsg">
+ <wsdlsoap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="addAlertSource">
+ <wsdlsoap:operation soapAction="" />
+ <wsdl:input name="AddAlertSourceRequestMsg">
+ <wsdlsoap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="AddAlertSourceResponseMsg">
+ <wsdlsoap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="AlertsSourcesService">
+ <wsdl:port name="AlertsSourcesPort" binding="tns:AlertsSourcesBinding">
+ <wsdlsoap:address location="http://localhost:8080/services/AlertsSourcesServiceWebServiceBinding" />
+ </wsdl:port>
+ </wsdl:service>
+
+</wsdl:definitions>
diff --git a/sandbox/slaws/httpserver.php/htdocs/Cached_Alerts.xml b/sandbox/slaws/httpserver.php/htdocs/Cached_Alerts.xml
new file mode 100644
index 0000000000..e208c8d9e4
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/Cached_Alerts.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Alerts xmlns="http://tuscany.apache.org/sca/samples/aggregator/types" xmlns:tns="http://tuscany.apache.org/sca/samples/aggregator/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></Alerts>
diff --git a/sandbox/slaws/httpserver.php/htdocs/index.html b/sandbox/slaws/httpserver.php/htdocs/index.html
new file mode 100644
index 0000000000..f952f08bc8
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/index.html
@@ -0,0 +1,280 @@
+<!--
+ 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.
+-->
+
+<HTML>
+<HEAD>
+ <TITLE>Apache Tuscany Feed Aggregator Sample</TITLE>
+ <link REL="stylesheet" TYPE="text/css" href="style.css">
+</HEAD>
+
+<BODY ONLOAD="getSources()">
+<script type="text/javascript">
+function getXMLHTTP()
+{
+ var xmlHttp;
+ try
+ {
+ // Firefox, Opera 8.0+, Safari
+ xmlHttp=new XMLHttpRequest();
+ }
+ catch (e)
+ {
+ // Internet Explorer
+ try
+ {
+ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
+ }
+ catch (e)
+ {
+ try
+ {
+ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
+ }
+ catch (e)
+ {
+ alert("Your browser does not support AJAX!");
+ return false;
+ }
+ }
+ }
+ return xmlHttp;
+}
+
+var callIsRunning = false;
+
+function getAlerts()
+{
+ var xmlHttp = getXMLHTTP();
+ xmlHttp.onreadystatechange=function()
+ {
+ var refr = document.getElementById("refresh");
+ if(xmlHttp.readyState<4)
+ {
+ callIsRunning = true;
+ refr.innerHTML="<SPAN>Updating...</SPAN>";
+ }
+ if(xmlHttp.readyState==4)
+ {
+ callIsRunning = false;
+ refr.innerHTML="<SPAN CLASS=\"clickable link\" ONCLICK=\"getAlerts()\">Refresh</SPAN>";
+ document.getElementById("alertTable").innerHTML=xmlHttp.responseText;
+ }
+ }
+
+ if(!callIsRunning)
+ {
+ xmlHttp.open("GET","AlertDisplay.php/getAlertsHTMLTable",true);
+ xmlHttp.send(null);
+ }
+
+ // Call this function again after x minutes
+ //setTimeout("getAlerts();", 5*60000);
+}
+
+function displayAlert(url, alertid)
+{
+ if(alertid=="")
+ {
+ document.getElementById("alertData").innerHTML="<IFRAME CLASS=\"alert_data\" SRC=\""+url+"\"/>";
+ window.location="#data";
+ return;
+ }
+
+ document.getElementById(alertid).className="read_title";
+
+ var xmlHttp = getXMLHTTP()
+ xmlHttp.onreadystatechange=function()
+ {
+ if(xmlHttp.readyState==4)
+ {
+ if(xmlHttp.responseText=="")
+ {
+ document.getElementById("alertData").innerHTML="<IFRAME CLASS=\"alert_data\" SRC=\""+url+"\"/>";
+ }
+ else
+ {
+ document.getElementById("alertData").innerHTML=xmlHttp.responseText;
+ }
+ window.location="#data";
+ }
+ }
+
+ xmlHttp.open("GET","AlertDisplay.php/readAlert?alertID="+alertid,true);
+ xmlHttp.send(null);
+}
+
+function getSources()
+{
+ var xmlHttp = getXMLHTTP()
+ xmlHttp.onreadystatechange=function()
+ {
+ var refreshSources = document.getElementById("refreshSources");
+ var refresh = document.getElementById("refresh");
+ if(xmlHttp.readyState<4)
+ {
+ refreshSources.innerHTML=" (Updating...)";
+ refresh.innerHTML="<SPAN>Updating...</SPAN>";
+ }
+ if(xmlHttp.readyState==4)
+ {
+ refreshSources.innerHTML="";
+ document.getElementById("sourcesTable").innerHTML=xmlHttp.responseText;
+ getAlerts();
+ }
+ }
+ xmlHttp.open("GET","AlertDisplay.php/getAlertSourcesHTMLTable",true);
+ xmlHttp.send(null);
+}
+
+function showEditSource(sourceid)
+{
+ document.getElementById("edit_source_"+sourceid).className = "source_"+sourceid;
+}
+
+function hideEditSource(sourceid)
+{
+ document.getElementById("edit_source_"+sourceid).className = "hidden source_"+sourceid;
+}
+
+function updateSource(sourceid)
+{
+ hideEditSource(sourceid);
+ var type = document.getElementById("source_"+sourceid+"_type").value;
+ var sourceXML = constructSourceXML(sourceid, type);
+
+ sendSource("AlertDisplay.php/updateAlertSource", sourceXML);
+
+}
+
+function sendSource(url, sourceXML)
+{
+ var xmlHttp = getXMLHTTP()
+ xmlHttp.onreadystatechange=function()
+ {
+ var refreshSources = document.getElementById("refreshSources");
+ var refresh = document.getElementById("refresh");
+ if(xmlHttp.readyState<4)
+ {
+ refreshSources.innerHTML=" (Updating...)";
+ refresh.innerHTML="<SPAN>Updating...</SPAN>";
+ }
+ if(xmlHttp.readyState==4)
+ {
+ // getSources();
+ }
+ }
+ xmlHttp.open("POST",url,true);
+ xmlHttp.send(sourceXML);
+
+}
+
+function deleteSource(sourceid)
+{
+ var xmlHttp = getXMLHTTP()
+ xmlHttp.onreadystatechange=function()
+ {
+ if(xmlHttp.readyState==4)
+ {
+ getSources();
+ document.getElementById("alertData").innerHTML=""
+ }
+ }
+ xmlHttp.open("GET","AlertDisplay.php/deleteAlertSource?sourceId="+sourceid,true);
+ xmlHttp.send(null);
+}
+
+function showAddNewSource(sourceid)
+{
+ document.getElementById("add_source_"+sourceid).className = "source_"+sourceid;
+}
+
+function hideAddNewSource(sourceid)
+{
+ document.getElementById("add_source_"+sourceid).className = "hidden source_"+sourceid;
+}
+
+function showSourceType(sourceid)
+{
+ var typeElem = document.getElementById("source_"+sourceid+"_type");
+ var type = typeElem.options[typeElem.selectedIndex].value;
+
+ if(type=="rss")
+ {
+ document.getElementById("add_rss_source").className = "";
+ document.getElementById("add_pop_source").className = "hidden";
+ }
+ else if(type=="pop")
+ {
+ document.getElementById("add_rss_source").className = "hidden";
+ document.getElementById("add_pop_source").className = "";
+ }
+}
+
+function addSource(sourceid)
+{
+ hideAddNewSource(sourceid);
+
+ var typeElem = document.getElementById("source_"+sourceid+"_type");
+ var type = typeElem.options[typeElem.selectedIndex].value;
+ var sourceXML = constructSourceXML(sourceid, type);
+
+ sendSource("AlertDisplay.php/addAlertSource", sourceXML);
+
+}
+
+function constructSourceXML(sourceid, type)
+{
+ var name = document.getElementById("source_"+sourceid+"_name").value;
+ var address = document.getElementById("source_"+sourceid+"_address").value;
+
+ var sourceXML = "<Source xmlns=\"http://tuscany.apache.org/sca/samples/aggregator/types\" Type=\""+type+"\" Id=\""+sourceid+"\">";
+ sourceXML += "<Name>"+name+"</Name>";
+ sourceXML += "<Address>"+address+"</Address>";
+
+ if(type=="rss")
+ {
+ var feedAddress = document.getElementById("source_"+sourceid+"_feedAddress").value;
+ sourceXML += "<FeedAddress>"+feedAddress+"</FeedAddress>";
+ }
+ else if(type=="pop")
+ {
+ var popServer = document.getElementById("source_"+sourceid+"_popServer").value;
+ sourceXML += "<PopServer>"+popServer+"</PopServer>";
+ var popUsername = document.getElementById("source_"+sourceid+"_popUsername").value;
+ sourceXML += "<PopUsername>"+popUsername+"</PopUsername>";
+ var popPassword = document.getElementById("source_"+sourceid+"_popPassword").value;
+ sourceXML += "<PopPassword>"+popPassword+"</PopPassword>";
+ }
+ sourceXML += "</Source>";
+
+ return sourceXML;
+}
+</script>
+<H1 ID="top">Apache Tuscany Alert Aggregator Sample</H1>
+<P>Alert Sources<SPAN ID="refreshSources"></SPAN>:</P>
+<DIV ID="sourcesTable"></DIV>
+<P>Recent Alerts (<SPAN ID="refresh"><SPAN CLASS="clickable link" ONCLICK="getAlerts()">Refresh</SPAN></SPAN>):</P
+<DIV ID="alertTable"></DIV>
+<HR></HR>
+<P><A ID="data" HREF="#top">Back to top</A></P>
+<DIV ID="alertData"></DIV>
+
+</BODY>
+</HTML>
+
diff --git a/sandbox/slaws/httpserver.php/htdocs/phpinfo.php b/sandbox/slaws/httpserver.php/htdocs/phpinfo.php
new file mode 100644
index 0000000000..1cf8044fe2
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/phpinfo.php
@@ -0,0 +1,5 @@
+<?php
+phpinfo();
+?>
+
+ \ No newline at end of file
diff --git a/sandbox/slaws/httpserver.php/htdocs/pop.png b/sandbox/slaws/httpserver.php/htdocs/pop.png
new file mode 100644
index 0000000000..1cf1df24a7
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/pop.png
Binary files differ
diff --git a/sandbox/slaws/httpserver.php/htdocs/rss.png b/sandbox/slaws/httpserver.php/htdocs/rss.png
new file mode 100644
index 0000000000..b3c949d224
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/rss.png
Binary files differ
diff --git a/sandbox/slaws/httpserver.php/htdocs/service.smd b/sandbox/slaws/httpserver.php/htdocs/service.smd
new file mode 100644
index 0000000000..bc77e39bf9
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/service.smd
@@ -0,0 +1 @@
+{"SMDVersion":".1","objectName":"AlertsService","serviceType":"JSON-RPC","serviceURL":"http://localhost:8080/sample-feed-aggregator/services/AlertsServiceJSONRPC","methods":[{"name":"getAllNewAlerts","parameters":[{"name":"param0","type":"STRING"}]}]}
diff --git a/sandbox/slaws/httpserver.php/htdocs/style.css b/sandbox/slaws/httpserver.php/htdocs/style.css
new file mode 100644
index 0000000000..cd377e90e5
--- /dev/null
+++ b/sandbox/slaws/httpserver.php/htdocs/style.css
@@ -0,0 +1,166 @@
+/*
+ * 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.
+ */
+
+p,table,li,h1,h2,h3
+{
+font-family: verdana, arial, 'sans serif';
+}
+
+p, h1, h2, h3, table, li, hr
+{
+margin-left: 10pt;
+}
+
+table
+{
+border-color: black;
+border-collapse: separate;
+border-spacing: 0px 1px;
+
+margin-right: 10pt;
+margin-left: 10pt;
+width: 800px;
+}
+
+.sourceDetailsTable
+{
+width: 600px;
+}
+
+tr, td
+{
+margin-left: 0pt;
+margin-right: 0pt;
+padding-left: 10pt;
+font-size: 90%;
+}
+
+p,li,th
+{
+font-size: 90%;
+margin-left: 10pt;
+}
+
+pre
+{
+margin-left: 10pt;
+}
+
+body
+{
+#ffffff;
+}
+
+h1,h2,h3,hr
+{
+color: firebrick;
+}
+
+a:link {COLOR: firebrick;}
+a:visited {COLOR: firebrick;}
+a:active {COLOR: navy;}
+
+.link
+{
+COLOR: firebrick;
+text-decoration: underline;
+}
+
+.clickable
+{
+cursor: pointer
+}
+
+.unread_title
+{
+font-weight: bold;
+}
+
+.read_title
+{
+font-weight: normal;
+}
+
+.summary
+{
+color: DimGrey;
+}
+
+.hidden
+{
+display: none;
+}
+
+.alert_data
+{
+margin-left: 10px;
+width: 800px;
+height: 800px;
+}
+
+.source_0
+{
+background-color: LightGreen;
+}
+
+.source_1
+{
+background-color: LightSkyBlue;
+}
+
+.source_2
+{
+background-color: Khaki;
+}
+
+.source_3
+{
+background-color: LightPink;
+}
+
+.source_4
+{
+background-color: Orange;
+}
+
+.source_5
+{
+background-color: LightCoral;
+}
+
+.source_6
+{
+background-color: Orchid;
+}
+
+.source_7
+{
+background-color: Peru;
+}
+
+.source_8
+{
+background-color: SpringGreen;
+}
+
+.source_9
+{
+background-color: LightGrey;
+}
+