Author: chabotc
Date: Tue Nov 18 23:34:09 2008
New Revision: 718894

URL: http://svn.apache.org/viewvc?rev=718894&view=rev
Log:
Un-duplicate basic xml output converter code by Pan Jie & fixed a few E_STRICT 
warnings on non-static functions being called statically by making them static

Added:
    
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php
Modified:
    incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php
    incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php
    incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php
    incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php

Modified: 
incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
--- 
incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php 
(original)
+++ 
incubator/shindig/trunk/php/src/social/converters/InputBasicXmlConverter.php 
Tue Nov 18 23:34:09 2008
@@ -22,12 +22,12 @@
  */
 class InputBasicXmlConverter {
 
-       public function loadString($requestParam, $namespace = null)
+       public static function loadString($requestParam, $namespace = null)
        {
                return simplexml_load_string($requestParam, 'SimpleXMLElement', 
LIBXML_NOCDATA, $namespace);
        }
 
-       public function convertActivities($xml, $activityXml)
+       public static function convertActivities($xml, $activityXml)
        {
                $activity = array();
                if (! isset($xml->title)) {
@@ -58,7 +58,7 @@
                return $activity;
        }
 
-       public function convertMessages($requestParam, $xml, $content)
+       public static function convertMessages($requestParam, $xml, $content)
        {
                $message = array();
                if (! isset($xml->title) || ! isset($content)) {

Modified: 
incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php 
(original)
+++ incubator/shindig/trunk/php/src/social/converters/OutputAtomConverter.php 
Tue Nov 18 23:34:09 2008
@@ -40,7 +40,7 @@
                $requestType = $this->getRequestType($requestItem);
                $data = $responseItem->getResponse();
                $params = $requestItem->getParameters();
-               $userId = isset($params['userId']) ? $params['userId'][0] : ''; 
+               $userId = isset($params['userId']) ? $params['userId'][0] : '';
                $guid = 'urn:guid:' . $userId;
                $authorName = $_SERVER['HTTP_HOST'] . ':' . $userId;
                $updatedAtom = date(DATE_ATOM);
@@ -140,25 +140,9 @@
         * @param string $nameSpace optional namespace to use when creating node
         * @return DOMElement node
         */
-       private function addNode($node, $name, $value = '', $attributes = 
false, $nameSpace = false)
+       private function addNode(DOMElement $node, $name, $value = '', 
$attributes = false, $nameSpace = false)
        {
-               if ($nameSpace) {
-                       $childNode = 
$node->appendChild($this->doc->createElementNS($nameSpace, $name));
-               } else {
-                       $childNode = 
$node->appendChild($this->doc->createElement($name));
-               }
-               if (! empty($value) || $value == '0') {
-                       
$childNode->appendChild($this->doc->createTextNode($value));
-               }
-               if ($attributes && is_array($attributes)) {
-                       foreach ($attributes as $attrName => $attrVal) {
-                               $childNodeAttr = 
$childNode->appendChild($this->doc->createAttribute($attrName));
-                               if (! empty($attrVal)) {
-                                       
$childNodeAttr->appendChild($this->doc->createTextNode($attrVal));
-                               }
-                       }
-               }
-               return $childNode;
+               return OutputBasicXmlConverter::addNode($this->doc, $node, 
$name, $value, $attributes, $nameSpace);
        }
 
        /**
@@ -216,28 +200,12 @@
         */
        private function getRequestType($requestItem)
        {
-               // map the Request URL to the content type to use  
-               $params = $requestItem->getParameters();
-               if (! is_array($params)) {
-                       throw new Exception("Unsupported request type");
-               }
-               $type = false;
-               foreach ($params as $key => $val) {
-                       if (isset(self::$entryTypes[$key])) {
-                               $type = self::$entryTypes[$key];
-                               break;
-                       }
-               }
-               if (!$type) {
-                       throw new Exception("Unsupported request type");
-               }
-               return $type;
+               return OutputBasicXmlConverter::getRequestType($requestItem, 
self::$entryTypes);
        }
 
        /**
         * Recursive function that maps an data array or object to it's xml 
represantation 
         *
-        * @param DOMDocument $doc the root document
         * @param DOMElement $element the element to append the new node(s) to
         * @param string $name the name of the to be created node
         * @param array or object $data the data to map to xml
@@ -246,53 +214,6 @@
         */
        private function addData(DOMElement $element, $name, $data, $nameSpace 
= false)
        {
-               if ($nameSpace) {
-                       $newElement = 
$element->appendChild($this->doc->createElementNS($nameSpace, $name));
-               } else {
-                       $newElement = 
$element->appendChild($this->doc->createElement($name));
-               }
-               if (is_array($data)) {
-                       foreach ($data as $key => $val) {
-                               if (is_array($val) || is_object($val)) {
-                                       // prevent invalid names.. try to guess 
a good one :)
-                                       if (is_numeric($key)) {
-                                               $key = is_object($val) ? 
get_class($val) : $key = $name;
-                                       }
-                                       $this->addData($newElement, $key, $val);
-                               } else {
-                                       if (is_numeric($key)) {
-                                               $key = is_object($val) ? 
get_class($val) : $key = $name;
-                                       }
-                                       $elm = 
$newElement->appendChild($this->doc->createElement($key));
-                                       
$elm->appendChild($this->doc->createTextNode($val));
-                               }
-                       }
-               } elseif (is_object($data)) {
-                       if ($data instanceof Enum) {
-                               if (isset($data->key)) {
-                                       // enums are output as : <NAME 
key="$key">$displayValue</NAME> 
-                                       $keyEntry = 
$newElement->appendChild($this->doc->createAttribute('key'));
-                                       
$keyEntry->appendChild($this->doc->createTextNode($data->key));
-                                       
$newElement->appendChild($this->doc->createTextNode($data->getDisplayValue()));
-                               }                       
-                       } else {
-                               $vars = get_object_vars($data);
-                               foreach ($vars as $key => $val) {
-                                       if (is_array($val) || is_object($val)) {
-                                               // prevent invalid names.. try 
to guess a good one :)
-                                               if (is_numeric($key)) {
-                                                       $key = is_object($val) 
? get_class($val) : $key = $name;
-                                               }
-                                               $this->addData($newElement, 
$key, $val);
-                                       } else {
-                                               $elm = 
$newElement->appendChild($this->doc->createElement($key));
-                                               
$elm->appendChild($this->doc->createTextNode($val));
-                                       }
-                               }
-                       }
-               } else {
-                       
$newElement->appendChild($this->doc->createTextNode($data));
-               }
-               return $newElement;
+               return OutputBasicXmlConverter::addData($this->doc, $element, 
$name, $data, $nameSpace);
        }
 }

Added: 
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php?rev=718894&view=auto
==============================================================================
--- 
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php 
(added)
+++ 
incubator/shindig/trunk/php/src/social/converters/OutputBasicXmlConverter.php 
Tue Nov 18 23:34:09 2008
@@ -0,0 +1,145 @@
+<?php
+/*
+ * 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.
+ */
+
+/**
+ * Basic methods for OutputAtomConverter and OutputXmlConverter.
+ */
+class OutputBasicXmlConverter {
+
+       /**
+        * Extracts the Xml entity name from the request url
+        *
+        * @param RequestItem $requestItem the request item
+        * @param array $entryTypes the map of entries
+        * @return string the request type
+        */
+       public function getRequestType($requestItem, $entryTypes)
+       {
+               // map the Request URL to the content type to use  
+               $params = $requestItem->getParameters();
+               if (! is_array($params)) {
+                       throw new Exception("Unsupported request type");
+               }
+               $type = false;
+               foreach ($params as $key => $val) {
+                       if (isset($entryTypes[$key])) {
+                               $type = $entryTypes[$key];
+                               break;
+                       }
+               }
+               if (! $type) {
+                       throw new Exception("Unsupported request type");
+               }
+               return $type;
+       }
+
+       /**
+        * Easy shortcut for creating & appending XML nodes
+        *
+        * @param DOMDocument $doc document the root document
+        * @param DOMElement $node node to append the new child node to
+        * @param string $name name of the new element
+        * @param string $value value of the element, if empty no text node is 
created
+        * @param array $attributes optional array of attributes, false by 
default. If set attributes are added to the node using the key => val pairs
+        * @param string $nameSpace optional namespace to use when creating node
+        * @return DOMElement node
+        */
+       public function addNode(DOMDocument $doc, DOMElement $node, $name, 
$value = '', $attributes = false, $nameSpace = false)
+       {
+               if ($nameSpace) {
+                       $childNode = 
$node->appendChild($doc->createElementNS($nameSpace, $name));
+               } else {
+                       $childNode = 
$node->appendChild($doc->createElement($name));
+               }
+               if (! empty($value) || $value == '0') {
+                       $childNode->appendChild($doc->createTextNode($value));
+               }
+               if ($attributes && is_array($attributes)) {
+                       foreach ($attributes as $attrName => $attrVal) {
+                               $childNodeAttr = 
$childNode->appendChild($doc->createAttribute($attrName));
+                               if (! empty($attrVal)) {
+                                       
$childNodeAttr->appendChild($doc->createTextNode($attrVal));
+                               }
+                       }
+               }
+               return $childNode;
+       }
+
+       /**
+        * Recursive function that maps an data array or object to it's xml 
represantation 
+        *
+        * @param DOMDocument $doc the root document
+        * @param DOMElement $element the element to append the new node(s) to
+        * @param string $name the name of the to be created node
+        * @param array or object $data the data to map to xml
+        * @param string $nameSpace if specified, the node is created using 
this namespace
+        * @return DOMElement returns newly created element
+        */
+       public function addData(DOMDocument $doc, DOMElement $element, $name, 
$data, $nameSpace = false)
+       {
+               if ($nameSpace) {
+                       $newElement = 
$element->appendChild($doc->createElementNS($nameSpace, $name));
+               } else {
+                       $newElement = 
$element->appendChild($doc->createElement($name));
+               }
+               if (is_array($data)) {
+                       foreach ($data as $key => $val) {
+                               if (is_array($val) || is_object($val)) {
+                                       // prevent invalid names.. try to guess 
a good one :)
+                                       if (is_numeric($key)) {
+                                               $key = is_object($val) ? 
get_class($val) : $key = $name;
+                                       }
+                                       self::addData($doc, $newElement, $key, 
$val);
+                               } else {
+                                       if (is_numeric($key)) {
+                                               $key = is_object($val) ? 
get_class($val) : $key = $name;
+                                       }
+                                       $elm = 
$newElement->appendChild($doc->createElement($key));
+                                       
$elm->appendChild($doc->createTextNode($val));
+                               }
+                       }
+               } elseif (is_object($data)) {
+                       if ($data instanceof Enum) {
+                               if (isset($data->key)) {
+                                       // enums are output as : <NAME 
key="$key">$displayValue</NAME> 
+                                       $keyEntry = 
$newElement->appendChild($doc->createAttribute('key'));
+                                       
$keyEntry->appendChild($doc->createTextNode($data->key));
+                                       
$newElement->appendChild($doc->createTextNode($data->getDisplayValue()));
+                               }
+                       } else {
+                               $vars = get_object_vars($data);
+                               foreach ($vars as $key => $val) {
+                                       if (is_array($val) || is_object($val)) {
+                                               // prevent invalid names.. try 
to guess a good one :)
+                                               if (is_numeric($key)) {
+                                                       $key = is_object($val) 
? get_class($val) : $key = $name;
+                                               }
+                                               self::addData($doc, 
$newElement, $key, $val);
+                                       } else {
+                                               $elm = 
$newElement->appendChild($doc->createElement($key));
+                                               
$elm->appendChild($doc->createTextNode($val));
+                                       }
+                               }
+                       }
+               } else {
+                       $newElement->appendChild($doc->createTextNode($data));
+               }
+               return $newElement;
+       }
+}

Modified: 
incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php 
(original)
+++ incubator/shindig/trunk/php/src/social/converters/OutputJsonConverter.php 
Tue Nov 18 23:34:09 2008
@@ -32,7 +32,7 @@
                                $response->itemsPerPage = $itemsPerPage;
                }
                // several service calls return a null value
-               if (!is_null($response)) {
+               if (! is_null($response)) {
                        if (Config::get('debug')) {
                                echo self::json_format(json_encode($response)); 
// TODO: add a query option to pretty-print json output
                        } else {

Modified: 
incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php?rev=718894&r1=718893&r2=718894&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php 
(original)
+++ incubator/shindig/trunk/php/src/social/converters/OutputXmlConverter.php 
Tue Nov 18 23:34:09 2008
@@ -78,24 +78,11 @@
         * @param string $name name of the new element
         * @param string $value value of the element, if empty no text node is 
created
         * @param array $attributes optional array of attributes, false by 
default. If set attributes are added to the node using the key => val pairs
-        * @param string $nameSpace optional namespace to use when creating node
         * @return DOMElement node
         */
-       private function addNode($node, $name, $value = '', $attributes = false)
+       private function addNode(DOMElement $node, $name, $value = '', 
$attributes = false)
        {
-               $childNode = 
$node->appendChild($this->doc->createElement($name));
-               if (! empty($value) || $value == '0') {
-                       
$childNode->appendChild($this->doc->createTextNode($value));
-               }
-               if ($attributes && is_array($attributes)) {
-                       foreach ($attributes as $attrName => $attrVal) {
-                               $childNodeAttr = 
$childNode->appendChild($this->doc->createAttribute($attrName));
-                               if (! empty($attrVal)) {
-                                       
$childNodeAttr->appendChild($this->doc->createTextNode($attrVal));
-                               }
-                       }
-               }
-               return $childNode;
+               return OutputBasicXmlConverter::addNode($this->doc, $node, 
$name, $value, $attributes);
        }
 
        /**
@@ -118,79 +105,19 @@
         */
        private function getRequestType($requestItem)
        {
-               // map the Request URL to the content type to use  
-               $params = $requestItem->getParameters();
-               if (! is_array($params)) {
-                       throw new Exception("Unsupported request type");
-               }
-               $type = false;
-               foreach ($params as $key => $val) {
-                       if (isset(self::$entryTypes[$key])) {
-                               $type = self::$entryTypes[$key];
-                               break;
-                       }
-               }
-               if (!$type) {
-                       throw new Exception("Unsupported request type");
-               }
-               return $type;
+               return OutputBasicXmlConverter::getRequestType($requestItem, 
self::$entryTypes);
        }
 
        /**
         * Recursive function that maps an data array or object to it's xml 
represantation 
         *
-        * @param DOMDocument $doc the root document
         * @param DOMElement $element the element to append the new node(s) to
         * @param string $name the name of the to be created node
         * @param array or object $data the data to map to xml
-        * @param string $nameSpace if specified, the node is created using 
this namespace
         * @return DOMElement returns newly created element
         */
        private function addData(DOMElement $element, $name, $data)
        {
-               $newElement = 
$element->appendChild($this->doc->createElement($name));
-               if (is_array($data)) {
-                       foreach ($data as $key => $val) {
-                               if (is_array($val) || is_object($val)) {
-                                       // prevent invalid names.. try to guess 
a good one :)
-                                       if (is_numeric($key)) {
-                                               $key = is_object($val) ? 
get_class($val) : $key = $name;
-                                       }
-                                       $this->addData($newElement, $key, $val);
-                               } else {
-                                       if (is_numeric($key)) {
-                                               $key = is_object($val) ? 
get_class($val) : $key = $name;
-                                       }
-                                       $elm = 
$newElement->appendChild($this->doc->createElement($key));
-                                       
$elm->appendChild($this->doc->createTextNode($val));
-                               }
-                       }
-               } elseif (is_object($data)) {
-                       if ($data instanceof Enum) {
-                               if (isset($data->key)) {
-                                       // enums are output as : <NAME 
key="$key">$displayValue</NAME>
-                                       $keyEntry = 
$newElement->appendChild($this->doc->createAttribute('key'));
-                                       
$keyEntry->appendChild($this->doc->createTextNode($data->key));
-                                       
$newElement->appendChild($this->doc->createTextNode($data->getDisplayValue()));
-                               }                       
-                       } else {
-                               $vars = get_object_vars($data);
-                               foreach ($vars as $key => $val) {
-                                       if (is_array($val) || is_object($val)) {
-                                               // prevent invalid names.. try 
to guess a good one :)
-                                               if (is_numeric($key)) {
-                                                       $key = is_object($val) 
? get_class($val) : $key = $name;
-                                               }
-                                               $this->addData($newElement, 
$key, $val);
-                                       } else {
-                                               $elm = 
$newElement->appendChild($this->doc->createElement($key));
-                                               
$elm->appendChild($this->doc->createTextNode($val));
-                                       }
-                               }
-                       }
-               } else {
-                       
$newElement->appendChild($this->doc->createTextNode($data));
-               }
-               return $newElement;
+               return OutputBasicXmlConverter::addData($this->doc, $element, 
$name, $data);
        }
 }


Reply via email to