private static boolean deploymentHasPersistenceProvider(DeploymentUnit deploymentUnit) {
   deploymentUnit = DeploymentUtils.getTopDeploymentUnit(deploymentUnit);
   PersistenceProviderDeploymentHolder persistenceProviderDeploymentHolder =
       deploymentUnit.getAttachment(JpaAttachments.DEPLOYED_PERSISTENCE_PROVIDER);
   return (persistenceProviderDeploymentHolder != null
           && persistenceProviderDeploymentHolder.getProviders() != null
       ? persistenceProviderDeploymentHolder.getProviders().size() > 0
       : false);
 }
 private static PersistenceUnitMetadata findPersistenceUnitSupplier(
     DeploymentUnit deploymentUnit, String persistenceUnitName) {
   PersistenceUnitMetadata name = findWithinDeployment(deploymentUnit, persistenceUnitName);
   if (name == null) {
     name =
         findWithinApplication(
             DeploymentUtils.getTopDeploymentUnit(deploymentUnit), persistenceUnitName);
   }
   return name;
 }
  private static PersistenceUnitMetadata getPersistenceUnit(
      DeploymentUnit current, final String absolutePath, String puName) {
    final String path;
    if (absolutePath.startsWith("../")) {
      path = absolutePath.substring(3);
    } else {
      path = absolutePath;
    }
    final VirtualFile parent =
        current.getAttachment(Attachments.DEPLOYMENT_ROOT).getRoot().getParent();
    final VirtualFile resolvedPath = parent.getChild(path);

    List<ResourceRoot> resourceRoots =
        DeploymentUtils.allResourceRoots(DeploymentUtils.getTopDeploymentUnit(current));

    for (ResourceRoot resourceRoot : resourceRoots) {
      if (resourceRoot.getRoot().equals(resolvedPath)) {
        PersistenceUnitMetadataHolder holder =
            resourceRoot.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS);
        if (holder != null) {
          for (PersistenceUnitMetadata pu : holder.getPersistenceUnits()) {
            if (traceEnabled) {
              ROOT_LOGGER.tracef(
                  "getPersistenceUnit check '%s' against pu '%s'",
                  puName, pu.getPersistenceUnitName());
            }
            if (pu.getPersistenceUnitName().equals(puName)) {
              if (traceEnabled) {
                ROOT_LOGGER.tracef(
                    "getPersistenceUnit matched '%s' against pu '%s'",
                    puName, pu.getPersistenceUnitName());
              }
              return pu;
            }
          }
        }
      }
    }

    throw MESSAGES.persistenceUnitNotFound(absolutePath, puName, current);
  }