You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by ra...@apache.org on 2010/05/04 08:41:23 UTC
svn commit: r940745 - /incubator/wookie/trunk/connector/php/
Author: raido
Date: Tue May 4 06:41:22 2010
New Revision: 940745
URL: http://svn.apache.org/viewvc?rev=940745&view=rev
Log:
Update PHP Framework, see WOOKIE-128. Except removed methods for "maximize" attribute.
Added:
incubator/wookie/trunk/connector/php/Logger.php
incubator/wookie/trunk/connector/php/WookieConnectorServiceInterface.php
Modified:
incubator/wookie/trunk/connector/php/HTTP_Response.php
incubator/wookie/trunk/connector/php/TestWookieService.php
incubator/wookie/trunk/connector/php/User.php
incubator/wookie/trunk/connector/php/Widget.php
incubator/wookie/trunk/connector/php/WidgetInstance.php
incubator/wookie/trunk/connector/php/WidgetInstances.php
incubator/wookie/trunk/connector/php/WidgetProperties.php
incubator/wookie/trunk/connector/php/WookieConnectorExceptions.php
incubator/wookie/trunk/connector/php/WookieConnectorService.php
incubator/wookie/trunk/connector/php/WookieServerConnection.php
Modified: incubator/wookie/trunk/connector/php/HTTP_Response.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/HTTP_Response.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/HTTP_Response.php (original)
+++ incubator/wookie/trunk/connector/php/HTTP_Response.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,33 +15,60 @@
* limitations under the License.
*/
+/**
+ * HTTP Response class, handles HTTP status codes and response text
+ * @package org.wookie.php
+ */
+
class HTTP_Response {
+
private $statusCode;
private $responseText;
private $header;
+ /** Create new HTTP response
+ *
+ * @param String response from server
+ * @param String headers from server
+ */
+
function __construct($responseText, $header) {
//get http status code
preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|',$header[0],$outcome);
//store information
- $this->statusCode = $outcome[1];
+ $this->statusCode = (int) $outcome[1];
$this->responseText = $responseText;
$this->header = $header;
}
+ /** Get response text
+ * @return String response text
+ */
+
public function getResponseText() {
return $this->responseText;
}
+ /** Get HTTP status code
+ * @return Integer status cde
+ */
+
public function getStatusCode() {
- return $this->statusCode;
+ return (int) $this->statusCode;
}
+ /** Get header
+ * @return Array header array
+ */
public function getHeader() {
return $this->header;
}
+ /** Get header as string
+ * @return String header as string
+ */
+
public function headerToString() {
return implode("\r\n", $this->getHeader());
}
Added: incubator/wookie/trunk/connector/php/Logger.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/Logger.php?rev=940745&view=auto
==============================================================================
--- incubator/wookie/trunk/connector/php/Logger.php (added)
+++ incubator/wookie/trunk/connector/php/Logger.php Tue May 4 06:41:22 2010
@@ -0,0 +1,66 @@
+<?php
+/** @package org.wookie.php */
+
+/*
+ * 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.
+ */
+
+/** Simple Logger class
+ * @package org.wookie.php
+ */
+
+class Logger {
+
+ private $path;
+
+ /** Create new logger
+ * @param String path to writeable folder
+ */
+ function __construct($path) {
+ $this->setPath($path);
+ }
+
+ /** Set logger path
+ *
+ * @param String path to writeable folder
+ */
+
+ public function setPath($path) {
+ $this->path = $path;
+ }
+
+ /** Get current logger path
+ * @return String current logger path
+ */
+ public function getPath() {
+ return $this->path;
+ }
+
+ /** Write data to log, if logger path is set
+ *
+ * @param String input string
+ */
+ public function write($str) {
+ $path = $this->getPath();
+ if(!empty($path)) {
+ $str = "[ ".date("d/m/Y H:i:s")." ] ".$str."\n";
+ $fileWriter = @file_put_contents($path."wookie_php.0.log", $str, FILE_APPEND);
+ if(!$fileWriter) {
+ echo "<b>Wookie PHP: Writing to log failed, check permissions/path</b>";
+ }
+ }
+ }
+
+}
+
+?>
Modified: incubator/wookie/trunk/connector/php/TestWookieService.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/TestWookieService.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/TestWookieService.php (original)
+++ incubator/wookie/trunk/connector/php/TestWookieService.php Tue May 4 06:41:22 2010
@@ -1,4 +1,9 @@
<?php
+/**
+ * @package org.wookie.php.test
+ * @filesource
+ */
+
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,9 +22,12 @@
ini_set('display_errors', 1);
error_reporting(E_ALL &~ E_NOTICE);
+/** @ignore */
require_once("WookieConnectorService.php");
-$test = new WookieConnectorService("http://localhost:8080/wookie/", "TEST", "localhost_test", 'demo_2');
+$test = new WookieConnectorService("http://dev.ubuntu-box.htk:8081/wookie/", "TEST", "localhost_dev", "demo_1");
+//set logging path, if not set then logger doesnt do nohting
+//$test->setLogPath("/home/raido/dev/www/php_framework/logs/");
//setup different userName
$test->getUser()->setLoginName("demo_1");
//get all available widgets
@@ -27,7 +35,9 @@ $availableWidgets = $test->getAvailableW
//print_r($availableWidgets);
//check connection
-echo $test->getConnection()->Test().'<br />';
+if(!$test->getConnection()->Test()) {
+echo 'error'.'<br />';
+}
//create select menus
echo '<pre>';
@@ -69,7 +79,9 @@ if($_GET['widget_id'] != '') {
//setup different userName for current user
$test->getUser()->setLoginName("demo_2");
$widget = $test->getOrCreateInstance($_GET['widget_id']);
+
if($widget) {
+ echo $widget->isMaximizable();
echo '<iframe src="'.$widget->getUrl().'" width="'.$widget->getWidth().'" height="'.$widget->getHeight().'"></iframe><br />';
}
//add participant
@@ -77,10 +89,9 @@ if($_GET['widget_id'] != '') {
$test->addParticipant($widget, $testUser);
print_r($test->getUsers($widget));
- //delete participant DOES NOT WORK
+ //delete participant
$testUser = new User('demo_2', 'demo_2');
$test->deleteParticipant($widget, $testUser);
- $test->deleteParticipant($widget, $testUser);
echo 'Users after delete <br />';
print_r($test->getUsers($widget));
@@ -95,7 +106,7 @@ if($_GET['widget_id'] != '') {
print_r($test->getProperty($widget, $newProperty)); // you can use property without value for get -> new Property('proovikas');
//finally delete it from server
- $newProperty = new Property('proovikas');
+ $newProperty = new Property('demo_property');
echo 'Properties after delete<br />';
print_r($test->deleteProperty($widget, $newProperty)); // you can use property without value for get -> new Property('proovikas');
echo '<br />';
@@ -103,8 +114,10 @@ if($_GET['widget_id'] != '') {
if($_GET['widget_id2'] != '') {
//setup different userName for current user
- $test->getUser()->setLoginName("demo_3");
+ $test->getUser()->setLoginName("demo_425");
$widget2 = $test->getOrCreateInstance($_GET['widget_id2']);
+ $newProperty = new Property("test_id", "kasutaja_2");
+ $result = $test->setProperty($widget2, $newProperty);
if($widget2) {
echo '<iframe src="'.$widget2->getUrl().'" width="'.$widget2->getWidth().'" height="'.$widget2->getHeight().'"></iframe><br />';
}
@@ -119,4 +132,4 @@ if($_GET['widget_id2'] != '') {
print_r($test->WidgetInstances->get());
-?>
\ No newline at end of file
+?>
Modified: incubator/wookie/trunk/connector/php/User.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/User.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/User.php (original)
+++ incubator/wookie/trunk/connector/php/User.php Tue May 4 06:41:22 2010
@@ -1,5 +1,7 @@
<?php
-/**
+/** @package org.wookie.php */
+
+/*
* 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
@@ -16,7 +18,9 @@
/**
* A user represents a possible user of a widget. This class provides a standard way
* of representing users in plugins for host environments.
+ * @package org.wookie.php
*/
+
class User {
private $loginName = "UNKNOWN";
private $screenName = "UNKNOWN";
@@ -25,8 +29,8 @@ class User {
/**
* Create a new user.
*
- * @param loginName
- * @param screenName
+ * @param String user login name
+ * @param String user display name
*/
function __construct($loginName, $screenName, $thumbnail_url = null) {
$this->setLoginName($loginName);
@@ -36,6 +40,7 @@ class User {
/**
* Get the login name for this user.
+ * @return String user login name
*/
public function getLoginName() {
return $this->loginName;
@@ -44,6 +49,7 @@ class User {
/**
* Get the screen name for this user. This is the name that is intended to be displayed on
* screen. In many cases it will be the same as the login name.
+ * @return String user display name
*/
public function getScreenName() {
return $this->screenName;
@@ -53,37 +59,35 @@ class User {
* Set the login name for this user. This is the value that is used by the user to register on the
* system, it is guaranteed to be unique.
*
- * @param loginName
+ * @param String new login name
*/
public function setLoginName($loginName) {
- $this->loginName = $loginName;
+ $this->loginName = (string) trim($loginName);
}
/**
* Set the screen name for this user. this is the value that should be displayed on screen.
* In many cases it will be the same as the login name.
*
- * @param screenName
+ * @param String new screen name
*/
public function setScreenName($screenName) {
- $this->screenName = $screenName;
+ $this->screenName = (string) trim($screenName);
}
/**
* Get the URL for a thumbnail representing this user.
- * @return
+ * @return String user thumbnail icon url
*/
public function getThumbnailUrl() {
- // FIXME: manage user thumbnails
- return "http://fixme.org/thumbnail";
+ return $this->thumbnailURL;
}
/**
* Set the URL for a thumbnail representing this user.
- * @return
+ * @param String new thumbnail url
*/
public function setThumbnailUrl($thumbnail_url) {
- // FIXME: manage user thumbnails
$this->thumbnailURL = $thumbnail_url;
}
}
Modified: incubator/wookie/trunk/connector/php/Widget.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/Widget.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/Widget.php (original)
+++ incubator/wookie/trunk/connector/php/Widget.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,15 +17,22 @@
/**
* A client side representation of a widget.
- *
- * @refactor this duplicates data stored in the Widget bean on the server side.
+ * @package org.wookie.php
*/
+
class Widget {
- var $identifier;
- var $title;
- var $description;
- var $icon;
+ private $identifier;
+ private $title;
+ private $description;
+ private $icon;
+ /** Init new Widget
+ *
+ * @param String widget identifier/guid
+ * @param String widget title
+ * @param String widget description
+ * @param String widgeticon url
+ */
function __construct($identifier, $title, $description, $icon) {
$this->identifier = $identifier;
$this->title = $title;
@@ -35,7 +43,7 @@ class Widget {
/**
* Get a unique identifier for this widget type.
*
- * @return
+ * @return String widget identifier (guid)
*/
public function getIdentifier() {
return $this->identifier;
@@ -43,7 +51,7 @@ class Widget {
/**
* Get the human readable title of this widget.
- * @return
+ * @return String widget title
*/
public function getTitle() {
return $this->title;
@@ -51,7 +59,7 @@ class Widget {
/**
* Get the location of a logo for this widget.
- * @return
+ * @return String widget icon url
*/
public function getIcon() {
return $this->icon;
@@ -60,7 +68,7 @@ class Widget {
/**
* Get the description of the widget.
*
- * @return
+ * @return String widget description
*/
public function getDescription() {
return $this->description;
Modified: incubator/wookie/trunk/connector/php/WidgetInstance.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/WidgetInstance.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/WidgetInstance.php (original)
+++ incubator/wookie/trunk/connector/php/WidgetInstance.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,78 +17,116 @@
/**
* An instance of a widget for use on the client.
- *
- * @refactor this class duplicates code in the widget bean o nthe server side
- *
+ * @package org.wookie.php
*/
class WidgetInstance {
- var $url;
- var $guid;
- var $title;
- var $height;
- var $width;
- var $maximize;
+ private $url;
+ private $guid;
+ private $title;
+ private $height;
+ private $width;
+
+ /** Init new WidgetInstance
+ * @param String url of widget
+ * @param String guid of widget
+ * @param String title of widget
+ * @param String height of widget
+ * @param String width of widget
+ * @deprecated Maximize value is deprecated and should not be used. It's going to be removed in future.
+ */
- public function WidgetInstance($url, $guid, $title, $height, $width, $maximize) {
+ function __construct($url, $guid, $title, $height, $width) {
$this->setIdentifier($guid);
$this->setUrl($url);
$this->setTitle($title);
$this->setHeight($height);
$this->setWidth($width);
- $this->setMaximize($maximize);
}
+ /** Get Widget instance url
+ * @return String widget instance url
+ */
+
public function getUrl() {
return $this->url;
}
- public function setUrl($url) {
+ /** Set widget instance url
+ *
+ * @param String new url for instance
+ */
+
+ private function setUrl($url) {
$this->url = $url;
}
+ /** Get widget guid value
+ * @return String guid of widget
+ */
+
public function getIdentifier() {
return $this->guid;
}
- public function setIdentifier($guid) {
+ /** Set widget guid value
+ *
+ * @param String guid value
+ */
+
+ private function setIdentifier($guid) {
$this->guid = $guid;
}
+ /** Get widget title
+ * @return String widget title
+ */
+
public function getTitle() {
return $this->title;
}
+ /** Set widget title
+ *
+ * @param String new widget title
+ */
+
public function setTitle($title) {
$this->title = $title;
}
+ /** Get widget height
+ * @return Integer widget height
+ */
+
public function getHeight() {
- return $this->height;
+ return (int) $this->height;
}
+ /** Set widget height
+ * @param Integer new widget height
+ */
+
public function setHeight($height) {
- $this->height = $height;
+ $this->height = (int) $height;
}
+
+ /** Get wiget width
+ * @return Integer widget width
+ */
public function getWidth() {
- return $this->width;
+ return (int) $this->width;
}
+
+ /** Set widget width
+ *
+ * @param Integer new widget width
+ */
public function setWidth($width) {
- $this->width = $width;
- }
-
- public function getMaximize() {
- return $this->maximize;
- }
-
- public function setMaximize($maximize) {
- $this->maximize = $maximize;
- }
- public function isMaximizable() {
- return $this->getMaximize;
+ $this->width = (int) $width;
}
}
-?>
\ No newline at end of file
+?>
Modified: incubator/wookie/trunk/connector/php/WidgetInstances.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/WidgetInstances.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/WidgetInstances.php (original)
+++ incubator/wookie/trunk/connector/php/WidgetInstances.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,21 +17,25 @@
/**
* A collection of known widget instances available to a host.
+ * @package org.wookie.php
*/
+
class WidgetInstances {
private $WidgetInstances = array();
/**
* Record an instance of the given widget.
*
- * @param xml description of the instance as returned by the widget server when the widget was instantiated.
- * @return the identifier for this instance
+ * @param WidgetInstance instance of widget
*/
+
public function put($instance) {
$this->WidgetInstances[$instance->getIdentifier()] = $instance;
}
- /* Get all Widget instances */
+ /** Get all Widget instances
+ * @return array array of widget instances
+ */
public function get() {
return $this->WidgetInstances;
Modified: incubator/wookie/trunk/connector/php/WidgetProperties.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/WidgetProperties.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/WidgetProperties.php (original)
+++ incubator/wookie/trunk/connector/php/WidgetProperties.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,36 +15,75 @@
* limitations under the License.
*/
+/** Property class
+ * @package org.wookie.php
+ **/
+
class Property {
private $propertyName = '';
private $propertyValue = '';
private $isPublic = 'false';
+ /** Construct new property
+ * @param String property name
+ * @param String property value
+ * @param String is property public (handled as shareddatakey) or private
+ */
+
function __construct($propertyName, $propertyValue = null, $isPublic = 'false') {
$this->propertyName = (string) $propertyName;
$this->propertyValue = (string) $propertyValue;
$this->isPublic = (string) $isPublic;
}
+ /** Get property value
+ * @return String value of property
+ */
+
public function getValue() {
return $this->propertyValue;
}
+ /** Get property name
+ * @return String name of property
+ */
+
public function getName() {
return $this->propertyName;
}
- public function isPublic() {
+
+ /** Get property isPublic flag
+ * @return String isPublic flag of property
+ */
+
+ public function getIsPublic() {
return $this->isPublic;
}
+ /** Set property value
+ *
+ * @param String new value
+ */
+
public function setValue($value) {
$this->propertyValue = (string) $value;
}
+ /** Set property name
+ *
+ * @param String new name
+ */
+
public function setName($propertyName) {
$this->propertyName = (string) $propertyName;
}
- public function set_isPublic($isPublic) {
+
+ /** Set isPublic flag
+ *
+ * @param String isPublic flag, "true" or "false"
+ */
+
+ public function setIsPublic($isPublic) {
$this->isPublic = (string) $isPublic;
}
Modified: incubator/wookie/trunk/connector/php/WookieConnectorExceptions.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/WookieConnectorExceptions.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/WookieConnectorExceptions.php (original)
+++ incubator/wookie/trunk/connector/php/WookieConnectorExceptions.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,25 +15,58 @@
* limitations under the License.
*/
-class WookieConnectorException extends Exception {
-
- public function errorMessage() {
- //error message
- $errorMsg = 'Exception thrown on line: '.$this->getLine().' in '.$this->getFile()
- .': <b>'.$this->getMessage().'</b>';
- return $errorMsg;
+/** Class for handling exception information
+ * @package org.wookie.php
+ **/
+
+class ExceptionString {
+ private $str;
+
+ /**
+ * Constructor for exception data handling
+ * @param Exception $ex
+ */
+ function __construct($ex) {
+ $this->str = @basename($ex->getFile()).':'.$ex->getLine().'::'.$ex->getMessage().'';
+ }
+
+ /** Return exception data as string
+ * @return String exception information
+ */
+ public function getString() {
+ return (string) $this->str;
}
}
-class WookieWidgetInstanceException extends Exception {
+/** WookieConnectorException class
+ * @package org.wookie.php
+ */
- public function errorMessage() {
- //error message
- $errorMsg = 'Exception thrown on line: '.$this->getLine().' in '.$this->getFile()
- .': <b>'.$this->getMessage().'</b>';
- return $errorMsg;
+class WookieConnectorException extends Exception {
+
+ /** Convert exception data to String
+ * @return String exception information
+ */
+
+ public function toString() {
+ $exStr = new ExceptionString($this);
+ return $exStr->getString();
}
}
+/** WookieWidgetInstanceException class
+ * @package org.wookie.php
+ */
+class WookieWidgetInstanceException extends Exception {
+
+ /** Convert exception data to String
+ * @return String exception information
+ */
+
+ public function toString() {
+ $exStr = new ExceptionString($this);
+ return $exStr->getString();
+ }
+}
-?>
\ No newline at end of file
+?>
Modified: incubator/wookie/trunk/connector/php/WookieConnectorService.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/WookieConnectorService.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/WookieConnectorService.php (original)
+++ incubator/wookie/trunk/connector/php/WookieConnectorService.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,6 +15,7 @@
* limitations under the License.
*/
+/** @ignore */
require("WookieConnectorExceptions.php");
require("WookieServerConnection.php");
require("WidgetInstances.php");
@@ -22,54 +24,116 @@ require("WidgetInstance.php");
require("WidgetProperties.php");
require("User.php");
require("HTTP_Response.php");
+require("Logger.php");
+require("WookieConnectorServiceInterface.php");
+/**
+ * Wookie connector service, handles all the data requests and responses
+ * @package org.wookie.php
+ */
-class WookieConnectorService {
+class WookieConnectorService implements WookieConnectorServiceInterface {
private $conn;
public $WidgetInstances;
private $user;
private $httpStreamCtx;
+ private $logger;
+
+ /** Create new connector
+ *
+ * @param String url to Wookie host
+ * @param String Wookie API key
+ * @param String shareddatakey to use
+ * @param String user login name
+ * @param String user display name
+ */
function __construct($url, $apiKey, $sharedDataKey, $loginName, $screenName = null) {
$this->setConnection(new WookieServerConnection($url, $apiKey, $sharedDataKey));
$this->setWidgetInstancesHolder();
$this->setUser($loginName, $screenName);
$this->setHttpStreamContext(array('http' => array('timeout' => 15)));
+ $this->logger = new Logger("");
}
- public function setConnection($newConn) {
+ /** Initiate logger
+ * @param String path to writeable folder
+ */
+
+ public function setLogPath($path) {
+ $this->getLogger()->setPath($path);
+ }
+
+ /** Get logger
+ * @return Logger Simple logger for ConnectorService
+ */
+
+ private function getLogger() {
+ return $this->logger;
+ }
+
+ /** Set Wookie connection
+ *
+ * @param WookieServerConnection new WookieServerConnection instance
+ */
+ private function setConnection($newConn) {
$this->conn = $newConn;
}
+
+ /** Get current Wookie connection
+ * @return WookieServerConnection current Wookie server connection
+ */
public function getConnection() {
return $this->conn;
}
-
- public function setWidgetInstancesHolder() {
+
+ /** Set WidgetInstances holder */
+ private function setWidgetInstancesHolder() {
$this->WidgetInstances = new WidgetInstances();
}
+ /** Set user for connection
+ *
+ * @param String username
+ * @param String optional display name
+ */
public function setUser($loginName, $screenName = null) {
if($screenName == null) {
$screenName = $loginName;
}
$this->user = new User($loginName, $screenName);
}
-
+
+ /** Get current user
+ * @return User current connection user
+ */
public function getUser() {
return $this->user;
}
- private function setHttpStreamContext($params = null) {
+ /** Set HttpStreamContext parameters
+ *
+ * @param Array array of context parameters
+ */
+ private function setHttpStreamContext($params) {
$this->httpStreamCtx = @stream_context_create($params);
}
+ /** Get HttpStreamContext
+ * @return StreamContextResource HttpStreamContext resource
+ */
+
private function getHttpStreamContext() {
return $this->httpStreamCtx;
}
- /* Do HTTP request
- /* @return new HTTP_Response instance */
+ /** Do HTTP request
+ * @param String url to request
+ * @param String data to send
+ * @param String method to use
+ * @return HTTP_Response new HTTP_Response instance
+ */
private function do_request($url, $data, $method = 'POST')
{
@@ -100,15 +164,14 @@ class WookieConnectorService {
/**
* Get or create an instance of a widget.
*
- * @param widget
- * @return the ID of the widget instance
- * @throws IOException
- * @throws SimalRepositoryException
+ * @param Widget|String instance of widget or guid
+ * @return WidgetInstance WidgetInstance if successful, otherwise false
+ * @throws WookieConnectorException
*/
- public function getOrCreateInstance($Widget_or_GUID = null) {
+ public function getOrCreateInstance($Widget_or_GUID) {
try {
- if(is_object($Widget_or_GUID)) {
+ if($Widget_or_GUID instanceof Widget) {
$guid = $Widget_or_GUID->getIdentifier();
} else {
$guid = $Widget_or_GUID;
@@ -118,7 +181,6 @@ class WookieConnectorService {
}
$requestUrl = $this->getConnection()->getURL().'widgetinstances';
$request.= '&api_key='.$this->getConnection()->getApiKey();
- $request.= '&servicetype=';
$request.= '&userid='.$this->getUser()->getLoginName();
$request.= '&shareddatakey='.$this->getConnection()->getSharedDataKey();
$request.= '&widgetid='.$guid;
@@ -135,10 +197,15 @@ class WookieConnectorService {
if($response->getStatusCode() == 401) { throw new WookieConnectorException("Invalid API key"); }
$instance = $this->parseInstance($guid, $response->getResponseText());
- $this->WidgetInstances->put($instance);
+ if($instance) {
+ $this->WidgetInstances->put($instance);
+
+ //add current user as participant
+ $this->addParticipant($instance, $this->getUser());
+ }
return $instance;
} catch (WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
}
return false;
}
@@ -147,19 +214,18 @@ class WookieConnectorService {
/**
* Record an instance of the given widget.
*
- * @param xml description of the instance as returned by the widget server when the widget was instantiated.
- * @return new Widget instance
+ * @param String widget guid
+ * @param String xml description of the instance as returned by the widget server when the widget was instantiated.
+ * @return new Widget instance or false
*/
private function parseInstance($widgetGuid, $xml) {
$xmlWidgetData = @simplexml_load_string($xml);
- if(is_object($xmlWidgetData)) {
- //print_r($xmlWidgetData);
+ if($xmlWidgetData instanceof SimpleXMLElement) {
$url = (string) $xmlWidgetData->url;
$title = (string) $xmlWidgetData->title;
$height = (string) $xmlWidgetData->height;
$width = (string) $xmlWidgetData->width;
- $maximize = (string) $xmlWidgetData->maximize;
- $instance = new WidgetInstance($url, $widgetGuid, $title, $height, $width, $maximize);
+ $instance = new WidgetInstance($url, $widgetGuid, $title, $height, $width);
return $instance;
}
return false;
@@ -168,8 +234,8 @@ class WookieConnectorService {
/**
* Check if URL is parsable.
*
- * @param url
- * @return boolean
+ * @param String url to parse
+ * @return boolean true if parseable, otherwise false
*/
private function checkURL($url) {
@@ -181,18 +247,20 @@ class WookieConnectorService {
}
/**
- * @refactor At time of writing the REST API for adding a participant is broken so we are
- * using the non-REST approach. The code for REST API is commented out and should be used
- * in the future.
+ * Add new participant
+ * @param WidgetInstance instance of WidgetInstance
+ * @param User instance of User
* @return boolean true - if added/exists - false if some error
+ * @throws WookieConnectorException
+ * @throws WookieWidgetInstanceException
*/
public function addParticipant($widgetInstance, $User) {
$Url = $this->getConnection()->getURL().'participants';
try {
- if(!is_object($widgetInstance)) throw new WookieWidgetInstanceException('No Widget instance');
- if(!is_object($User)) throw new WookieConnectorException('No User object');
+ if(!$widgetInstance instanceof WidgetInstance) throw new WookieWidgetInstanceException('No Widget instance');
+ if(!$User instanceof User) throw new WookieConnectorException('No User object');
$data = array(
'api_key' => $this->getConnection()->getApiKey(),
@@ -224,32 +292,34 @@ class WookieConnectorService {
}
} catch (WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
} catch (WookieWidgetInstanceException $e) {
- echo '<b>function.addParticipant:</b> '.$e->getMessage().'<br />';
+ $this->getLogger()->write($e->toString());
}
return false;
}
/**
- * @refactor Delete participant
- * @param WidgetInstance $widgetInstance
- * @param UserInstance $User
+ * Delete participant
+ * @param WidgetInstance instance of WidgetInstance
+ * @param User instance of User
* @return boolean true - if deleted, false - if not found
+ * @throws WookieConnectorException
+ * @throws WookieWidgetInstanceException
*/
public function deleteParticipant($widgetInstance, $User) {
$Url = $this->getConnection()->getURL().'participants';
try {
- if(!is_object($widgetInstance)) throw new WookieWidgetInstanceException('No Widget instance');
- if(!is_object($User)) throw new WookieConnectorException('No User object');
+ if(!$widgetInstance instanceof WidgetInstance) throw new WookieWidgetInstanceException('No Widget instance');
+ if(!$User instanceof User) throw new WookieConnectorException('No User object');
$request = '?api_key='.$this->getConnection()->getApiKey();
$request .= '&shareddatakey='.$this->getConnection()->getSharedDataKey();
$request .= '&userid='.$this->getUser()->getLoginName();
$request .= '&widgetid='.$widgetInstance->getIdentifier();
- $request .= '&participant_id='.$this->getUser()->getLoginName();
+ $request .= '&participant_id='.$User->getLoginName();
if(!$this->checkURL($Url)) {
@@ -272,24 +342,25 @@ class WookieConnectorService {
}
} catch (WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
} catch (WookieWidgetInstanceException $e) {
- echo '<b>function.deleteParticipant:</b> '.$e->getMessage().'<br />';
+ $this->getLogger()->write($e->toString());
}
return false;
}
/**
* Get the array of users for a widget instance
- * @param instance
- * @return an array of users
+ * @param WidgetInstance instance of WidgetInstance
+ * @return Array an array of users
* @throws WookieConnectorException
+ * @throws WookieWidgetInstanceException
*/
public function getUsers($widgetInstance) {
$Url = $this->getConnection()->getURL().'participants';
$Users = array();
try {
- if(!is_object($widgetInstance)) throw new WookieWidgetInstanceException('No Widget instance');
+ if(!$widgetInstance instanceof WidgetInstance) throw new WookieWidgetInstanceException('No Widget instance');
$request = '?api_key='.$this->getConnection()->getApiKey();
$request .= '&shareddatakey='.$this->getConnection()->getSharedDataKey();
$request .= '&userid='.$this->getUser()->getLoginName();
@@ -304,7 +375,7 @@ class WookieConnectorService {
$xmlObj = @simplexml_load_string($response->getResponseText());
- if(is_object($xmlObj)) {
+ if($xmlObj instanceof SimpleXMLElement) {
foreach($xmlObj->children() as $participant) {
$participantAttr = $participant->attributes();
@@ -320,9 +391,9 @@ class WookieConnectorService {
}
} catch (WookieWidgetInstanceException $e) {
- echo '<b>function.getUsers:</b> '.$e->getMessage().'<br />';
+ $this->getLogger()->write($e->toString());
} catch (WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
}
return $Users;
}
@@ -335,7 +406,7 @@ class WookieConnectorService {
* far in order to allow the application to proceed. The application should
* display an appropriate message in this case.
*
- * @return array of available widgets
+ * @return array array of available widgets
* @throws WookieConnectorException
*/
@@ -343,7 +414,6 @@ class WookieConnectorService {
$widgets = array();
try {
$request = $this->getConnection()->getURL().'widgets?all=true';
-
if(!$this->checkURL($request)) {
throw new WookieConnectorException("URL for Wookie is malformed");
}
@@ -351,7 +421,7 @@ class WookieConnectorService {
$response = new HTTP_Response(@file_get_contents($request, false, $this->getHttpStreamContext()), $http_response_header);
$xmlObj = @simplexml_load_string($response->getResponseText());
- if(is_object($xmlObj)) {
+ if($xmlObj instanceof SimpleXMLElement) {
foreach($xmlObj->children() as $widget) {
$id = (string) $widget->attributes()->identifier;
$title = (string) $widget->title;
@@ -368,24 +438,25 @@ class WookieConnectorService {
}
} catch(WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
}
return $widgets;
}
/**
* Set property for Widget instance
- *
- * @return new Property instance
+ * @param WidgetInstance instance of WidgetInstance
+ * @param Propety instance of Property
+ * @return Property new Property instance
* @throws WookieConnectorException, WookieWidgetInstanceException
*/
- public function setProperty($widgetInstance = null, $propertyInstance = null) {
+ public function setProperty($widgetInstance, $propertyInstance) {
$Url = $this->getConnection()->getURL().'properties';
try {
- if(!is_object($widgetInstance)) throw new WookieWidgetInstanceException('No Widget instance');
- if(!is_object($propertyInstance)) throw new WookieConnectorException('No properties instance');
+ if(!$widgetInstance instanceof WidgetInstance) throw new WookieWidgetInstanceException('No Widget instance');
+ if(!$propertyInstance instanceof Property) throw new WookieConnectorException('No properties instance');
$data = array(
'api_key' => $this->getConnection()->getApiKey(),
@@ -394,11 +465,11 @@ class WookieConnectorService {
'widgetid' => $widgetInstance->getIdentifier(),
'propertyname' => $propertyInstance->getName(),
'propertyvalue' => $propertyInstance->getValue(),
- 'is_public' => $propertyInstance->isPublic(),
+ 'is_public' => $propertyInstance->getIsPublic(),
);
if(!$this->checkURL($Url)) {
- throw new WookieConnectorException("Properties rest URL is incorrect: ".$Url);
+ throw new WookieConnectorException("Properties rest URL is incorrect: ".$Url);
}
$response = $this->do_request($Url, $data);
@@ -414,26 +485,27 @@ class WookieConnectorService {
}
} catch (WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
} catch (WookieWidgetInstanceException $e) {
- echo '<b>function.setProperty:</b> '.$e->getMessage().'<br />';
+ $this->getLogger()->write($e->toString());
}
return false;
}
/**
* Get property for Widget instance
- *
- * @return new Property(), if request fails, return false;
+ * @param WidgetInstance instance of WidgetInstance
+ * @param Propety instance of Property
+ * @return Property if request fails, return false;
* @throws WookieConnectorException, WookieWidgetInstanceException
*/
- public function getProperty($widgetInstance = null, $propertyInstance = null) {
+ public function getProperty($widgetInstance, $propertyInstance) {
$Url = $this->getConnection()->getURL().'properties';
try {
- if(!is_object($widgetInstance)) throw new WookieWidgetInstanceException('No Widget instance');
- if(!is_object($propertyInstance)) throw new WookieConnectorException('No properties instance');
+ if(!$widgetInstance instanceof WidgetInstance) throw new WookieWidgetInstanceException('No Widget instance');
+ if(!$propertyInstance instanceof Property) throw new WookieConnectorException('No properties instance');
$data = array(
'api_key' => $this->getConnection()->getApiKey(),
@@ -456,27 +528,27 @@ class WookieConnectorService {
return new Property($propertyInstance->getName(), $response->getResponseText());
} catch (WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
} catch (WookieWidgetInstanceException $e) {
- echo '<b>function.getProperty:</b> '.$e->getMessage().'<br />';
+ $this->getLogger()->write($e->toString());
}
return false;
}
/**
* Delete property for Widget instance
- *
- * @access Public
+ * @param WidgetInstance instance of WidgetInstance
+ * @param Propety instance of Property
* @return boolean true/false -- true if deleted, false if doesnt exist
* @throws WookieConnectorException, WookieWidgetInstanceException
*/
- public function deleteProperty($widgetInstance = null, $propertyInstance = null) {
+ public function deleteProperty($widgetInstance, $propertyInstance) {
$Url = $this->getConnection()->getURL().'properties';
try {
- if(!is_object($widgetInstance)) throw new WookieWidgetInstanceException('No Widget instance');
- if(!is_object($propertyInstance)) throw new WookieConnectorException('No properties instance');
+ if(!$widgetInstance instanceof WidgetInstance) throw new WookieWidgetInstanceException('No Widget instance');
+ if(!$propertyInstance instanceof Property) throw new WookieConnectorException('No properties instance');
$request = '?api_key='.$this->getConnection()->getApiKey();
$request .= '&shareddatakey='.$this->getConnection()->getSharedDataKey();
@@ -500,12 +572,12 @@ class WookieConnectorService {
return true;
} catch (WookieConnectorException $e) {
- echo $e->errorMessage();
+ $this->getLogger()->write($e->toString());
} catch (WookieWidgetInstanceException $e) {
- echo '<b>function.getProperty:</b> '.$e->getMessage().'<br />';
+ $this->getLogger()->write($e->toString());
}
return false;
}
}
-?>
\ No newline at end of file
+?>
Added: incubator/wookie/trunk/connector/php/WookieConnectorServiceInterface.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/WookieConnectorServiceInterface.php?rev=940745&view=auto
==============================================================================
--- incubator/wookie/trunk/connector/php/WookieConnectorServiceInterface.php (added)
+++ incubator/wookie/trunk/connector/php/WookieConnectorServiceInterface.php Tue May 4 06:41:22 2010
@@ -0,0 +1,110 @@
+<?php
+/** @package org.wookie.php */
+
+/*
+ * 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.
+ */
+
+/** Description: Interface for WookieConnectorService
+ * @package org.wookie.php
+ */
+
+interface WookieConnectorServiceInterface {
+
+ /** Get all available widgets
+ * @return array[Widget]|false array of widgets, otherwise false
+ */
+
+ public function getAvailableWidgets();
+
+ /** Set Logger path
+ * @param String path for writeable folder, example: /var/log/myWriteableFolder/
+ */
+
+ public function setLogPath($path);
+
+ /** Get current connection
+ * @return WookieServerConnection instance of WookieServerConnection
+ */
+
+ public function getConnection();
+
+ /** Set new user
+ * @param String username for Wookie connection
+ * @param String screenName for Wookie connection
+ */
+
+ public function setUser($loginName, $screenName = null);
+
+ /** Get current user
+ * @return User instance of User
+ */
+
+ public function getUser();
+
+ /** Get or create new widget instance
+ * @param Widget|String new Widget or String guid of widget
+ * @return WidgetInstance|false WidgetInstace if successuful, otherwise false
+ */
+
+ public function getOrCreateInstance($Widget_or_GUID);
+
+ /** Add new participant
+ * @param WidgetInstance instance of WidgetInstance
+ * @param User instance of User
+ * @return boolean true if successful, otherwise false
+ */
+
+ public function addParticipant($widgetInstance, $User);
+
+ /** Delete participant
+ * @param WidgetInstance instance of WidgetInstance
+ * @param User instance of User
+ * @return boolean true if successful, otherwise false
+ */
+
+ public function deleteParticipant($widgetInstance, $User);
+
+ /** Get all participants of current widget
+ * @param WidgetInstance instance of WidgetInstance
+ * @return array[User] array of User instances
+ */
+
+ public function getUsers($widgetInstance);
+
+ /** Set new property
+ * @param WidgetInstance instance of WidgetInstance
+ * @param Property instance of Property
+ * @return Property|false Property if successful, otherwise false
+ */
+
+ public function setProperty($widgetInstance, $propertyInstance);
+
+ /** Get property
+ * @param WidgetInstance instance of WidgetInstance
+ * @param Property instance of Property
+ * @return Property|false Property if successful, otherwise false
+ */
+
+ public function getProperty($widgetInstance, $propertyInstance);
+
+ /** Delete property
+ * @param WidgetInstance instance of WidgetInstance
+ * @param Property instance of Property
+ * @return boolean true if successful, otherwise false
+ */
+
+ public function deleteProperty($widgetInstance, $propertyInstance );
+
+}
+?>
\ No newline at end of file
Modified: incubator/wookie/trunk/connector/php/WookieServerConnection.php
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/php/WookieServerConnection.php?rev=940745&r1=940744&r2=940745&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/php/WookieServerConnection.php (original)
+++ incubator/wookie/trunk/connector/php/WookieServerConnection.php Tue May 4 06:41:22 2010
@@ -1,4 +1,5 @@
<?php
+/** @package org.wookie.php */
/*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,7 +19,7 @@
* A connection to a Wookie server. This maintains the necessary data for
* connecting to the server and provides utility methods for making common calls
* via the Wookie REST API.
- *
+ * @package org.wookie.php
*/
@@ -29,11 +30,9 @@ class WookieServerConnection {
/**
* Create a connection to a Wookie server at a given URL.
- * @param url the URL of the wookie server
- * @param apiKey the API key for the server
- * @param sharedDataKey the sharedDataKey for the server connection
- *
- * @throws WookieConnectorException if there is a problem setting up this connection.
+ * @param String the URL of the wookie server
+ * @param String the API key for the server
+ * @param String the sharedDataKey for the server connection
*/
function __construct($url, $apiKey, $sharedDataKey) {
$this->setURL($url);
@@ -44,8 +43,7 @@ class WookieServerConnection {
/**
* Get the URL of the wookie server.
*
- * @return
- * @throws WookieConnectionException
+ * @return String current Wookie connection URL
*/
public function getURL() {
return $this->url;
@@ -54,8 +52,9 @@ class WookieServerConnection {
/**
* Set the URL of the wookie server.
*
- * @throws WookieConnectionException
+ * @param String new Wookie server URL
*/
+
public function setURL($newUrl) {
//parse url, if host == localhost, replace it with 127.0.0.1
// Bug causes Apache crash, while using file_get_contents function
@@ -70,16 +69,23 @@ class WookieServerConnection {
/**
* Get the API key for this server.
*
- * @return
+ * @return String current Wookie connection API key
+ * @throws WookieConnectorException
*/
+
public function getApiKey() {
+ if(empty($this->apiKey)) {
+ throw new WookieConnectorException("API key not set");
+ }
return $this->apiKey;
}
/**
* Set the API key for this server.
- *
+ *
+ *@param String new API key for connection
*/
+
public function setApiKey($newApiKey) {
$this->apiKey = (string) $newApiKey;
}
@@ -87,19 +93,28 @@ class WookieServerConnection {
/**
* Get the shared data key for this server.
*
- * @return
+ * @return String current Wookie connection shareddatakey
+ * @throws WookieConnectorException
*/
+
public function getSharedDataKey() {
+ if(empty($this->sharedDataKey)) {
+ throw new WookieConnectorException("No shareddatakey set");
+ }
return $this->sharedDataKey;
}
/**
* Set the shared data key for this server.
- *
+ * @param String new shareddatakey for connection
*/
public function setSharedDataKey($newKey) {
$this->sharedDataKey = $newKey;
}
+
+ /** Output connection information as string
+ * @return String current connection information (url, apikey, shareddatakey)
+ */
public function toString() {
$str = "Wookie Server Connection - ";
@@ -109,22 +124,25 @@ class WookieServerConnection {
return $str;
}
- /* Test Wookie server connection
- * @return boolean - true if success, otherwise false
+ /** Test Wookie server connection
+ * @return boolean true if success, otherwise false
*/
public function Test() {
$ctx = @stream_context_create(array('http' => array('timeout' => 15)));
- $response = new HTTP_Response(@file_get_contents($this->getURL().'advertise?all=true', false, $ctx), $http_response_header);
- if($response->getStatusCode() == 200) {
- $xmlDoc = @simplexml_load_string($response->getResponseText());
- if(is_object($xmlDoc) && $xmlDoc->getName() == 'widgets') {
- return true;
- }
+ $url = $this->getURL();
+ if(!empty($url)) {
+ $response = new HTTP_Response(@file_get_contents($url.'advertise?all=true', false, $ctx), $http_response_header);
+ if($response->getStatusCode() == 200) {
+ $xmlDoc = @simplexml_load_string($response->getResponseText());
+ if(is_object($xmlDoc) && $xmlDoc->getName() == 'widgets') {
+ return true;
+ }
+ }
}
return false;
}
}
-?>
\ No newline at end of file
+?>