Overview

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Exception
      • Resource
    • Common
      • Collection
      • Constants
      • Exceptions
      • Http
        • Message
      • Log
      • Resource
      • Service
    • Compute
      • Constants
      • Exception
      • Resource
    • Database
      • Resource
    • DNS
      • Collection
      • Resource
    • Identity
      • Constants
      • Resource
    • Image
      • Enum
      • Resource
        • JsonPatch
        • Schema
    • LoadBalancer
      • Enum
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
    • Queues
      • Exception
      • Resource
    • Volume
      • Resource
  • PHP

Classes

  • Document
  • Encoder
  • Operation
  • Overview
  • Namespace
  • Class
  • Tree
  • Download
  1: <?php
  2: /**
  3:  * Copyright 2012-2014 Rackspace US, Inc.
  4:  *
  5:  * Licensed under the Apache License, Version 2.0 (the "License");
  6:  * you may not use this file except in compliance with the License.
  7:  * You may obtain a copy of the License at
  8:  *
  9:  * http://www.apache.org/licenses/LICENSE-2.0
 10:  *
 11:  * Unless required by applicable law or agreed to in writing, software
 12:  * distributed under the License is distributed on an "AS IS" BASIS,
 13:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14:  * See the License for the specific language governing permissions and
 15:  * limitations under the License.
 16:  */
 17: 
 18: namespace OpenCloud\Image\Resource\JsonPatch;
 19: 
 20: use OpenCloud\Image\Enum\OperationType as Type;
 21: use OpenCloud\Image\Resource\Schema\Property;
 22: use OpenCloud\Image\Resource\Schema\Schema;
 23: 
 24: /**
 25:  * Class that represents a JSON Patch operation. It utilizes the JSON pointer syntax, in line with RFC 6902.
 26:  *
 27:  * @see http://tools.ietf.org/html/rfc6901
 28:  * @package OpenCloud\Images\Resource\JsonPatch
 29:  */
 30: class Operation
 31: {
 32:     /**
 33:      * Allowed operation types
 34:      *
 35:      * @var array
 36:      * @see http://tools.ietf.org/html/rfc6902#section-4
 37:      */
 38:     private $allowedTypes = array(
 39:         Type::ADD, Type::REMOVE, Type::REPLACE,
 40:         Type::MOVE, Type::COPY, Type::TEST
 41:     );
 42: 
 43:     /** @var Schema The JSON schema this operation is acting on */
 44:     protected $schema;
 45: 
 46:     /** @var string The type of operation */
 47:     protected $type;
 48: 
 49:     /** @var string The JSON pointer value */
 50:     protected $path;
 51: 
 52:     /** @var mixed The value for this JSON property */
 53:     protected $value;
 54: 
 55:     /**
 56:      * @param Schema   $schema
 57:      * @param Property $property
 58:      * @param string $operationType
 59:      * @return Operation
 60:      */
 61:     public static function factory(Schema $schema, Property $property, $operationType)
 62:     {
 63:         $operation = new self();
 64: 
 65:         $operation->setType($operationType);
 66:         $operation->setSchema($schema);
 67:         $operation->setPath($property->getPath());
 68:         $operation->setValue($property->getValue());
 69: 
 70:         return $operation;
 71:     }
 72: 
 73:     /**
 74:      * @param $type string
 75:      */
 76:     public function setType($type)
 77:     {
 78:        $this->type = $type;
 79:     }
 80: 
 81:     /**
 82:      * @return string
 83:      */
 84:     public function getType()
 85:     {
 86:         return $this->type;
 87:     }
 88: 
 89:     /**
 90:      * @param Schema $schema
 91:      */
 92:     public function setSchema(Schema $schema)
 93:     {
 94:         $this->schema = $schema;
 95:     }
 96: 
 97:     /**
 98:      * @return Schema
 99:      */
100:     public function getSchema()
101:     {
102:         return $this->schema;
103:     }
104: 
105:     /**
106:      * @param $path
107:      */
108:     public function setPath($path)
109:     {
110:         $this->path = $path;
111:     }
112: 
113:     /**
114:      * @return string
115:      */
116:     public function getPath()
117:     {
118:         return $this->path;
119:     }
120: 
121:     /**
122:      * @param $value
123:      */
124:     public function setValue($value)
125:     {
126:         $this->value = $value;
127:     }
128: 
129:     /**
130:      * @return mixed
131:      */
132:     public function getValue()
133:     {
134:         return $this->value;
135:     }
136: 
137:     /**
138:      * Validates that this operation is of an allowed type
139:      *
140:      * @throws \RuntimeException if not
141:      */
142:     public function validate()
143:     {
144:         if (!in_array($this->type, $this->allowedTypes)) {
145:             throw new \RuntimeException(sprintf("%s is not an allowed JSON PATCH operation type", $this->type));
146:         }
147:     }
148: }
149: 
PHP OpenCloud API API documentation generated by ApiGen 2.8.0