private void mergeWebFragments(final WebModule webModule) { // web-fragment.xml, to get jndi entries to merge, other stuff is done by tomcat ATM final Collection<URL> urls = Collection.class.cast(webModule.getAltDDs().get("web-fragment.xml")); if (urls != null) { for (final URL rawUrl : urls) { if (rawUrl != null) { final Source url = getSource(rawUrl); try { final WebFragment webFragment = WebFragment.class.cast(JaxbJavaee.unmarshal(WebFragment.class, url.get(), false)); // in tomcat if the env entry is already don't override it mergeOnlyMissingEntries(webModule.getWebApp().getPersistenceContextRefMap(), webFragment.getPersistenceContextRef()); mergeOnlyMissingEntries(webModule.getWebApp().getPersistenceUnitRefMap(), webFragment.getPersistenceUnitRef()); mergeOnlyMissingEntries(webModule.getWebApp().getMessageDestinationRefMap(), webFragment.getMessageDestinationRef()); mergeOnlyMissingEntries(webModule.getWebApp().getDataSourceMap(), webFragment.getDataSource()); mergeOnlyMissingEntries(webModule.getWebApp().getJMSConnectionFactoriesMap(), webFragment.getJMSConnectionFactories()); mergeOnlyMissingEntries(webModule.getWebApp().getEjbLocalRefMap(), webFragment.getEjbLocalRef()); mergeOnlyMissingEntries(webModule.getWebApp().getEjbRefMap(), webFragment.getEjbRef()); mergeOnlyMissingEntries(webModule.getWebApp().getServiceRefMap(), webFragment.getServiceRef()); mergeOnlyMissingEntries(webModule.getWebApp().getEnvEntryMap(), webFragment.getEnvEntry()); mergeOnlyMissingEntries(webModule.getWebApp().getResourceEnvRefMap(), webFragment.getResourceEnvRef()); mergeOnlyMissingEntries(webModule.getWebApp().getResourceRefMap(), webFragment.getResourceRef()); } catch (final Exception e) { logger.warning("can't read " + url.toString(), e); } } } } }
@Override public void merge(WebFragment webFragment, WebApp webApp, MergeContext mergeContext) throws DeploymentException { for (DataSource srcDataSource : webFragment.getDataSource()) { String dataSourceKey = createDataSourceKey(srcDataSource, mergeContext); MergeItem mergeItem = (MergeItem) mergeContext.getAttribute(dataSourceKey); if (mergeItem != null && mergeItem.isFromWebFragment()) { throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateJNDIRefMessage("data-source", srcDataSource.getName(), mergeContext.getCurrentJarUrl(), mergeItem .getBelongedURL())); } webApp.getDataSource().add(srcDataSource); mergeContext.setAttribute(dataSourceKey, new MergeItem(srcDataSource, mergeContext.getCurrentJarUrl(), ElementSource.WEB_FRAGMENT)); } }
for (EjbRef srcEjbRef : webFragment.getEjbRef()) { String ejbRefName = srcEjbRef.getEjbRefName(); String ejbRefKey = createEjbRefKey(ejbRefName);
for (ServiceRef srcServiceRef : webFragment.getServiceRef()) { String serviceRefName = srcServiceRef.getServiceRefName(); String serviceRefKey = createServiceRefKey(serviceRefName);
for (PersistenceContextRef srcPersistenceContextRef : webFragment.getPersistenceContextRef()) { String persistenceContextRefName = srcPersistenceContextRef.getPersistenceContextRefName(); String persistenceContextRefKey = createPersistenceContextRefKey(persistenceContextRefName);
for (ResourceRef srcResourceRef : webFragment.getResourceRef()) { String resourceRefName = srcResourceRef.getResRefName(); String resourceRefKey = createResourceRefKey(resourceRefName);
for (EjbLocalRef srcEjbLocalRef : webFragment.getEjbLocalRef()) { String ejbLocalRefName = srcEjbLocalRef.getEjbRefName(); String ejbLocalRefKey = createEjbLocalRefKey(ejbLocalRefName);
for (MessageDestinationRef srcMessageDestinationRef : webFragment.getMessageDestinationRef()) { String messageDestinationRefName = srcMessageDestinationRef.getMessageDestinationRefName(); String messageDestinationRefKey = createMessageDestinationRefKey(messageDestinationRefName);
for (EnvEntry srcEnvEntry : webFragment.getEnvEntry()) { String envEntryName = srcEnvEntry.getEnvEntryName(); String envEntryKey = createEnvEntryKey(envEntryName);
for (PersistenceUnitRef srcPersistenceUnitRef : webFragment.getPersistenceUnitRef()) { String persistenceUnitRefName = srcPersistenceUnitRef.getPersistenceUnitRefName(); String persistenceUnitRefKey = createPersistenceUnitRefKey(persistenceUnitRefName);
for (ResourceEnvRef srcResourceEnvRef : webFragment.getResourceEnvRef()) { String resourceEnvRefName = srcResourceEnvRef.getResourceEnvRefName(); String resourceEnvRefKey = createResourceEnvRefKey(resourceEnvRefName);
private void mergeWebFragments(final WebModule webModule) { // web-fragment.xml, to get jndi entries to merge, other stuff is done by tomcat ATM final Collection<URL> urls = Collection.class.cast(webModule.getAltDDs().get("web-fragment.xml")); if (urls != null) { for (final URL rawUrl : urls) { if (rawUrl != null) { final Source url = getSource(rawUrl); try { final WebFragment webFragment = WebFragment.class.cast(JaxbJavaee.unmarshal(WebFragment.class, url.get(), false)); // in tomcat if the env entry is already don't override it mergeOnlyMissingEntries(webModule.getWebApp().getPersistenceContextRefMap(), webFragment.getPersistenceContextRef()); mergeOnlyMissingEntries(webModule.getWebApp().getPersistenceUnitRefMap(), webFragment.getPersistenceUnitRef()); mergeOnlyMissingEntries(webModule.getWebApp().getMessageDestinationRefMap(), webFragment.getMessageDestinationRef()); mergeOnlyMissingEntries(webModule.getWebApp().getDataSourceMap(), webFragment.getDataSource()); mergeOnlyMissingEntries(webModule.getWebApp().getEjbLocalRefMap(), webFragment.getEjbLocalRef()); mergeOnlyMissingEntries(webModule.getWebApp().getEjbRefMap(), webFragment.getEjbRef()); mergeOnlyMissingEntries(webModule.getWebApp().getServiceRefMap(), webFragment.getServiceRef()); mergeOnlyMissingEntries(webModule.getWebApp().getEnvEntryMap(), webFragment.getEnvEntry()); mergeOnlyMissingEntries(webModule.getWebApp().getResourceEnvRefMap(), webFragment.getResourceEnvRef()); mergeOnlyMissingEntries(webModule.getWebApp().getResourceRefMap(), webFragment.getResourceRef()); } catch (final Exception e) { logger.warning("can't read " + url.toString(), e); } } } } }