vendor/jackalope/jackalope/src/Jackalope/Workspace.php line 87
<?phpnamespace Jackalope;use Jackalope\Lock\LockManager;use Jackalope\Observation\ObservationManager;use Jackalope\Query\QueryManager;use Jackalope\Version\VersionManager;use PHPCR\Lock\LockManagerInterface;use PHPCR\Observation\ObservationManagerInterface;use PHPCR\WorkspaceInterface;use PHPCR\UnsupportedRepositoryOperationException;use PHPCR\Transaction\UserTransactionInterface;use Jackalope\NodeType\NodeTypeManager;use Jackalope\ImportExport\ImportExport;use Jackalope\Transport\QueryInterface;use Jackalope\Transport\WritingInterface;use Jackalope\Transport\WorkspaceManagementInterface;use Jackalope\Transport\VersioningInterface;use Jackalope\Transport\TransactionInterface;use Jackalope\Transport\LockingInterface;use Jackalope\Transport\ObservationInterface;/*** {@inheritDoc}** @license http://www.apache.org/licenses Apache License Version 2.0, January 2004* @license http://opensource.org/licenses/MIT MIT License** @api*/class Workspace implements WorkspaceInterface{/*** The factory to instantiate objects** @var FactoryInterface*/protected $factory;/*** @var Session*/protected $session;/*** @var NodeTypeManager*/protected $nodeTypeManager;/*** @var UserTransactionInterface*/protected $userTransactionManager = null;/*** The name of the workspace this workspace represents** @var string*/protected $name;/*** The namespace registry.** @var NamespaceRegistry*/protected $namespaceRegistry;/*** @var LockManagerInterface*/protected $lockManager;/*** @var ObservationManagerInterface*/protected $observationManager;/*** Instantiate a workspace referencing a workspace in the storage.** @param FactoryInterface $factory the object factory* @param Session $session* @param ObjectManager $objectManager* @param string $name the workspace name that is used*/public function __construct(FactoryInterface $factory, Session $session, ObjectManager $objectManager, $name){$this->factory = $factory;$this->session = $session;$this->nodeTypeManager = $this->factory->get(NodeTypeManager::class, [$objectManager, $this->getNamespaceRegistry()]);$this->name = $name;}/*** {@inheritDoc}** @api*/public function getSession(){return $this->session;}/*** {@inheritDoc}** @api*/public function getName(){return $this->name;}/*** {@inheritDoc}** @api*/public function copy($srcAbsPath, $destAbsPath, $srcWorkspace = null){$this->session->getObjectManager()->copyNodeImmediately($srcAbsPath, $destAbsPath, $srcWorkspace);}/*** {@inheritDoc}** @api*/public function cloneFrom($srcWorkspace, $srcAbsPath, $destAbsPath, $removeExisting){if (! $this->session->getObjectManager()->getTransport() instanceof WritingInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support writing');}$this->session->getObjectManager()->cloneFromImmediately($srcWorkspace, $srcAbsPath, $destAbsPath, $removeExisting);}/*** {@inheritDoc}** @api*/public function move($srcAbsPath, $destAbsPath){$this->session->getObjectManager()->moveNodeImmediately($srcAbsPath, $destAbsPath);}/*** {@inheritDoc}** @api*/public function removeItem($absPath){$this->session->getObjectManager()->removeItemImmediately($absPath);}/*** {@inheritDoc}** @api*/public function getLockManager(){if (! $this->session->getTransport() instanceof LockingInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support locking');}if (null === $this->lockManager) {$this->lockManager = $this->factory->get(LockManager::class,[$this->session->getObjectManager(),$this->session,$this->session->getTransport()]);}return $this->lockManager;}/*** {@inheritDoc}** @api*/public function getQueryManager(){if (! $this->session->getTransport() instanceof QueryInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support queries');}return $this->factory->get(QueryManager::class, [$this->session->getObjectManager()]);}/*** Sets the TransactionManager** Called by the repository if transactions are enabled. Transactions are* enabled if this is called with a non-null argument, disabled otherwise.** @param UserTransactionInterface $userTransactionManager A UserTransaction object** @private*/public function setTransactionManager(UserTransactionInterface $userTransactionManager){if (! $this->session->getTransport() instanceof TransactionInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support transactions');}$this->userTransactionManager = $userTransactionManager;}/*** {@inheritDoc}** @api*/public function getTransactionManager(){if (! $this->session->getTransport() instanceof TransactionInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support transactions');}if (! $this->userTransactionManager) {throw new UnsupportedRepositoryOperationException('Transactions are currently disabled');}return $this->userTransactionManager;}/*** {@inheritDoc}** @api*/public function getNamespaceRegistry(){if ($this->namespaceRegistry === null) {$this->namespaceRegistry = $this->factory->get(NamespaceRegistry::class, [$this->session->getTransport()]);}return $this->namespaceRegistry;}/*** {@inheritDoc}** @api*/public function getNodeTypeManager(){return $this->nodeTypeManager;}/*** {@inheritDoc}** @api*/public function getObservationManager(){if (! $this->session->getTransport() instanceof ObservationInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support observation');}if (is_null($this->observationManager)) {$this->observationManager = $this->factory->get(ObservationManager::class,[$this->session,$this->session->getTransport()]);}return $this->observationManager;}/*** {@inheritDoc}** @api*/public function getRepositoryManager(){throw new UnsupportedRepositoryOperationException();}/*** {@inheritDoc}** @api*/public function getVersionManager(){if (! $this->session->getTransport() instanceof VersioningInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support versioning');}return $this->factory->get(VersionManager::class, [$this->session->getObjectManager()]);}/*** {@inheritDoc}** @api*/public function getAccessibleWorkspaceNames(){return $this->session->getTransport()->getAccessibleWorkspaceNames();}/*** {@inheritDoc}** @api*/public function importXML($parentAbsPath, $uri, $uuidBehavior){ImportExport::importXML($this->getSession()->getNode($parentAbsPath),$this->getNamespaceRegistry(),$uri,$uuidBehavior);}/*** {@inheritDoc}** @api*/public function createWorkspace($name, $srcWorkspace = null){if (! $this->session->getTransport() instanceof WorkspaceManagementInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support workspace management');}return $this->session->getTransport()->createWorkspace($name, $srcWorkspace);}/*** {@inheritDoc}** @api*/public function deleteWorkspace($name){if (! $this->session->getTransport() instanceof WorkspaceManagementInterface) {throw new UnsupportedRepositoryOperationException('Transport does not support workspace management');}return $this->session->getTransport()->deleteWorkspace($name);}}