/**
  * Checks if the passed node is valid.
  *
  * @param NodeTranslationInterface $nodeTranslation
  * @param Constraint|NodeParentIsOnline $constraint
  */
 public function validate($nodeTranslation, Constraint $constraint)
 {
     $route = $nodeTranslation->getRoute();
     $parentIsOnline = $this->parentIsOnline($nodeTranslation->getNode(), $nodeTranslation->getLang());
     if (null !== $route && $route->isVisible() && false === $parentIsOnline) {
         $this->context->addViolation($constraint->message, array('%locale%' => $nodeTranslation->getLang()));
     }
 }
 /**
  * Reverse transform.
  *
  * @param NodeTranslationInterface $nodeTranslation
  *
  * @return NodeTranslationInterface
  */
 public function reverseTransform($nodeTranslation)
 {
     $route = $nodeTranslation->getRoute();
     if (null !== $route && $route->getRoutePattern()) {
         $node = $nodeTranslation->getNode();
         if ($this->routerHelper->hasController($node->getType())) {
             $this->routeGenerator->generateRoute($route, $node, $nodeTranslation->getLang());
             $this->routeManager->add($route);
         } else {
             $this->routeManager->remove($route);
         }
     }
     return $nodeTranslation;
 }
 /**
  * Reverse transform.
  *
  * @param NodeTranslationInterface $nodeTranslation
  *
  * @return NodeTranslationInterface
  */
 public function reverseTransform($nodeTranslation)
 {
     $route = $nodeTranslation->getRoute();
     if (null !== $route && $route->getRoutePattern()) {
         $node = $nodeTranslation->getNode();
         if ('redirect' === $node->getType()) {
             $this->routeGenerator->generateRoute($route, $node, $nodeTranslation->getLang());
             $this->redirectRoute->setName($route->getName());
             $route->setDefault('redirectRouteName', $this->redirectRoute->getName());
             $this->routeManager->add($route);
             $this->redirectRouteManager->add($this->redirectRoute);
         } else {
             $this->routeManager->remove($route);
             $this->redirectRouteManager->remove($this->redirectRoute);
         }
     }
     return $nodeTranslation;
 }