Skip to content

Commit

Permalink
Add Optional utilities
Browse files Browse the repository at this point in the history
  • Loading branch information
minborg committed Jan 5, 2016
1 parent a257e80 commit 4df20e0
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/main/java/com/speedment/config/Table.java
Expand Up @@ -282,7 +282,7 @@ default ForeignKey findForeignKey(String name) throws SpeedmentException {
}

@External(type = String.class, isVisibleInGui = false)
String getRestPath();
Optional<String> getRestPath();

@External(type = String.class, isVisibleInGui = false)
void setRestPath(String path);
Expand Down
Expand Up @@ -280,7 +280,7 @@ public void setRestPath(String restPath) {
}

@Override
public String getRestPath() {
return restPath;
public Optional<String> getRestPath() {
return Optional.ofNullable(restPath);
}
}
Expand Up @@ -75,7 +75,7 @@ public ImmutableTable(Schema parent, Table table) {
this.columnCompressionType = table.getColumnCompressionType();
this.storageEngineType = table.getStorageEngineType();
this.exposedInRest = table.isExposedInRest();
this.restPath = table.getRestPath();
this.restPath = table.getRestPath().orElse(null);

// Children
this.columns = ImmutableChildHolder.of(Column.class, table.streamOfColumns().map(this::toImmutable).collect(toList()));
Expand Down Expand Up @@ -313,7 +313,7 @@ public void setRestPath(String restPath) {
}

@Override
public String getRestPath() {
return restPath;
public Optional<String> getRestPath() {
return Optional.ofNullable(restPath);
}
}
62 changes: 54 additions & 8 deletions src/main/java/com/speedment/internal/core/stream/OptionalUtil.java
Expand Up @@ -17,21 +17,17 @@
package com.speedment.internal.core.stream;

import static com.speedment.util.StaticClassUtil.instanceNotAllowed;
import static java.util.Objects.requireNonNull;
import java.util.Optional;
import java.util.stream.Stream;
import java.util.OptionalDouble;
import java.util.OptionalInt;
import java.util.OptionalLong;

/**
*
* @author Emil Forslund
*/
public final class OptionalUtil {

public static <T> Stream<T> from(Optional<T> optional) {
requireNonNull(optional);
return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
}

public static Object unwrap(Object potentiallyOptional) {
// potentiallyOptional can be null. If it is, null shall be returned
if (potentiallyOptional instanceof Optional<?>) {
Expand All @@ -49,8 +45,58 @@ public static <T> T unwrap(Optional<T> optional) {
return optional.orElse(null);
}

public static OptionalLong ofNullable(Long l) {
if (l == null) {
return OptionalLong.empty();
} else {
return OptionalLong.of(l);
}
}

public static OptionalInt ofNullable(Integer i) {
if (i == null) {
return OptionalInt.empty();
} else {
return OptionalInt.of(i);
}
}

public static OptionalDouble ofNullable(Double d) {
if (d == null) {
return OptionalDouble.empty();
} else {
return OptionalDouble.of(d);
}
}

public static OptionalLong parseLong(String value) {
if (value == null) {
return OptionalLong.empty();
} else {
return OptionalLong.of(Long.parseLong(value));
}
}

public static OptionalInt parseInt(String value) {
if (value == null) {
return OptionalInt.empty();
} else {
return OptionalInt.of(Integer.parseInt(value));
}
}

public static OptionalDouble parseDouble(String value) {
if (value == null) {
return OptionalDouble.empty();
} else {
return OptionalDouble.of(Double.parseDouble(value));
}
}

/**
* Utility classes should not be instantiated.
*/
private OptionalUtil() { instanceNotAllowed(getClass()); }
private OptionalUtil() {
instanceNotAllowed(getClass());
}
}
Expand Up @@ -30,7 +30,6 @@
import static java.util.Objects.requireNonNull;
import java.util.Optional;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Function;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
Expand Down Expand Up @@ -80,6 +79,11 @@ public static <T> Stream<T> asStream(ResultSet resultSet, Function<ResultSet, T>
return StreamSupport.stream(parallelStrategy.spliteratorUnknownSize(iterator, Spliterator.IMMUTABLE + Spliterator.NONNULL), false);
}

public static <T> Stream<T> from(Optional<T> optional) {
requireNonNull(optional);
return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
}

private static class ResultSetIterator<T> implements Iterator<T> {

private final ResultSet resultSet;
Expand Down
Expand Up @@ -95,7 +95,7 @@ public TableProperty(Speedment speedment, Schema parent, Table prototype) {
storageEngineType = new SimpleObjectProperty<>(prototype.getStorageEngineType());
tableName = new SimpleStringProperty(prototype.getTableName().orElse(null));
exposedInRest = new SimpleBooleanProperty(prototype.isExposedInRest());
restPath = new SimpleStringProperty(prototype.getRestPath());
restPath = new SimpleStringProperty(prototype.getRestPath().orElse(null));
this.parent = parent;
}

Expand Down Expand Up @@ -434,7 +434,7 @@ public void setRestPath(String path) {
}

@Override
public String getRestPath() {
return restPath.getValue();
public Optional<String> getRestPath() {
return Optional.ofNullable(restPath.getValue());
}
}

0 comments on commit 4df20e0

Please sign in to comment.