diff --git a/Dorkbox-Util/src/dorkbox/util/ClassHelper.java b/Dorkbox-Util/src/dorkbox/util/ClassHelper.java
index e1276c9..3fa9393 100644
--- a/Dorkbox-Util/src/dorkbox/util/ClassHelper.java
+++ b/Dorkbox-Util/src/dorkbox/util/ClassHelper.java
@@ -15,22 +15,20 @@
*/
package dorkbox.util;
-import java.lang.reflect.Array;
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
+import java.lang.reflect.*;
-public class ClassHelper {
+public
+class ClassHelper {
/**
* Retrieves the generic type parameter for the PARENT (super) class of the specified class. This ONLY works
* on parent classes because of how type erasure works in java!
*
- * @param clazz class to get the parameter from
+ * @param clazz class to get the parameter from
* @param genericParameterToGet 0-based index of parameter as class to get
*/
- public final static Class> getGenericParameterAsClassForSuperClass(Class> clazz, int genericParameterToGet) {
+ public static
+ Class> getGenericParameterAsClassForSuperClass(Class> clazz, int genericParameterToGet) {
Class> classToCheck = clazz;
// case of multiple inheritance, we are trying to get the first available generic info
@@ -44,7 +42,8 @@ public class ClassHelper {
if (actualTypeArguments.length > genericParameterToGet) {
Class> rawTypeAsClass = ClassHelper.getRawTypeAsClass(actualTypeArguments[genericParameterToGet]);
return rawTypeAsClass;
- } else {
+ }
+ else {
// record the parameters.
}
@@ -68,7 +67,8 @@ public class ClassHelper {
if (actualTypeArguments.length > genericParameterToGet) {
Class> rawTypeAsClass = ClassHelper.getRawTypeAsClass(actualTypeArguments[genericParameterToGet]);
return rawTypeAsClass;
- } else {
+ }
+ else {
// record the parameters.
}
@@ -88,34 +88,39 @@ public class ClassHelper {
/**
* Return the class that is this type.
*/
- public final static Class> getRawTypeAsClass(Type type) {
+ public static
+ Class> getRawTypeAsClass(Type type) {
if (type instanceof Class) {
- Class> class1 = (Class>)type;
+ Class> class1 = (Class>) type;
// if (class1.isArray()) {
// System.err.println("CLASS IS ARRAY TYPE: SHOULD WE DO ANYTHING WITH IT? " + class1.getSimpleName());
// return class1.getComponentType();
// } else {
- return class1;
+ return class1;
// }
- } else if (type instanceof GenericArrayType) {
+ }
+ else if (type instanceof GenericArrayType) {
// note: cannot have primitive types here, only objects that are arrays (byte[], Integer[], etc)
Type type2 = ((GenericArrayType) type).getGenericComponentType();
Class> rawType = getRawTypeAsClass(type2);
- return Array.newInstance(rawType, 0).getClass();
- } else if (type instanceof ParameterizedType) {
+ return Array.newInstance(rawType, 0)
+ .getClass();
+ }
+ else if (type instanceof ParameterizedType) {
// we cannot use parameterized types, because java can't go between classes and ptypes - and this
// going "in-between" is the magic -- and value -- of this entire infrastructure.
// return the type.
- return (Class>) ((ParameterizedType) type).getRawType();
+ return (Class>) ((ParameterizedType) type).getRawType();
// Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments();
// return (Class>) actualTypeArguments[0];
- } else if (type instanceof TypeVariable) {
+ }
+ else if (type instanceof TypeVariable) {
// we have a COMPLEX type parameter
- Type[] bounds = ((TypeVariable>)type).getBounds();
+ Type[] bounds = ((TypeVariable>) type).getBounds();
if (bounds.length > 0) {
return getRawTypeAsClass(bounds[0]);
}
@@ -126,10 +131,11 @@ public class ClassHelper {
/**
* Check to see if clazz or interface directly has one of the interfaces defined by clazzItMustHave
- *
+ *
* If the class DOES NOT directly have the interface it will fail. the PARENT class is not checked.
*/
- public final static boolean hasInterface(Class> clazzItMustHave, Class> clazz) {
+ public static
+ boolean hasInterface(Class> clazzItMustHave, Class> clazz) {
if (clazzItMustHave == clazz) {
return true;
}
@@ -151,10 +157,12 @@ public class ClassHelper {
/**
* Checks to see if the clazz is a subclass of a parent class.
+ *
* @param baseClass
* @param genericClass
*/
- public static boolean hasParentClass(Class> parentClazz, Class> clazz) {
+ public static
+ boolean hasParentClass(Class> parentClazz, Class> clazz) {
Class> superClass = clazz.getSuperclass();
if (parentClazz == superClass) {
return true;
diff --git a/Dorkbox-Util/src/dorkbox/util/CountingLatch.java b/Dorkbox-Util/src/dorkbox/util/CountingLatch.java
index d0155f8..5e4fcea 100644
--- a/Dorkbox-Util/src/dorkbox/util/CountingLatch.java
+++ b/Dorkbox-Util/src/dorkbox/util/CountingLatch.java
@@ -18,17 +18,61 @@ package dorkbox.util;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.AbstractQueuedSynchronizer;
-public class CountingLatch {
+public
+class CountingLatch {
+ private final Sync sync;
+
+
+ public
+ CountingLatch() {
+ this.sync = new Sync();
+ }
+
+ public
+ CountingLatch(final int initialCount) {
+ this.sync = new Sync(initialCount);
+ }
+
+ public
+ void increment() {
+ this.sync.releaseShared(1);
+ }
+
+ public
+ int getCount() {
+ return this.sync.getCount();
+ }
+
+ public
+ void decrement() {
+ this.sync.releaseShared(-1);
+ }
+
+ public
+ void await() throws InterruptedException {
+ this.sync.acquireSharedInterruptibly(1);
+ }
+
+ public
+ boolean await(final long timeout) throws InterruptedException {
+ return this.sync.tryAcquireSharedNanos(1, TimeUnit.MILLISECONDS.toNanos(timeout));
+ }
+
+
/**
* Synchronization control for CountingLatch. Uses AQS state to represent
* count.
*/
- private static final class Sync extends AbstractQueuedSynchronizer {
+ private static final
+ class Sync extends AbstractQueuedSynchronizer {
private static final long serialVersionUID = 1L;
- private Sync() {}
+ private
+ Sync() {
+ }
- private Sync(final int initialState) {
+ private
+ Sync(final int initialState) {
setState(initialState);
}
@@ -37,14 +81,16 @@ public class CountingLatch {
}
@Override
- protected int tryAcquireShared(final int acquires) {
+ protected
+ int tryAcquireShared(final int acquires) {
return getState() == 0 ? 1 : -1;
}
@Override
- protected boolean tryReleaseShared(final int delta) {
+ protected
+ boolean tryReleaseShared(final int delta) {
// Decrement count; signal when transition to zero
- for (;;) {
+ for (; ; ) {
final int c = getState();
final int nextc = c + delta;
if (nextc < 0) {
@@ -56,34 +102,4 @@ public class CountingLatch {
}
}
}
-
- private final Sync sync;
-
- public CountingLatch() {
- this.sync = new Sync();
- }
-
- public CountingLatch(final int initialCount) {
- this.sync = new Sync(initialCount);
- }
-
- public void increment() {
- this.sync.releaseShared(1);
- }
-
- public int getCount() {
- return this.sync.getCount();
- }
-
- public void decrement() {
- this.sync.releaseShared(-1);
- }
-
- public void await() throws InterruptedException {
- this.sync.acquireSharedInterruptibly(1);
- }
-
- public boolean await(final long timeout) throws InterruptedException {
- return this.sync.tryAcquireSharedNanos(1, TimeUnit.MILLISECONDS.toNanos(timeout));
- }
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/DelayTimer.java b/Dorkbox-Util/src/dorkbox/util/DelayTimer.java
index 1ba2669..80b0c84 100644
--- a/Dorkbox-Util/src/dorkbox/util/DelayTimer.java
+++ b/Dorkbox-Util/src/dorkbox/util/DelayTimer.java
@@ -18,29 +18,28 @@ package dorkbox.util;
import java.util.Timer;
import java.util.TimerTask;
-public class DelayTimer {
- public interface Callback {
- public void execute();
- }
-
+public
+class DelayTimer {
private final String name;
private final boolean isDaemon;
private final Callback listener;
-
private Timer timer;
private long delay;
- public DelayTimer(Callback listener) {
+ public
+ DelayTimer(Callback listener) {
this(null, true, listener);
}
/**
* Sometimes you want to make sure that this timer will complete, even if the calling thread has terminated.
- * @param name the name of the thread (if you want to specify one)
+ *
+ * @param name the name of the thread (if you want to specify one)
* @param isDaemon true if you want this timer to be run on a daemon thread
* @param listener the callback listener to execute
*/
- public DelayTimer(String name, boolean isDaemon, Callback listener) {
+ public
+ DelayTimer(String name, boolean isDaemon, Callback listener) {
this.name = name;
this.listener = listener;
this.isDaemon = isDaemon;
@@ -49,14 +48,16 @@ public class DelayTimer {
/**
* @return true if this timer is still waiting to run.
*/
- public synchronized boolean isWaiting() {
+ public synchronized
+ boolean isWaiting() {
return this.timer != null;
}
/**
* Cancel the delay timer!
*/
- public synchronized void cancel() {
+ public synchronized
+ void cancel() {
if (this.timer != null) {
this.timer.cancel();
this.timer.purge();
@@ -67,32 +68,43 @@ public class DelayTimer {
/**
* @param delay milliseconds to wait
*/
- public synchronized void delay(long delay) {
+ public synchronized
+ void delay(long delay) {
this.delay = delay;
cancel();
if (delay > 0) {
if (this.name != null) {
this.timer = new Timer(this.name, this.isDaemon);
- } else {
+ }
+ else {
this.timer = new Timer(this.isDaemon);
}
TimerTask t = new TimerTask() {
@Override
- public void run() {
+ public
+ void run() {
DelayTimer.this.listener.execute();
DelayTimer.this.cancel();
}
};
this.timer.schedule(t, delay);
- } else {
+ }
+ else {
this.listener.execute();
this.timer = null;
}
}
- public synchronized long getDelay() {
+ public synchronized
+ long getDelay() {
return this.delay;
}
+
+ public
+ interface Callback {
+ public
+ void execute();
+ }
}
diff --git a/Dorkbox-Util/src/dorkbox/util/MBus.java b/Dorkbox-Util/src/dorkbox/util/MBus.java
index 2f42d9d..3aa321c 100644
--- a/Dorkbox-Util/src/dorkbox/util/MBus.java
+++ b/Dorkbox-Util/src/dorkbox/util/MBus.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util;
import dorkbox.util.messagebus.IMessageBus;
@@ -19,11 +34,13 @@ class MBus {
IPublicationErrorHandler ExceptionCounter = new IPublicationErrorHandler() {
@Override
- public void handleError(PublicationError error) {
+ public
+ void handleError(PublicationError error) {
logger.error(error.toString());
if (error.getCause() != null) {
- error.getCause().printStackTrace();
+ error.getCause()
+ .printStackTrace();
}
}
@@ -31,11 +48,15 @@ class MBus {
public
void handleError(final String error, final Class> listenerClass) {
// Printout the error itself
- logger.error(new StringBuilder().append(error).append(": ").append(listenerClass.getSimpleName()).toString());
+ logger.error(new StringBuilder().append(error)
+ .append(": ")
+ .append(listenerClass.getSimpleName())
+ .toString());
}
};
- messageBus.getErrorHandler().addErrorHandler(ExceptionCounter);
+ messageBus.getErrorHandler()
+ .addErrorHandler(ExceptionCounter);
messageBus.start();
bus = messageBus;
diff --git a/Dorkbox-Util/src/dorkbox/util/MathUtils.java b/Dorkbox-Util/src/dorkbox/util/MathUtils.java
index 0487e04..12da50d 100644
--- a/Dorkbox-Util/src/dorkbox/util/MathUtils.java
+++ b/Dorkbox-Util/src/dorkbox/util/MathUtils.java
@@ -1,11 +1,11 @@
-/*******************************************************************************
- * Copyright 2011 See AUTHORS file.
+/*
+ * Copyright 2010 dorkbox, llc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,64 +14,73 @@
* limitations under the License.
*/
-// pruned/limited version from libGDX, modified by dorkbox, llc
-
package dorkbox.util;
-public class MathUtils {
+@SuppressWarnings("unused")
+public
+class MathUtils {
- // ---
+ // ---
- private static ThreadLocal random = new ThreadLocal();
+ private static final ThreadLocal random = new ThreadLocal();
/**
* Creates the thread local MersenneTwister (as it's not thread safe), if necessary
*/
- public static MersenneTwisterFast random() {
+ public static
+ MersenneTwisterFast random() {
MersenneTwisterFast mersenneTwisterFast = random.get();
if (mersenneTwisterFast == null) {
mersenneTwisterFast = new MersenneTwisterFast();
random.set(mersenneTwisterFast);
return mersenneTwisterFast;
- } else {
+ }
+ else {
return mersenneTwisterFast;
}
}
/** Returns a random integer */
- static public final int randomInt () {
+ public static
+ int randomInt() {
return random().nextInt();
}
/** Returns a random number between 0 (inclusive) and the specified value (inclusive). */
- static public final int randomInt (int range) {
+ public static
+ int randomInt(int range) {
return random().nextInt(range + 1);
}
/** Returns a random number between start (inclusive) and end (inclusive). */
- static public final int randomInt (int start, int end) {
+ public static
+ int randomInt(int start, int end) {
return start + random().nextInt(end - start + 1);
}
/** Returns a random boolean value. */
- static public final boolean randomBoolean () {
+ public static
+ boolean randomBoolean() {
return random().nextBoolean();
}
/** Returns random number between 0.0 (inclusive) and 1.0 (exclusive). */
- static public final float randomFloat () {
+ public static
+ float randomFloat() {
return random().nextFloat();
}
/** Returns a random number between 0 (inclusive) and the specified value (exclusive). */
- static public final float randomFloat (float range) {
+ public static
+ float randomFloat(float range) {
return random().nextFloat() * range;
}
/** Returns a random number between start (inclusive) and end (exclusive). */
- static public final float randomFloat (float start, float end) {
+ public static
+ float randomFloat(float start, float end) {
return start + random().nextFloat() * (end - start);
}
@@ -79,26 +88,15 @@ public class MathUtils {
/**
- * Returns the next power of two. Returns the specified value if the value
- * is already a power of two.
+ * Returns the next power of two. Returns the specified value if the value is already a power of two.
*/
- public static int nextPowerOfTwo(int value) {
- if (value == 0) {
- return 1;
- }
-
- value--;
-
- value |= value >> 1;
- value |= value >> 2;
- value |= value >> 4;
- value |= value >> 8;
- value |= value >> 16;
-
- return value + 1;
+ public static
+ int nextPowerOfTwo(int value) {
+ return 1 << (32 - Integer.numberOfLeadingZeros(value - 1));
}
- public static boolean isPowerOfTwo(int value) {
+ public static
+ boolean isPowerOfTwo(int value) {
return value != 0 && (value & value - 1) == 0;
}
}
diff --git a/Dorkbox-Util/src/dorkbox/util/Message.java b/Dorkbox-Util/src/dorkbox/util/Message.java
index 2485e3d..5d13488 100644
--- a/Dorkbox-Util/src/dorkbox/util/Message.java
+++ b/Dorkbox-Util/src/dorkbox/util/Message.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2010 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util;
import java.io.Serializable;
diff --git a/Dorkbox-Util/src/dorkbox/util/NamedThreadFactory.java b/Dorkbox-Util/src/dorkbox/util/NamedThreadFactory.java
index 26668e7..1e3b9e2 100644
--- a/Dorkbox-Util/src/dorkbox/util/NamedThreadFactory.java
+++ b/Dorkbox-Util/src/dorkbox/util/NamedThreadFactory.java
@@ -21,17 +21,18 @@ import java.util.concurrent.atomic.AtomicInteger;
/**
* The default thread factory with names.
*/
-public class NamedThreadFactory implements ThreadFactory {
+public
+class NamedThreadFactory implements ThreadFactory {
private static final AtomicInteger poolId = new AtomicInteger();
// permit this to be changed!
/**
* The stack size is arbitrary based on JVM implementation. Default is 0
* 8k is the size of the android stack. Depending on the version of android, this can either change, or will always be 8k
- *
+ *
* To be honest, 8k is pretty reasonable for an asynchronous/event based system (32bit) or 16k (64bit)
* Setting the size MAY or MAY NOT have any effect!!!
- *
+ *
* Stack size must be specified in bytes. Default is 8k
*/
public static int stackSizeForThreads = 8192;
@@ -39,56 +40,72 @@ public class NamedThreadFactory implements ThreadFactory {
private final AtomicInteger nextId = new AtomicInteger();
private final ThreadGroup group;
- private final String namePrefix;
- private final int threadPriority;
- private final boolean daemon;
+ private final String namePrefix;
+ private final int threadPriority;
+ private final boolean daemon;
/**
* Creates a DAEMON thread
*/
- public NamedThreadFactory(String poolNamePrefix) {
- this(poolNamePrefix, Thread.currentThread().getThreadGroup(), Thread.MAX_PRIORITY, true);
+ public
+ NamedThreadFactory(String poolNamePrefix) {
+ this(poolNamePrefix,
+ Thread.currentThread()
+ .getThreadGroup(),
+ Thread.MAX_PRIORITY,
+ true);
}
- public NamedThreadFactory(String poolNamePrefix, boolean isDaemon) {
- this(poolNamePrefix, Thread.currentThread().getThreadGroup(), Thread.MAX_PRIORITY, isDaemon);
+ public
+ NamedThreadFactory(String poolNamePrefix, boolean isDaemon) {
+ this(poolNamePrefix,
+ Thread.currentThread()
+ .getThreadGroup(),
+ Thread.MAX_PRIORITY,
+ isDaemon);
}
/**
* Creates a DAEMON thread
*/
- public NamedThreadFactory(String poolNamePrefix, ThreadGroup group) {
+ public
+ NamedThreadFactory(String poolNamePrefix, ThreadGroup group) {
this(poolNamePrefix, group, Thread.MAX_PRIORITY, true);
}
- public NamedThreadFactory(String poolNamePrefix, ThreadGroup group, boolean isDaemon) {
+ public
+ NamedThreadFactory(String poolNamePrefix, ThreadGroup group, boolean isDaemon) {
this(poolNamePrefix, group, Thread.MAX_PRIORITY, isDaemon);
}
/**
* Creates a DAEMON thread
*/
- public NamedThreadFactory(String poolNamePrefix, int threadPriority) {
- this(poolNamePrefix, threadPriority, true);
+ public
+ NamedThreadFactory(String poolNamePrefix, int threadPriority) {
+ this(poolNamePrefix, threadPriority, true);
}
- public NamedThreadFactory(String poolNamePrefix, int threadPriority, boolean isDaemon) {
+ public
+ NamedThreadFactory(String poolNamePrefix, int threadPriority, boolean isDaemon) {
this(poolNamePrefix, null, threadPriority, isDaemon);
}
/**
- *
* @param poolNamePrefix what you want the subsequent threads to be named.
- * @param group the group this thread will belong to. If NULL, it will belong to the current thread group.
+ * @param group the group this thread will belong to. If NULL, it will belong to the current thread group.
* @param threadPriority Thread.MIN_PRIORITY, Thread.NORM_PRIORITY, Thread.MAX_PRIORITY
*/
- public NamedThreadFactory(String poolNamePrefix, ThreadGroup group, int threadPriority, boolean isDaemon) {
+ public
+ NamedThreadFactory(String poolNamePrefix, ThreadGroup group, int threadPriority, boolean isDaemon) {
this.daemon = isDaemon;
this.namePrefix = poolNamePrefix + '-' + poolId.incrementAndGet();
if (group == null) {
- this.group = Thread.currentThread().getThreadGroup();
- } else {
+ this.group = Thread.currentThread()
+ .getThreadGroup();
+ }
+ else {
this.group = group;
}
@@ -99,16 +116,17 @@ public class NamedThreadFactory implements ThreadFactory {
}
@Override
- public Thread newThread(Runnable r) {
+ public
+ Thread newThread(Runnable r) {
// stack size is arbitrary based on JVM implementation. Default is 0
// 8k is the size of the android stack. Depending on the version of android, this can either change, or will always be 8k
// To be honest, 8k is pretty reasonable for an asynchronous/event based system (32bit) or 16k (64bit)
// Setting the size MAY or MAY NOT have any effect!!!
- Thread t = new Thread(this.group, r, this.namePrefix + '-' + this.nextId.incrementAndGet(), stackSizeForThreads);
+ Thread t = new Thread(this.group, r, this.namePrefix + '-' + this.nextId.incrementAndGet(), stackSizeForThreads);
t.setDaemon(this.daemon);
if (t.getPriority() != this.threadPriority) {
t.setPriority(this.threadPriority);
}
return t;
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/SerializationManager.java b/Dorkbox-Util/src/dorkbox/util/SerializationManager.java
index a72739c..70ed68a 100644
--- a/Dorkbox-Util/src/dorkbox/util/SerializationManager.java
+++ b/Dorkbox-Util/src/dorkbox/util/SerializationManager.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2010 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util;
import com.esotericsoftware.kryo.Kryo;
@@ -7,13 +22,9 @@ import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import io.netty.buffer.ByteBuf;
-/**
- *
- */
public
interface SerializationManager {
-
/**
* Registers the class using the lowest, next available integer ID and the
* {@link Kryo#getDefaultSerializer(Class) default serializer}. If the class
diff --git a/Dorkbox-Util/src/dorkbox/util/SwingUtil.java b/Dorkbox-Util/src/dorkbox/util/SwingUtil.java
index 2ce9be4..9965ad5 100644
--- a/Dorkbox-Util/src/dorkbox/util/SwingUtil.java
+++ b/Dorkbox-Util/src/dorkbox/util/SwingUtil.java
@@ -15,46 +15,48 @@
*/
package dorkbox.util;
-import java.awt.Container;
-import java.awt.EventQueue;
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsDevice;
-import java.awt.GraphicsEnvironment;
-import java.awt.MouseInfo;
-import java.awt.Point;
-import java.awt.Rectangle;
+import javax.swing.*;
+import java.awt.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
-import javax.swing.SwingUtilities;
-
-public class SwingUtil {
- public static void showOnSameScreenAsMouseCenter(Container frame) {
- Point mouseLocation = MouseInfo.getPointerInfo().getLocation();
+public
+class SwingUtil {
+ public static
+ void showOnSameScreenAsMouseCenter(Container frame) {
+ Point mouseLocation = MouseInfo.getPointerInfo()
+ .getLocation();
GraphicsDevice deviceAtMouse = getGraphicsDeviceAt(mouseLocation);
- Rectangle bounds = deviceAtMouse.getDefaultConfiguration().getBounds();
+ Rectangle bounds = deviceAtMouse.getDefaultConfiguration()
+ .getBounds();
frame.setLocation(bounds.x + bounds.width / 2 - frame.getWidth() / 2, bounds.height / 2 - frame.getHeight() / 2);
}
- public static void showOnSameScreenAsMouse(Container frame) {
- Point mouseLocation = MouseInfo.getPointerInfo().getLocation();
+ public static
+ void showOnSameScreenAsMouse(Container frame) {
+ Point mouseLocation = MouseInfo.getPointerInfo()
+ .getLocation();
GraphicsDevice deviceAtMouse = getGraphicsDeviceAt(mouseLocation);
- frame.setLocation(deviceAtMouse.getDefaultConfiguration().getBounds().x, frame.getY());
+ frame.setLocation(deviceAtMouse.getDefaultConfiguration()
+ .getBounds().x, frame.getY());
}
- public static Rectangle getScreenBoundsAt(Point pos) {
+ public static
+ Rectangle getScreenBoundsAt(Point pos) {
GraphicsDevice gd = SwingUtil.getGraphicsDeviceAt(pos);
Rectangle bounds = null;
if (gd != null) {
- bounds = gd.getDefaultConfiguration().getBounds();
+ bounds = gd.getDefaultConfiguration()
+ .getBounds();
}
return bounds;
}
- public static GraphicsDevice getGraphicsDeviceAt(Point pos) {
+ public static
+ GraphicsDevice getGraphicsDeviceAt(Point pos) {
GraphicsDevice device;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
@@ -74,7 +76,8 @@ public class SwingUtil {
if (lstDevices.size() > 0) {
device = lstDevices.get(0);
- } else {
+ }
+ else {
device = ge.getDefaultScreenDevice();
}
@@ -104,18 +107,22 @@ public class SwingUtil {
// return insets;
// }
- public static void invokeLater(Runnable runnable) {
+ public static
+ void invokeLater(Runnable runnable) {
if (EventQueue.isDispatchThread()) {
runnable.run();
- } else {
+ }
+ else {
SwingUtilities.invokeLater(runnable);
}
}
- public static void invokeAndWait(Runnable runnable) {
+ public static
+ void invokeAndWait(Runnable runnable) {
if (EventQueue.isDispatchThread()) {
runnable.run();
- } else {
+ }
+ else {
try {
EventQueue.invokeAndWait(runnable);
} catch (InvocationTargetException e) {
diff --git a/Dorkbox-Util/src/dorkbox/util/Sys.java b/Dorkbox-Util/src/dorkbox/util/Sys.java
index 8ed4d16..b8f51ab 100644
--- a/Dorkbox-Util/src/dorkbox/util/Sys.java
+++ b/Dorkbox-Util/src/dorkbox/util/Sys.java
@@ -25,7 +25,8 @@ import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public
+@SuppressWarnings("unused")
+public final
class Sys {
public static final int javaVersion = getJavaVersion();
public static final boolean isAndroid = getIsAndroid();
@@ -35,9 +36,9 @@ class Sys {
public static final int GIGABYTE = 1024 * MEGABYTE;
public static final long TERABYTE = 1024L * GIGABYTE;
- public static char[] HEX_CHARS = new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+ public static final char[] HEX_CHARS = new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
- public static final
+ public static
char[] convertStringToChars(String string) {
char[] charArray = string.toCharArray();
@@ -89,7 +90,7 @@ class Sys {
- public static final
+ public static
void eraseString(String string) {
// You can change the value of the inner char[] using reflection.
//
@@ -271,7 +272,7 @@ class Sys {
public static
T copyStream(InputStream inputStream, T outputStream) throws IOException {
byte[] buffer = new byte[4096];
- int read = 0;
+ int read;
while ((read = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, read);
}
@@ -287,7 +288,7 @@ class Sys {
ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
byte[] buffer = new byte[4096];
- int read = 0;
+ int read;
while ((read = inputStream.read(buffer)) > 0) {
baos.write(buffer, 0, read);
}
@@ -297,12 +298,12 @@ class Sys {
return baos.toByteArray();
}
- public static final
+ public static
byte[] copyBytes(byte[] src) {
return copyBytes(src, 0);
}
- public static final
+ public static
byte[] copyBytes(byte[] src, int position) {
int length = src.length - position;
@@ -311,7 +312,7 @@ class Sys {
return b;
}
- public static final
+ public static
byte[] concatBytes(byte[]... arrayBytes) {
int length = 0;
for (byte[] bytes : arrayBytes) {
@@ -332,7 +333,7 @@ class Sys {
/**
* gets the SHA256 hash + SALT of the specified username, as UTF-16
*/
- public static final
+ public static
byte[] getSha256WithSalt(String username, byte[] saltBytes) {
if (username == null) {
return null;
@@ -353,7 +354,7 @@ class Sys {
/**
* gets the SHA256 hash of the specified string, as UTF-16
*/
- public static final
+ public static
byte[] getSha256(String string) {
byte[] charToBytes = Sys.charToBytes(string.toCharArray());
@@ -368,7 +369,7 @@ class Sys {
/**
* gets the SHA256 hash of the specified byte array
*/
- public static final
+ public static
byte[] getSha256(byte[] bytes) {
SHA256Digest sha256 = new SHA256Digest();
@@ -382,7 +383,7 @@ class Sys {
/**
* this saves the char array in UTF-16 format of bytes
*/
- public static final
+ public static
byte[] charToBytes(char[] text) {
// NOTE: this saves the char array in UTF-16 format of bytes.
byte[] bytes = new byte[text.length * 2];
@@ -395,7 +396,7 @@ class Sys {
}
- public static final
+ public static
byte[] intsToBytes(int[] ints) {
int length = ints.length;
byte[] bytes = new byte[length];
@@ -413,7 +414,7 @@ class Sys {
return bytes;
}
- public static final
+ public static
int[] bytesToInts(byte[] bytes) {
int length = bytes.length;
int[] ints = new int[length];
@@ -425,12 +426,12 @@ class Sys {
return ints;
}
- public static final
+ public static
String bytesToHex(byte[] bytes) {
return bytesToHex(bytes, false);
}
- public static final
+ public static
String bytesToHex(byte[] bytes, boolean padding) {
if (padding) {
char[] hexString = new char[3 * bytes.length];
@@ -461,7 +462,7 @@ class Sys {
* Converts an ASCII character representing a hexadecimal
* value into its integer equivalent.
*/
- public static final
+ public static
int hexByteToInt(byte b) {
switch (b) {
case '0':
@@ -510,7 +511,7 @@ class Sys {
/**
* A 4-digit hex result.
*/
- public static final
+ public static
void hex4(char c, StringBuilder sb) {
sb.append(HEX_CHARS[(c & 0xF000) >> 12]);
sb.append(HEX_CHARS[(c & 0x0F00) >> 8]);
@@ -526,7 +527,7 @@ class Sys {
* @return a string representation of the byte array as a series of
* hexadecimal characters
*/
- public static final
+ public static
String toHexString(byte[] bytes) {
char[] hexString = new char[2 * bytes.length];
int j = 0;
@@ -558,14 +559,12 @@ class Sys {
- public static final
+ public static
byte[] encodeStringArray(List array) {
int length = 0;
for (String s : array) {
byte[] bytes = s.getBytes();
- if (bytes != null) {
- length += bytes.length;
- }
+ length += bytes.length;
}
if (length == 0) {
@@ -585,7 +584,7 @@ class Sys {
return bytes;
}
- public static final
+ public static
ArrayList decodeStringArray(byte[] bytes) {
int length = bytes.length;
int position = 0;
@@ -609,24 +608,23 @@ class Sys {
}
public static
- String printArrayRaw(byte[] bytes) {
+ String printArrayRaw(final byte[] bytes) {
return printArrayRaw(bytes, 0);
}
public static
- String printArrayRaw(byte[] bytes, int lineLength) {
+ String printArrayRaw(final byte[] bytes, final int lineLength) {
if (lineLength > 0) {
- int mod = lineLength;
int length = bytes.length;
int comma = length - 1;
- StringBuilder builder = new StringBuilder(length + length / mod);
+ StringBuilder builder = new StringBuilder(length + length / lineLength);
for (int i = 0; i < length; i++) {
builder.append(bytes[i]);
if (i < comma) {
builder.append(",");
}
- if (i > 0 && i % mod == 0) {
+ if (i > 0 && i % lineLength == 0) {
builder.append(OS.LINE_SEPARATOR);
}
}
@@ -777,9 +775,17 @@ class Sys {
// dig +short myip.opendns.com @resolver1.opendns.com
// method 2: use public http servers
- final String websites[] = {"http://ip.dorkbox.com/", "http://ip.javalauncher.com/", "http://checkip.dyndns.com/",
- "http://checkip.dyn.com/", "http://curlmyip.com/", "http://tnx.nl/ip", "http://ipecho.net/plain",
- "http://icanhazip.com/", "http://ip.appspot.com/",};
+ // @formatter:off
+ final String websites[] = {"http://ip.dorkbox.com/",
+ "http://ip.javalauncher.com/",
+ "http://checkip.dyndns.com/",
+ "http://checkip.dyn.com/",
+ "http://curlmyip.com/",
+ "http://tnx.nl/ip",
+ "http://ipecho.net/plain",
+ "http://icanhazip.com/",
+ "http://ip.appspot.com/",};
+ // @formatter:on
// loop, since they won't always work.
for (int i = 0; i < websites.length; i++) {
@@ -793,11 +799,10 @@ class Sys {
Pattern pattern = Pattern.compile("\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b");
Matcher matcher = pattern.matcher(response);
if (matcher.find()) {
- String IP = matcher.group()
+ return matcher.group()
.trim();
- return IP;
}
- } catch (Exception e) {
+ } catch (Exception ignored) {
}
}
@@ -890,9 +895,13 @@ class Sys {
}
}
}
- } catch (SocketException e) {
+ } catch (SocketException ignored) {
}
return null;
}
+
+ private
+ Sys() {
+ }
}
diff --git a/Dorkbox-Util/src/dorkbox/util/bytes/BigEndian.java b/Dorkbox-Util/src/dorkbox/util/bytes/BigEndian.java
index a29ee59..486c930 100644
--- a/Dorkbox-Util/src/dorkbox/util/bytes/BigEndian.java
+++ b/Dorkbox-Util/src/dorkbox/util/bytes/BigEndian.java
@@ -24,29 +24,31 @@ import java.nio.ByteBuffer;
/**
* This is (mostly) motorola, and is "network byte order".
* This is also the default for Java.
- *
+ *
* arm is technically bi-endian
*/
@SuppressWarnings("ALL")
-public class BigEndian {
+public
+class BigEndian {
// the following are ALL in Bit-Endian (byte[0] is most significant)
// TODO: switch these to big endian. these are a copy of little endian
- /** CHAR to and from bytes */
+
+ /**
+ * CHAR to and from bytes
+ */
public static final
class Char_ {
- private
- Char_() {
- }
-
@SuppressWarnings("fallthrough")
public static
char from(byte[] bytes, int offset, int bytenum) {
char number = 0;
switch (bytenum) {
- case 2: number |= (bytes[offset+0] & 0xFF) << 8;
- case 1: number |= (bytes[offset+1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 1] & 0xFF) << 0;
}
return number;
@@ -58,8 +60,10 @@ public class BigEndian {
char number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[0] & 0xFF) << 8;
- case 1: number |= (bytes[1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[1] & 0xFF) << 0;
}
return number;
@@ -67,15 +71,12 @@ public class BigEndian {
public static
char from(byte b0, byte b1) {
- return (char) ((b0 & 0xFF) << 8 |
- (b1 & 0xFF) << 0);
+ return (char) ((b0 & 0xFF) << 8 | (b1 & 0xFF) << 0);
}
public static
byte[] toBytes(char x) {
- return new byte[] {(byte) (x >> 8),
- (byte) (x >> 0)
- };
+ return new byte[] {(byte) (x >> 8), (byte) (x >> 0)};
}
public static
@@ -92,23 +93,28 @@ public class BigEndian {
return from(b[0], b[1]);
}
+
+ private
+ Char_() {
+ }
}
- /** UNSIGNED CHAR to and from bytes */
+
+ /**
+ * UNSIGNED CHAR to and from bytes
+ */
public static final
class UChar_ {
- private
- UChar_() {
- }
-
@SuppressWarnings("fallthrough")
public static
UShort from(byte[] bytes, int offset, int bytenum) {
char number = 0;
switch (bytenum) {
- case 2: number |= (bytes[offset+0] & 0xFF) << 8;
- case 1: number |= (bytes[offset+1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 1] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -120,8 +126,10 @@ public class BigEndian {
short number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[0] & 0xFF) << 8;
- case 1: number |= (bytes[1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[1] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -129,19 +137,14 @@ public class BigEndian {
public static
UShort from(byte b0, byte b1) {
- return UShort.valueOf((short)
- ((b0 & 0xFF) << 8) |
- (b1 & 0xFF) << 0) ;
+ return UShort.valueOf((short) ((b0 & 0xFF) << 8) | (b1 & 0xFF) << 0);
}
-
public static
byte[] toBytes(UShort x) {
int num = x.intValue();
- return new byte[] {(byte) ((num & 0xFF00) >> 8),
- (byte) (num & 0x00FF >> 0),
- };
+ return new byte[] {(byte) ((num & 0xFF00) >> 8), (byte) (num & 0x00FF >> 0),};
}
public static
@@ -158,23 +161,28 @@ public class BigEndian {
return from(b[0], b[1]);
}
+
+ private
+ UChar_() {
+ }
}
- /** SHORT to and from bytes */
+
+ /**
+ * SHORT to and from bytes
+ */
public static final
class Short_ {
- private
- Short_() {
- }
-
@SuppressWarnings("fallthrough")
public static
short from(byte[] bytes, int offset, int bytenum) {
short number = 0;
switch (bytenum) {
- case 2: number |= (bytes[offset+0] & 0xFF) << 8;
- case 1: number |= (bytes[offset+1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 1] & 0xFF) << 0;
}
return number;
@@ -186,8 +194,10 @@ public class BigEndian {
short number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[0] & 0xFF) << 8;
- case 1: number |= (bytes[1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[1] & 0xFF) << 0;
}
return number;
@@ -195,16 +205,12 @@ public class BigEndian {
public static
short from(byte b0, byte b1) {
- return (short) ((b0 & 0xFF) << 8 |
- (b1 & 0xFF) << 0);
+ return (short) ((b0 & 0xFF) << 8 | (b1 & 0xFF) << 0);
}
-
public static
byte[] toBytes(short x) {
- return new byte[] {(byte) (x >> 8),
- (byte) (x >> 0)
- };
+ return new byte[] {(byte) (x >> 8), (byte) (x >> 0)};
}
public static
@@ -221,23 +227,28 @@ public class BigEndian {
return from(b[0], b[1]);
}
+
+ private
+ Short_() {
+ }
}
- /** UNSIGNED SHORT to and from bytes */
+
+ /**
+ * UNSIGNED SHORT to and from bytes
+ */
public static final
class UShort_ {
- private
- UShort_() {
- }
-
@SuppressWarnings("fallthrough")
public static
UShort from(byte[] bytes, int offset, int bytenum) {
char number = 0;
switch (bytenum) {
- case 2: number |= (bytes[offset+0] & 0xFF) << 8;
- case 1: number |= (bytes[offset+1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 1] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -249,8 +260,10 @@ public class BigEndian {
short number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[0] & 0xFF) << 8;
- case 1: number |= (bytes[1] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[0] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[1] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -258,19 +271,14 @@ public class BigEndian {
public static
UShort from(byte b0, byte b1) {
- return UShort.valueOf((short)
- ((b0 & 0xFF) << 8) |
- (b1 & 0xFF) << 0) ;
+ return UShort.valueOf((short) ((b0 & 0xFF) << 8) | (b1 & 0xFF) << 0);
}
-
public static
byte[] toBytes(UShort x) {
int num = x.intValue();
- return new byte[] {(byte) ((num & 0xFF00) >> 8),
- (byte) (num & 0x00FF >> 0),
- };
+ return new byte[] {(byte) ((num & 0xFF00) >> 8), (byte) (num & 0x00FF >> 0),};
}
public static
@@ -287,25 +295,32 @@ public class BigEndian {
return from(b[0], b[1]);
}
+
+ private
+ UShort_() {
+ }
}
- /** INT to and from bytes */
+
+ /**
+ * INT to and from bytes
+ */
public static final
class Int_ {
- private
- Int_() {
- }
-
@SuppressWarnings("fallthrough")
public static
int from(byte[] bytes, int offset, int bytenum) {
int number = 0;
switch (bytenum) {
- case 4: number |= (bytes[offset+0] & 0xFF) << 24;
- case 3: number |= (bytes[offset+1] & 0xFF) << 16;
- case 2: number |= (bytes[offset+2] & 0xFF) << 8;
- case 1: number |= (bytes[offset+3] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[offset + 0] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[offset + 1] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[offset + 2] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 3] & 0xFF) << 0;
}
return number;
@@ -317,10 +332,14 @@ public class BigEndian {
int number = 0;
switch (bytes.length) {
- case 4: number |= (bytes[0] & 0xFF) << 24;
- case 3: number |= (bytes[1] & 0xFF) << 16;
- case 2: number |= (bytes[2] & 0xFF) << 8;
- case 1: number |= (bytes[3] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[0] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[1] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[2] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[3] & 0xFF) << 0;
}
return number;
@@ -330,17 +349,13 @@ public class BigEndian {
int from(byte b0, byte b1, byte b2, byte b3) {
return (b0 & 0xFF) << 24 |
(b1 & 0xFF) << 16 |
- (b2 & 0xFF) << 8 |
- (b3 & 0xFF) << 0;
+ (b2 & 0xFF) << 8 |
+ (b3 & 0xFF) << 0;
}
public static
byte[] toBytes(int x) {
- return new byte[] {(byte) (x >> 24),
- (byte) (x >> 16),
- (byte) (x >> 8),
- (byte) (x >> 0)
- } ;
+ return new byte[] {(byte) (x >> 24), (byte) (x >> 16), (byte) (x >> 8), (byte) (x >> 0)};
}
public static
@@ -357,25 +372,32 @@ public class BigEndian {
return from(b[0], b[1], b[2], b[3]);
}
+
+ private
+ Int_() {
+ }
}
- /** UNSIGNED INT to and from bytes */
+
+ /**
+ * UNSIGNED INT to and from bytes
+ */
public static final
class UInt_ {
- private
- UInt_() {
- }
-
@SuppressWarnings("fallthrough")
public static
UInteger from(byte[] bytes, int offset, int bytenum) {
int number = 0;
switch (bytenum) {
- case 4: number |= (bytes[offset+0] & 0xFF) << 24;
- case 3: number |= (bytes[offset+1] & 0xFF) << 16;
- case 2: number |= (bytes[offset+2] & 0xFF) << 8;
- case 1: number |= (bytes[offset+3] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[offset + 0] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[offset + 1] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[offset + 2] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 3] & 0xFF) << 0;
}
return UInteger.valueOf(number);
@@ -387,10 +409,14 @@ public class BigEndian {
int number = 0;
switch (bytes.length) {
- case 4: number |= (bytes[0] & 0xFF) << 24;
- case 3: number |= (bytes[1] & 0xFF) << 16;
- case 2: number |= (bytes[2] & 0xFF) << 8;
- case 1: number |= (bytes[3] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[0] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[1] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[2] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[3] & 0xFF) << 0;
}
return UInteger.valueOf(number);
@@ -400,8 +426,8 @@ public class BigEndian {
UInteger from(byte b0, byte b1, byte b2, byte b3) {
int number = (b0 & 0xFF) << 24 |
(b1 & 0xFF) << 16 |
- (b2 & 0xFF) << 8 |
- (b3 & 0xFF) << 0;
+ (b2 & 0xFF) << 8 |
+ (b3 & 0xFF) << 0;
return UInteger.valueOf(number);
}
@@ -410,11 +436,8 @@ public class BigEndian {
byte[] toBytes(UInteger x) {
long num = x.longValue();
- return new byte[] {(byte) ((num & 0xFF000000L) >> 24),
- (byte) ((num & 0x00FF0000L) >> 16),
- (byte) ((num & 0x0000FF00L) >> 8),
- (byte) (num & 0x000000FFL >> 0)
- };
+ return new byte[] {(byte) ((num & 0xFF000000L) >> 24), (byte) ((num & 0x00FF0000L) >> 16), (byte) ((num & 0x0000FF00L) >> 8),
+ (byte) (num & 0x000000FFL >> 0)};
}
public static
@@ -431,29 +454,40 @@ public class BigEndian {
return from(b[0], b[1], b[2], b[3]);
}
+
+ private
+ UInt_() {
+ }
}
- /** LONG to and from bytes */
+
+ /**
+ * LONG to and from bytes
+ */
public static final
class Long_ {
- private
- Long_() {
- }
-
@SuppressWarnings("fallthrough")
public static
long from(byte[] bytes, int offset, int bytenum) {
long number = 0;
switch (bytenum) {
- case 8: number |= (long) (bytes[offset+0] & 0xFF) << 56;
- case 7: number |= (long) (bytes[offset+1] & 0xFF) << 48;
- case 6: number |= (long) (bytes[offset+2] & 0xFF) << 40;
- case 5: number |= (long) (bytes[offset+3] & 0xFF) << 32;
- case 4: number |= (long) (bytes[offset+4] & 0xFF) << 24;
- case 3: number |= (long) (bytes[offset+5] & 0xFF) << 16;
- case 2: number |= (long) (bytes[offset+6] & 0xFF) << 8;
- case 1: number |= (long) (bytes[offset+7] & 0xFF) << 0;
+ case 8:
+ number |= (long) (bytes[offset + 0] & 0xFF) << 56;
+ case 7:
+ number |= (long) (bytes[offset + 1] & 0xFF) << 48;
+ case 6:
+ number |= (long) (bytes[offset + 2] & 0xFF) << 40;
+ case 5:
+ number |= (long) (bytes[offset + 3] & 0xFF) << 32;
+ case 4:
+ number |= (long) (bytes[offset + 4] & 0xFF) << 24;
+ case 3:
+ number |= (long) (bytes[offset + 5] & 0xFF) << 16;
+ case 2:
+ number |= (long) (bytes[offset + 6] & 0xFF) << 8;
+ case 1:
+ number |= (long) (bytes[offset + 7] & 0xFF) << 0;
}
return number;
@@ -465,14 +499,22 @@ public class BigEndian {
long number = 0L;
switch (bytes.length) {
- case 8: number |= (long) (bytes[0] & 0xFF) << 56;
- case 7: number |= (long) (bytes[1] & 0xFF) << 48;
- case 6: number |= (long) (bytes[2] & 0xFF) << 40;
- case 5: number |= (long) (bytes[3] & 0xFF) << 32;
- case 4: number |= (long) (bytes[4] & 0xFF) << 24;
- case 3: number |= (long) (bytes[5] & 0xFF) << 16;
- case 2: number |= (long) (bytes[6] & 0xFF) << 8;
- case 1: number |= (long) (bytes[7] & 0xFF) << 0;
+ case 8:
+ number |= (long) (bytes[0] & 0xFF) << 56;
+ case 7:
+ number |= (long) (bytes[1] & 0xFF) << 48;
+ case 6:
+ number |= (long) (bytes[2] & 0xFF) << 40;
+ case 5:
+ number |= (long) (bytes[3] & 0xFF) << 32;
+ case 4:
+ number |= (long) (bytes[4] & 0xFF) << 24;
+ case 3:
+ number |= (long) (bytes[5] & 0xFF) << 16;
+ case 2:
+ number |= (long) (bytes[6] & 0xFF) << 8;
+ case 1:
+ number |= (long) (bytes[7] & 0xFF) << 0;
}
return number;
@@ -486,21 +528,14 @@ public class BigEndian {
(long) (b3 & 0xFF) << 32 |
(long) (b4 & 0xFF) << 24 |
(long) (b5 & 0xFF) << 16 |
- (long) (b6 & 0xFF) << 8 |
- (long) (b7 & 0xFF) << 0;
+ (long) (b6 & 0xFF) << 8 |
+ (long) (b7 & 0xFF) << 0;
}
public static
- byte[] toBytes (long x) {
- return new byte[] {(byte) (x >> 56),
- (byte) (x >> 48),
- (byte) (x >> 40),
- (byte) (x >> 32),
- (byte) (x >> 24),
- (byte) (x >> 16),
- (byte) (x >> 8),
- (byte) (x >> 0)
- };
+ byte[] toBytes(long x) {
+ return new byte[] {(byte) (x >> 56), (byte) (x >> 48), (byte) (x >> 40), (byte) (x >> 32), (byte) (x >> 24), (byte) (x >> 16),
+ (byte) (x >> 8), (byte) (x >> 0)};
}
public static
@@ -517,35 +552,47 @@ public class BigEndian {
return from(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
}
+
+ private
+ Long_() {
+ }
}
- /** UNSIGNED LONG to and from bytes */
+
+ /**
+ * UNSIGNED LONG to and from bytes
+ */
public static final
class ULong_ {
- private
- ULong_() {
- }
-
@SuppressWarnings("fallthrough")
public static
ULong from(byte[] bytes, int offset, int bytenum) {
long number = 0;
switch (bytenum) {
- case 8: number |= (long) (bytes[offset+0] & 0xFF) << 56;
- case 7: number |= (long) (bytes[offset+1] & 0xFF) << 48;
- case 6: number |= (long) (bytes[offset+2] & 0xFF) << 40;
- case 5: number |= (long) (bytes[offset+3] & 0xFF) << 32;
- case 4: number |= (long) (bytes[offset+4] & 0xFF) << 24;
- case 3: number |= (long) (bytes[offset+5] & 0xFF) << 16;
- case 2: number |= (long) (bytes[offset+6] & 0xFF) << 8;
- case 1: number |= (long) (bytes[offset+7] & 0xFF) << 0;
+ case 8:
+ number |= (long) (bytes[offset + 0] & 0xFF) << 56;
+ case 7:
+ number |= (long) (bytes[offset + 1] & 0xFF) << 48;
+ case 6:
+ number |= (long) (bytes[offset + 2] & 0xFF) << 40;
+ case 5:
+ number |= (long) (bytes[offset + 3] & 0xFF) << 32;
+ case 4:
+ number |= (long) (bytes[offset + 4] & 0xFF) << 24;
+ case 3:
+ number |= (long) (bytes[offset + 5] & 0xFF) << 16;
+ case 2:
+ number |= (long) (bytes[offset + 6] & 0xFF) << 8;
+ case 1:
+ number |= (long) (bytes[offset + 7] & 0xFF) << 0;
}
return ULong.valueOf(number);
}
- public static ULong from(byte[] bytes) {
+ public static
+ ULong from(byte[] bytes) {
BigInteger ulong = new BigInteger(1, bytes);
return ULong.valueOf(ulong);
}
@@ -558,9 +605,10 @@ public class BigEndian {
}
public static
- byte[] toBytes (ULong x) {
+ byte[] toBytes(ULong x) {
// returns the shortest length byte array possible
- byte[] bytes = x.toBigInteger().toByteArray();
+ byte[] bytes = x.toBigInteger()
+ .toByteArray();
if (bytes.length < 8) {
@@ -595,6 +643,10 @@ public class BigEndian {
return from(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
}
+
+ private
+ ULong_() {
+ }
}
}
diff --git a/Dorkbox-Util/src/dorkbox/util/bytes/ByteBuffer2Poolable.java b/Dorkbox-Util/src/dorkbox/util/bytes/ByteBuffer2Poolable.java
index 7796c66..f845a8a 100644
--- a/Dorkbox-Util/src/dorkbox/util/bytes/ByteBuffer2Poolable.java
+++ b/Dorkbox-Util/src/dorkbox/util/bytes/ByteBuffer2Poolable.java
@@ -17,9 +17,11 @@ package dorkbox.util.bytes;
import dorkbox.util.objectPool.PoolableObject;
-public class ByteBuffer2Poolable implements PoolableObject {
+public
+class ByteBuffer2Poolable implements PoolableObject {
@Override
- public ByteBuffer2 create() {
+ public
+ ByteBuffer2 create() {
return new ByteBuffer2(8, -1);
}
}
diff --git a/Dorkbox-Util/src/dorkbox/util/bytes/LittleEndian.java b/Dorkbox-Util/src/dorkbox/util/bytes/LittleEndian.java
index 6dec568..ee6323c 100644
--- a/Dorkbox-Util/src/dorkbox/util/bytes/LittleEndian.java
+++ b/Dorkbox-Util/src/dorkbox/util/bytes/LittleEndian.java
@@ -23,30 +23,32 @@ import java.nio.ByteBuffer;
/**
* This is intel/amd/arm arch!
- *
+ *
* arm is technically bi-endian
- *
+ *
* Network byte order IS big endian, as is Java.
*/
@SuppressWarnings("ALL")
-public class LittleEndian {
+public
+class LittleEndian {
// the following are ALL in Little-Endian (byte[0] is least significant)
- /** CHAR to and from bytes */
+
+ /**
+ * CHAR to and from bytes
+ */
public static final
class Char_ {
- private
- Char_() {
- }
-
@SuppressWarnings("fallthrough")
public static
char from(byte[] bytes, int offset, int byteNum) {
char number = 0;
switch (byteNum) {
- case 2: number |= (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (bytes[offset+0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 0] & 0xFF) << 0;
}
return number;
@@ -58,8 +60,10 @@ public class LittleEndian {
char number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[1] & 0xFF) << 8;
- case 1: number |= (bytes[0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[0] & 0xFF) << 0;
}
return number;
@@ -67,15 +71,12 @@ public class LittleEndian {
public static
char from(byte b0, byte b1) {
- return (char) ((b1 & 0xFF) << 8 |
- (b0 & 0xFF) << 0);
+ return (char) ((b1 & 0xFF) << 8 | (b0 & 0xFF) << 0);
}
public static
byte[] toBytes(char x) {
- return new byte[] {(byte) (x >> 0),
- (byte) (x >> 8)
- };
+ return new byte[] {(byte) (x >> 0), (byte) (x >> 8)};
}
public static
@@ -92,23 +93,28 @@ public class LittleEndian {
return from(b[0], b[1]);
}
+
+ private
+ Char_() {
+ }
}
- /** UNSIGNED CHAR to and from bytes */
+
+ /**
+ * UNSIGNED CHAR to and from bytes
+ */
public static final
class UChar_ {
- private
- UChar_() {
- }
-
@SuppressWarnings("fallthrough")
public static
UShort from(byte[] bytes, int offset, int bytenum) {
char number = 0;
switch (bytenum) {
- case 2: number |= (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (bytes[offset+0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 0] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -120,8 +126,10 @@ public class LittleEndian {
short number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[1] & 0xFF) << 8;
- case 1: number |= (bytes[0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[0] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -129,19 +137,14 @@ public class LittleEndian {
public static
UShort from(byte b0, byte b1) {
- return UShort.valueOf((short)
- ((b1 & 0xFF) << 8) |
- (b0 & 0xFF) << 0) ;
+ return UShort.valueOf((short) ((b1 & 0xFF) << 8) | (b0 & 0xFF) << 0);
}
-
public static
byte[] toBytes(UShort x) {
int num = x.intValue();
- return new byte[] {(byte) (num & 0x00FF >> 0),
- (byte) ((num & 0xFF00) >> 8)
- };
+ return new byte[] {(byte) (num & 0x00FF >> 0), (byte) ((num & 0xFF00) >> 8)};
}
public static
@@ -158,23 +161,28 @@ public class LittleEndian {
return from(b[0], b[1]);
}
+
+ private
+ UChar_() {
+ }
}
- /** SHORT to and from bytes */
+
+ /**
+ * SHORT to and from bytes
+ */
public static final
class Short_ {
- private
- Short_() {
- }
-
@SuppressWarnings("fallthrough")
public static
short from(byte[] bytes, int offset, int bytenum) {
short number = 0;
switch (bytenum) {
- case 2: number |= (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (bytes[offset+0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 0] & 0xFF) << 0;
}
return number;
@@ -186,8 +194,10 @@ public class LittleEndian {
short number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[1] & 0xFF) << 8;
- case 1: number |= (bytes[0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[0] & 0xFF) << 0;
}
return number;
@@ -195,16 +205,12 @@ public class LittleEndian {
public static
short from(byte b0, byte b1) {
- return (short) ((b1 & 0xFF) << 8 |
- (b0 & 0xFF) << 0);
+ return (short) ((b1 & 0xFF) << 8 | (b0 & 0xFF) << 0);
}
-
public static
byte[] toBytes(short x) {
- return new byte[] {(byte) (x >> 0),
- (byte) (x >> 8)
- };
+ return new byte[] {(byte) (x >> 0), (byte) (x >> 8)};
}
public static
@@ -221,23 +227,28 @@ public class LittleEndian {
return from(b[0], b[1]);
}
+
+ private
+ Short_() {
+ }
}
- /** UNSIGNED SHORT to and from bytes */
+
+ /**
+ * UNSIGNED SHORT to and from bytes
+ */
public static final
class UShort_ {
- private
- UShort_() {
- }
-
@SuppressWarnings("fallthrough")
public static
UShort from(byte[] bytes, int offset, int bytenum) {
short number = 0;
switch (bytenum) {
- case 2: number |= (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (bytes[offset+0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 0] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -249,8 +260,10 @@ public class LittleEndian {
short number = 0;
switch (bytes.length) {
- case 2: number |= (bytes[1] & 0xFF) << 8;
- case 1: number |= (bytes[0] & 0xFF) << 0;
+ case 2:
+ number |= (bytes[1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[0] & 0xFF) << 0;
}
return UShort.valueOf(number);
@@ -258,19 +271,14 @@ public class LittleEndian {
public static
UShort from(byte b0, byte b1) {
- return UShort.valueOf((short)
- ((b1 & 0xFF) << 8 |
- (b0 & 0xFF) << 0));
+ return UShort.valueOf((short) ((b1 & 0xFF) << 8 | (b0 & 0xFF) << 0));
}
-
public static
byte[] toBytes(UShort x) {
int num = x.intValue();
- return new byte[] {(byte) (num & 0x00FF >> 0),
- (byte) ((num & 0xFF00) >> 8)
- };
+ return new byte[] {(byte) (num & 0x00FF >> 0), (byte) ((num & 0xFF00) >> 8)};
}
public static
@@ -287,25 +295,32 @@ public class LittleEndian {
return from(b[0], b[1]);
}
+
+ private
+ UShort_() {
+ }
}
- /** INT to and from bytes */
+
+ /**
+ * INT to and from bytes
+ */
public static final
class Int_ {
- private
- Int_() {
- }
-
@SuppressWarnings("fallthrough")
public static
int from(byte[] bytes, int offset, int bytenum) {
int number = 0;
switch (bytenum) {
- case 4: number |= (bytes[offset+3] & 0xFF) << 24;
- case 3: number |= (bytes[offset+2] & 0xFF) << 16;
- case 2: number |= (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (bytes[offset+0] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[offset + 3] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[offset + 2] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 0] & 0xFF) << 0;
}
return number;
@@ -317,10 +332,14 @@ public class LittleEndian {
int number = 0;
switch (bytes.length) {
- case 4: number |= (bytes[3] & 0xFF) << 24;
- case 3: number |= (bytes[2] & 0xFF) << 16;
- case 2: number |= (bytes[1] & 0xFF) << 8;
- case 1: number |= (bytes[0] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[3] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[2] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[0] & 0xFF) << 0;
}
return number;
@@ -330,17 +349,13 @@ public class LittleEndian {
int from(byte b0, byte b1, byte b2, byte b3) {
return (b3 & 0xFF) << 24 |
(b2 & 0xFF) << 16 |
- (b1 & 0xFF) << 8 |
- (b0 & 0xFF) << 0;
+ (b1 & 0xFF) << 8 |
+ (b0 & 0xFF) << 0;
}
public static
byte[] toBytes(int x) {
- return new byte[] {(byte) (x >> 0),
- (byte) (x >> 8),
- (byte) (x >> 16),
- (byte) (x >> 24)
- } ;
+ return new byte[] {(byte) (x >> 0), (byte) (x >> 8), (byte) (x >> 16), (byte) (x >> 24)};
}
public static
@@ -357,25 +372,32 @@ public class LittleEndian {
return from(b[0], b[1], b[2], b[3]);
}
+
+ private
+ Int_() {
+ }
}
- /** UNSIGNED INT to and from bytes */
+
+ /**
+ * UNSIGNED INT to and from bytes
+ */
public static final
class UInt_ {
- private
- UInt_() {
- }
-
@SuppressWarnings("fallthrough")
public static
UInteger from(byte[] bytes, int offset, int bytenum) {
int number = 0;
switch (bytenum) {
- case 4: number |= (bytes[offset+3] & 0xFF) << 24;
- case 3: number |= (bytes[offset+2] & 0xFF) << 16;
- case 2: number |= (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (bytes[offset+0] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[offset + 3] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[offset + 2] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[offset + 0] & 0xFF) << 0;
}
return UInteger.valueOf(number);
@@ -387,20 +409,25 @@ public class LittleEndian {
int number = 0;
switch (bytes.length) {
- case 4: number |= (bytes[3] & 0xFF) << 24;
- case 3: number |= (bytes[2] & 0xFF) << 16;
- case 2: number |= (bytes[1] & 0xFF) << 8;
- case 1: number |= (bytes[0] & 0xFF) << 0;
+ case 4:
+ number |= (bytes[3] & 0xFF) << 24;
+ case 3:
+ number |= (bytes[2] & 0xFF) << 16;
+ case 2:
+ number |= (bytes[1] & 0xFF) << 8;
+ case 1:
+ number |= (bytes[0] & 0xFF) << 0;
}
return UInteger.valueOf(number);
}
- public static UInteger from(byte b0, byte b1, byte b2, byte b3) {
+ public static
+ UInteger from(byte b0, byte b1, byte b2, byte b3) {
int number = (b3 & 0xFF) << 24 |
(b2 & 0xFF) << 16 |
- (b1 & 0xFF) << 8 |
- (b0 & 0xFF) << 0;
+ (b1 & 0xFF) << 8 |
+ (b0 & 0xFF) << 0;
return UInteger.valueOf(number);
}
@@ -409,11 +436,8 @@ public class LittleEndian {
byte[] toBytes(UInteger x) {
long num = x.longValue();
- return new byte[] {(byte) (num & 0x000000FFL >> 0),
- (byte) ((num & 0x0000FF00L) >> 8),
- (byte) ((num & 0x00FF0000L) >> 16),
- (byte) ((num & 0xFF000000L) >> 24)
- };
+ return new byte[] {(byte) (num & 0x000000FFL >> 0), (byte) ((num & 0x0000FF00L) >> 8), (byte) ((num & 0x00FF0000L) >> 16),
+ (byte) ((num & 0xFF000000L) >> 24)};
}
public static
@@ -430,29 +454,40 @@ public class LittleEndian {
return from(b[0], b[1], b[2], b[3]);
}
+
+ private
+ UInt_() {
+ }
}
- /** LONG to and from bytes */
+
+ /**
+ * LONG to and from bytes
+ */
public static final
class Long_ {
- private
- Long_() {
- }
-
@SuppressWarnings("fallthrough")
public static
long from(byte[] bytes, int offset, int bytenum) {
long number = 0;
switch (bytenum) {
- case 8: number |= (long) (bytes[offset+7] & 0xFF) << 56;
- case 7: number |= (long) (bytes[offset+6] & 0xFF) << 48;
- case 6: number |= (long) (bytes[offset+5] & 0xFF) << 40;
- case 5: number |= (long) (bytes[offset+4] & 0xFF) << 32;
- case 4: number |= (long) (bytes[offset+3] & 0xFF) << 24;
- case 3: number |= (long) (bytes[offset+2] & 0xFF) << 16;
- case 2: number |= (long) (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (long) (bytes[offset+0] & 0xFF) << 0;
+ case 8:
+ number |= (long) (bytes[offset + 7] & 0xFF) << 56;
+ case 7:
+ number |= (long) (bytes[offset + 6] & 0xFF) << 48;
+ case 6:
+ number |= (long) (bytes[offset + 5] & 0xFF) << 40;
+ case 5:
+ number |= (long) (bytes[offset + 4] & 0xFF) << 32;
+ case 4:
+ number |= (long) (bytes[offset + 3] & 0xFF) << 24;
+ case 3:
+ number |= (long) (bytes[offset + 2] & 0xFF) << 16;
+ case 2:
+ number |= (long) (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (long) (bytes[offset + 0] & 0xFF) << 0;
}
return number;
@@ -464,14 +499,22 @@ public class LittleEndian {
long number = 0L;
switch (bytes.length) {
- case 8: number |= (long) (bytes[7] & 0xFF) << 56;
- case 7: number |= (long) (bytes[6] & 0xFF) << 48;
- case 6: number |= (long) (bytes[5] & 0xFF) << 40;
- case 5: number |= (long) (bytes[4] & 0xFF) << 32;
- case 4: number |= (long) (bytes[3] & 0xFF) << 24;
- case 3: number |= (long) (bytes[2] & 0xFF) << 16;
- case 2: number |= (long) (bytes[1] & 0xFF) << 8;
- case 1: number |= (long) (bytes[0] & 0xFF) << 0;
+ case 8:
+ number |= (long) (bytes[7] & 0xFF) << 56;
+ case 7:
+ number |= (long) (bytes[6] & 0xFF) << 48;
+ case 6:
+ number |= (long) (bytes[5] & 0xFF) << 40;
+ case 5:
+ number |= (long) (bytes[4] & 0xFF) << 32;
+ case 4:
+ number |= (long) (bytes[3] & 0xFF) << 24;
+ case 3:
+ number |= (long) (bytes[2] & 0xFF) << 16;
+ case 2:
+ number |= (long) (bytes[1] & 0xFF) << 8;
+ case 1:
+ number |= (long) (bytes[0] & 0xFF) << 0;
}
return number;
@@ -485,21 +528,14 @@ public class LittleEndian {
(long) (b4 & 0xFF) << 32 |
(long) (b3 & 0xFF) << 24 |
(long) (b2 & 0xFF) << 16 |
- (long) (b1 & 0xFF) << 8 |
- (long) (b0 & 0xFF) << 0;
+ (long) (b1 & 0xFF) << 8 |
+ (long) (b0 & 0xFF) << 0;
}
public static
- byte[] toBytes (long x) {
- return new byte[] {(byte) (x >> 0),
- (byte) (x >> 8),
- (byte) (x >> 16),
- (byte) (x >> 24),
- (byte) (x >> 32),
- (byte) (x >> 40),
- (byte) (x >> 48),
- (byte) (x >> 56),
- };
+ byte[] toBytes(long x) {
+ return new byte[] {(byte) (x >> 0), (byte) (x >> 8), (byte) (x >> 16), (byte) (x >> 24), (byte) (x >> 32), (byte) (x >> 40),
+ (byte) (x >> 48), (byte) (x >> 56),};
}
public static
@@ -516,29 +552,40 @@ public class LittleEndian {
return from(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
}
+
+ private
+ Long_() {
+ }
}
- /** UNSIGNED LONG to and from bytes */
+
+ /**
+ * UNSIGNED LONG to and from bytes
+ */
public static final
class ULong_ {
- private
- ULong_() {
- }
-
@SuppressWarnings("fallthrough")
public static
ULong from(byte[] bytes, int offset, int bytenum) {
long number = 0;
switch (bytenum) {
- case 8: number |= (long) (bytes[offset+7] & 0xFF) << 56;
- case 7: number |= (long) (bytes[offset+6] & 0xFF) << 48;
- case 6: number |= (long) (bytes[offset+5] & 0xFF) << 40;
- case 5: number |= (long) (bytes[offset+4] & 0xFF) << 32;
- case 4: number |= (long) (bytes[offset+3] & 0xFF) << 24;
- case 3: number |= (long) (bytes[offset+2] & 0xFF) << 16;
- case 2: number |= (long) (bytes[offset+1] & 0xFF) << 8;
- case 1: number |= (long) (bytes[offset+0] & 0xFF) << 0;
+ case 8:
+ number |= (long) (bytes[offset + 7] & 0xFF) << 56;
+ case 7:
+ number |= (long) (bytes[offset + 6] & 0xFF) << 48;
+ case 6:
+ number |= (long) (bytes[offset + 5] & 0xFF) << 40;
+ case 5:
+ number |= (long) (bytes[offset + 4] & 0xFF) << 32;
+ case 4:
+ number |= (long) (bytes[offset + 3] & 0xFF) << 24;
+ case 3:
+ number |= (long) (bytes[offset + 2] & 0xFF) << 16;
+ case 2:
+ number |= (long) (bytes[offset + 1] & 0xFF) << 8;
+ case 1:
+ number |= (long) (bytes[offset + 0] & 0xFF) << 0;
}
return ULong.valueOf(number);
@@ -558,18 +605,20 @@ public class LittleEndian {
}
public static
- byte[] toBytes (ULong x) {
+ byte[] toBytes(ULong x) {
byte[] bytes = new byte[8];
int offset = 0;
- byte temp_byte[] = x.toBigInteger().toByteArray();
- int array_count = temp_byte.length-1;
+ byte temp_byte[] = x.toBigInteger()
+ .toByteArray();
+ int array_count = temp_byte.length - 1;
- for (int i=7;i>=0;i--) {
+ for (int i = 7; i >= 0; i--) {
if (array_count >= 0) {
bytes[offset] = temp_byte[array_count];
- } else {
- bytes[offset] = (byte)00;
+ }
+ else {
+ bytes[offset] = (byte) 00;
}
offset++;
@@ -593,6 +642,10 @@ public class LittleEndian {
return from(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
}
+
+ private
+ ULong_() {
+ }
}
}
diff --git a/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteArray.java b/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteArray.java
index b1c3d3e..6adad7a 100644
--- a/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteArray.java
+++ b/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteArray.java
@@ -12,6 +12,25 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Copyright (c) 2008, Nathan Sweet
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the distribution.
+ * - Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package dorkbox.util.bytes;
diff --git a/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteBuf.java b/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteBuf.java
index 592c3d0..f48c953 100644
--- a/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteBuf.java
+++ b/Dorkbox-Util/src/dorkbox/util/bytes/OptimizeUtilsByteBuf.java
@@ -12,6 +12,25 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
+ * Copyright (c) 2008, Nathan Sweet
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the distribution.
+ * - Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package dorkbox.util.bytes;
diff --git a/Dorkbox-Util/src/dorkbox/util/collections/IntArray.java b/Dorkbox-Util/src/dorkbox/util/collections/IntArray.java
index aae26f0..151e5c2 100644
--- a/Dorkbox-Util/src/dorkbox/util/collections/IntArray.java
+++ b/Dorkbox-Util/src/dorkbox/util/collections/IntArray.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright 2011 See AUTHORS file.
+ * Copyright 2010 Mario Zechner (contact@badlogicgames.com), Nathan Sweet (admin@esotericsoftware.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,10 @@
package dorkbox.util.collections;
-import java.util.Arrays;
-
import dorkbox.util.MathUtils;
+import java.util.Arrays;
+
/** A resizable, ordered or unordered int array. Avoids the boxing that occurs with ArrayList. If unordered, this class
* avoids a memory copy when removing elements (the last element is moved to the removed element's position).
* @author Nathan Sweet */
@@ -381,4 +381,4 @@ public class IntArray {
}
return buffer.toString();
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/collections/IntMap.java b/Dorkbox-Util/src/dorkbox/util/collections/IntMap.java
index 25e67bb..4722ff8 100644
--- a/Dorkbox-Util/src/dorkbox/util/collections/IntMap.java
+++ b/Dorkbox-Util/src/dorkbox/util/collections/IntMap.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright 2011 See AUTHORS file.
+ * Copyright 2010 Mario Zechner (contact@badlogicgames.com), Nathan Sweet (admin@esotericsoftware.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,11 +19,11 @@
package dorkbox.util.collections;
+import dorkbox.util.MathUtils;
+
import java.util.Iterator;
import java.util.NoSuchElementException;
-import dorkbox.util.MathUtils;
-
/** An unordered map that uses int keys. This implementation is a cuckoo hash map using 3 hashes, random walking, and a small stash
* for problematic keys. Null values are allowed. No allocation is done except when growing the table size.
*
@@ -867,4 +867,4 @@ public class IntMap {
return array;
}
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/collections/ObjectIntMap.java b/Dorkbox-Util/src/dorkbox/util/collections/ObjectIntMap.java
index 6b93b2e..a6adbce 100644
--- a/Dorkbox-Util/src/dorkbox/util/collections/ObjectIntMap.java
+++ b/Dorkbox-Util/src/dorkbox/util/collections/ObjectIntMap.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright 2011 See AUTHORS file.
+ * Copyright 2010 Mario Zechner (contact@badlogicgames.com), Nathan Sweet (admin@esotericsoftware.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentSignerBuilder.java b/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentSignerBuilder.java
index 6c11b1d..4e0da5a 100644
--- a/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentSignerBuilder.java
+++ b/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentSignerBuilder.java
@@ -24,15 +24,19 @@ import org.bouncycastle.jcajce.provider.util.DigestFactory;
import org.bouncycastle.operator.OperatorCreationException;
import org.bouncycastle.operator.bc.BcContentSignerBuilder;
-public class BcECDSAContentSignerBuilder extends BcContentSignerBuilder {
+public
+class BcECDSAContentSignerBuilder extends BcContentSignerBuilder {
- public BcECDSAContentSignerBuilder(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) {
+ public
+ BcECDSAContentSignerBuilder(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) {
super(sigAlgId, digAlgId);
}
@Override
- protected Signer createSigner(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) throws OperatorCreationException {
- Digest digest = DigestFactory.getDigest(digAlgId.getAlgorithm().getId()); // SHA1, SHA512, etc
+ protected
+ Signer createSigner(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) throws OperatorCreationException {
+ Digest digest = DigestFactory.getDigest(digAlgId.getAlgorithm()
+ .getId()); // SHA1, SHA512, etc
return new DSADigestSigner(new ECDSASigner(), digest);
}
diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentVerifierProviderBuilder.java b/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentVerifierProviderBuilder.java
index ac43807..7701850 100644
--- a/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentVerifierProviderBuilder.java
+++ b/Dorkbox-Util/src/dorkbox/util/crypto/signers/BcECDSAContentVerifierProviderBuilder.java
@@ -15,8 +15,6 @@
*/
package dorkbox.util.crypto.signers;
-import java.io.IOException;
-
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.crypto.Digest;
@@ -31,22 +29,29 @@ import org.bouncycastle.operator.DigestAlgorithmIdentifierFinder;
import org.bouncycastle.operator.OperatorCreationException;
import org.bouncycastle.operator.bc.BcContentVerifierProviderBuilder;
-public class BcECDSAContentVerifierProviderBuilder extends BcContentVerifierProviderBuilder {
+import java.io.IOException;
+
+public
+class BcECDSAContentVerifierProviderBuilder extends BcContentVerifierProviderBuilder {
@SuppressWarnings("unused")
- public BcECDSAContentVerifierProviderBuilder(DigestAlgorithmIdentifierFinder digestAlgorithmFinder) {
+ public
+ BcECDSAContentVerifierProviderBuilder(DigestAlgorithmIdentifierFinder digestAlgorithmFinder) {
}
@Override
- protected Signer createSigner(AlgorithmIdentifier sigAlgId) throws OperatorCreationException {
- AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
-
- Digest digest = DigestFactory.getDigest(digAlgId.getAlgorithm().getId()); // 1.2.23.4.5.6, etc
- return new DSADigestSigner(new ECDSASigner(), digest);
- }
-
- @Override
- protected AsymmetricKeyParameter extractKeyParameters(SubjectPublicKeyInfo publicKeyInfo) throws IOException {
+ protected
+ AsymmetricKeyParameter extractKeyParameters(SubjectPublicKeyInfo publicKeyInfo) throws IOException {
return PublicKeyFactory.createKey(publicKeyInfo);
}
-}
\ No newline at end of file
+
+ @Override
+ protected
+ Signer createSigner(AlgorithmIdentifier sigAlgId) throws OperatorCreationException {
+ AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
+
+ Digest digest = DigestFactory.getDigest(digAlgId.getAlgorithm()
+ .getId()); // 1.2.23.4.5.6, etc
+ return new DSADigestSigner(new ECDSASigner(), digest);
+ }
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/database/DB_Server.java b/Dorkbox-Util/src/dorkbox/util/database/DB_Server.java
index 03e27ae..73466f4 100644
--- a/Dorkbox-Util/src/dorkbox/util/database/DB_Server.java
+++ b/Dorkbox-Util/src/dorkbox/util/database/DB_Server.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2014 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.database;
import dorkbox.util.bytes.ByteArrayWrapper;
diff --git a/Dorkbox-Util/src/dorkbox/util/database/DatabaseStorage.java b/Dorkbox-Util/src/dorkbox/util/database/DatabaseStorage.java
index 01689cf..e71151b 100644
--- a/Dorkbox-Util/src/dorkbox/util/database/DatabaseStorage.java
+++ b/Dorkbox-Util/src/dorkbox/util/database/DatabaseStorage.java
@@ -28,6 +28,4 @@ class DatabaseStorage {
public static final ByteArrayWrapper ADMIN_HASH = ByteArrayWrapper.wrap("adminHash");
public static final ByteArrayWrapper FILES = ByteArrayWrapper.wrap("files");
public static final ByteArrayWrapper GENERIC = ByteArrayWrapper.wrap("generic");
-
-
}
diff --git a/Dorkbox-Util/src/dorkbox/util/entropy/Entropy.java b/Dorkbox-Util/src/dorkbox/util/entropy/Entropy.java
index fd0866b..8063613 100644
--- a/Dorkbox-Util/src/dorkbox/util/entropy/Entropy.java
+++ b/Dorkbox-Util/src/dorkbox/util/entropy/Entropy.java
@@ -15,7 +15,7 @@
*/
package dorkbox.util.entropy;
-import dorkbox.network.util.exceptions.InitializationException;
+import dorkbox.util.exceptions.InitializationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/Dorkbox-Util/src/dorkbox/util/entropy/EntropyProvider.java b/Dorkbox-Util/src/dorkbox/util/entropy/EntropyProvider.java
new file mode 100644
index 0000000..a3108db
--- /dev/null
+++ b/Dorkbox-Util/src/dorkbox/util/entropy/EntropyProvider.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2010 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dorkbox.util.entropy;
+
+public
+interface EntropyProvider {
+
+ byte[] get(String messageForUser) throws Exception;
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/entropy/SimpleEntropy.java b/Dorkbox-Util/src/dorkbox/util/entropy/SimpleEntropy.java
new file mode 100644
index 0000000..cda070f
--- /dev/null
+++ b/Dorkbox-Util/src/dorkbox/util/entropy/SimpleEntropy.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2010 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dorkbox.util.entropy;
+
+import java.security.SecureRandom;
+
+public
+class SimpleEntropy implements EntropyProvider {
+
+ public static
+ Object create() {
+ return new SimpleEntropy();
+ }
+
+ @Override
+ public
+ byte[] get(String ignored) throws Exception {
+ System.err.println("Using simple entropy (SecureRandom) without input mixing.");
+ SecureRandom secureRandom = new SecureRandom();
+ byte[] rand = new byte[256];
+ secureRandom.nextBytes(rand);
+ return rand;
+ }
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/exceptions/InitializationException.java b/Dorkbox-Util/src/dorkbox/util/exceptions/InitializationException.java
new file mode 100644
index 0000000..a09cf63
--- /dev/null
+++ b/Dorkbox-Util/src/dorkbox/util/exceptions/InitializationException.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dorkbox.util.exceptions;
+
+public
+class InitializationException extends Exception {
+
+ private static final long serialVersionUID = 3331031046821855954L;
+
+ public
+ InitializationException() {
+ super();
+ }
+
+ public
+ InitializationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public
+ InitializationException(String message) {
+ super(message);
+ }
+
+ public
+ InitializationException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/exceptions/NetException.java b/Dorkbox-Util/src/dorkbox/util/exceptions/NetException.java
new file mode 100644
index 0000000..00b7d1c
--- /dev/null
+++ b/Dorkbox-Util/src/dorkbox/util/exceptions/NetException.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dorkbox.util.exceptions;
+
+public
+class NetException extends RuntimeException {
+
+ private static final long serialVersionUID = -3499720814336253695L;
+
+ public
+ NetException() {
+ super();
+ }
+
+ public
+ NetException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public
+ NetException(String message) {
+ super(message);
+ }
+
+ public
+ NetException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/exceptions/SecurityException.java b/Dorkbox-Util/src/dorkbox/util/exceptions/SecurityException.java
new file mode 100644
index 0000000..71beaa6
--- /dev/null
+++ b/Dorkbox-Util/src/dorkbox/util/exceptions/SecurityException.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dorkbox.util.exceptions;
+
+public
+class SecurityException extends Exception {
+
+ private static final long serialVersionUID = -1031633076501715224L;
+
+ public
+ SecurityException() {
+ super();
+ }
+
+ public
+ SecurityException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public
+ SecurityException(String message) {
+ super(message);
+ }
+
+ public
+ SecurityException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/gwt/GwtSymbolMapParser.java b/Dorkbox-Util/src/dorkbox/util/gwt/GwtSymbolMapParser.java
index 6bef7c9..c84fd95 100644
--- a/Dorkbox-Util/src/dorkbox/util/gwt/GwtSymbolMapParser.java
+++ b/Dorkbox-Util/src/dorkbox/util/gwt/GwtSymbolMapParser.java
@@ -23,20 +23,23 @@ import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
-public class GwtSymbolMapParser {
+public
+class GwtSymbolMapParser {
private final Map symbolMap;
- public GwtSymbolMapParser() {
+ public
+ GwtSymbolMapParser() {
this.symbolMap = new HashMap();
}
/**
* Efficiently parses the inputstream for symbolmap information.
- *
+ *
* Automatically closes the input stream when finished.
*/
- public void parse(InputStream inputStream) {
+ public
+ void parse(InputStream inputStream) {
if (inputStream == null) {
return;
}
@@ -54,7 +57,8 @@ public class GwtSymbolMapParser {
if (CHAR != '\r' && CHAR != '\n') {
builder.append(CHAR);
- } else {
+ }
+ else {
processLine(builder.toString());
// new line!
builder.delete(0, builder.capacity());
@@ -70,11 +74,13 @@ public class GwtSymbolMapParser {
}
}
- public Map getSymbolMap() {
+ public
+ Map getSymbolMap() {
return this.symbolMap;
}
- public void processLine(String line) {
+ public
+ void processLine(String line) {
if (line.charAt(0) == '#') {
return;
}
@@ -124,7 +130,8 @@ public class GwtSymbolMapParser {
// System.err.println(jsName + " : " + memberName + " : " + className);
this.symbolMap.put(jsName, className);
}
- } else {
+ }
+ else {
// version 2
// The list has already been pruned, so always put everything into the symbol map
this.symbolMap.put(symbolInfo[0], symbolInfo[1]);
diff --git a/Dorkbox-Util/src/dorkbox/util/jna/linux/AppIndicator.java b/Dorkbox-Util/src/dorkbox/util/jna/linux/AppIndicator.java
index 891f277..47377a2 100644
--- a/Dorkbox-Util/src/dorkbox/util/jna/linux/AppIndicator.java
+++ b/Dorkbox-Util/src/dorkbox/util/jna/linux/AppIndicator.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.jna.linux;
import com.sun.jna.*;
diff --git a/Dorkbox-Util/src/dorkbox/util/jna/linux/GThread.java b/Dorkbox-Util/src/dorkbox/util/jna/linux/GThread.java
index dc6f306..6c934ee 100644
--- a/Dorkbox-Util/src/dorkbox/util/jna/linux/GThread.java
+++ b/Dorkbox-Util/src/dorkbox/util/jna/linux/GThread.java
@@ -1,6 +1,20 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.jna.linux;
-
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
diff --git a/Dorkbox-Util/src/dorkbox/util/jna/linux/Gobject.java b/Dorkbox-Util/src/dorkbox/util/jna/linux/Gobject.java
index 67d17c9..671ec64 100644
--- a/Dorkbox-Util/src/dorkbox/util/jna/linux/Gobject.java
+++ b/Dorkbox-Util/src/dorkbox/util/jna/linux/Gobject.java
@@ -1,6 +1,20 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.jna.linux;
-
import com.sun.jna.*;
import dorkbox.util.Keep;
import dorkbox.util.jna.linux.Gtk.GdkEventButton;
diff --git a/Dorkbox-Util/src/dorkbox/util/jna/linux/Gtk.java b/Dorkbox-Util/src/dorkbox/util/jna/linux/Gtk.java
index 51427c8..64721c4 100644
--- a/Dorkbox-Util/src/dorkbox/util/jna/linux/Gtk.java
+++ b/Dorkbox-Util/src/dorkbox/util/jna/linux/Gtk.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.jna.linux;
import com.sun.jna.Library;
diff --git a/Dorkbox-Util/src/dorkbox/util/jna/linux/GtkSupport.java b/Dorkbox-Util/src/dorkbox/util/jna/linux/GtkSupport.java
index cc23595..655e27c 100644
--- a/Dorkbox-Util/src/dorkbox/util/jna/linux/GtkSupport.java
+++ b/Dorkbox-Util/src/dorkbox/util/jna/linux/GtkSupport.java
@@ -1,8 +1,22 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.jna.linux;
import java.util.concurrent.CountDownLatch;
-
public
class GtkSupport {
public static final boolean isSupported;
diff --git a/Dorkbox-Util/src/dorkbox/util/parallel/ParallelCollector.java b/Dorkbox-Util/src/dorkbox/util/parallel/ParallelCollector.java
index d1d8db2..decc492 100644
--- a/Dorkbox-Util/src/dorkbox/util/parallel/ParallelCollector.java
+++ b/Dorkbox-Util/src/dorkbox/util/parallel/ParallelCollector.java
@@ -1,8 +1,20 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.parallel;
-/**
- *
- */
public
interface ParallelCollector {
/**
diff --git a/Dorkbox-Util/src/dorkbox/util/parallel/ParallelProcessor.java b/Dorkbox-Util/src/dorkbox/util/parallel/ParallelProcessor.java
index 28f61dd..840252d 100644
--- a/Dorkbox-Util/src/dorkbox/util/parallel/ParallelProcessor.java
+++ b/Dorkbox-Util/src/dorkbox/util/parallel/ParallelProcessor.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.parallel;
import dorkbox.util.messagebus.common.thread.NamedThreadFactory;
@@ -10,9 +25,6 @@ import org.slf4j.Logger;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;
-/**
- *
- */
public
class ParallelProcessor {
diff --git a/Dorkbox-Util/src/dorkbox/util/parallel/ParallelTask.java b/Dorkbox-Util/src/dorkbox/util/parallel/ParallelTask.java
index d0f4980..fa4d19d 100644
--- a/Dorkbox-Util/src/dorkbox/util/parallel/ParallelTask.java
+++ b/Dorkbox-Util/src/dorkbox/util/parallel/ParallelTask.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2015 dorkbox, llc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package dorkbox.util.parallel;
public abstract
diff --git a/Dorkbox-Util/src/dorkbox/util/process/JavaProcessBuilder.java b/Dorkbox-Util/src/dorkbox/util/process/JavaProcessBuilder.java
index 98ae6ad..436b570 100644
--- a/Dorkbox-Util/src/dorkbox/util/process/JavaProcessBuilder.java
+++ b/Dorkbox-Util/src/dorkbox/util/process/JavaProcessBuilder.java
@@ -15,76 +15,153 @@
*/
package dorkbox.util.process;
+import dorkbox.util.FileUtil;
+import dorkbox.util.OS;
+
import java.io.File;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
-import dorkbox.util.FileUtil;
-import dorkbox.util.OS;
-
/**
* This will FORK the java process initially used to start the currently running JVM. Changing the java executable will change this behaviors
*/
-public class JavaProcessBuilder extends ShellProcessBuilder {
+public
+class JavaProcessBuilder extends ShellProcessBuilder {
+ /**
+ * The directory into which a local VM installation should be unpacked.
+ */
+ public static final String LOCAL_JAVA_DIR = "java_vm";
+
+ /**
+ * Reconstructs the path to the JVM used to launch this process.
+ *
+ * @param windebug if true we will use java.exe instead of javaw.exe on Windows.
+ */
+ public static
+ String getJVMPath(File appdir, boolean windebug) {
+ // first look in our application directory for an installed VM
+ String vmpath = checkJvmPath(new File(appdir, LOCAL_JAVA_DIR).getPath(), windebug);
+
+ // then fall back to the VM in which we're already running
+ if (vmpath == null) {
+ vmpath = checkJvmPath(System.getProperty("java.home"), windebug);
+ }
+
+ // then throw up our hands and hope for the best
+ if (vmpath == null) {
+ System.err.println("Unable to find java [appdir=" + appdir + ", java.home=" + System.getProperty("java.home") + "]!");
+ vmpath = "java";
+ }
+
+ // Oddly, the Mac OS X specific java flag -Xdock:name will only work if java is launched
+ // from /usr/bin/java, and not if launched by directly referring to /bin/java,
+ // even though the former is a symlink to the latter! To work around this, see if the
+ // desired jvm is in fact pointed to by /usr/bin/java and, if so, use that instead.
+ if (OS.isMacOsX()) {
+ String localVM = FileUtil.normalize(new File("/usr/bin/java").getAbsolutePath());
+ String vmCheck = FileUtil.normalize(new File(vmpath).getAbsolutePath());
+ if (localVM.equals(vmCheck)) {
+ vmpath = "/usr/bin/java";
+ }
+ }
+
+ return vmpath;
+ }
+
+ /**
+ * Checks whether a Java Virtual Machine can be located in the supplied path.
+ */
+ private static
+ String checkJvmPath(String vmhome, boolean windebug) {
+ // linux does this...
+ String vmbase = vmhome + File.separator + "bin" + File.separator;
+ String vmpath = vmbase + "java";
+ if (new File(vmpath).exists()) {
+ return vmpath;
+ }
+
+ // windows does this
+ if (!windebug) {
+ vmpath = vmbase + "javaw.exe";
+ }
+ else {
+ vmpath = vmbase + "java.exe"; // open a console on windows
+ }
+
+ if (new File(vmpath).exists()) {
+ return vmpath;
+ }
+
+ return null;
+ }
// this is NOT related to JAVA_HOME, but is instead the location of the JRE that was used to launch java initially.
private String javaLocation = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
private String mainClass;
private int startingHeapSizeInMegabytes = 40;
private int maximumHeapSizeInMegabytes = 128;
-
private List jvmOptions = new ArrayList();
private List classpathEntries = new ArrayList();
- private List mainClassArguments = new ArrayList();
-
- private String jarFile;
-
- public JavaProcessBuilder() {
- super(null, null, null);
- }
// what version of java??
// so, this starts a NEW java, from an ALREADY existing java.
+ private List mainClassArguments = new ArrayList();
+ private String jarFile;
- public JavaProcessBuilder(InputStream in, PrintStream out, PrintStream err) {
+ public
+ JavaProcessBuilder() {
+ super(null, null, null);
+ }
+
+ public
+ JavaProcessBuilder(InputStream in, PrintStream out, PrintStream err) {
super(in, out, err);
}
- public final void setMainClass(String mainClass) {
+ public final
+ void setMainClass(String mainClass) {
this.mainClass = mainClass;
}
- public final void setStartingHeapSizeInMegabytes(int startingHeapSizeInMegabytes) {
+ public final
+ void setStartingHeapSizeInMegabytes(int startingHeapSizeInMegabytes) {
this.startingHeapSizeInMegabytes = startingHeapSizeInMegabytes;
}
- public final void setMaximumHeapSizeInMegabytes(int maximumHeapSizeInMegabytes) {
+ public final
+ void setMaximumHeapSizeInMegabytes(int maximumHeapSizeInMegabytes) {
this.maximumHeapSizeInMegabytes = maximumHeapSizeInMegabytes;
}
- public final void addJvmClasspath(String classpathEntry) {
+ public final
+ void addJvmClasspath(String classpathEntry) {
this.classpathEntries.add(classpathEntry);
}
- public final void addJvmClasspaths(List paths) {
+ public final
+ void addJvmClasspaths(List paths) {
this.classpathEntries.addAll(paths);
}
- public final void addJvmOption(String argument) {
+ public final
+ void addJvmOption(String argument) {
this.jvmOptions.add(argument);
}
- public final void addJvmOptions(List paths) {
+ public final
+ void addJvmOptions(List paths) {
this.jvmOptions.addAll(paths);
}
- public final void setJarFile(String jarFile) {
+ public final
+ void setJarFile(String jarFile) {
this.jarFile = jarFile;
}
- private String getClasspath() {
+ private
+ String getClasspath() {
StringBuilder builder = new StringBuilder();
int count = 0;
final int totalSize = this.classpathEntries.size();
@@ -116,12 +193,14 @@ public class JavaProcessBuilder extends ShellProcessBuilder {
* Specify the JAVA exectuable to launch this process. By default, this will use the same java exectuable
* as was used to start the current JVM.
*/
- public void setJava(String javaLocation) {
+ public
+ void setJava(String javaLocation) {
this.javaLocation = javaLocation;
}
@Override
- public void start() {
+ public
+ void start() {
setExecutable(this.javaLocation);
// save off the original arguments
@@ -165,7 +244,8 @@ public class JavaProcessBuilder extends ShellProcessBuilder {
// main class must happen AFTER the classpath!
this.arguments.add(this.mainClass);
- } else {
+ }
+ else {
System.err.println("WHOOPS. You must specify a jar or main class when running java!");
System.exit(1);
}
@@ -179,7 +259,8 @@ public class JavaProcessBuilder extends ShellProcessBuilder {
for (String s : split) {
this.arguments.add(s);
}
- } else {
+ }
+ else {
this.arguments.add(arg);
}
}
@@ -188,69 +269,4 @@ public class JavaProcessBuilder extends ShellProcessBuilder {
super.start();
}
-
-
- /** The directory into which a local VM installation should be unpacked. */
- public static final String LOCAL_JAVA_DIR = "java_vm";
-
- /**
- * Reconstructs the path to the JVM used to launch this process.
- *
- * @param windebug if true we will use java.exe instead of javaw.exe on Windows.
- */
- public static String getJVMPath (File appdir, boolean windebug)
- {
- // first look in our application directory for an installed VM
- String vmpath = checkJvmPath(new File(appdir, LOCAL_JAVA_DIR).getPath(), windebug);
-
- // then fall back to the VM in which we're already running
- if (vmpath == null) {
- vmpath = checkJvmPath(System.getProperty("java.home"), windebug);
- }
-
- // then throw up our hands and hope for the best
- if (vmpath == null) {
- System.err.println("Unable to find java [appdir=" + appdir + ", java.home=" + System.getProperty("java.home") + "]!");
- vmpath = "java";
- }
-
- // Oddly, the Mac OS X specific java flag -Xdock:name will only work if java is launched
- // from /usr/bin/java, and not if launched by directly referring to /bin/java,
- // even though the former is a symlink to the latter! To work around this, see if the
- // desired jvm is in fact pointed to by /usr/bin/java and, if so, use that instead.
- if (OS.isMacOsX()) {
- String localVM = FileUtil.normalize(new File("/usr/bin/java").getAbsolutePath());
- String vmCheck = FileUtil.normalize(new File(vmpath).getAbsolutePath());
- if (localVM.equals(vmCheck)) {
- vmpath = "/usr/bin/java";
- }
- }
-
- return vmpath;
- }
-
- /**
- * Checks whether a Java Virtual Machine can be located in the supplied path.
- */
- private static String checkJvmPath(String vmhome, boolean windebug) {
- // linux does this...
- String vmbase = vmhome + File.separator + "bin" + File.separator;
- String vmpath = vmbase + "java";
- if (new File(vmpath).exists()) {
- return vmpath;
- }
-
- // windows does this
- if (!windebug) {
- vmpath = vmbase + "javaw.exe";
- } else {
- vmpath = vmbase + "java.exe"; // open a console on windows
- }
-
- if (new File(vmpath).exists()) {
- return vmpath;
- }
-
- return null;
- }
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/process/LauncherProcessBuilder.java b/Dorkbox-Util/src/dorkbox/util/process/LauncherProcessBuilder.java
index 32dba72..ae6be21 100644
--- a/Dorkbox-Util/src/dorkbox/util/process/LauncherProcessBuilder.java
+++ b/Dorkbox-Util/src/dorkbox/util/process/LauncherProcessBuilder.java
@@ -15,15 +15,16 @@
*/
package dorkbox.util.process;
+import dorkbox.util.OS;
+
import java.io.File;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
-import dorkbox.util.OS;
-
-public class LauncherProcessBuilder extends ShellProcessBuilder {
+public
+class LauncherProcessBuilder extends ShellProcessBuilder {
private String mainClass;
@@ -32,31 +33,38 @@ public class LauncherProcessBuilder extends ShellProcessBuilder {
private String jarFile;
- public LauncherProcessBuilder() {
+ public
+ LauncherProcessBuilder() {
super(null, null, null);
}
- public LauncherProcessBuilder(InputStream in, PrintStream out, PrintStream err) {
+ public
+ LauncherProcessBuilder(InputStream in, PrintStream out, PrintStream err) {
super(in, out, err);
}
- public final void setMainClass(String mainClass) {
+ public final
+ void setMainClass(String mainClass) {
this.mainClass = mainClass;
}
- public final void addJvmClasspath(String classpathEntry) {
+ public final
+ void addJvmClasspath(String classpathEntry) {
this.classpathEntries.add(classpathEntry);
}
- public final void addJvmClasspaths(List paths) {
+ public final
+ void addJvmClasspaths(List paths) {
this.classpathEntries.addAll(paths);
}
- public final void setJarFile(String jarFile) {
+ public final
+ void setJarFile(String jarFile) {
this.jarFile = jarFile;
}
- private String getClasspath() {
+ private
+ String getClasspath() {
StringBuilder builder = new StringBuilder();
int count = 0;
final int totalSize = this.classpathEntries.size();
@@ -75,10 +83,12 @@ public class LauncherProcessBuilder extends ShellProcessBuilder {
}
@Override
- public void start() {
+ public
+ void start() {
if (OS.isWindows()) {
setExecutable("dorkboxc.exe");
- } else {
+ }
+ else {
setExecutable("dorkbox");
}
@@ -120,7 +130,8 @@ public class LauncherProcessBuilder extends ShellProcessBuilder {
this.arguments.add("-classpath");
this.arguments.add(classpath);
}
- } else {
+ }
+ else {
System.err.println("WHOOPS. You must specify a jar or main class when running java!");
System.exit(1);
}
@@ -134,7 +145,8 @@ public class LauncherProcessBuilder extends ShellProcessBuilder {
for (String s : split) {
this.arguments.add(s);
}
- } else {
+ }
+ else {
this.arguments.add(arg);
}
}
@@ -143,4 +155,4 @@ public class LauncherProcessBuilder extends ShellProcessBuilder {
super.start();
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/process/NullOutputStream.java b/Dorkbox-Util/src/dorkbox/util/process/NullOutputStream.java
index 4f8cb46..0a04de3 100644
--- a/Dorkbox-Util/src/dorkbox/util/process/NullOutputStream.java
+++ b/Dorkbox-Util/src/dorkbox/util/process/NullOutputStream.java
@@ -18,24 +18,29 @@ package dorkbox.util.process;
import java.io.IOException;
import java.io.OutputStream;
-public class NullOutputStream extends OutputStream {
+public
+class NullOutputStream extends OutputStream {
@Override
- public void write(int i) throws IOException {
+ public
+ void write(int i) throws IOException {
//do nothing
}
@Override
- public void write(byte[] b) throws IOException {
+ public
+ void write(byte[] b) throws IOException {
//do nothing
}
@Override
- public void write(byte[] b, int off, int len) throws IOException {
+ public
+ void write(byte[] b, int off, int len) throws IOException {
//do nothing
}
@Override
- public void flush() throws IOException {
+ public
+ void flush() throws IOException {
//do nothing
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/process/ProcessProxy.java b/Dorkbox-Util/src/dorkbox/util/process/ProcessProxy.java
index e838a0a..b389a89 100644
--- a/Dorkbox-Util/src/dorkbox/util/process/ProcessProxy.java
+++ b/Dorkbox-Util/src/dorkbox/util/process/ProcessProxy.java
@@ -19,13 +19,15 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-public class ProcessProxy extends Thread {
+public
+class ProcessProxy extends Thread {
private final InputStream is;
private final OutputStream os;
// when reading from the stdin and outputting to the process
- public ProcessProxy(String processName, InputStream inputStreamFromConsole, OutputStream outputStreamToProcess) {
+ public
+ ProcessProxy(String processName, InputStream inputStreamFromConsole, OutputStream outputStreamToProcess) {
this.is = inputStreamFromConsole;
this.os = outputStreamToProcess;
@@ -33,7 +35,8 @@ public class ProcessProxy extends Thread {
setDaemon(true);
}
- public void close() {
+ public
+ void close() {
try {
this.is.close();
} catch (IOException e) {
@@ -41,7 +44,8 @@ public class ProcessProxy extends Thread {
}
@Override
- public void run() {
+ public
+ void run() {
try {
// this thread will read until there is no more data to read. (this is generally what you want)
// the stream will be closed when the process closes it (usually on exit)
@@ -51,7 +55,8 @@ public class ProcessProxy extends Thread {
// just read so it won't block.
while ((readInt = this.is.read()) != -1) {
}
- } else {
+ }
+ else {
while ((readInt = this.is.read()) != -1) {
this.os.write(readInt);
// always flush
@@ -70,4 +75,4 @@ public class ProcessProxy extends Thread {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/process/ShellProcessBuilder.java b/Dorkbox-Util/src/dorkbox/util/process/ShellProcessBuilder.java
index 121e4a1..f3428d3 100644
--- a/Dorkbox-Util/src/dorkbox/util/process/ShellProcessBuilder.java
+++ b/Dorkbox-Util/src/dorkbox/util/process/ShellProcessBuilder.java
@@ -15,6 +15,8 @@
*/
package dorkbox.util.process;
+import dorkbox.util.OS;
+
import java.io.File;
import java.io.InputStream;
import java.io.PrintStream;
@@ -22,27 +24,23 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import dorkbox.util.OS;
-
/**
* If you want to save off the output from the process, set a PrintStream to the following:
- * ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(8196);
- * PrintStream outputStream = new PrintStream(byteArrayOutputStream);
- * ...
- * String output = byteArrayOutputStream.toString();
+ * ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(8196);
+ * PrintStream outputStream = new PrintStream(byteArrayOutputStream);
+ * ...
+ * String output = byteArrayOutputStream.toString();
*/
-public class ShellProcessBuilder {
-
- private String workingDirectory = null;
- private String executableName = null;
- private String executableDirectory = null;
-
- protected List arguments = new ArrayList();
+public
+class ShellProcessBuilder {
private final PrintStream outputStream;
private final PrintStream errorStream;
private final InputStream inputStream;
-
+ protected List arguments = new ArrayList();
+ private String workingDirectory = null;
+ private String executableName = null;
+ private String executableDirectory = null;
private Process process = null;
// true if we want to save off (usually for debugging) the initial output from this
@@ -51,19 +49,23 @@ public class ShellProcessBuilder {
/**
* This will cause the spawned process to pipe it's output to null.
*/
- public ShellProcessBuilder() {
+ public
+ ShellProcessBuilder() {
this(null, null, null);
}
- public ShellProcessBuilder(PrintStream out) {
+ public
+ ShellProcessBuilder(PrintStream out) {
this(null, out, out);
}
- public ShellProcessBuilder(InputStream in, PrintStream out) {
+ public
+ ShellProcessBuilder(InputStream in, PrintStream out) {
this(in, out, out);
}
- public ShellProcessBuilder(InputStream in, PrintStream out, PrintStream err) {
+ public
+ ShellProcessBuilder(InputStream in, PrintStream out, PrintStream err) {
this.outputStream = out;
this.errorStream = err;
this.inputStream = in;
@@ -72,47 +74,55 @@ public class ShellProcessBuilder {
/**
* When launched from eclipse, the working directory is USUALLY the root of the project folder
*/
- public final ShellProcessBuilder setWorkingDirectory(String workingDirectory) {
+ public final
+ ShellProcessBuilder setWorkingDirectory(String workingDirectory) {
// MUST be absolute path!!
this.workingDirectory = new File(workingDirectory).getAbsolutePath();
return this;
}
- public final ShellProcessBuilder addArgument(String argument) {
+ public final
+ ShellProcessBuilder addArgument(String argument) {
this.arguments.add(argument);
return this;
}
- public final ShellProcessBuilder addArguments(String... paths) {
+ public final
+ ShellProcessBuilder addArguments(String... paths) {
for (String path : paths) {
this.arguments.add(path);
}
return this;
}
- public final ShellProcessBuilder addArguments(List paths) {
+ public final
+ ShellProcessBuilder addArguments(List paths) {
this.arguments.addAll(paths);
return this;
}
- public final ShellProcessBuilder setExecutable(String executableName) {
+ public final
+ ShellProcessBuilder setExecutable(String executableName) {
this.executableName = executableName;
return this;
}
- public ShellProcessBuilder setExecutableDirectory(String executableDirectory) {
+ public
+ ShellProcessBuilder setExecutableDirectory(String executableDirectory) {
// MUST be absolute path!!
this.executableDirectory = new File(executableDirectory).getAbsolutePath();
return this;
}
- public ShellProcessBuilder addDebugInfo() {
+ public
+ ShellProcessBuilder addDebugInfo() {
this.debugInfo = true;
return this;
}
- public void start() {
+ public
+ void start() {
// if no executable, then use the command shell
if (this.executableName == null) {
if (OS.isWindows()) {
@@ -120,7 +130,8 @@ public class ShellProcessBuilder {
this.executableName = "cmd";
this.arguments.add(0, "/c");
- } else {
+ }
+ else {
// *nix
this.executableName = "/bin/bash";
File file = new File(this.executableName);
@@ -129,7 +140,8 @@ public class ShellProcessBuilder {
}
this.arguments.add(0, "-c");
}
- } else if (this.workingDirectory != null) {
+ }
+ else if (this.workingDirectory != null) {
if (!this.workingDirectory.endsWith("/") && !this.workingDirectory.endsWith("\\")) {
this.workingDirectory += File.separator;
}
@@ -154,7 +166,8 @@ public class ShellProcessBuilder {
for (String s : split) {
argumentsList.add(s);
}
- } else {
+ }
+ else {
argumentsList.add(arg);
}
}
@@ -167,7 +180,8 @@ public class ShellProcessBuilder {
if (OS.isWindows()) {
// >NUL on windows
argumentsList.add(">NUL");
- } else {
+ }
+ else {
// we will "pipe" it to /dev/null on *nix
argumentsList.add(">/dev/null 2>&1");
}
@@ -226,7 +240,9 @@ public class ShellProcessBuilder {
// readers (read process -> write console)
// have to keep the output buffers from filling in the target process.
- readFromProcess_output = new ProcessProxy("Process Reader: " + this.executableName, this.process.getInputStream(), nullOutputStream);
+ readFromProcess_output = new ProcessProxy("Process Reader: " + this.executableName,
+ this.process.getInputStream(),
+ nullOutputStream);
readFromProcess_error = null;
}
// we want to pipe our input/output from process to ourselves
@@ -236,10 +252,15 @@ public class ShellProcessBuilder {
* to the user's window. This is important or the spawned process could block.
*/
// readers (read process -> write console)
- readFromProcess_output = new ProcessProxy("Process Reader: " + this.executableName, this.process.getInputStream(), this.outputStream);
+ readFromProcess_output = new ProcessProxy("Process Reader: " + this.executableName,
+ this.process.getInputStream(),
+ this.outputStream);
if (this.errorStream != this.outputStream) {
- readFromProcess_error = new ProcessProxy("Process Reader: " + this.executableName, this.process.getErrorStream(), this.errorStream);
- } else {
+ readFromProcess_error = new ProcessProxy("Process Reader: " + this.executableName,
+ this.process.getErrorStream(),
+ this.errorStream);
+ }
+ else {
processBuilder.redirectErrorStream(true);
readFromProcess_error = null;
}
@@ -250,8 +271,11 @@ public class ShellProcessBuilder {
* Proxy System.in from the user's window to the spawned process
*/
// writer (read console -> write process)
- writeToProcess_input = new ProcessProxy("Process Writer: " + this.executableName, this.inputStream, this.process.getOutputStream());
- } else {
+ writeToProcess_input = new ProcessProxy("Process Writer: " + this.executableName,
+ this.inputStream,
+ this.process.getOutputStream());
+ }
+ else {
writeToProcess_input = null;
}
@@ -260,17 +284,18 @@ public class ShellProcessBuilder {
// If not in eclipse, by this shutdown hook. (clicking the red square to terminate a process will not run it's shutdown hooks)
// Typing "exit" will always terminate the process
Thread hook = new Thread(new Runnable() {
- @Override
- public void run() {
- if (ShellProcessBuilder.this.debugInfo) {
- ShellProcessBuilder.this.errorStream.println("Terminating process: " + ShellProcessBuilder.this.executableName);
- }
- ShellProcessBuilder.this.process.destroy();
+ @Override
+ public
+ void run() {
+ if (ShellProcessBuilder.this.debugInfo) {
+ ShellProcessBuilder.this.errorStream.println("Terminating process: " + ShellProcessBuilder.this.executableName);
}
+ ShellProcessBuilder.this.process.destroy();
}
- );
+ });
// add a shutdown hook to make sure that we properly terminate our spawned processes.
- Runtime.getRuntime().addShutdownHook(hook);
+ Runtime.getRuntime()
+ .addShutdownHook(hook);
if (writeToProcess_input != null) {
writeToProcess_input.start();
@@ -304,11 +329,13 @@ public class ShellProcessBuilder {
// this is for cleanup ONLY, not to actually do anything.
this.process.destroy();
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ Thread.currentThread()
+ .interrupt();
}
// remove the shutdown hook now that we've shutdown.
- Runtime.getRuntime().removeShutdownHook(hook);
+ Runtime.getRuntime()
+ .removeShutdownHook(hook);
}
}
-}
\ No newline at end of file
+}
diff --git a/Dorkbox-Util/src/dorkbox/util/properties/PropertiesProvider.java b/Dorkbox-Util/src/dorkbox/util/properties/PropertiesProvider.java
index 876afed..48487fc 100644
--- a/Dorkbox-Util/src/dorkbox/util/properties/PropertiesProvider.java
+++ b/Dorkbox-Util/src/dorkbox/util/properties/PropertiesProvider.java
@@ -15,23 +15,19 @@
*/
package dorkbox.util.properties;
-import java.awt.Color;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Properties;
-
import dorkbox.util.FileUtil;
+import java.awt.*;
+import java.io.*;
+import java.util.Properties;
+
@SuppressWarnings("unused")
public
class PropertiesProvider {
- private String comments = "Settings and configuration file. Strings must be escape formatted!";
private final Properties properties = new SortedProperties();
private final File propertiesFile;
+ private String comments = "Settings and configuration file. Strings must be escape formatted!";
public
PropertiesProvider(String propertiesFile) {
diff --git a/Dorkbox-Util/src/dorkbox/util/properties/SortedProperties.java b/Dorkbox-Util/src/dorkbox/util/properties/SortedProperties.java
index 86a4a1f..bbd4a42 100644
--- a/Dorkbox-Util/src/dorkbox/util/properties/SortedProperties.java
+++ b/Dorkbox-Util/src/dorkbox/util/properties/SortedProperties.java
@@ -15,28 +15,29 @@
*/
package dorkbox.util.properties;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.Vector;
+import java.util.*;
-public class SortedProperties extends Properties {
+public
+class SortedProperties extends Properties {
private static final long serialVersionUID = 3988064683926999433L;
private final Comparator