You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2022/08/30 09:31:51 UTC
[myfaces] branch main updated: cosmetics
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/main by this push:
new 2eb1814eb cosmetics
2eb1814eb is described below
commit 2eb1814ebea056e9215e988a25d82209ae3bc097
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Tue Aug 30 11:31:43 2022 +0200
cosmetics
---
.../myfaces/push/WebsocketComponentRenderer.java | 50 ++++++++---------
.../apache/myfaces/push/WebsocketConfigurator.java | 14 ++---
.../push/cdi/AbstractWebsocketTokenManager.java | 42 +++++++++++++++
...textCDIExtension.java => PushCDIExtension.java} | 14 ++---
.../apache/myfaces/push/cdi/PushContextImpl.java | 62 +++++++++++-----------
...Bean.java => WebsocketChannelTokenBuilder.java} | 4 +-
....java => WebsocketTokenManagerApplication.java} | 32 +++++------
...Bean.java => WebsocketTokenManagerSession.java} | 43 +++++++--------
...iewBean.java => WebsocketTokenManagerView.java} | 31 ++++-------
.../jakarta.enterprise.inject.spi.Extension | 2 +-
10 files changed, 151 insertions(+), 143 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java b/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java
index e7ad86ef9..98171f936 100644
--- a/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/push/WebsocketComponentRenderer.java
@@ -37,11 +37,11 @@ import jakarta.faces.event.PostAddToViewEvent;
import jakarta.faces.render.Renderer;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
import org.apache.myfaces.cdi.util.CDIUtils;
-import org.apache.myfaces.push.cdi.WebsocketApplicationBean;
+import org.apache.myfaces.push.cdi.WebsocketTokenManagerApplication;
import org.apache.myfaces.push.cdi.WebsocketChannelMetadata;
-import org.apache.myfaces.push.cdi.WebsocketChannelTokenBuilderBean;
-import org.apache.myfaces.push.cdi.WebsocketSessionBean;
-import org.apache.myfaces.push.cdi.WebsocketViewBean;
+import org.apache.myfaces.push.cdi.WebsocketChannelTokenBuilder;
+import org.apache.myfaces.push.cdi.WebsocketTokenManagerSession;
+import org.apache.myfaces.push.cdi.WebsocketTokenManagerView;
import org.apache.myfaces.renderkit.html.util.ClientBehaviorRendererUtils;
import org.apache.myfaces.renderkit.html.util.HTML;
import org.apache.myfaces.renderkit.html.util.HtmlRendererUtils;
@@ -122,16 +122,13 @@ public class WebsocketComponentRenderer extends Renderer implements ComponentSys
// TODO: use a single bean and entry point for this algorithm.
BeanManager beanManager = CDIUtils.getBeanManager(facesContext);
- WebsocketChannelTokenBuilderBean channelTokenBean = CDIUtils.get(
- beanManager,
- WebsocketChannelTokenBuilderBean.class);
+ WebsocketChannelTokenBuilder channelTokenBean = CDIUtils.get(beanManager, WebsocketChannelTokenBuilder.class);
// This bean is required because you always need to register the token, so it can be properly destroyed
- WebsocketViewBean viewTokenBean = CDIUtils.get(
- beanManager,
- WebsocketViewBean.class);
- WebsocketSessionBean sessionTokenBean = CDIUtils.get(
- beanManager, WebsocketSessionBean.class);
+ WebsocketTokenManagerView viewTokenManager =
+ CDIUtils.get(beanManager, WebsocketTokenManagerView.class);
+ WebsocketTokenManagerSession sessionTokenManager =
+ CDIUtils.get(beanManager, WebsocketTokenManagerSession.class);
// Create channel token
// TODO: Use ResponseStateManager to create the token
@@ -144,7 +141,7 @@ public class WebsocketComponentRenderer extends Renderer implements ComponentSys
// creation
if (!component.isConnected())
{
- channelToken = viewTokenBean.getChannelToken(metadata);
+ channelToken = viewTokenManager.getChannelToken(metadata);
}
if (channelToken == null)
{
@@ -152,37 +149,32 @@ public class WebsocketComponentRenderer extends Renderer implements ComponentSys
channelToken = channelTokenBean.createChannelToken(facesContext, channel);
// Register channel in view scope to chain discard view algorithm using @PreDestroy
- viewTokenBean.registerToken(channelToken, metadata);
+ viewTokenManager.registerToken(channelToken, metadata);
// Register channel in session scope to allow validation on handshake ( WebsocketConfigurator )
- sessionTokenBean.registerToken(channelToken, metadata);
+ sessionTokenManager.registerToken(channelToken, metadata);
}
// Ask these two scopes
- WebsocketApplicationBean appTokenBean = CDIUtils.get(
- beanManager, WebsocketApplicationBean.class, false);
+ WebsocketTokenManagerApplication applicationTokenManager =
+ CDIUtils.get(beanManager, WebsocketTokenManagerApplication.class, false);
// Register token and metadata in the proper bean
if (scope.equals("view"))
{
- viewTokenBean.registerWebsocketSession(channelToken, metadata);
+ viewTokenManager.registerWebsocketSession(channelToken, metadata);
}
else if (scope.equals("session"))
{
- sessionTokenBean = (sessionTokenBean != null) ? sessionTokenBean : CDIUtils.get(
- CDIUtils.getBeanManager(facesContext),
- WebsocketSessionBean.class);
-
- sessionTokenBean.registerWebsocketSession(channelToken, metadata);
+ sessionTokenManager.registerWebsocketSession(channelToken, metadata);
}
- else
+ else if (scope.equals("application"))
{
- //Default application
- appTokenBean = (appTokenBean != null) ? appTokenBean : CDIUtils.get(
- CDIUtils.getBeanManager(facesContext),
- WebsocketApplicationBean.class);
+ applicationTokenManager = applicationTokenManager != null
+ ? applicationTokenManager
+ : CDIUtils.get(beanManager, WebsocketTokenManagerApplication.class);
- appTokenBean.registerWebsocketSession(channelToken, metadata);
+ applicationTokenManager.registerWebsocketSession(channelToken, metadata);
}
writer.startElement(HTML.SCRIPT_ELEM, component);
HtmlRendererUtils.renderScriptType(facesContext, writer);
diff --git a/impl/src/main/java/org/apache/myfaces/push/WebsocketConfigurator.java b/impl/src/main/java/org/apache/myfaces/push/WebsocketConfigurator.java
index 55d309803..a247e2507 100644
--- a/impl/src/main/java/org/apache/myfaces/push/WebsocketConfigurator.java
+++ b/impl/src/main/java/org/apache/myfaces/push/WebsocketConfigurator.java
@@ -27,7 +27,7 @@ import jakarta.websocket.server.HandshakeRequest;
import jakarta.websocket.server.ServerEndpointConfig;
import org.apache.myfaces.cdi.util.CDIUtils;
import org.apache.myfaces.config.MyfacesConfig;
-import org.apache.myfaces.push.cdi.WebsocketSessionBean;
+import org.apache.myfaces.push.cdi.WebsocketTokenManagerSession;
public class WebsocketConfigurator extends ServerEndpointConfig.Configurator
{
@@ -66,20 +66,20 @@ public class WebsocketConfigurator extends ServerEndpointConfig.Configurator
channelToken = uri.substring(uri.lastIndexOf('/')+1);
}
}
-
+
BeanManager beanManager = CDI.current().getBeanManager();
- WebsocketSessionBean websocketSessionBean = CDIUtils.get(
- beanManager, WebsocketSessionBean.class, false);
+ WebsocketTokenManagerSession sessionTokenManager =
+ CDIUtils.get(beanManager, WebsocketTokenManagerSession.class, false);
- if (websocketSessionBean != null)
+ if (sessionTokenManager != null)
{
- Serializable user = websocketSessionBean.getUserFromChannelToken(channelToken);
+ Serializable user = sessionTokenManager.getUserFromChannelToken(channelToken);
if (user != null)
{
sec.getUserProperties().put(WEBSOCKET_USER, user);
}
- sec.getUserProperties().put(WEBSOCKET_VALID, websocketSessionBean.isTokenValid(channelToken));
+ sec.getUserProperties().put(WEBSOCKET_VALID, sessionTokenManager.isTokenValid(channelToken));
}
else
{
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/AbstractWebsocketTokenManager.java b/impl/src/main/java/org/apache/myfaces/push/cdi/AbstractWebsocketTokenManager.java
new file mode 100644
index 000000000..ce5e9c249
--- /dev/null
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/AbstractWebsocketTokenManager.java
@@ -0,0 +1,42 @@
+/*
+ * 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.myfaces.push.cdi;
+
+import java.io.Serializable;
+import java.util.List;
+
+public abstract class AbstractWebsocketTokenManager implements Serializable
+{
+
+ public abstract void registerWebsocketSession(String token, WebsocketChannelMetadata metadata);
+
+ /**
+ * Indicate if the channel mentioned is valid for view scope.
+ *
+ * A channel is valid if there is at least one token that represents a valid connection to this channel.
+ *
+ * @param channel
+ * @return
+ */
+ public abstract boolean isChannelAvailable(String channel);
+
+ public abstract List<String> getChannelTokens(String channel);
+
+ public abstract <S extends Serializable> List<String> getChannelTokens(String channel, S user);
+}
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/PushContextCDIExtension.java b/impl/src/main/java/org/apache/myfaces/push/cdi/PushCDIExtension.java
similarity index 82%
rename from impl/src/main/java/org/apache/myfaces/push/cdi/PushContextCDIExtension.java
rename to impl/src/main/java/org/apache/myfaces/push/cdi/PushCDIExtension.java
index 077cdbad7..771625c91 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/PushContextCDIExtension.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/PushCDIExtension.java
@@ -28,22 +28,22 @@ import jakarta.enterprise.inject.spi.Extension;
/**
*
*/
-public class PushContextCDIExtension implements Extension
+public class PushCDIExtension implements Extension
{
void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event, BeanManager beanManager)
{
// Register PushContextFactoryBean as a bean with CDI annotations, so the system
// can take it into account, and use it later when necessary.
- AnnotatedType wcbean = beanManager.createAnnotatedType(WebsocketChannelTokenBuilderBean.class);
- event.addAnnotatedType(wcbean, wcbean.getJavaClass().getName());
-
- AnnotatedType sessionhandlerbean = beanManager.createAnnotatedType(WebsocketSessionBean.class);
+ AnnotatedType tokenBuilder = beanManager.createAnnotatedType(WebsocketChannelTokenBuilder.class);
+ event.addAnnotatedType(tokenBuilder, tokenBuilder.getJavaClass().getName());
+
+ AnnotatedType sessionhandlerbean = beanManager.createAnnotatedType(WebsocketTokenManagerSession.class);
event.addAnnotatedType(sessionhandlerbean, sessionhandlerbean.getJavaClass().getName());
- AnnotatedType viewTokenBean = beanManager.createAnnotatedType(WebsocketViewBean.class);
+ AnnotatedType viewTokenBean = beanManager.createAnnotatedType(WebsocketTokenManagerView.class);
event.addAnnotatedType(viewTokenBean, viewTokenBean.getJavaClass().getName());
- AnnotatedType apphandlerbean = beanManager.createAnnotatedType(WebsocketApplicationBean.class);
+ AnnotatedType apphandlerbean = beanManager.createAnnotatedType(WebsocketTokenManagerApplication.class);
event.addAnnotatedType(apphandlerbean, apphandlerbean.getJavaClass().getName());
}
}
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/PushContextImpl.java b/impl/src/main/java/org/apache/myfaces/push/cdi/PushContextImpl.java
index 2b1a1df18..028c0d40b 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/PushContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/PushContextImpl.java
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.myfaces.push.cdi;
import java.io.Serializable;
@@ -54,24 +53,24 @@ public class PushContextImpl implements PushContext
//1. locate the channel and define the context
String channel = getChannel();
- WebsocketApplicationBean appTokenBean = CDIUtils.get(beanManager,
- WebsocketApplicationBean.class, false);
- WebsocketViewBean viewTokenBean = null;
- WebsocketSessionBean sessionTokenBean = null;
-
+ WebsocketTokenManagerApplication applicationTokenManager = CDIUtils.get(beanManager,
+ WebsocketTokenManagerApplication.class, false);
+ WebsocketTokenManagerView viewTokenManager = null;
+ WebsocketTokenManagerSession sessionTokenManager = null;
+
if (CDIUtils.isRequestScopeActive(beanManager))
{
if (CDIUtils.isSessionScopeActive(beanManager))
{
- sessionTokenBean = CDIUtils.get(beanManager, WebsocketSessionBean.class, false);
+ sessionTokenManager = CDIUtils.get(beanManager, WebsocketTokenManagerSession.class, false);
if (CDIUtils.isViewScopeActive(beanManager))
{
- viewTokenBean = CDIUtils.get(beanManager, WebsocketViewBean.class, false);
+ viewTokenManager = CDIUtils.get(beanManager, WebsocketTokenManagerView.class, false);
}
}
}
-
- if (appTokenBean == null)
+
+ if (applicationTokenManager == null)
{
// No base bean to push message
return Collections.emptySet();
@@ -79,20 +78,20 @@ public class PushContextImpl implements PushContext
List<String> channelTokens;
- if (viewTokenBean != null && viewTokenBean.isChannelAvailable(channel))
+ if (viewTokenManager != null && viewTokenManager.isChannelAvailable(channel))
{
// Use view scope for context
- channelTokens = viewTokenBean.getChannelTokensFor(channel);
+ channelTokens = viewTokenManager.getChannelTokens(channel);
}
- else if (sessionTokenBean != null && sessionTokenBean.isChannelAvailable(getChannel()))
+ else if (sessionTokenManager != null && sessionTokenManager.isChannelAvailable(getChannel()))
{
// Use session scope for context
- channelTokens = sessionTokenBean.getChannelTokensFor(channel);
+ channelTokens = sessionTokenManager.getChannelTokens(channel);
}
- else if (appTokenBean != null && appTokenBean.isChannelAvailable(getChannel()))
+ else if (applicationTokenManager != null && applicationTokenManager.isChannelAvailable(getChannel()))
{
// Use application scope for context
- channelTokens = appTokenBean.getChannelTokensFor(channel);
+ channelTokens = applicationTokenManager.getChannelTokens(channel);
}
else
{
@@ -100,7 +99,6 @@ public class PushContextImpl implements PushContext
}
//2. send the message
-
if (channelTokens != null && !channelTokens.isEmpty())
{
Set<Future<Void>> result = null;
@@ -133,50 +131,50 @@ public class PushContextImpl implements PushContext
//1. locate the channel and define the context
String channel = getChannel();
- WebsocketApplicationBean appTokenBean = CDIUtils.get(beanManager,
- WebsocketApplicationBean.class, false);
- WebsocketViewBean viewTokenBean = null;
- WebsocketSessionBean sessionTokenBean = null;
+ WebsocketTokenManagerApplication applicationTokenManager = CDIUtils.get(beanManager,
+ WebsocketTokenManagerApplication.class, false);
+ WebsocketTokenManagerView viewTokenManager = null;
+ WebsocketTokenManagerSession sessionTokenManager = null;
if (CDIUtils.isSessionScopeActive(beanManager))
{
- sessionTokenBean = CDIUtils.get(beanManager, WebsocketSessionBean.class, false);
+ sessionTokenManager = CDIUtils.get(beanManager, WebsocketTokenManagerSession.class, false);
if (CDIUtils.isViewScopeActive(beanManager))
{
- viewTokenBean = CDIUtils.get(beanManager, WebsocketViewBean.class, false);
+ viewTokenManager = CDIUtils.get(beanManager, WebsocketTokenManagerView.class, false);
}
}
- if (appTokenBean == null)
+ if (applicationTokenManager == null)
{
// No base bean to push message
return Collections.emptyMap();
}
- Map<S, Set<Future<Void>>> result = new HashMap<S, Set<Future<Void>>>();
-
- if (viewTokenBean != null && viewTokenBean.isChannelAvailable(channel))
+ Map<S, Set<Future<Void>>> result = new HashMap<>();
+
+ if (viewTokenManager != null && viewTokenManager.isChannelAvailable(channel))
{
// Use view scope for context
for (S user : users)
{
- result.put(user, send(viewTokenBean.getChannelTokensFor(channel, user), message));
+ result.put(user, send(viewTokenManager.getChannelTokens(channel, user), message));
}
}
- else if (sessionTokenBean != null && sessionTokenBean.isChannelAvailable(getChannel()))
+ else if (sessionTokenManager != null && sessionTokenManager.isChannelAvailable(getChannel()))
{
// Use session scope for context
for (S user : users)
{
- result.put(user, send(sessionTokenBean.getChannelTokensFor(channel, user), message));
+ result.put(user, send(sessionTokenManager.getChannelTokens(channel, user), message));
}
}
- else if (appTokenBean != null && appTokenBean.isChannelAvailable(getChannel()))
+ else if (applicationTokenManager != null && applicationTokenManager.isChannelAvailable(getChannel()))
{
// Use application scope for context
for (S user : users)
{
- result.put(user, send(appTokenBean.getChannelTokensFor(channel, user), message));
+ result.put(user, send(applicationTokenManager.getChannelTokens(channel, user), message));
}
}
else
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketChannelTokenBuilderBean.java b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketChannelTokenBuilder.java
similarity index 96%
rename from impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketChannelTokenBuilderBean.java
rename to impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketChannelTokenBuilder.java
index a93db4e31..269484919 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketChannelTokenBuilderBean.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketChannelTokenBuilder.java
@@ -27,13 +27,13 @@ import org.apache.myfaces.util.token.CsrfSessionTokenFactorySecureRandom;
import org.apache.myfaces.config.MyfacesConfig;
@ApplicationScoped
-public class WebsocketChannelTokenBuilderBean
+public class WebsocketChannelTokenBuilder
{
private CsrfSessionTokenFactory csrfSessionTokenFactory;
private boolean initialized;
- public WebsocketChannelTokenBuilderBean()
+ public WebsocketChannelTokenBuilder()
{
}
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketApplicationBean.java b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerApplication.java
similarity index 77%
rename from impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketApplicationBean.java
rename to impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerApplication.java
index bbb36e632..a2f0004c0 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketApplicationBean.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerApplication.java
@@ -22,43 +22,34 @@ package org.apache.myfaces.push.cdi;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.enterprise.context.ApplicationScoped;
+import java.util.concurrent.ConcurrentHashMap;
@ApplicationScoped
-public class WebsocketApplicationBean
+public class WebsocketTokenManagerApplication extends AbstractWebsocketTokenManager
{
-
/**
* This map has as key the channel and as values a list of websocket channels
*/
- private Map<String, List<WebsocketChannel>> channelTokenListMap = new HashMap<>(2);
+ private Map<String, List<WebsocketChannel>> channelTokenListMap = new ConcurrentHashMap<>(2);
+ @Override
public void registerWebsocketSession(String token, WebsocketChannelMetadata metadata)
{
- if ("application".equals(metadata.getScope()))
- {
- channelTokenListMap.putIfAbsent(metadata.getChannel(), new ArrayList<>(1));
- channelTokenListMap.get(metadata.getChannel()).add(new WebsocketChannel(token, metadata));
- }
+ channelTokenListMap.putIfAbsent(metadata.getChannel(), new ArrayList<>(1));
+ channelTokenListMap.get(metadata.getChannel()).add(new WebsocketChannel(token, metadata));
}
-
- /**
- * Indicate if the channel mentioned is valid for view scope.
- *
- * A channel is valid if there is at least one token that represents a valid connection to this channel.
- *
- * @param channel
- * @return
- */
+
+ @Override
public boolean isChannelAvailable(String channel)
{
return channelTokenListMap.containsKey(channel);
}
- public List<String> getChannelTokensFor(String channel)
+ @Override
+ public List<String> getChannelTokens(String channel)
{
List<WebsocketChannel> list = channelTokenListMap.get(channel);
if (list != null && !list.isEmpty())
@@ -73,7 +64,8 @@ public class WebsocketApplicationBean
return Collections.emptyList();
}
- public <S extends Serializable> List<String> getChannelTokensFor(String channel, S user)
+ @Override
+ public <S extends Serializable> List<String> getChannelTokens(String channel, S user)
{
List<WebsocketChannel> list = channelTokenListMap.get(channel);
if (list != null && !list.isEmpty())
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketSessionBean.java b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerSession.java
similarity index 86%
rename from impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketSessionBean.java
rename to impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerSession.java
index fa50b9bc6..85ca61d68 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketSessionBean.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerSession.java
@@ -37,14 +37,14 @@ import jakarta.enterprise.context.SessionScoped;
*
*/
@SessionScoped
-public class WebsocketSessionBean implements Serializable
+public class WebsocketTokenManagerSession extends AbstractWebsocketTokenManager implements Serializable
{
/**
* This map hold all tokens that are related to the current scope.
* This map use as key channel and as value channelTokens
*/
- private Map<String, List<WebsocketChannel> > channelTokenListMap = new ConcurrentHashMap<>(2);
+ private Map<String, List<WebsocketChannel>> channelTokenListMap = new ConcurrentHashMap<>(2);
/**
* This map holds all tokens related to the current session and its associated metadata, that will
@@ -53,7 +53,7 @@ public class WebsocketSessionBean implements Serializable
*/
private Map<String, WebsocketChannelMetadata> tokenMap = new ConcurrentHashMap<>();
- public WebsocketSessionBean()
+ public WebsocketTokenManagerSession()
{
}
@@ -62,15 +62,19 @@ public class WebsocketSessionBean implements Serializable
tokenMap.put(token, metadata);
}
+ @Override
public void registerWebsocketSession(String token, WebsocketChannelMetadata metadata)
{
- if ("session".equals(metadata.getScope()))
- {
- channelTokenListMap.putIfAbsent(metadata.getChannel(), new ArrayList<>(1));
- channelTokenListMap.get(metadata.getChannel()).add(new WebsocketChannel(token, metadata));
- }
+ channelTokenListMap.putIfAbsent(metadata.getChannel(), new ArrayList<>(1));
+ channelTokenListMap.get(metadata.getChannel()).add(new WebsocketChannel(token, metadata));
}
-
+
+ @Override
+ public boolean isChannelAvailable(String channel)
+ {
+ return channelTokenListMap.containsKey(channel);
+ }
+
public boolean isTokenValid(String token)
{
return tokenMap.containsKey(token);
@@ -88,21 +92,9 @@ public class WebsocketSessionBean implements Serializable
}
return null;
}
-
- /**
- * Indicate if the channel mentioned is valid for view scope.
- *
- * A channel is valid if there is at least one token that represents a valid connection to this channel.
- *
- * @param channel
- * @return
- */
- public boolean isChannelAvailable(String channel)
- {
- return channelTokenListMap.containsKey(channel);
- }
-
- public List<String> getChannelTokensFor(String channel)
+
+ @Override
+ public List<String> getChannelTokens(String channel)
{
List<WebsocketChannel> list = channelTokenListMap.get(channel);
if (list != null && !list.isEmpty())
@@ -117,7 +109,8 @@ public class WebsocketSessionBean implements Serializable
return Collections.emptyList();
}
- public <S extends Serializable> List<String> getChannelTokensFor(String channel, S user)
+ @Override
+ public <S extends Serializable> List<String> getChannelTokens(String channel, S user)
{
List<WebsocketChannel> list = channelTokenListMap.get(channel);
if (list != null && !list.isEmpty())
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketViewBean.java b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerView.java
similarity index 85%
rename from impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketViewBean.java
rename to impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerView.java
index 1408bd391..13d150a46 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketViewBean.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketTokenManagerView.java
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.myfaces.push.cdi;
import java.io.Serializable;
@@ -35,7 +34,7 @@ import org.apache.myfaces.cdi.util.CDIUtils;
* is discarded, destroy the websocket sessions associated with the view because they are no longer valid.
*/
@ViewScoped
-public class WebsocketViewBean implements Serializable
+public class WebsocketTokenManagerView extends AbstractWebsocketTokenManager implements Serializable
{
/**
@@ -61,30 +60,21 @@ public class WebsocketViewBean implements Serializable
tokenList.put(token, metadata);
}
+ @Override
public void registerWebsocketSession(String token, WebsocketChannelMetadata metadata)
{
- if ("view".equals(metadata.getScope()))
- {
- channelTokenListMap.putIfAbsent(metadata.getChannel(), new ArrayList<>(1));
- channelTokenListMap.get(metadata.getChannel()).add(new WebsocketChannel(
- token, metadata));
- }
+ channelTokenListMap.putIfAbsent(metadata.getChannel(), new ArrayList<>(1));
+ channelTokenListMap.get(metadata.getChannel()).add(new WebsocketChannel(token, metadata));
}
- /**
- * Indicate if the channel mentioned is valid for view scope.
- *
- * A channel is valid if there is at least one token that represents a valid connection to this channel.
- *
- * @param channel
- * @return
- */
+ @Override
public boolean isChannelAvailable(String channel)
{
return channelTokenListMap.containsKey(channel);
}
- public List<String> getChannelTokensFor(String channel)
+ @Override
+ public List<String> getChannelTokens(String channel)
{
List<WebsocketChannel> list = channelTokenListMap.get(channel);
if (list != null && !list.isEmpty())
@@ -118,7 +108,8 @@ public class WebsocketViewBean implements Serializable
return token;
}
- public <S extends Serializable> List<String> getChannelTokensFor(String channel, S user)
+ @Override
+ public <S extends Serializable> List<String> getChannelTokens(String channel, S user)
{
List<WebsocketChannel> list = channelTokenListMap.get(channel);
if (list != null && !list.isEmpty())
@@ -139,8 +130,8 @@ public class WebsocketViewBean implements Serializable
@PreDestroy
public void destroy()
{
- WebsocketSessionBean sessionHandler = CDIUtils.get(CDI.current().getBeanManager(),
- WebsocketSessionBean.class);
+ WebsocketTokenManagerSession sessionHandler = CDIUtils.get(CDI.current().getBeanManager(),
+ WebsocketTokenManagerSession.class);
if (sessionHandler != null)
{
for (String token : tokenList.keySet())
diff --git a/impl/src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension b/impl/src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension
index c3859db94..982649d00 100644
--- a/impl/src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension
+++ b/impl/src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension
@@ -7,6 +7,6 @@ org.apache.myfaces.cdi.model.FacesDataModelExtension
org.apache.myfaces.cdi.view.ViewScopeExtension
org.apache.myfaces.cdi.view.ViewTransientScopeExtension
org.apache.myfaces.config.annotation.CdiAnnotationProviderExtension
-org.apache.myfaces.push.cdi.PushContextCDIExtension
+org.apache.myfaces.push.cdi.PushCDIExtension
org.apache.myfaces.flow.cdi.FlowScopeExtension
org.apache.myfaces.cdi.clientwindow.ClientWindowScopeExtension
\ No newline at end of file