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 }