Author: rmannibucau
Date: Sat Oct 13 15:53:47 2012
New Revision: 1397867
URL: http://svn.apache.org/viewvc?rev=1397867&view=rev
Log:
enhancing a bit the algorithm to try to find appinfo when using webappdeployer
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java?rev=1397867&r1=1397866&r2=1397867&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
Sat Oct 13 15:53:47 2012
@@ -28,6 +28,8 @@ import org.apache.openejb.util.Logger;
import org.apache.tomee.catalina.TomcatWebAppBuilder;
import java.io.File;
+import java.util.Collection;
+import java.util.Iterator;
public class TomcatWebappDeployer implements WebAppDeployer {
private static final Logger LOGGER =
Logger.getInstance(LogCategory.OPENEJB, TomcatWebappDeployer.class);
@@ -35,13 +37,31 @@ public class TomcatWebappDeployer implem
@Override
public AppInfo deploy(final String context, final File file) {
final TomcatWebAppBuilder tomcatWebAppBuilder = (TomcatWebAppBuilder)
SystemInstance.get().getComponent(WebAppBuilder.class);
+
+ final Collection<String> alreadyDeployed =
tomcatWebAppBuilder.availableApps();
+
try {
tomcatWebAppBuilder.deployWebApps(fakeInfo(file, context), null);
// classloader == null -> standalone war
} catch (Exception e) {
throw new OpenEJBRuntimeException(e);
}
- final TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
+ TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
+
+ if (info == null) { // try another time doing a diff with apps before
deployment and apps after
+ final Collection<String> deployedNow =
tomcatWebAppBuilder.availableApps();
+ final Iterator<String> it = deployedNow.iterator();
+ while (it.hasNext()) {
+ if (alreadyDeployed.contains(it.next())) {
+ it.remove();
+ }
+ }
+
+ if (deployedNow.size() == 1) {
+ info = contextInfo(new File(deployedNow.iterator().next()));
+ }
+ }
+
if (info == null || info.appInfo == null) {
LOGGER.error("Can't find of appInfo for " + (file != null ?
file.getAbsolutePath() : null) + ", availables: " +
tomcatWebAppBuilder.availableApps());
}