You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by David Blevins <da...@gmail.com> on 2012/04/17 20:21:33 UTC

Re: svn commit: r1327103 - in /openejb/trunk/openejb/container/openejb-core/src: main/java/org/apache/openejb/assembler/classic/ main/java/org/apache/openejb/config/ test/java/org/apache/openejb/assembler/classic/

Jira :)

On Apr 17, 2012, at 7:07 AM, rmannibucau@apache.org 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
>         }
>     }
> 
> 
> 
> 


Re: svn commit: r1327103 - in /openejb/trunk/openejb/container/openejb-core/src: main/java/org/apache/openejb/assembler/classic/ main/java/org/apache/openejb/config/ test/java/org/apache/openejb/assembler/classic/

Posted by dsh <da...@googlemail.com>.
http://blog.grimsy.net/2008/07/a-few-svn-pre-commit-hooks/

https://studio.plugins.atlassian.com/wiki/display/CMMT/JIRA+Commit+Acceptance
http://blog.grimsy.net/2008/07/a-few-svn-pre-commit-hooks/
http://bizsutra.blogspot.de/2008/08/svn-jira-pre-commit-hook.html


On Tue, Apr 17, 2012 at 8:21 PM, David Blevins <da...@gmail.com> wrote:
> Jira :)
>
> On Apr 17, 2012, at 7:07 AM, rmannibucau@apache.org 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
>>         }
>>     }
>>
>>
>>
>>
>

Filing Jiras (Re: svn commit: r1327103)

Posted by David Blevins <da...@gmail.com>.
Not every commit needs one.

I ask myself these two questions (which are really the same question):

  - will a user want to know about this?
  - should this appear in the release notes?

If the answer to either of those questions is, yes, then I file a jira.

If it takes several commits to implement feature FOO-123, try to mention FOO-123 in all the commits.  That's more to help the review process at the end of a release.

I'll actually pick through the commits that don't have JIRAs and file JIRAs as needed.  Anything that already has a JIRA on it is skipped, so adding one saves me a ton of time.


-David


On Apr 17, 2012, at 11:40 AM, dsh wrote:

> You could start to script such reminder mails :)
> 
> On Tue, Apr 17, 2012 at 8:21 PM, David Blevins <da...@gmail.com> wrote:
>> Jira :)
>> 
>> On Apr 17, 2012, at 7:07 AM, rmannibucau@apache.org 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
>>>         }
>>>     }
>>> 
>>> 
>>> 
>>> 
>> 


Re: svn commit: r1327103 - in /openejb/trunk/openejb/container/openejb-core/src: main/java/org/apache/openejb/assembler/classic/ main/java/org/apache/openejb/config/ test/java/org/apache/openejb/assembler/classic/

Posted by dsh <da...@googlemail.com>.
You could start to script such reminder mails :)

On Tue, Apr 17, 2012 at 8:21 PM, David Blevins <da...@gmail.com> wrote:
> Jira :)
>
> On Apr 17, 2012, at 7:07 AM, rmannibucau@apache.org 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
>>         }
>>     }
>>
>>
>>
>>
>