Jira :)

On Apr 17, 2012, at 7:07 AM, [email protected] wrote:

> Author: rmannibucau
> Date: Tue Apr 17 14:07:02 2012
> New Revision: 1327103
> 
> URL: http://svn.apache.org/viewvc?rev=1327103&view=rev
> Log:
> starting work to undeploy app resources with the app undeployment
> 
> Modified:
>    
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
>    
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
>    
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
>    
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
>    
> openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java
> 
> Modified: 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java?rev=1327103&r1=1327102&r2=1327103&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
>  (original)
> +++ 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/AppInfo.java
>  Tue Apr 17 14:07:02 2012
> @@ -36,7 +36,7 @@ public class AppInfo extends InfoObject 
>     public final List<PersistenceUnitInfo> persistenceUnits = new 
> ArrayList<PersistenceUnitInfo>();
>     public final List<String> libs = new ArrayList<String>();
>     public final Set<String> watchedResources = new TreeSet<String>();
> -    public final Set<ResourceInfo> resourceInfos = new 
> TreeSet<ResourceInfo>();
> +    public final Set<String> resourceIds = new TreeSet<String>();
>     public final JndiEncInfo globalJndiEnc = new JndiEncInfo();
>     public final JndiEncInfo appJndiEnc = new JndiEncInfo();
>     public String cmpMappingsXml;
> 
> Modified: 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1327103&r1=1327102&r2=1327103&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
>  (original)
> +++ 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
>  Tue Apr 17 14:07:02 2012
> @@ -1333,6 +1333,14 @@ public class Assembler extends Assembler
>             }
>         }
> 
> +        for (String id : appInfo.resourceIds) {
> +            try {
> +                
> containerSystem.getJNDIContext().unbind(OPENEJB_RESOURCE_JNDI_PREFIX + id);
> +            } catch (NamingException e) {
> +                logger.warning("can't unbind resource '{0}'", id);
> +            }
> +        }
> +
>         containerSystem.removeAppContext(appInfo.appId);
> 
>         ClassLoaderUtil.destroyClassLoader(appInfo.path);
> @@ -1810,6 +1818,7 @@ public class Assembler extends Assembler
>         for (String property : unsetProperties.keySet()) {
>             //TODO: DMB: Make more robust later
>             if (property.equalsIgnoreCase("properties")) return;
> +            if (property.equalsIgnoreCase("ApplicationWide")) return;
>             if (property.equalsIgnoreCase("transactionManager")) return;
>             if (info.types.contains("javax.mail.Session")) return;
>             //---
> 
> Modified: 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=1327103&r1=1327102&r2=1327103&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
>  (original)
> +++ 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
>  Tue Apr 17 14:07:02 2012
> @@ -272,14 +272,15 @@ class AppInfoBuilder {
> 
>     private void buildAppResources(AppModule module, AppInfo info) {
>         for (Resource def : module.getResources()) {
> -            ResourceInfo resourceInfo = new ResourceInfo();
> -            resourceInfo.id = module.getModuleId() + "/" + 
> def.getJndi().replace("java:", "");
> -
> -            resourceInfo.service = "Resource";
> -            resourceInfo.types.add(def.getType());
> -            resourceInfo.properties = def.getProperties();
> -
> -            info.resourceInfos.add(resourceInfo);
> +            // the resource is already deployed
> +            // however we keep its id to be able to undeployed it later
> +            // note: if ApplicationWide property was specified
> +            // we want this application be managed only by the container
> +            // once deployed = not undeployed with the app
> +            // so we skip the undeployement skipping the id
> +            if (!def.getProperties().containsKey("ApplicationWide")) {
> +                info.resourceIds.add(def.getId());
> +            }
>         }
>     }
> 
> 
> Modified: 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1327103&r1=1327102&r2=1327103&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
>  (original)
> +++ 
> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
>  Tue Apr 17 14:07:02 2012
> @@ -858,6 +858,7 @@ public class AutoConfig implements Dynam
>         }
> 
>         final List<ResourceInfo> resourceInfos = new 
> ArrayList<ResourceInfo>();
> +        final Map<ResourceInfo, Resource> resourcesMap = new 
> HashMap<ResourceInfo, Resource>(resources.size());
>         for (Resource resource : resources) {
>             Properties properties = resource.getProperties();
> 
> @@ -901,15 +902,17 @@ public class AutoConfig implements Dynam
>             }
> 
>             resourceInfos.add(resourceInfo);
> +            resourcesMap.put(resourceInfo, resource);
>         }
> 
>         Collections.sort(resourceInfos, new 
> ConfigurationFactory.ResourceInfoComparator(resourceInfos));
>         for (ResourceInfo resourceInfo : resourceInfos) {
> -            installResource(module.getModuleId(), resourceInfo);
> +            final String id = installResource(module.getModuleId(), 
> resourceInfo);
> +            resourcesMap.remove(resourceInfo).setId(id);
>         }
> 
>         resourceInfos.clear();
> -        resources.clear();
> +        // resources.clear(); // don't clear it since we want to keep this 
> to be able to undeploy resources with the app
>     }
> 
>     private String dataSourceLookupName(Resource datasource) {
> 
> Modified: 
> openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java
> URL: 
> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java?rev=1327103&r1=1327102&r2=1327103&view=diff
> ==============================================================================
> --- 
> openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java
>  (original)
> +++ 
> openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEJBXmlByModuleTest.java
>  Tue Apr 17 14:07:02 2012
> @@ -16,7 +16,15 @@
>  */
> package org.apache.openejb.assembler.classic;
> 
> +import java.io.IOException;
> +import java.util.Properties;
> +import javax.annotation.Resource;
> +import javax.naming.Context;
> +import javax.naming.InitialContext;
> +import javax.naming.NamingException;
> +import javax.sql.DataSource;
> import org.apache.commons.dbcp.BasicDataSource;
> +import org.apache.openejb.OpenEJB;
> import org.apache.openejb.OpenEJBException;
> import org.apache.openejb.config.AppModule;
> import org.apache.openejb.config.ConfigurationFactory;
> @@ -28,14 +36,6 @@ import org.junit.After;
> import org.junit.Before;
> import org.junit.Test;
> 
> -import javax.annotation.Resource;
> -import javax.naming.Context;
> -import javax.naming.InitialContext;
> -import javax.naming.NamingException;
> -import javax.sql.DataSource;
> -import java.io.IOException;
> -import java.util.Properties;
> -
> import static junit.framework.Assert.assertEquals;
> import static junit.framework.Assert.assertNotNull;
> import static junit.framework.Assert.assertTrue;
> @@ -63,6 +63,9 @@ public class OpenEJBXmlByModuleTest {
> 
>         Properties properties = new Properties();
>         properties.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
> LocalInitialContextFactory.class.getName());
> +        properties.setProperty("openejb.embedded.initialcontext.close", 
> "destroy");
> +
> +        // some hack to be sure to call destroy()
>         context = new InitialContext(properties);
> 
>         bean = (UselessBean) context.lookup("UselessBeanLocalBean");
> @@ -71,6 +74,7 @@ public class OpenEJBXmlByModuleTest {
>     @After public void close() throws NamingException {
>         if (context != null) {
>             context.close();
> +            OpenEJB.destroy(); // has to be called manually since we start 
> openejb in a custom way
>         }
>     }
> 
> 
> 
> 

Reply via email to