Yes. This discussion is about exactly what I propose.
I like the idea.

Other opinions ?

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Nov 16, 2016 at 11:00 AM, Sven Meier <[email protected]> wrote:

> Here's a discussion about on this topic:
>
> http://stackoverflow.com/questions/32440873/is-it-ok-to-add-
> default-implementations-to-methods-of-an-interface-which-represe
>
> It's something new to get used to, but +1 for getting rid of all adapter
> classes.
>
> Have fun
> Sven
>
>
>
> Am 15.11.2016 um 21:53 schrieb Martin Grigorov:
>
>> What do you think about making methods like
>> IApplicationListener#onAfterInitialized() a 'default' method with empty
>> body ? Same for #onBeforeDestroyed() and all other similar methods in
>> other
>> classes
>>
>> This way there won't be a need to create adapters like
>> AjaxRequestTarger.AbstractListener and there won't be a need to implement
>> methods in which the application is not interested in like I do below with
>> #onAfterInitialized().
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Tue, Nov 15, 2016 at 9:43 PM, <[email protected]> wrote:
>>
>> Repository: wicket
>>> Updated Branches:
>>>    refs/heads/master 498f185ed -> 21837bccc
>>>
>>>
>>> WICKET-6277 Broadcasting ClosedMessage about the JSR 356 WebSocket
>>> connection after the container was turned off
>>>
>>> Do not notify the websocket behaviors/resources when the application is
>>> already destroyed.
>>> Add non-null checks for IPageStore in PageStoreManager.
>>>
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
>>> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/21837bcc
>>> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/21837bcc
>>> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/21837bcc
>>>
>>> Branch: refs/heads/master
>>> Commit: 21837bcccd78bb529c2f33fbcd947ff5b9732739
>>> Parents: 498f185
>>> Author: Martin Tzvetanov Grigorov <[email protected]>
>>> Authored: Tue Nov 15 21:41:26 2016 +0100
>>> Committer: Martin Tzvetanov Grigorov <[email protected]>
>>> Committed: Tue Nov 15 21:41:26 2016 +0100
>>>
>>> ----------------------------------------------------------------------
>>>   .../apache/wicket/page/PageStoreManager.java    | 20 +++++++---
>>>   .../protocol/ws/javax/WicketEndpoint.java       | 40
>>> +++++++++++++++++++-
>>>   2 files changed, 53 insertions(+), 7 deletions(-)
>>> ----------------------------------------------------------------------
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>>> 21837bcc/wicket-core/src/main/java/org/apache/wicket/page/
>>> PageStoreManager.java
>>> ----------------------------------------------------------------------
>>> diff --git a/wicket-core/src/main/java/org/apache/wicket/page/PageStore
>>> Manager.java
>>> b/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
>>> index 9585669..88bffa4 100644
>>> --- a/wicket-core/src/main/java/org/apache/wicket/page/
>>> PageStoreManager.java
>>> +++ b/wicket-core/src/main/java/org/apache/wicket/page/
>>> PageStoreManager.java
>>> @@ -167,10 +167,14 @@ public class PageStoreManager extends
>>> AbstractPageManager
>>>                                  sessionCache = new ArrayList<>();
>>>                          }
>>>
>>> -                       for (Object o : afterReadObject)
>>> +                       final IPageStore pageStore = getPageStore();
>>> +                       if (pageStore != null)
>>>                          {
>>> -                               IManageablePage page =
>>> getPageStore().convertToPage(o);
>>> -                               addPage(page);
>>> +                               for (Object o : afterReadObject)
>>> +                               {
>>> +                                       IManageablePage page =
>>> pageStore.convertToPage(o);
>>> +                                       addPage(page);
>>> +                               }
>>>                          }
>>>
>>>                          afterReadObject = null;
>>> @@ -189,10 +193,11 @@ public class PageStoreManager extends
>>> AbstractPageManager
>>>                                  convertAfterReadObjects();
>>>                          }
>>>
>>> +                       IManageablePage page = null;
>>>                          // try to find page with same id
>>>                          if (sessionCache != null)
>>>                          {
>>> -                               IManageablePage page = findPage(id);
>>> +                               page = findPage(id);
>>>                                  if (page != null)
>>>                                  {
>>>                                          return page;
>>> @@ -200,7 +205,12 @@ public class PageStoreManager extends
>>> AbstractPageManager
>>>                          }
>>>
>>>                          // not found, ask pagestore for the page
>>> -                       return getPageStore().getPage(sessionId, id);
>>> +                       final IPageStore pageStore = getPageStore();
>>> +                       if (pageStore != null)
>>> +                       {
>>> +                               page = pageStore.getPage(sessionId, id);
>>> +                       }
>>> +                       return page;
>>>                  }
>>>
>>>                  /**
>>>
>>> http://git-wip-us.apache.org/repos/asf/wicket/blob/21837bcc/
>>> wicket-native-
>>> websocket/wicket-native-websocket-javax/src/main/java/
>>> org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
>>> ----------------------------------------------------------------------
>>> diff --git a/wicket-native-websocket/wicket-native-websocket-javax/
>>> src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
>>> b/wicket-native-websocket/wicket-native-websocket-javax/
>>> src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
>>> index 9de80f1..dec2c3e 100644
>>> --- a/wicket-native-websocket/wicket-native-websocket-javax/
>>> src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
>>> +++ b/wicket-native-websocket/wicket-native-websocket-javax/
>>> src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
>>> @@ -18,12 +18,15 @@ package org.apache.wicket.protocol.ws.javax;
>>>
>>>   import java.util.List;
>>>   import java.util.Map;
>>> +import java.util.concurrent.atomic.AtomicBoolean;
>>>
>>>   import javax.websocket.CloseReason;
>>>   import javax.websocket.Endpoint;
>>>   import javax.websocket.EndpointConfig;
>>>   import javax.websocket.Session;
>>>
>>> +import org.apache.wicket.Application;
>>> +import org.apache.wicket.IApplicationListener;
>>>   import org.apache.wicket.ThreadContext;
>>>   import org.apache.wicket.protocol.http.WebApplication;
>>>   import org.apache.wicket.util.lang.Checks;
>>> @@ -43,6 +46,8 @@ public class WicketEndpoint extends Endpoint
>>>           */
>>>          private static final String WICKET_APP_PARAM_NAME =
>>> "wicket-app-name";
>>>
>>> +       private final AtomicBoolean applicationDestroyed = new
>>> AtomicBoolean(false);
>>> +
>>>          private JavaxWebSocketProcessor javaxWebSocketProcessor;
>>>
>>>          @Override
>>> @@ -51,6 +56,7 @@ public class WicketEndpoint extends Endpoint
>>>                  String appName = getApplicationName(session);
>>>
>>>                  WebApplication app = (WebApplication)
>>> WebApplication.get(appName);
>>> +               app.getApplicationListeners().add(new
>>> ApplicationListener(
>>> applicationDestroyed));
>>>
>>>                  try
>>>                  {
>>> @@ -68,7 +74,10 @@ public class WicketEndpoint extends Endpoint
>>>          {
>>>                  super.onClose(session, closeReason);
>>>
>>> -               javaxWebSocketProcessor.onClo
>>> se(closeReason.getCloseCode().getCode(),
>>> closeReason.getReasonPhrase());
>>> +               if (isApplicationAlive())
>>> +               {
>>> +                       javaxWebSocketProcessor.onClo
>>> se(closeReason.getCloseCode().getCode(),
>>> closeReason.getReasonPhrase());
>>> +               }
>>>          }
>>>
>>>          @Override
>>> @@ -77,7 +86,14 @@ public class WicketEndpoint extends Endpoint
>>>                  LOG.error("An error occurred in web socket connection
>>> with
>>> id : " + session.getId(), t);
>>>                  super.onError(session, t);
>>>
>>> -               javaxWebSocketProcessor.onError(t);
>>> +               if (isApplicationAlive())
>>> +               {
>>> +                       javaxWebSocketProcessor.onError(t);
>>> +               }
>>> +       }
>>> +
>>> +       private boolean isApplicationAlive() {
>>> +               return applicationDestroyed.get() == false;
>>>          }
>>>
>>>          private String getApplicationName(Session session)
>>> @@ -113,4 +129,24 @@ public class WicketEndpoint extends Endpoint
>>>                  return appName;
>>>          }
>>>
>>> +       private static class ApplicationListener implements
>>> IApplicationListener
>>> +       {
>>> +               private final AtomicBoolean applicationDestroyed;
>>> +
>>> +               private ApplicationListener(AtomicBoolean
>>> applicationDestroyed)
>>> +               {
>>> +                       this.applicationDestroyed = applicationDestroyed;
>>> +               }
>>> +
>>> +               @Override
>>> +               public void onAfterInitialized(Application application)
>>> +               {
>>> +               }
>>> +
>>> +               @Override
>>> +               public void onBeforeDestroyed(Application application)
>>> +               {
>>> +                       applicationDestroyed.set(true);
>>> +               }
>>> +       }
>>>   }
>>>
>>>
>>>
>

Reply via email to