private void markDU(PersistenceUnitMetadataHolder holder, DeploymentUnit deploymentUnit) { if (holder.getPersistenceUnits() != null && holder.getPersistenceUnits().size() > 0) { JPADeploymentMarker.mark(deploymentUnit); } }
/** * Eliminate duplicate PU definitions from clustering the deployment (first definition will win) * <p/> * JPA 8.2 A persistence unit must have a name. Only one persistence unit of any given name must be defined * within a single EJB-JAR file, within a single WAR file, within a single application client jar, or within * an EAR. See Section 8.2.2, “Persistence Unit Scope”. * * @param listPUHolders * @return */ private PersistenceUnitMetadataHolder normalize(List<PersistenceUnitMetadataHolder> listPUHolders) { // eliminate duplicates (keeping the first instance of each PU by name) Map<String, PersistenceUnitMetadata> flattened = new HashMap<String, PersistenceUnitMetadata>(); for (PersistenceUnitMetadataHolder puHolder : listPUHolders) { for (PersistenceUnitMetadata pu : puHolder.getPersistenceUnits()) { if (!flattened.containsKey(pu.getPersistenceUnitName())) { flattened.put(pu.getPersistenceUnitName(), pu); } else { PersistenceUnitMetadata first = flattened.get(pu.getPersistenceUnitName()); PersistenceUnitMetadata duplicate = pu; ROOT_LOGGER.duplicatePersistenceUnitDefinition(duplicate.getPersistenceUnitName(), first.getScopedPersistenceUnitName(), duplicate.getScopedPersistenceUnitName()); } } } PersistenceUnitMetadataHolder holder = new PersistenceUnitMetadataHolder(new ArrayList<PersistenceUnitMetadata>(flattened.values())); return holder; }
PersistenceUnitMetadataHolder result = new PersistenceUnitMetadataHolder(PUs); if (ROOT_LOGGER.isTraceEnabled()) ROOT_LOGGER.trace(result.toString());
PersistenceUnitMetadataHolder result = new PersistenceUnitMetadataHolder(PUs); if (ROOT_LOGGER.isTraceEnabled()) ROOT_LOGGER.trace(result.toString());
private void markDU(PersistenceUnitMetadataHolder holder, DeploymentUnit deploymentUnit) { if (holder.getPersistenceUnits() != null && holder.getPersistenceUnits().size() > 0) { JPADeploymentMarker.mark(deploymentUnit); } }
/** * Eliminate duplicate PU definitions from clustering the deployment (first definition will win) * <p/> * JPA 8.2 A persistence unit must have a name. Only one persistence unit of any given name must be defined * within a single EJB-JAR file, within a single WAR file, within a single application client jar, or within * an EAR. See Section 8.2.2, “Persistence Unit Scope”. * * @param listPUHolders * @return */ private PersistenceUnitMetadataHolder normalize(List<PersistenceUnitMetadataHolder> listPUHolders) { // eliminate duplicates (keeping the first instance of each PU by name) Map<String, PersistenceUnitMetadata> flattened = new HashMap<String, PersistenceUnitMetadata>(); for (PersistenceUnitMetadataHolder puHolder : listPUHolders) { for (PersistenceUnitMetadata pu : puHolder.getPersistenceUnits()) { if (!flattened.containsKey(pu.getPersistenceUnitName())) { flattened.put(pu.getPersistenceUnitName(), pu); } else { PersistenceUnitMetadata first = flattened.get(pu.getPersistenceUnitName()); PersistenceUnitMetadata duplicate = pu; ROOT_LOGGER.duplicatePersistenceUnitDefinition(duplicate.getPersistenceUnitName(), first.getScopedPersistenceUnitName(), duplicate.getScopedPersistenceUnitName()); } } } PersistenceUnitMetadataHolder holder = new PersistenceUnitMetadataHolder(new ArrayList<PersistenceUnitMetadata>(flattened.values())); return holder; }
private static void ambiguousPUError(DeploymentUnit unit, String persistenceUnitName, PersistenceUnitMetadataHolder holder) { if (holder.getPersistenceUnits().size() > 1 && (persistenceUnitName == null || persistenceUnitName.length() == 0)) { int numberOfDefaultPersistenceUnits = 0; // get number of persistence units that are marked as default for (PersistenceUnitMetadata persistenceUnit : holder.getPersistenceUnits()) { String defaultPU = persistenceUnit.getProperties().getProperty(Configuration.JPA_DEFAULT_PERSISTENCE_UNIT); if(Boolean.TRUE.toString().equals(defaultPU)) { numberOfDefaultPersistenceUnits++; } } ROOT_LOGGER.tracef("checking for ambiguous persistence unit injection error, " + "number of persistence units marked default (%s) = %d", Configuration.JPA_DEFAULT_PERSISTENCE_UNIT, numberOfDefaultPersistenceUnits); // don't throw an error if there is exactly one default persistence unit if (numberOfDefaultPersistenceUnits != 1) { // AS7-2275 no unitName and there is more than one persistence unit; throw JpaLogger.ROOT_LOGGER.noPUnitNameSpecifiedAndMultiplePersistenceUnits(holder.getPersistenceUnits().size(), unit); } } }
private static void ambiguousPUError(DeploymentUnit unit, String persistenceUnitName, PersistenceUnitMetadataHolder holder) { if (holder.getPersistenceUnits().size() > 1 && (persistenceUnitName == null || persistenceUnitName.length() == 0)) { int numberOfDefaultPersistenceUnits = 0; // get number of persistence units that are marked as default for (PersistenceUnitMetadata persistenceUnit : holder.getPersistenceUnits()) { String defaultPU = persistenceUnit.getProperties().getProperty(Configuration.JPA_DEFAULT_PERSISTENCE_UNIT); if(Boolean.TRUE.toString().equals(defaultPU)) { numberOfDefaultPersistenceUnits++; } } ROOT_LOGGER.tracef("checking for ambiguous persistence unit injection error, " + "number of persistence units marked default (%s) = %d", Configuration.JPA_DEFAULT_PERSISTENCE_UNIT, numberOfDefaultPersistenceUnits); // don't throw an error if there is exactly one default persistence unit if (numberOfDefaultPersistenceUnits != 1) { // AS7-2275 no unitName and there is more than one persistence unit; throw JpaLogger.ROOT_LOGGER.noPUnitNameSpecifiedAndMultiplePersistenceUnits(holder.getPersistenceUnits().size(), unit); } } }
/** * if no persistence unit name is specified, return name of default persistence unit * * @param persistenceUnitName that was specified to be used (null means to use the default persistence unit) * @param holder * @return */ private static String defaultPersistenceUnitName(String persistenceUnitName, PersistenceUnitMetadataHolder holder) { if ((persistenceUnitName == null || persistenceUnitName.length() == 0)) { for (PersistenceUnitMetadata persistenceUnit : holder.getPersistenceUnits()) { String defaultPU = persistenceUnit.getProperties().getProperty(Configuration.JPA_DEFAULT_PERSISTENCE_UNIT); if(Boolean.TRUE.toString().equals(defaultPU)) { persistenceUnitName = persistenceUnit.getPersistenceUnitName(); } } } return persistenceUnitName; }
/** * if no persistence unit name is specified, return name of default persistence unit * * @param persistenceUnitName that was specified to be used (null means to use the default persistence unit) * @param holder * @return */ private static String defaultPersistenceUnitName(String persistenceUnitName, PersistenceUnitMetadataHolder holder) { if ((persistenceUnitName == null || persistenceUnitName.length() == 0)) { for (PersistenceUnitMetadata persistenceUnit : holder.getPersistenceUnits()) { String defaultPU = persistenceUnit.getProperties().getProperty(Configuration.JPA_DEFAULT_PERSISTENCE_UNIT); if(Boolean.TRUE.toString().equals(defaultPU)) { persistenceUnitName = persistenceUnit.getPersistenceUnitName(); } } } return persistenceUnitName; }
private void getJpaDependencies(final DeploymentUnit deploymentUnit, final Set<ServiceName> jpaServices) { for (ResourceRoot root : DeploymentUtils.allResourceRoots(deploymentUnit)) { final PersistenceUnitMetadataHolder persistenceUnits = root.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS); if (persistenceUnits != null && persistenceUnits.getPersistenceUnits() != null) { for (final PersistenceUnitMetadata pu : persistenceUnits.getPersistenceUnits()) { final Properties properties = pu.getProperties(); final String jpaContainerManaged = properties.getProperty(Configuration.JPA_CONTAINER_MANAGED); final boolean deployPU = (jpaContainerManaged == null || Boolean.parseBoolean(jpaContainerManaged)); if (deployPU) { final ServiceName serviceName = PersistenceUnitServiceImpl.getPUServiceName(pu); jpaServices.add(serviceName); } } } } }
@Override public Set<ServiceName> getDependencies(DeploymentUnit deploymentUnit) { Set<ServiceName> dependencies = new HashSet<>(); for (ResourceRoot root : DeploymentUtils.allResourceRoots(deploymentUnit)) { final PersistenceUnitMetadataHolder persistenceUnits = root.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS); if (persistenceUnits != null && persistenceUnits.getPersistenceUnits() != null) { for (final PersistenceUnitMetadata pu : persistenceUnits.getPersistenceUnits()) { final Properties properties = pu.getProperties(); final String jpaContainerManaged = properties.getProperty(Configuration.JPA_CONTAINER_MANAGED); final boolean deployPU = (jpaContainerManaged == null || Boolean.parseBoolean(jpaContainerManaged)); if (deployPU) { final ServiceName serviceName = PersistenceUnitServiceImpl.getPUServiceName(pu); dependencies.add(serviceName); } } } } return dependencies; }
/** * Add the <code>puServiceName</code> as a dependency on each of the passed <code>components</code> * * @param components The components to which the PU service is added as a dependency * @param holder The persistence units */ private static void addPUServiceDependencyToComponents(final Collection<ComponentDescription> components, final PersistenceUnitMetadataHolder holder) { if (components == null || components.isEmpty() || holder == null) { return; } for (PersistenceUnitMetadata pu : holder.getPersistenceUnits()) { String jpaContainerManaged = pu.getProperties().getProperty(Configuration.JPA_CONTAINER_MANAGED); boolean deployPU = (jpaContainerManaged == null? true : Boolean.parseBoolean(jpaContainerManaged)); if (deployPU) { final ServiceName puServiceName = PersistenceUnitServiceImpl.getPUServiceName(pu); for (final ComponentDescription component : components) { ROOT_LOGGER.debugf("Adding dependency on PU service %s for component %s", puServiceName, component.getComponentClassName()); component.addDependency(puServiceName); } } } }
/** * Add the <code>puServiceName</code> as a dependency on each of the passed <code>components</code> * * @param components The components to which the PU service is added as a dependency * @param holder The persistence units */ private static void addPUServiceDependencyToComponents(final Collection<ComponentDescription> components, final PersistenceUnitMetadataHolder holder) { if (components == null || components.isEmpty() || holder == null) { return; } for (PersistenceUnitMetadata pu : holder.getPersistenceUnits()) { String jpaContainerManaged = pu.getProperties().getProperty(Configuration.JPA_CONTAINER_MANAGED); boolean deployPU = (jpaContainerManaged == null? true : Boolean.parseBoolean(jpaContainerManaged)); if (deployPU) { final ServiceName puServiceName = PersistenceUnitServiceImpl.getPUServiceName(pu); for (final ComponentDescription component : components) { ROOT_LOGGER.debugf("Adding dependency on PU service %s for component %s", puServiceName, component.getComponentClassName()); component.addDependency(puServiceName); } } } }
private static PersistenceUnitMetadata findWithinLibraryJar(DeploymentUnit unit, ResourceRoot moduleResourceRoot, String persistenceUnitName) { final ResourceRoot deploymentRoot = moduleResourceRoot; PersistenceUnitMetadataHolder holder = deploymentRoot.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS); if (holder == null || holder.getPersistenceUnits() == null) { if (traceEnabled) { ROOT_LOGGER.tracef("findWithinLibraryJar checking for '%s' found no persistence units", persistenceUnitName); } return null; } ambiguousPUError(unit, persistenceUnitName, holder); persistenceUnitName = defaultPersistenceUnitName(persistenceUnitName, holder); for (PersistenceUnitMetadata persistenceUnit : holder.getPersistenceUnits()) { if (traceEnabled) { ROOT_LOGGER.tracef("findWithinLibraryJar check '%s' against pu '%s'", persistenceUnitName, persistenceUnit.getPersistenceUnitName()); } if (persistenceUnitName == null || persistenceUnitName.length() == 0 || persistenceUnit.getPersistenceUnitName().equals(persistenceUnitName)) { if (traceEnabled) { ROOT_LOGGER.tracef("findWithinLibraryJar matched '%s' against pu '%s'", persistenceUnitName, persistenceUnit.getPersistenceUnitName()); } return persistenceUnit; } } return null; }
private static PersistenceUnitMetadata findWithinLibraryJar(DeploymentUnit unit, ResourceRoot moduleResourceRoot, String persistenceUnitName) { final ResourceRoot deploymentRoot = moduleResourceRoot; PersistenceUnitMetadataHolder holder = deploymentRoot.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS); if (holder == null || holder.getPersistenceUnits() == null) { if (traceEnabled) { ROOT_LOGGER.tracef("findWithinLibraryJar checking for '%s' found no persistence units", persistenceUnitName); } return null; } ambiguousPUError(unit, persistenceUnitName, holder); persistenceUnitName = defaultPersistenceUnitName(persistenceUnitName, holder); for (PersistenceUnitMetadata persistenceUnit : holder.getPersistenceUnits()) { if (traceEnabled) { ROOT_LOGGER.tracef("findWithinLibraryJar check '%s' against pu '%s'", persistenceUnitName, persistenceUnit.getPersistenceUnitName()); } if (persistenceUnitName == null || persistenceUnitName.length() == 0 || persistenceUnit.getPersistenceUnitName().equals(persistenceUnitName)) { if (traceEnabled) { ROOT_LOGGER.tracef("findWithinLibraryJar matched '%s' against pu '%s'", persistenceUnitName, persistenceUnit.getPersistenceUnitName()); } return persistenceUnit; } } return null; }
private static void handleJarDeployment(DeploymentPhaseContext phaseContext, boolean startEarly, Platform platform) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); if (!isEarDeployment(deploymentUnit) && !isWarDeployment(deploymentUnit) && JPADeploymentMarker.isJPADeployment(deploymentUnit)) { final ResourceRoot deploymentRoot = deploymentUnit.getAttachment(Attachments.DEPLOYMENT_ROOT); PersistenceUnitMetadataHolder holder; if (deploymentRoot != null && (holder = deploymentRoot.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS)) != null && holder.getPersistenceUnits().size() > 0) { ArrayList<PersistenceUnitMetadataHolder> puList = new ArrayList<PersistenceUnitMetadataHolder>(1); puList.add(holder); ROOT_LOGGER.tracef("install persistence unit definition for jar %s", deploymentRoot.getRootName()); // assemble and install the PU service addPuService(phaseContext, puList, startEarly, platform); } } }
private static void handleJarDeployment(DeploymentPhaseContext phaseContext, boolean startEarly, Platform platform) throws DeploymentUnitProcessingException { final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); if (!isEarDeployment(deploymentUnit) && !isWarDeployment(deploymentUnit) && JPADeploymentMarker.isJPADeployment(deploymentUnit)) { final ResourceRoot deploymentRoot = deploymentUnit.getAttachment(Attachments.DEPLOYMENT_ROOT); PersistenceUnitMetadataHolder holder; if (deploymentRoot != null && (holder = deploymentRoot.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS)) != null && holder.getPersistenceUnits().size() > 0) { ArrayList<PersistenceUnitMetadataHolder> puList = new ArrayList<PersistenceUnitMetadataHolder>(1); puList.add(holder); ROOT_LOGGER.tracef("install persistence unit definition for jar %s", deploymentRoot.getRootName()); // assemble and install the PU service addPuService(phaseContext, puList, startEarly, platform); } } }
holder.getPersistenceUnits().size() > 0) { if (resourceRoot.getRoot().getName().toLowerCase(Locale.ENGLISH).endsWith(".jar")) { if ((holder = resourceRoot.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS)) != null && holder.getPersistenceUnits().size() > 0) {
holder.getPersistenceUnits().size() > 0) { if (resourceRoot.getRoot().getName().toLowerCase(Locale.ENGLISH).endsWith(".jar")) { if ((holder = resourceRoot.getAttachment(PersistenceUnitMetadataHolder.PERSISTENCE_UNITS)) != null && holder.getPersistenceUnits().size() > 0) {