This is an automated email from the ASF dual-hosted git repository. rotty3000 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/aries-cdi.git
The following commit(s) were added to refs/heads/master by this push: new 93a4578 ensure there is no loop in owb servlet case new def2ecd Merge pull request #40 from rmannibucau/rmannibucau/fix-owb-web-case 93a4578 is described below commit 93a4578b558c833625726af93a54e05f979a3ffd Author: Romain Manni-Bucau <rmannibu...@gmail.com> AuthorDate: Tue Jan 14 17:40:10 2020 +0100 ensure there is no loop in owb servlet case --- .../cdi/extension/servlet/owb/OWBServletExtension.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cdi-extension-servlet-owb/src/main/java/org/apache/aries/cdi/extension/servlet/owb/OWBServletExtension.java b/cdi-extension-servlet-owb/src/main/java/org/apache/aries/cdi/extension/servlet/owb/OWBServletExtension.java index 0bc74b1..1e25872 100644 --- a/cdi-extension-servlet-owb/src/main/java/org/apache/aries/cdi/extension/servlet/owb/OWBServletExtension.java +++ b/cdi-extension-servlet-owb/src/main/java/org/apache/aries/cdi/extension/servlet/owb/OWBServletExtension.java @@ -69,13 +69,15 @@ public class OWBServletExtension extends BaseServletExtension implements StartOb }; this.bundleContext = bundle.getBundleContext(); + this.delegateContext = new ForwardingContext(); // ensure we can switch the impl and keep ServletContextBean working with an updated context this.proxyContext = ServletContext.class.cast(Proxy.newProxyInstance(ServletContext.class.getClassLoader(), new Class<?>[]{ServletContext.class}, (proxy, method, args) -> { try { - return method.invoke(ofNullable(delegateContext).orElseGet(startEvent::getServletContext), args); + final ServletContext ctx = ofNullable(delegateContext).orElseGet(startEvent::getServletContext); + return method.invoke(ctx, args); } catch (final InvocationTargetException ite) { throw ite.getTargetException(); @@ -84,7 +86,9 @@ public class OWBServletExtension extends BaseServletExtension implements StartOb } public void setDelegate(final ServletContext delegateContext) { + final ServletContext oldCtx = this.delegateContext; this.delegateContext = delegateContext; + list(oldCtx.getAttributeNames()).forEach(attr -> this.delegateContext.setAttribute(attr, oldCtx.getAttribute(attr))); } void afterDeploymentValidation( @@ -151,5 +155,12 @@ public class OWBServletExtension extends BaseServletExtension implements StartOb } } } + + private static class ForwardingContext extends MockServletContext { + @Override + public String getVirtualServerName() { + return "http"; + } + } }