Skip to content

Commit d7b8eab

Browse files
committed
introduce javaslang
* add javaslang to jooby fix jooby-project#283 * delete org.jooby.util.Collectors and org.jooby.util.Switch fix jooby-project#285 * replace Env.when* methods by javaslang.Match* fix jooby-project#286
1 parent cac5b04 commit d7b8eab

File tree

23 files changed

+83
-424
lines changed

23 files changed

+83
-424
lines changed

jooby-hbm/src/main/java/org/jooby/hbm/Hbm.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
import org.jooby.internal.hbm.HbmProvider;
4040
import org.jooby.internal.hbm.HbmUnitDescriptor;
4141
import org.jooby.jdbc.Jdbc;
42+
import org.jooby.scope.Providers;
4243
import org.jooby.scope.RequestScoped;
43-
import org.jooby.util.Providers;
4444

4545
import com.google.inject.Binder;
4646
import com.google.inject.Key;

jooby-netty/src/main/java/org/jooby/internal/netty/NettyRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
import java.util.List;
3030
import java.util.Optional;
3131
import java.util.function.Function;
32+
import java.util.stream.Collectors;
3233

3334
import org.jooby.MediaType;
3435
import org.jooby.spi.NativeRequest;
3536
import org.jooby.spi.NativeUpload;
36-
import org.jooby.util.Collectors;
3737

3838
import com.google.common.collect.ArrayListMultimap;
3939
import com.google.common.collect.ImmutableList;

jooby-pac4j/src/main/java/org/jooby/pac4j/Auth.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@
4848
import org.jooby.internal.pac4j.ConfigProvider;
4949
import org.jooby.internal.pac4j.FormAuth;
5050
import org.jooby.internal.pac4j.FormFilter;
51+
import org.jooby.scope.Providers;
5152
import org.jooby.scope.RequestScoped;
52-
import org.jooby.util.Providers;
5353
import org.pac4j.core.authorization.AuthorizationChecker;
5454
import org.pac4j.core.authorization.Authorizer;
5555
import org.pac4j.core.authorization.DefaultAuthorizationChecker;

jooby-servlet/src/main/java/org/jooby/servlet/ServletServletRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.Enumeration;
2929
import java.util.List;
3030
import java.util.Optional;
31+
import java.util.stream.Collectors;
3132

3233
import javax.servlet.AsyncContext;
3334
import javax.servlet.ServletException;
@@ -37,7 +38,6 @@
3738
import org.jooby.MediaType;
3839
import org.jooby.spi.NativeRequest;
3940
import org.jooby.spi.NativeUpload;
40-
import org.jooby.util.Collectors;
4141

4242
import com.google.common.base.Supplier;
4343
import com.google.common.collect.ImmutableList;

jooby-undertow/src/main/java/org/jooby/internal/undertow/UndertowRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@
3030
import java.util.Deque;
3131
import java.util.List;
3232
import java.util.Optional;
33+
import java.util.stream.Collectors;
3334

3435
import org.jooby.Cookie;
3536
import org.jooby.MediaType;
3637
import org.jooby.spi.NativeRequest;
3738
import org.jooby.spi.NativeUpload;
3839
import org.jooby.spi.NativeWebSocket;
39-
import org.jooby.util.Collectors;
4040

4141
import com.google.common.base.Supplier;
4242
import com.google.common.base.Suppliers;

jooby/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,12 @@
115115
<optional>true</optional>
116116
</dependency>
117117

118+
<!-- javaslang -->
119+
<dependency>
120+
<groupId>com.javaslang</groupId>
121+
<artifactId>javaslang</artifactId>
122+
</dependency>
123+
118124
<!-- Guava -->
119125
<dependency>
120126
<groupId>com.google.guava</groupId>

jooby/src/main/java/org/jooby/Env.java

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,16 @@
2424
import java.util.Locale;
2525
import java.util.Optional;
2626
import java.util.function.Predicate;
27-
28-
import org.jooby.util.ExSupplier;
29-
import org.jooby.util.Switch;
27+
import java.util.function.Supplier;
3028

3129
import com.google.common.base.CharMatcher;
3230
import com.google.common.base.Splitter;
3331
import com.google.common.base.Strings;
3432
import com.typesafe.config.Config;
3533

34+
import javaslang.control.Match;
35+
import javaslang.control.Match.MatchValue;
36+
3637
/**
3738
* Allows to optimize, customize or apply defaults values for services.
3839
*
@@ -231,15 +232,35 @@ default String resolve(final String text, final Config source,
231232
* @param fn A callback function.
232233
* @param <T> A resulting type.
233234
* @return A resulting object.
234-
* @throws Exception If something fails.
235235
*/
236-
default <T> Optional<T> ifMode(final String name, final ExSupplier<T> fn)
237-
throws Exception {
238-
return when(name, fn).value();
236+
default <T> Optional<T> ifMode(final String name, final Supplier<T> fn) {
237+
if (name().equals(name)) {
238+
return Optional.of(fn.get());
239+
}
240+
return Optional.empty();
241+
}
242+
243+
/**
244+
* Produces a {@link Match} of the current {@link Env}.
245+
*
246+
* <pre>
247+
* String accessKey = env.match()"dev", () {@literal ->} "1234")
248+
* .when("stage", () {@literal ->} "4321")
249+
* .when("prod", () {@literal ->} "abc")
250+
* .get();
251+
* </pre>
252+
*
253+
* @param name A name to test for.
254+
* @param fn A callback function.
255+
* @param <T> A resulting type.
256+
* @return A new matcher.
257+
*/
258+
default MatchValue.Of<String> match() {
259+
return Match.of(name());
239260
}
240261

241262
/**
242-
* Produces a {@link Switch} of the current {@link Env}.
263+
* Produces a {@link Match} of the current {@link Env}.
243264
*
244265
* <pre>
245266
* String accessKey = env.when("dev", () {@literal ->} "1234")
@@ -251,14 +272,14 @@ default <T> Optional<T> ifMode(final String name, final ExSupplier<T> fn)
251272
* @param name A name to test for.
252273
* @param fn A callback function.
253274
* @param <T> A resulting type.
254-
* @return A new switch.
275+
* @return A new matcher.
255276
*/
256-
default <T> Switch<String, T> when(final String name, final ExSupplier<T> fn) {
257-
return Switch.<T> newSwitch(name()).when(name, fn);
277+
default <T> MatchValue.Then<String, T> when(final String name, final Supplier<T> fn) {
278+
return match().whenIs(name).then(fn);
258279
}
259280

260281
/**
261-
* Produces a {@link Switch} of the current {@link Env}.
282+
* Produces a {@link Match} of the current {@link Env}.
262283
*
263284
* <pre>
264285
* String accessKey = env.when("dev", "1234")
@@ -270,14 +291,14 @@ default <T> Switch<String, T> when(final String name, final ExSupplier<T> fn) {
270291
* @param name A name to test for.
271292
* @param result A constant value to return.
272293
* @param <T> A resulting type.
273-
* @return A new switch.
294+
* @return A new matcher.
274295
*/
275-
default <T> Switch<String, T> when(final String name, final T result) {
276-
return Switch.<T> newSwitch(name()).when(name, result);
296+
default <T> MatchValue.Then<String, T> when(final String name, final T result) {
297+
return match().whenIs(name).then(result);
277298
}
278299

279300
/**
280-
* Produces a {@link Switch} of the current {@link Env}.
301+
* Produces a {@link Match} of the current {@link Env}.
281302
*
282303
* <pre>
283304
* String accessKey = env.when("dev", () {@literal ->} "1234")
@@ -289,10 +310,10 @@ default <T> Switch<String, T> when(final String name, final T result) {
289310
* @param predicate A predicate to use.
290311
* @param result A constant value to return.
291312
* @param <T> A resulting type.
292-
* @return A new switch.
313+
* @return A new matcher.
293314
*/
294-
default <T> Switch<String, T> when(final Predicate<String> predicate,
295-
final T result) {
296-
return Switch.<T> newSwitch(name()).when(predicate, result);
315+
default <T> MatchValue.Then<String, T> when(final Predicate<String> predicate, final T result) {
316+
return match().when(e -> predicate.test(e.toString())).then(result);
297317
}
318+
298319
}

jooby/src/main/java/org/jooby/Jooby.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,10 @@
113113
import org.jooby.internal.parser.StaticMethodParser;
114114
import org.jooby.internal.parser.StringConstructorParser;
115115
import org.jooby.internal.ssl.SslContextProvider;
116+
import org.jooby.scope.Providers;
116117
import org.jooby.scope.RequestScoped;
117118
import org.jooby.spi.HttpHandler;
118119
import org.jooby.spi.Server;
119-
import org.jooby.util.Providers;
120120
import org.slf4j.Logger;
121121
import org.slf4j.LoggerFactory;
122122

jooby/src/main/java/org/jooby/Route.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@
2828
import java.util.List;
2929
import java.util.Map;
3030
import java.util.Optional;
31+
import java.util.stream.Collectors;
3132

3233
import org.jooby.internal.AssetProxy;
3334
import org.jooby.internal.RouteImpl;
3435
import org.jooby.internal.RouteMatcher;
3536
import org.jooby.internal.RoutePattern;
36-
import org.jooby.util.Collectors;
3737

3838
import com.google.common.base.Strings;
3939
import com.google.common.collect.ImmutableList;

jooby/src/main/java/org/jooby/handlers/Cors.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@
2626
import java.util.concurrent.TimeUnit;
2727
import java.util.function.Predicate;
2828
import java.util.regex.Pattern;
29+
import java.util.stream.Collectors;
2930

3031
import javax.inject.Inject;
3132
import javax.inject.Named;
3233

33-
import org.jooby.util.Collectors;
34-
3534
import com.google.common.collect.ImmutableList;
3635
import com.typesafe.config.Config;
3736

0 commit comments

Comments
 (0)