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 compare = new Comparator() { @Override - public int compare(Object o1, Object o2) { - return o1.toString().compareTo(o2.toString()); - }}; + public + int compare(Object o1, Object o2) { + return o1.toString() + .compareTo(o2.toString()); + } + }; @Override - public synchronized Enumeration keys() { + public synchronized + Enumeration keys() { Enumeration keysEnum = super.keys(); Vector vector = new Vector(size()); - for (;keysEnum.hasMoreElements();) { + for (; keysEnum.hasMoreElements(); ) { vector.add(keysEnum.nextElement()); } diff --git a/Dorkbox-Util/src/dorkbox/util/serializers/ArraysAsListSerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/ArraysAsListSerializer.java similarity index 99% rename from Dorkbox-Util/src/dorkbox/util/serializers/ArraysAsListSerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/ArraysAsListSerializer.java index 3db9cc2..af76b0a 100644 --- a/Dorkbox-Util/src/dorkbox/util/serializers/ArraysAsListSerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/ArraysAsListSerializer.java @@ -14,7 +14,7 @@ * limitations under the License. * */ -package dorkbox.util.serializers; +package dorkbox.util.serialization; import java.lang.reflect.Array; import java.lang.reflect.Field; diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/EccPrivateKeySerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/EccPrivateKeySerializer.java similarity index 77% rename from Dorkbox-Util/src/dorkbox/util/crypto/serialization/EccPrivateKeySerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/EccPrivateKeySerializer.java index 0a037ab..11fb407 100644 --- a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/EccPrivateKeySerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/EccPrivateKeySerializer.java @@ -1,8 +1,24 @@ -package dorkbox.util.crypto.serialization; - - -import java.math.BigInteger; +/* + * 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.serialization; +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.Serializer; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.x9.X9ECParameters; import org.bouncycastle.crypto.ec.CustomNamedCurves; @@ -12,22 +28,16 @@ import org.bouncycastle.math.ec.ECAccessor; import org.bouncycastle.math.ec.ECCurve; import org.bouncycastle.math.ec.ECPoint; -import com.esotericsoftware.kryo.Kryo; -import com.esotericsoftware.kryo.Serializer; -import com.esotericsoftware.kryo.io.Input; -import com.esotericsoftware.kryo.io.Output; +import java.math.BigInteger; /** - * Only public keys are ever sent across the wire. + * Only public keys are ever sent across the wire. */ -public class EccPrivateKeySerializer extends Serializer { +public +class EccPrivateKeySerializer extends Serializer { - @Override - public void write(Kryo kryo, Output output, ECPrivateKeyParameters key) { - write(output, key); - } - - public static void write(Output output, ECPrivateKeyParameters key) { + public static + void write(Output output, ECPrivateKeyParameters key) { byte[] bytes; int length; @@ -51,19 +61,15 @@ public class EccPrivateKeySerializer extends Serializer serializeECPoint(g, output); ///////////// - bytes = key.getD().toByteArray(); + bytes = key.getD() + .toByteArray(); length = bytes.length; output.writeInt(length, true); output.writeBytes(bytes, 0, length); } - @SuppressWarnings("rawtypes") - @Override - public ECPrivateKeyParameters read(Kryo kryo, Input input, Class type) { - return read(input); - } - - public static ECPrivateKeyParameters read(Input input) { + public static + ECPrivateKeyParameters read(Input input) { byte[] bytes; int length; @@ -98,11 +104,13 @@ public class EccPrivateKeySerializer extends Serializer return new ECPrivateKeyParameters(D, ecDomainParameters); } - static void serializeCurve(Output output, ECCurve curve) { + static + void serializeCurve(Output output, ECCurve curve) { byte[] bytes; int length; // save out if it's a NAMED curve, or a UN-NAMED curve. If it is named, we can do less work. - String curveName = curve.getClass().getSimpleName(); + String curveName = curve.getClass() + .getSimpleName(); if (curveName.endsWith("Curve")) { String cleanedName = curveName.substring(0, curveName.indexOf("Curve")); @@ -121,11 +129,14 @@ public class EccPrivateKeySerializer extends Serializer // we have to serialize the ENTIRE curve. if (curveName == null) { // save out the curve info - BigInteger a = curve.getA().toBigInteger(); - BigInteger b = curve.getB().toBigInteger(); + BigInteger a = curve.getA() + .toBigInteger(); + BigInteger b = curve.getB() + .toBigInteger(); BigInteger order = curve.getOrder(); BigInteger cofactor = curve.getCofactor(); - BigInteger q = curve.getField().getCharacteristic(); + BigInteger q = curve.getField() + .getCharacteristic(); ///////////// bytes = a.toByteArray(); @@ -166,7 +177,8 @@ public class EccPrivateKeySerializer extends Serializer } } - static ECCurve deserializeCurve(Input input) { + static + ECCurve deserializeCurve(Input input) { byte[] bytes; int length; @@ -221,15 +233,18 @@ public class EccPrivateKeySerializer extends Serializer return curve; } - static void serializeECPoint(ECPoint point, Output output) { + static + void serializeECPoint(ECPoint point, Output output) { if (point.isInfinity()) { return; } ECPoint normed = point.normalize(); - byte[] X = normed.getXCoord().getEncoded(); - byte[] Y = normed.getYCoord().getEncoded(); + byte[] X = normed.getXCoord() + .getEncoded(); + byte[] Y = normed.getYCoord() + .getEncoded(); int length = 1 + X.length + Y.length; output.writeInt(length, true); @@ -238,4 +253,17 @@ public class EccPrivateKeySerializer extends Serializer output.write(X); output.write(Y); } + + @Override + public + void write(Kryo kryo, Output output, ECPrivateKeyParameters key) { + write(output, key); + } + + @SuppressWarnings("rawtypes") + @Override + public + ECPrivateKeyParameters read(Kryo kryo, Input input, Class type) { + return read(input); + } } diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/EccPublicKeySerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/EccPublicKeySerializer.java similarity index 79% rename from Dorkbox-Util/src/dorkbox/util/crypto/serialization/EccPublicKeySerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/EccPublicKeySerializer.java index d9ccf26..aa42408 100644 --- a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/EccPublicKeySerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/EccPublicKeySerializer.java @@ -1,5 +1,19 @@ -package dorkbox.util.crypto.serialization; - +/* + * 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.serialization; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; @@ -18,12 +32,6 @@ import java.math.BigInteger; public class EccPublicKeySerializer extends Serializer { - @Override - public - void write(Kryo kryo, Output output, ECPublicKeyParameters key) { - write(output, key); - } - public static void write(Output output, ECPublicKeyParameters key) { byte[] bytes; @@ -50,13 +58,6 @@ class EccPublicKeySerializer extends Serializer { EccPrivateKeySerializer.serializeECPoint(key.getQ(), output); } - @SuppressWarnings("rawtypes") - @Override - public - ECPublicKeyParameters read(Kryo kryo, Input input, Class type) { - return read(input); - } - public static ECPublicKeyParameters read(Input input) { byte[] bytes; @@ -93,4 +94,17 @@ class EccPublicKeySerializer extends Serializer { return new ECPublicKeyParameters(Q, ecDomainParameters); } + + @Override + public + void write(Kryo kryo, Output output, ECPublicKeyParameters key) { + write(output, key); + } + + @SuppressWarnings("rawtypes") + @Override + public + ECPublicKeyParameters read(Kryo kryo, Input input, Class type) { + return read(input); + } } diff --git a/Dorkbox-Util/src/dorkbox/util/serializers/FieldAnnotationAwareSerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/FieldAnnotationAwareSerializer.java similarity index 99% rename from Dorkbox-Util/src/dorkbox/util/serializers/FieldAnnotationAwareSerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/FieldAnnotationAwareSerializer.java index 5ea6dca..c6ef7d4 100644 --- a/Dorkbox-Util/src/dorkbox/util/serializers/FieldAnnotationAwareSerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/FieldAnnotationAwareSerializer.java @@ -14,7 +14,7 @@ * limitations under the License. * */ -package dorkbox.util.serializers; +package dorkbox.util.serialization; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/IesParametersSerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/IesParametersSerializer.java similarity index 70% rename from Dorkbox-Util/src/dorkbox/util/crypto/serialization/IesParametersSerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/IesParametersSerializer.java index 33e2546..17c26f2 100644 --- a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/IesParametersSerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/IesParametersSerializer.java @@ -1,11 +1,25 @@ -package dorkbox.util.crypto.serialization; - -import org.bouncycastle.crypto.params.IESParameters; +/* + * 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.serialization; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; +import org.bouncycastle.crypto.params.IESParameters; /** * Only public keys are ever sent across the wire. diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/IesWithCipherParametersSerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/IesWithCipherParametersSerializer.java similarity index 73% rename from Dorkbox-Util/src/dorkbox/util/crypto/serialization/IesWithCipherParametersSerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/IesWithCipherParametersSerializer.java index 1a5a379..0d034bd 100644 --- a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/IesWithCipherParametersSerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/IesWithCipherParametersSerializer.java @@ -1,11 +1,25 @@ -package dorkbox.util.crypto.serialization; - -import org.bouncycastle.crypto.params.IESWithCipherParameters; +/* + * 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.serialization; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; +import org.bouncycastle.crypto.params.IESWithCipherParameters; /** * Only public keys are ever sent across the wire. diff --git a/Dorkbox-Util/src/dorkbox/util/serialization/IgnoreSerialization.java b/Dorkbox-Util/src/dorkbox/util/serialization/IgnoreSerialization.java new file mode 100644 index 0000000..9a49fa9 --- /dev/null +++ b/Dorkbox-Util/src/dorkbox/util/serialization/IgnoreSerialization.java @@ -0,0 +1,29 @@ +/* + * 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.serialization; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Used to identify fields that kryo should ignore when configured with the FieldAnnotationAwareSerializer + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD}) +public +@interface IgnoreSerialization {} diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/RsaPrivateKeySerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/RsaPrivateKeySerializer.java similarity index 85% rename from Dorkbox-Util/src/dorkbox/util/crypto/serialization/RsaPrivateKeySerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/RsaPrivateKeySerializer.java index 556d32e..da1f728 100644 --- a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/RsaPrivateKeySerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/RsaPrivateKeySerializer.java @@ -1,13 +1,27 @@ -package dorkbox.util.crypto.serialization; - -import java.math.BigInteger; - -import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; +/* + * 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.serialization; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; +import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; + +import java.math.BigInteger; /** * Only public keys are ever sent across the wire. diff --git a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/RsaPublicKeySerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/RsaPublicKeySerializer.java similarity index 70% rename from Dorkbox-Util/src/dorkbox/util/crypto/serialization/RsaPublicKeySerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/RsaPublicKeySerializer.java index c042816..91fbe1f 100644 --- a/Dorkbox-Util/src/dorkbox/util/crypto/serialization/RsaPublicKeySerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/RsaPublicKeySerializer.java @@ -1,13 +1,27 @@ -package dorkbox.util.crypto.serialization; - -import java.math.BigInteger; - -import org.bouncycastle.crypto.params.RSAKeyParameters; +/* + * 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.serialization; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; +import org.bouncycastle.crypto.params.RSAKeyParameters; + +import java.math.BigInteger; /** * Only public keys are ever sent across the wire. diff --git a/Dorkbox-Util/src/dorkbox/util/serializers/UnmodifiableCollectionsSerializer.java b/Dorkbox-Util/src/dorkbox/util/serialization/UnmodifiableCollectionsSerializer.java similarity index 99% rename from Dorkbox-Util/src/dorkbox/util/serializers/UnmodifiableCollectionsSerializer.java rename to Dorkbox-Util/src/dorkbox/util/serialization/UnmodifiableCollectionsSerializer.java index e2d1830..84b1580 100644 --- a/Dorkbox-Util/src/dorkbox/util/serializers/UnmodifiableCollectionsSerializer.java +++ b/Dorkbox-Util/src/dorkbox/util/serialization/UnmodifiableCollectionsSerializer.java @@ -14,7 +14,7 @@ * limitations under the License. * */ -package dorkbox.util.serializers; +package dorkbox.util.serialization; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; diff --git a/Dorkbox-Util/src/dorkbox/util/storage/MemoryStorage.java b/Dorkbox-Util/src/dorkbox/util/storage/MemoryStorage.java index e730ce5..cdbe572 100644 --- a/Dorkbox-Util/src/dorkbox/util/storage/MemoryStorage.java +++ b/Dorkbox-Util/src/dorkbox/util/storage/MemoryStorage.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.storage; import dorkbox.util.bytes.ByteArrayWrapper; diff --git a/Dorkbox-Util/src/dorkbox/util/storage/Storage.java b/Dorkbox-Util/src/dorkbox/util/storage/Storage.java index 1014a87..ea9967f 100644 --- a/Dorkbox-Util/src/dorkbox/util/storage/Storage.java +++ b/Dorkbox-Util/src/dorkbox/util/storage/Storage.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.storage; import dorkbox.util.bytes.ByteArrayWrapper; diff --git a/Dorkbox-Util/src/dorkbox/util/storage/Store.java b/Dorkbox-Util/src/dorkbox/util/storage/Store.java index 2ae864c..aaec363 100644 --- a/Dorkbox-Util/src/dorkbox/util/storage/Store.java +++ b/Dorkbox-Util/src/dorkbox/util/storage/Store.java @@ -1,16 +1,30 @@ +/* + * 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.storage; +import dorkbox.util.SerializationManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import dorkbox.util.SerializationManager; - public class Store { private static final Logger logger = LoggerFactory.getLogger(DiskStorage.class); diff --git a/Dorkbox-Util/test/dorkbox/util/crypto/EccTest.java b/Dorkbox-Util/test/dorkbox/util/crypto/EccTest.java index 715b971..2210b8f 100644 --- a/Dorkbox-Util/test/dorkbox/util/crypto/EccTest.java +++ b/Dorkbox-Util/test/dorkbox/util/crypto/EccTest.java @@ -38,10 +38,10 @@ import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; -import dorkbox.util.crypto.serialization.EccPrivateKeySerializer; -import dorkbox.util.crypto.serialization.EccPublicKeySerializer; -import dorkbox.util.crypto.serialization.IesParametersSerializer; -import dorkbox.util.crypto.serialization.IesWithCipherParametersSerializer; +import dorkbox.util.serialization.EccPrivateKeySerializer; +import dorkbox.util.serialization.EccPublicKeySerializer; +import dorkbox.util.serialization.IesParametersSerializer; +import dorkbox.util.serialization.IesWithCipherParametersSerializer; public class EccTest { diff --git a/Dorkbox-Util/test/dorkbox/util/crypto/RsaTest.java b/Dorkbox-Util/test/dorkbox/util/crypto/RsaTest.java index c590432..e0265f9 100644 --- a/Dorkbox-Util/test/dorkbox/util/crypto/RsaTest.java +++ b/Dorkbox-Util/test/dorkbox/util/crypto/RsaTest.java @@ -26,8 +26,8 @@ import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; -import dorkbox.util.crypto.serialization.RsaPrivateKeySerializer; -import dorkbox.util.crypto.serialization.RsaPublicKeySerializer; +import dorkbox.util.serialization.RsaPrivateKeySerializer; +import dorkbox.util.serialization.RsaPublicKeySerializer; public class RsaTest {