You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2020/02/26 17:54:01 UTC

[openwebbeans] branch master updated (ce64696 -> 239b0b7)

This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git.


    from ce64696  [maven-release-plugin] prepare for next development iteration
     new f369b6a  upgrading to maven shade plugin 3.2.2 to ensure manifest.mf is well updated
     new 239b0b7  OWB-1314 ensure conversation last accessed time is updated when conversation is touched if conversation service handles propagation of id properly

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pom.xml                                            |  2 +-
 .../webbeans/conversation/ConversationImpl.java    |  7 +-
 .../webbeans/conversation/ConversationManager.java |  4 ++
 .../webbeans/corespi/se/BaseSeContextsService.java |  8 ++-
 .../conversation/ConversationManagerTest.java      | 79 ++++++++++++++++++++++
 5 files changed, 97 insertions(+), 3 deletions(-)
 create mode 100644 webbeans-impl/src/test/java/org/apache/webbeans/conversation/ConversationManagerTest.java


[openwebbeans] 02/02: OWB-1314 ensure conversation last accessed time is updated when conversation is touched if conversation service handles propagation of id properly

Posted by rm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git

commit 239b0b705dcf1c22c7b9308c6c4f3fa6e304605a
Author: Romain Manni-Bucau <rm...@apache.org>
AuthorDate: Wed Feb 26 18:53:06 2020 +0100

    OWB-1314 ensure conversation last accessed time is updated when conversation is touched if conversation service handles propagation of id properly
---
 .../webbeans/conversation/ConversationImpl.java    |  7 +-
 .../webbeans/conversation/ConversationManager.java |  4 ++
 .../webbeans/corespi/se/BaseSeContextsService.java |  8 ++-
 .../conversation/ConversationManagerTest.java      | 79 ++++++++++++++++++++++
 4 files changed, 96 insertions(+), 2 deletions(-)

diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
index bbc8c68..1670db4 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java
@@ -178,7 +178,12 @@ public class ConversationImpl implements Conversation, Serializable
         synchronized (this)
         {
             threadsUsingIt.add(thread);
-            return threadsUsingIt.size();
+            final int size = threadsUsingIt.size();
+            if (size == 1)
+            {
+                updateLastAccessTime();
+            }
+            return size;
         }
     }
 
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java b/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
index cb10836..8332357 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
@@ -107,6 +107,10 @@ public class ConversationManager
                                     " is used by other request. It creates a new transient conversation");
                             conversationContext.getConversation().setProblemDuringCreation(problem);
                         }
+                        else
+                        {
+                            conversationContext.getConversation().updateLastAccessTime();
+                        }
 
                         conversationContext.setActive(true);
                         return conversationContext;
diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/BaseSeContextsService.java b/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/BaseSeContextsService.java
index 69c8cf4..11ea0db 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/BaseSeContextsService.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/BaseSeContextsService.java
@@ -41,6 +41,7 @@ import org.apache.webbeans.context.ConversationContext;
 import org.apache.webbeans.context.DependentContext;
 import org.apache.webbeans.context.RequestContext;
 import org.apache.webbeans.context.SessionContext;
+import org.apache.webbeans.conversation.ConversationImpl;
 import org.apache.webbeans.conversation.ConversationManager;
 import org.apache.webbeans.intercept.RequestScopedBeanInterceptorHandler;
 import org.apache.webbeans.intercept.SessionScopedBeanInterceptorHandler;
@@ -311,11 +312,16 @@ public abstract class BaseSeContextsService extends AbstractContextsService
         ctx.setActive(true);
         conversationContext.set(ctx);
 
-        if (ctx.getConversation().isTransient())
+        final ConversationImpl conversation = ctx.getConversation();
+        if (conversation.isTransient())
         {
             webBeansContext.getBeanManagerImpl().fireContextLifecyleEvent(
                 conversationManager.getLifecycleEventPayload(ctx), InitializedLiteral.INSTANCE_CONVERSATION_SCOPED);
         }
+        else
+        {
+            conversation.updateLastAccessTime();
+        }
     }
 
     
diff --git a/webbeans-impl/src/test/java/org/apache/webbeans/conversation/ConversationManagerTest.java b/webbeans-impl/src/test/java/org/apache/webbeans/conversation/ConversationManagerTest.java
new file mode 100644
index 0000000..077a8f8
--- /dev/null
+++ b/webbeans-impl/src/test/java/org/apache/webbeans/conversation/ConversationManagerTest.java
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+package org.apache.webbeans.conversation;
+
+import static java.lang.Thread.sleep;
+import static org.apache.webbeans.util.Asserts.assertNotNull;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.enterprise.context.ConversationScoped;
+
+import org.apache.webbeans.context.ConversationContext;
+import org.apache.webbeans.spi.ContextsService;
+import org.apache.webbeans.spi.ConversationService;
+import org.apache.webbeans.test.AbstractUnitTest;
+import org.junit.Test;
+
+public class ConversationManagerTest extends AbstractUnitTest
+{
+    @Test
+    public void ensureLastUpdateIsCorrect()
+    {
+        final AtomicReference<String> conversationId = new AtomicReference<>();
+        addService(ConversationService.class, new DefaultConversationService() {
+            @Override
+            public String getConversationId() {
+                return conversationId.get();
+            }
+        });
+        addConfiguration("org.apache.webbeans.application.supportsConversation", "true");
+        startContainer();
+        final ContextsService contextsService = getWebBeansContext().getContextsService();
+        contextsService.startContext(ConversationScoped.class, null);
+        final ConversationContext conversationContext1 = ConversationContext.class.cast(
+                contextsService.getCurrentContext(ConversationScoped.class));
+        final ConversationImpl conversation1 = conversationContext1.getConversation();
+        assertNotNull(conversation1);
+        assertEquals(0, conversation1.getLastAccessTime());
+        conversation1.begin("foo");
+        conversationId.set(conversation1.getId());
+        final long beginTime = conversation1.getLastAccessTime();
+        assertNotEquals(0, beginTime);
+        try {
+            sleep(100); // avoid cached value (win)
+        } catch (final InterruptedException e) {
+            Thread.currentThread().interrupt();
+        }
+
+        // another request, will trigger the update
+        contextsService.endContext(ConversationScoped.class, null);
+
+        contextsService.startContext(ConversationScoped.class, null);
+        final ConversationContext conversationContext2 = ConversationContext.class.cast(
+                contextsService.getCurrentContext(ConversationScoped.class));
+        final ConversationImpl conversation2 = conversationContext2.getConversation();
+        assertEquals(conversation1, conversation2);
+
+        contextsService.getCurrentContext(ConversationScoped.class); // trigger update
+        assertNotEquals(beginTime, conversation2.getLastAccessTime());
+    }
+}


[openwebbeans] 01/02: upgrading to maven shade plugin 3.2.2 to ensure manifest.mf is well updated

Posted by rm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git

commit f369b6aca9f60dd5cdc514c175894f82cdcd7601
Author: Romain Manni-Bucau <rm...@apache.org>
AuthorDate: Wed Feb 26 18:52:02 2020 +0100

    upgrading to maven shade plugin 3.2.2 to ensure manifest.mf is well updated
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 8ae9a47..fae44c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
         <osgi.el.range>2.2</osgi.el.range>
         <osgi.faces.range>2.0</osgi.faces.range>
 
-        <maven-shade-plugin.version>3.2.1</maven-shade-plugin.version>
+        <maven-shade-plugin.version>3.2.2</maven-shade-plugin.version>
     </properties>
     
     <mailingLists>