Skip to content

Commit

Permalink
Merge pull request #565 from smillidge/PAYARA-538
Browse files Browse the repository at this point in the history
PAYARA-538 Fixes #564
  • Loading branch information
smillidge committed Dec 12, 2015
2 parents d3023b3 + 0e6b71f commit 51871e7
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@
* only if the new code is made subject to such option by the copyright
* holder.
*/
//Portions Copyright [2015] [C2B2 Consulting Limited]

package com.sun.enterprise.deployment.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
Expand All @@ -56,7 +56,6 @@
import com.sun.enterprise.deployment.*;
import com.sun.enterprise.deployment.types.EjbReference;
import com.sun.enterprise.deployment.types.MessageDestinationReferencer;
import com.sun.enterprise.deployment.web.EnvironmentEntry;
import com.sun.enterprise.util.LocalStringManagerImpl;
import org.glassfish.deployment.common.Descriptor;
import org.glassfish.deployment.common.DescriptorVisitor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,10 +221,27 @@ private void registerDataSourceDefinitions(String appName, Descriptor descriptor
}


private void unregisterDSDReferredByApplication(DataSourceDefinitionDescriptor dsd){
private void unregisterDSDReferredByApplication(String appName, DataSourceDefinitionDescriptor dsd){
try{
if(dsd.isDeployed()){
undeployResource(dsd);

// unbind from JNDI
ResourceNamingService resourceNamingService = resourceNamingServiceProvider.get();
String dsdName = dsd.getName();

if(dsdName.startsWith(ResourceConstants.JAVA_GLOBAL_SCOPE_PREFIX)
/*|| next.getName().startsWith("java:module/")*/
|| dsdName.startsWith(ResourceConstants.JAVA_APP_SCOPE_PREFIX)){
ResourceInfo resourceInfo = new ResourceInfo(dsdName, appName, null);
try {
resourceNamingService.unpublishObject(resourceInfo, dsdName);
dsd.setDeployed(false);
} catch (NamingException e) {
Object params[] = new Object[]{appName, dsdName, e};
_logger.log(Level.WARNING, "dsd.unregistration.failed", params);
}
}
}
}catch(Exception e){
_logger.log(Level.WARNING, "exception while unregistering DSD [ "+dsd.getName()+" ]", e);
Expand All @@ -234,21 +251,21 @@ private void unregisterDSDReferredByApplication(DataSourceDefinitionDescriptor d
public void unRegisterDataSourceDefinitions(com.sun.enterprise.deployment.Application application) {
Set<BundleDescriptor> bundles = application.getBundleDescriptors();
for (BundleDescriptor bundle : bundles) {
unRegisterDataSourceDefinitions(bundle);
unRegisterDataSourceDefinitions(application.getName(),bundle);
Collection<RootDeploymentDescriptor> dds = bundle.getExtensionsDescriptors();
if(dds != null){
for(RootDeploymentDescriptor dd : dds){
unRegisterDataSourceDefinitions(dd);
unRegisterDataSourceDefinitions(application.getName(), dd);
}
}
}
}

private void unRegisterDataSourceDefinitions(Descriptor descriptor) {
private void unRegisterDataSourceDefinitions(String appName, Descriptor descriptor) {
if (descriptor instanceof JndiNameEnvironment) {
JndiNameEnvironment env = (JndiNameEnvironment) descriptor;
for (Descriptor dsd : env.getResourceDescriptors(JavaEEResourceType.DSD)) {
unregisterDSDReferredByApplication((DataSourceDefinitionDescriptor)dsd);
unregisterDSDReferredByApplication(appName, (DataSourceDefinitionDescriptor)dsd);
}
}

Expand All @@ -258,14 +275,14 @@ private void unRegisterDataSourceDefinitions(Descriptor descriptor) {
Set<? extends EjbDescriptor> ejbDescriptors = ejbDesc.getEjbs();
for (EjbDescriptor ejbDescriptor : ejbDescriptors) {
for (Descriptor dsd : ejbDescriptor.getResourceDescriptors(JavaEEResourceType.DSD)) {
unregisterDSDReferredByApplication((DataSourceDefinitionDescriptor)dsd);
unregisterDSDReferredByApplication(appName, (DataSourceDefinitionDescriptor)dsd);
}
}
//ejb interceptors
Set<EjbInterceptor> ejbInterceptors = ejbDesc.getInterceptors();
for (EjbInterceptor ejbInterceptor : ejbInterceptors) {
for (Descriptor dsd : ejbInterceptor.getResourceDescriptors(JavaEEResourceType.DSD)) {
unregisterDSDReferredByApplication((DataSourceDefinitionDescriptor)dsd);
unregisterDSDReferredByApplication(appName, (DataSourceDefinitionDescriptor)dsd);
}
}
}
Expand All @@ -275,7 +292,7 @@ private void unRegisterDataSourceDefinitions(Descriptor descriptor) {
Set<ManagedBeanDescriptor> managedBeanDescriptors = ((BundleDescriptor)descriptor).getManagedBeans();
for (ManagedBeanDescriptor mbd : managedBeanDescriptors) {
for (Descriptor dsd : mbd.getResourceDescriptors(JavaEEResourceType.DSD)) {
unregisterDSDReferredByApplication((DataSourceDefinitionDescriptor)dsd);
unregisterDSDReferredByApplication(appName, (DataSourceDefinitionDescriptor)dsd);
}
}
}
Expand Down

0 comments on commit 51871e7

Please sign in to comment.