Browse Source

Guava convenience functions instead of reinventing the wheel

Sebastian Stenzel 8 years ago
parent
commit
8cada6d0a2

+ 5 - 7
main/commons/src/main/java/org/cryptomator/common/LazyInitializer.java

@@ -4,6 +4,8 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Supplier;
 import java.util.function.UnaryOperator;
 
+import com.google.common.base.Throwables;
+
 public final class LazyInitializer {
 
 	private LazyInitializer() {
@@ -41,11 +43,8 @@ public final class LazyInitializer {
 			try {
 				return reference.updateAndGet(invokeFactoryIfNull(factory));
 			} catch (InitializationException e) {
-				if (exceptionType.isInstance(e.getCause())) {
-					throw exceptionType.cast(e.getCause());
-				} else {
-					throw e;
-				}
+				Throwables.throwIfInstanceOf(e.getCause(), exceptionType);
+				throw e;
 			}
 		}
 	}
@@ -55,9 +54,8 @@ public final class LazyInitializer {
 			if (currentValue == null) {
 				try {
 					return factory.get();
-				} catch (RuntimeException e) {
-					throw e; // don't catch unchecked exceptions
 				} catch (Exception e) {
+					Throwables.throwIfUnchecked(e); // don't catch unchecked exceptions
 					throw new InitializationException(e);
 				}
 			} else {

+ 3 - 1
main/launcher/src/main/java/org/cryptomator/launcher/InterProcessCommunicator.java

@@ -26,6 +26,8 @@ import org.apache.commons.lang3.SystemUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.io.MoreFiles;
+
 /**
  * First running application on a machine opens a server socket. Further processes will connect as clients.
  */
@@ -221,7 +223,7 @@ abstract class InterProcessCommunicator implements InterProcessCommunicationProt
 		ByteBuffer buf = ByteBuffer.allocate(Integer.BYTES);
 		buf.putInt(port);
 		buf.flip();
-		Files.createDirectories(path.getParent());
+		MoreFiles.createParentDirectories(path);
 		try (WritableByteChannel ch = Files.newByteChannel(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {
 			if (ch.write(buf) != Integer.BYTES) {
 				throw new IOException("Did not write expected number of bytes.");