/**
  * @test
  * @profile
  */
 public function testDispatch()
 {
     split_time('reset');
     Rest_Test_Unit_Case_Resource_Foo::serve('resource/foo');
     split_time('Invoke Rest_Test_Unit_Case_Resource_Foo::serve(resource/foo)');
     Http_Scriptlet_Context::push(new Http_Scriptlet_Context(Environment::uriComponents()));
     split_time('Initialize Components\\Http_Scriptlet_Context');
     $uri = Uri::valueOf(Environment::uriComponents('rest', 'resource', 'foo', 'poke', '1234.json'));
     split_time("Invoke Uri::valueOf({$uri})");
     ob_start();
     split_time('reset');
     Http_Scriptlet_Context::current()->dispatch($uri, Http_Scriptlet_Request::METHOD_GET);
     split_time("Invoke Components\\Http_Scriptlet_Context\$dispatch([{$uri}], GET)");
     $result = ob_get_clean();
     assertEquals(json_encode(true), $result);
     split_time('reset');
     $uri = Uri::valueOf(Environment::uriComponents('rest', 'resource', 'foo', 'poke', '1234.json'));
     $uri->setQueryParam('log', 'false');
     split_time("Invoke Uri::valueOf({$uri})");
     ob_start();
     split_time('reset');
     Http_Scriptlet_Context::current()->dispatch($uri, Http_Scriptlet_Request::METHOD_GET);
     split_time("Invoke Components\\Http_Scriptlet_Context\$dispatch([{$uri}], GET)");
     $result = ob_get_clean();
     assertEquals(json_encode(false), $result);
 }
 /**
  * @param \Components\Io_Image $image_
  *
  * @return \Components\Uri
  */
 public static function uri(Io_Image $image_)
 {
     $path = $image_->getPathAsString();
     $extension = $image_->getMimetype()->fileExtension();
     $key = md5($path);
     Cache::set($key, $path);
     return Uri::valueOf(Environment::uriComponents('ui', 'image', "{$key}.{$extension}"));
 }
 public function configure(array $resourceIdentifiers_)
 {
     foreach ($resourceIdentifiers_ as $resourceIdentifier) {
         $uri = Uri::valueOf($resourceIdentifier);
         $resource = $uri->getResource();
         if (!$resource instanceof Persistence_Resource) {
             throw new Exception_IllegalArgument('persistence/resource/pool', 'Resource for given identifier is not a valid persistence resource.');
         }
         $this->m_read[] = $resource;
         if (!$resource->isReadOnly()) {
             $this->m_write[] = $resource;
         }
     }
     $this->resource = $this->m_write[rand(0, count($this->m_write) - 1)];
     $this->resourceReadOnly = $this->m_read[rand(0, count($this->m_read) - 1)];
     if (!$this->resource) {
         $this->resource = $this->resourceReadOnly;
     }
 }
 private function dispatchImpl(Uri $uri_, $method_ = null)
 {
     $this->m_contextUri = Uri::valueOf($this->m_contextRoot);
     $this->m_request = new Http_Scriptlet_Request(clone $uri_);
     if (null !== $method_) {
         $this->m_request->setMethod($method_);
     }
     $mimeType = $this->m_request->getMimetype();
     header('Content-Type: ' . $mimeType->name() . ';charset=' . $mimeType->charset()->name(), true, 200);
     $this->m_response = new Http_Scriptlet_Response($mimeType);
     if ('/' !== $this->m_contextRoot) {
         $contextRoot = rtrim($this->m_contextRoot, '/');
         $contextRoot = ltrim($contextRoot, '/');
         $contextRootSegments = explode('/', $contextRoot);
         while (count($contextRootSegments)) {
             if (array_shift($contextRootSegments) !== $uri_->shiftPathParam()) {
                 throw new Http_Exception('http/scriptlet/context', null, Http_Exception::NOT_FOUND);
             }
         }
     }
     if (!($component = $uri_->shiftPathParam())) {
         throw new Http_Exception('http/scriptlet/context', null, Http_Exception::NOT_FOUND);
     }
     $this->m_contextUri->pushPathParam($component);
     if ($this->m_contextUri->hasFileExtension()) {
         Config::get($this->m_contextUri->getFilename(true));
     } else {
         Config::get($component);
     }
     Http_Scriptlet::dispatch($this, $uri_);
 }
 /**
  * @param string $path_
  * @param integer $width_
  * @param integer $height_
  *
  * @return \Components\Uri
  */
 public static function imageUri($route_, Io_Path $path_, $width_ = null, $height_ = null)
 {
     $uri = Uri::valueOf(Http_Router::uri($route_));
     $uri->pushPathParam(\str\encodeBase64Url(json_encode([(string) Io::path(Environment::pathWeb())->getRelativePath($path_), $width_, $height_])) . '.' . Io::fileExtension($path_));
     return $uri;
 }
 /**
  * @return \Components\Uri
  */
 public function toUri()
 {
     return Uri::valueOf($this->m_path);
 }