/** * Creates a resource * * @param Resource $resource * @param string $path */ public function create(Resource $resource, $path) { $event = new ResourceEvent($resource); $this->eventDispatcher->dispatch(Events::RESOURCE_BEFORE_CREATE, $event); $resource->setUuid(Uuid::uuid4()->toString()); $this->backend->createResource($resource); // @todo: this has to be correctly robustified. try { $this->storage->store($resource, $path); } catch (\Exception $e) { $this->backend->deleteResource($resource); throw $e; } $event = new ResourceEvent($resource); $this->eventDispatcher->dispatch(Events::RESOURCE_AFTER_CREATE, $event); return $resource; }