EXTSCRIPT-107: cdi works
git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk@1325240 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainerLoader.java b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainerLoader.java
index cc778e6..0d56c97 100644
--- a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainerLoader.java
+++ b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/api/CdiContainerLoader.java
@@ -49,14 +49,14 @@
}
else
{
- throw new IllegalStateException("Could not find an implementation of " + org.apache.deltaspike.cdise.api.CdiContainer.class.getName() +
+ throw new IllegalStateException("Could not find an implementation of " + CdiContainer.class.getName() +
" available in the classpath!");
}
if (cdiIt.hasNext())
{
String foundContainers = getContainerDetails();
- throw new IllegalStateException("Too many implementations of " + org.apache.deltaspike.cdise.api.CdiContainer.class.getName() +
+ throw new IllegalStateException("Too many implementations of " + CdiContainer.class.getName() +
" found in the classpath! Details: " + foundContainers);
}
diff --git a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java
index 4edbda2..b1a4a25 100644
--- a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java
+++ b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java
@@ -20,6 +20,7 @@
package org.apache.myfaces.extensions.scripting.cdi.core;
import org.apache.myfaces.extensions.scripting.cdi.api.CdiContainerLoader;
+import org.apache.myfaces.extensions.scripting.cdi.owb.OpenWebBeansContainerControl;
import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEvent;
import org.apache.myfaces.extensions.scripting.core.api.eventhandling.WeavingEventListener;
import org.apache.myfaces.extensions.scripting.core.api.eventhandling.events.RefreshBeginEvent;
@@ -58,23 +59,27 @@
//TODO plug reloadable classloader in here temporarily
//as context classloader, then restart the container
//then restore the old classloader
- ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
- ClassLoader tempClassLoader = new ThrowAwayClassloader(oldClassLoader);
- Thread.currentThread().setContextClassLoader(tempClassLoader);
+ //ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+ //ClassLoader tempClassLoader = new ThrowAwayClassloader(oldClassLoader);
+ //Thread.currentThread().setContextClassLoader(tempClassLoader);
try
{
- CdiContainerLoader.getCdiContainer().getContextControl(req.getServletContext(),
+ OpenWebBeansContainerControl container = (OpenWebBeansContainerControl) CdiContainerLoader
+ .getCdiContainer();
+ container.init();
+
+ container.getContextControl(req.getServletContext(),
req.getSession()).stopContexts();
- CdiContainerLoader.getCdiContainer().shutdown();
+ //container.shutdown();
- CdiContainerLoader.getCdiContainer().boot();
+ //CdiContainerLoader.getCdiContainer().boot();
- CdiContainerLoader.getCdiContainer().getContextControl(req.getServletContext(),
+ container.getContextControl(req.getServletContext(),
req.getSession()).startContexts();
}
finally
{
- Thread.currentThread().setContextClassLoader(oldClassLoader);
+ //Thread.currentThread().setContextClassLoader(oldClassLoader);
}
}
}
diff --git a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContainerControl.java b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContainerControl.java
index 9172688..d2766be 100644
--- a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContainerControl.java
+++ b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContainerControl.java
@@ -49,11 +49,15 @@
return lifecycle.getBeanManager();
}
+ public synchronized void init() {
+ lifecycle = WebBeansContext.getInstance().getService(ContainerLifecycle.class);
+ }
+
@Override
public synchronized void boot()
{
- lifecycle = WebBeansContext.getInstance().getService(ContainerLifecycle.class);
+ init();
lifecycle.startApplication(null);
}
diff --git a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContextControl.java b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContextControl.java
index ca6a895..147f894 100644
--- a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContextControl.java
+++ b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/owb/OpenWebBeansContextControl.java
@@ -44,7 +44,7 @@
public class OpenWebBeansContextControl implements ContextControl
{
- private static final Logger LOG = Logger.getLogger(org.apache.deltaspike.cdise.owb.OpenWebBeansContextControl.class.getName());
+ private static final Logger LOG = Logger.getLogger(OpenWebBeansContextControl.class.getName());
private HttpSession session = null;
private ServletContext servletContext = null;
diff --git a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/ExtScriptStartupPlugin.java b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/ExtScriptStartupPlugin.java
index 1e39ab0..cf9e5ba 100644
--- a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/ExtScriptStartupPlugin.java
+++ b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/startup/ExtScriptStartupPlugin.java
@@ -56,7 +56,8 @@
*/
public void postInit(ServletContextEvent evt)
{
- WeavingContext.getInstance().addListener(new ReloadingListener());
+ evt.getServletContext().setAttribute("ReloadingListener", new ReloadingListener());
+ WeavingContext.getInstance().addListener((ReloadingListener) evt.getServletContext().getAttribute("ReloadingListener"));
}
/**
diff --git a/extscript-core-root/extscript-cdi/src/main/resources/META-INF/beans.xml b/extscript-core-root/extscript-cdi/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..75d0933
--- /dev/null
+++ b/extscript-core-root/extscript-cdi/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
\ No newline at end of file