View Javadoc
1   /*
2    * #%L
3    * *********************************************************************************************************************
4    *
5    * NorthernWind - lightweight CMS
6    * http://northernwind.tidalwave.it - hg clone https://bitbucket.org/tidalwave/northernwind-src
7    * %%
8    * Copyright (C) 2013 - 2024 Tidalwave s.a.s. (http://tidalwave.it)
9    * %%
10   * *********************************************************************************************************************
11   *
12   * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
13   * the License. You may obtain a copy of the License at
14   *
15   *     http://www.apache.org/licenses/LICENSE-2.0
16   *
17   * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
18   * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
19   * specific language governing permissions and limitations under the License.
20   *
21   * *********************************************************************************************************************
22   *
23   *
24   * *********************************************************************************************************************
25   * #L%
26   */
27  package it.tidalwave.role.ui.spi;
28  
29  import javax.annotation.Nonnull;
30  import java.util.Collection;
31  import java.util.function.Supplier;
32  import it.tidalwave.util.Parameters;
33  import it.tidalwave.role.ui.UserAction;
34  import it.tidalwave.messagebus.MessageBus;
35  import lombok.AccessLevel;
36  import lombok.NoArgsConstructor;
37  import static it.tidalwave.util.Parameters.r;
38  
39  /***************************************************************************************************************************************************************
40   *
41   * TODO: move to TheseFoolishThings?
42   * 
43   * @author  Fabrizio Giudici
44   *
45   **************************************************************************************************************************************************************/
46  @NoArgsConstructor(access = AccessLevel.PRIVATE)
47  public final class MessageSendingUserAction
48    {
49      @Nonnull
50      public static UserAction of (@Nonnull final MessageBus messageBus,
51                                   @Nonnull final Supplier<Object> messageSupplier,
52                                   @Nonnull final Collection<Object> roles)
53        {
54          return UserAction.of(() -> messageBus.publish(messageSupplier.get()), roles);
55        }
56  
57      @Nonnull
58      public static UserAction of (@Nonnull final MessageBus messageBus,
59                                   @Nonnull final Supplier<Object> messageSupplier,
60                                   @Nonnull final Object role)
61        {
62          Parameters.mustNotBeArrayOrCollection(role, "role");
63          return of(messageBus, messageSupplier, r(role));
64        }
65    }