/**
  * {@inheritDoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     // we do not want to expose the parent options, but use the arguments and
     // options to pass information to the parent.
     parent::configure();
     $classname = $input->getArgument('classname');
     $newClassname = $input->getArgument('new-classname');
     if (!class_exists($newClassname)) {
         throw new \Exception(sprintf('New class name "%s" does not exist.', $newClassname));
     }
     /** @var $documentManager DocumentManager */
     $documentManager = $this->getHelper('phpcr')->getDocumentManager();
     $mapper = $documentManager->getConfiguration()->getDocumentClassMapper();
     $input->setOption('query', sprintf('SELECT * FROM [nt:base] WHERE [phpcr:class] = "%s"', $classname));
     $input->setOption('apply-closure', array(function ($session, $node) use($newClassname, $documentManager, $mapper) {
         $mapper->writeMetadata($documentManager, $node, $newClassname);
     }));
     return parent::execute($input, $output);
 }
 /**
  * {@inheritDoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     DoctrineCommandHelper::setApplicationPHPCRSession($this->getApplication(), $input->getOption('session'));
     return parent::execute($input, $output);
 }