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";
+               }
+       }
 }
 

Reply via email to