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 <[email protected]> wrote: > 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 >> } >> } >> >> >> >> >
