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
>> }
>> }
>>
>>
>>
>>
>