/** * @param array $parameters * @param Cache|null $typeDefinitionCache * @return CmisBindingInterface */ public function createBinding(array $parameters, Cache $typeDefinitionCache = null) { if (count($parameters) === 0) { throw new CmisRuntimeException('Session parameters must be set!'); } if (!isset($parameters[SessionParameter::BINDING_TYPE])) { throw new CmisRuntimeException('Required binding type is not configured!'); } try { $bindingType = BindingType::cast($parameters[SessionParameter::BINDING_TYPE]); $bindingFactory = $this->getCmisBindingFactory(); switch (true) { case $bindingType->equals(BindingType::BROWSER): $binding = $bindingFactory->createCmisBrowserBinding($parameters, $typeDefinitionCache); break; case $bindingType->equals(BindingType::ATOMPUB): case $bindingType->equals(BindingType::WEBSERVICES): case $bindingType->equals(BindingType::CUSTOM): default: $binding = null; } if (!is_object($binding) || !$binding instanceof CmisBinding) { throw new CmisRuntimeException(sprintf('The given binding "%s" is not yet implemented.', $parameters[SessionParameter::BINDING_TYPE])); } } catch (InvalidEnumerationValueException $exception) { throw new CmisRuntimeException('Invalid binding type given: ' . $parameters[SessionParameter::BINDING_TYPE]); } return $binding; }
/** * Returns the binding type. * * @return BindingType */ public function getBindingType() { $bindingType = $this->session->get(SessionParameter::BINDING_TYPE); if (!is_string($bindingType)) { return BindingType::cast(BindingType::CUSTOM); } try { return BindingType::cast($bindingType); } catch (InvalidEnumerationValueException $exception) { return BindingType::cast(BindingType::CUSTOM); } }