Skip to main content

[andunix~andunix-core:26] In XmlNode.getChildElement(String name) switch from iterating over all ch

  • From: andunix@...
  • To: commits@...
  • Subject: [andunix~andunix-core:26] In XmlNode.getChildElement(String name) switch from iterating over all ch
  • Date: Sun, 11 May 2014 19:08:16 +0000

Project:    andunix
Repository: andunix-core
Revision:   26
Author:     andunix
Date:       2014-05-11 19:05:32 UTC
Link:       

Log Message:
------------
EXIF metadata has new methods: getCameraMake(), getCameraModel(), getDate(), 
getDateAsString() and getImageDescription().
integrated andunix-util
replaced imgscalr with own implementation.
In XmlNode.getChildElement(String name) switch from iterating over all child 
nodes (Node.getChildNodes()) to Element.getElementsByTagName(String name). 
This should increase the performace. (ticket:1)


Revisions:
----------
23
24
25
26


Modified Paths:
---------------
nbproject/project.properties
src/net/andunix/lib/picture/EXIF.java
src/net/andunix/lib/picture/PictureMetadata.java
build.xml
lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
lib/nblibraries.properties
nbproject/build-impl.xml
nbproject/genfiles.properties
src/net/andunix/lib/picture/BIP.java
src/net/andunix/lib/xml/XmlNode.java


Added Paths:
------------
src/net/andunix/lib/util/ArrayIterable.java
src/net/andunix/lib/util/ArrayIterator.java
src/net/andunix/lib/util/DummyIterable.java
src/net/andunix/lib/util/DummyIterator.java
src/net/andunix/lib/util/DummyMap.java
src/net/andunix/lib/util/DummySet.java
src/net/andunix/lib/util/LimitedLengthDeque.java
src/net/andunix/lib/util/LimitedLengthList.java
src/net/andunix/lib/util/MapWrapper.java
src/net/andunix/lib/util/MultiIterator.java
src/net/andunix/lib/util/Parameters.java


Diffs:
------
diff -r a4c4905dfb0b -r ac52e1c61ba9 nbproject/project.properties
--- a/nbproject/project.properties      Sun Jul 21 01:37:56 2013 +0200
+++ b/nbproject/project.properties      Thu Aug 01 23:38:11 2013 +0200
@@ -62,7 +62,7 @@
 javadoc.version=false
 javadoc.windowtitle=
 meta.inf.dir=${src.dir}/META-INF
-mkdist.disabled=true
+mkdist.disabled=false
 platform.active=default_platform
 run.classpath=\
     ${javac.classpath}:\

diff -r a4c4905dfb0b -r ac52e1c61ba9 src/net/andunix/lib/picture/EXIF.java
--- a/src/net/andunix/lib/picture/EXIF.java     Sun Jul 21 01:37:56 2013 +0200
+++ b/src/net/andunix/lib/picture/EXIF.java     Thu Aug 01 23:38:11 2013 +0200
@@ -21,6 +21,7 @@
 import com.drew.metadata.Metadata;
 import com.drew.metadata.MetadataException;
 import com.drew.metadata.exif.ExifIFD0Directory;
+import java.util.Date;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -56,6 +57,26 @@
     //
     // STATIC METHODS
     //
+    public static String getCameraMake(Metadata metadata) {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_MAKE);
+    }
+    public static String getCameraModel(Metadata metadata) {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_MODEL);
+    }
+    public static Date getDate(Metadata metadata) {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getDate(ExifIFD0Directory.TAG_DATETIME);
+    }
+    public static String getDateAsString(Metadata metadata) {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_MODEL);
+    }
+    public static String getImageDescription(Metadata metadata) {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_IMAGE_DESCRIPTION);
+    }
     public static int getOrientation(Metadata metadata) {
         if (metadata == null) {
             return EXIF.ORIENTATION_UNKNOWN;

diff -r a4c4905dfb0b -r ac52e1c61ba9 
src/net/andunix/lib/picture/PictureMetadata.java
--- a/src/net/andunix/lib/picture/PictureMetadata.java  Sun Jul 21 01:37:56 
2013 +0200
+++ b/src/net/andunix/lib/picture/PictureMetadata.java  Thu Aug 01 23:38:11 
2013 +0200
@@ -20,14 +20,14 @@
 import com.drew.imaging.ImageMetadataReader;
 import com.drew.imaging.ImageProcessingException;
 import com.drew.metadata.Metadata;
+import com.drew.metadata.exif.ExifIFD0Directory;
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLConnection;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.util.Date;
 
 /**
  * FIXME: class description
@@ -38,17 +38,6 @@
     //
     //
     //
-    // CONSTANTS
-    //
-    private static final Log log = LogFactory.getLog(PictureMetadata.class);
-    //
-    //
-    //
-    // STATIC METHODS
-    //
-    //
-    //
-    //
     // FIELDS
     //
     private Metadata metadata;
@@ -82,11 +71,34 @@
             this.metadata = null;
         }
     }
+    PictureMetadata(Metadata metadata) {
+        this.metadata = metadata;
+    }
     //
     //
     //
     // METHODS
     //
+    public String getCameraMake() {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_MAKE);
+    }
+    public String getCameraModel() {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_MODEL);
+    }
+    public Date getDate() {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getDate(ExifIFD0Directory.TAG_DATETIME);
+    }
+    public String getDateAsString() {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_MODEL);
+    }
+    public String getImageDescription() {
+        ExifIFD0Directory exif = 
metadata.getDirectory(ExifIFD0Directory.class);
+        return exif == null ? null : 
exif.getString(ExifIFD0Directory.TAG_IMAGE_DESCRIPTION);
+    }
     public int getOrientation() {
         return EXIF.getOrientation(metadata);
     }


diff -r ac52e1c61ba9 -r 4c43bcc26b06 
src/net/andunix/lib/util/ArrayIterable.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/ArrayIterable.java       Thu Aug 01 23:42:04 
2013 +0200
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2011 Andreas Huber - http://andunix.net/
+ *
+ * Licensed unter the Creative Commons Attribution 3.0 Germany License
+ * http://creativecommons.org/licenses/by/3.0/de/deed.en
+ *
+ * Lizensiert unter der Creative Commons Namensnennung 3.0 Deutschland Lizenz
+ * http://creativecommons.org/licenses/by/3.0/de/
+ *
+ */
+
+package net.andunix.lib.util;
+
+import java.util.Iterator;
+
+/**
+ * ArrayIterable implements the Iterable interface for native Arrays.
+ * 
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ */
+public class ArrayIterable<E> implements Iterable<E> {
+    //
+    //
+    //
+    // ATTRIBUTES
+    //
+    private E[] array;
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public ArrayIterable(E[] array) {
+        this.array = array;
+    }
+    //
+    //
+    //
+    // METHODS
+    //
+    /**
+     * Returns an iterator over an array of elements of type E.
+     * 
+     * @return the iterator.
+     */
+    public Iterator<E> iterator() {
+        return new ArrayIterator<E>(array);
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 
src/net/andunix/lib/util/ArrayIterator.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/ArrayIterator.java       Thu Aug 01 23:42:04 
2013 +0200
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2006 Andreas Huber - http://andunix.net/
+ *
+ * Licensed unter the Creative Commons Attribution 3.0 Germany License
+ * http://creativecommons.org/licenses/by/3.0/de/deed.en
+ *
+ * Lizensiert unter der Creative Commons Namensnennung 3.0 Deutschland Lizenz
+ * http://creativecommons.org/licenses/by/3.0/de/
+ *
+ */
+
+package net.andunix.lib.util;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * ArrayIterator implements an Iterator for native Arrays.
+ * 
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ */
+public class ArrayIterator<E> implements Iterator<E> {
+    //
+    //
+    //
+    // ATTRIBUTES
+    //
+    private E[] array;
+    private int index = 0;
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public ArrayIterator(E[] array) {
+        this.array = array;
+    }
+    //
+    //
+    //
+    // METHODS
+    //    
+    /**
+     * 
+     * Removes from the underlying collection the last element returned by 
the
+     * iterator (optional operation).  This method can be called only once 
per
+     * call to <tt>next</tt>.  The behavior of an iterator is unspecified if
+     * the underlying collection is modified while the iteration is in
+     * progress in any way other than by calling this method.
+     * 
+     * @exception UnsupportedOperationException if the <tt>remove</tt>
+     *                   operation is not supported by this Iterator.
+     * @exception IllegalStateException if the <tt>next</tt> method has not
+     *                   yet been called, or the <tt>remove</tt> method has 
already
+     *                   been called after the last call to the <tt>next</tt>
+     *                   method.
+     */
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+    /**
+     * Returns the next element in the iteration.  Calling this method
+     * repeatedly until the {@link #hasNext()} method returns false will
+     * return each element in the underlying collection exactly once.
+     * 
+     * @return the next element in the iteration.
+     * @exception NoSuchElementException iteration has no more elements.
+     */
+    public E next() {
+        if (index >= this.array.length) {
+            throw new NoSuchElementException();
+        }
+        return this.array[index++];
+    }
+    /**
+     * Returns <tt>true</tt> if the iteration has more elements. (In other
+     * words, returns <tt>true</tt> if <tt>next</tt> would return an element
+     * rather than throwing an exception.)
+     * 
+     * @return <tt>true</tt> if the iterator has more elements.
+     */
+    public boolean hasNext() {
+        return (index < this.array.length);
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 
src/net/andunix/lib/util/DummyIterable.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/DummyIterable.java       Thu Aug 01 23:42:04 
2013 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2008-2009 Andreas Huber - http://andunix.net/
+ *
+ * Licensed unter the Creative Commons Attribution 3.0 Germany License
+ * http://creativecommons.org/licenses/by/3.0/de/deed.en
+ *
+ * Lizensiert unter der Creative Commons Namensnennung 3.0 Deutschland Lizenz
+ * http://creativecommons.org/licenses/by/3.0/de/
+ *
+ */
+
+package net.andunix.lib.util;
+
+import java.util.Iterator;
+
+/**
+ * A dummy <code>Iterable&lt;T&gt;</code>, returns a
+ * <code>DummyIterator&lt;T&gt;</code>.
+ *
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ * 
+ * @deprecated use java.util.Collections.emptyList() instead
+ */
+public class DummyIterable<T> implements Iterable<T> {
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public DummyIterable() {
+    }
+    //
+    //
+    //
+    // METHODS
+    //
+    /**
+     * Returns a <code>DummyIterator&lt;T&gt;</code>.
+     *
+     * @return a <code>DummyIterator&lt;T&gt;</code>.
+     */
+    public Iterator<T> iterator() {
+        return new DummyIterator<T>();
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 
src/net/andunix/lib/util/DummyIterator.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/DummyIterator.java       Thu Aug 01 23:42:04 
2013 +0200
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2006-2009 Andreas Huber - http://andunix.net/
+ *
+ * Licensed unter the Creative Commons Attribution 3.0 Germany License
+ * http://creativecommons.org/licenses/by/3.0/de/deed.en
+ *
+ * Lizensiert unter der Creative Commons Namensnennung 3.0 Deutschland Lizenz
+ * http://creativecommons.org/licenses/by/3.0/de/
+ *
+ */
+
+package net.andunix.lib.util;
+
+import java.util.Iterator;
+
+/**
+ * A dummy <code>Iterator</code>, which simulates iterating over an empty
+ * <code>Collection&lt;T&gt;</code>.
+ *
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ * 
+ * @deprecated use java.util.Collections.emptyList().iterator instead
+ */
+public class DummyIterator<T> implements Iterator<T> {
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public DummyIterator() {
+    }
+    //
+    //
+    //
+    // METHODS
+    //
+    /**
+     * Dummy implementation, returns <code>false</code>.
+     *
+     * @return always <code>false</code>.
+     */
+    public boolean hasNext() {
+        return false;
+    }
+    /**
+     * Dummy implementation, returns <code>null</code>.
+     *
+     * @return always <code>null</code>.
+     */
+    public T next() {
+        return null;
+    }
+    /**
+     * Dummy implementation, throws 
<code>UnsupportedOperationException</code>.
+     *
+     * @throws java.lang.UnsupportedOperationException if called.
+     */
+    public void remove() {
+        throw new UnsupportedOperationException("method not implemented");
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 src/net/andunix/lib/util/DummyMap.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/DummyMap.java    Thu Aug 01 23:42:04 2013 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2011 Andreas Huber - http://andunix.net/
+ *
+ * Licensed unter the Creative Commons Attribution 3.0 Germany License
+ * http://creativecommons.org/licenses/by/3.0/de/deed.en
+ *
+ * Lizensiert unter der Creative Commons Namensnennung 3.0 Deutschland Lizenz
+ * http://creativecommons.org/licenses/by/3.0/de/
+ *
+ */
+
+package net.andunix.lib.util;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+/**
+ * A dummy <code>Map</code>, which simulates an empty <code>Map&lt;K, 
V&gt;</code>.
+ * 
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ * 
+ * @deprecated use java.util.Collections.emptyMap() instead
+ */
+public class DummyMap<K, V> implements Map<K, V> {
+    //
+    //
+    //
+    // METHODS
+    //
+    @Override
+    public int size() {
+        return 0;
+    }
+    @Override
+    public boolean isEmpty() {
+        return true;
+    }
+    @Override
+    public boolean containsKey(Object key) {
+        return false;
+    }
+    @Override
+    public boolean containsValue(Object value) {
+        return false;
+    }
+    @Override
+    public V get(Object key) {
+        return null;
+    }
+    @Override
+    public V put(K key, V value) {
+        throw new UnsupportedOperationException("DummyMap is read-only.");
+    }
+    @Override
+    public V remove(Object key) {
+        throw new UnsupportedOperationException("DummyMap is read-only.");
+    }
+    @Override
+    public void putAll(Map<? extends K, ? extends V> m) {
+        throw new UnsupportedOperationException("DummyMap is read-only.");
+    }
+    @Override
+    public void clear() {
+    }
+    @Override
+    public Set<K> keySet() {
+        return new DummySet<K>();
+    }
+    @Override
+    public Collection<V> values() {
+        return new DummySet<V>();
+    }
+    @Override
+    public Set<Entry<K, V>> entrySet() {
+        return new DummySet<Entry<K, V>>();
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 src/net/andunix/lib/util/DummySet.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/DummySet.java    Thu Aug 01 23:42:04 2013 +0200
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2011 Andreas Huber - http://andunix.net/
+ *
+ * Licensed unter the Creative Commons Attribution 3.0 Germany License
+ * http://creativecommons.org/licenses/by/3.0/de/deed.en
+ *
+ * Lizensiert unter der Creative Commons Namensnennung 3.0 Deutschland Lizenz
+ * http://creativecommons.org/licenses/by/3.0/de/
+ *
+ */
+
+package net.andunix.lib.util;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * A dummy <code>Set</code>, which simulates an empty 
<code>Set&lt;T&gt;</code>.
+ * 
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ * 
+ * @deprecated use java.util.Collections.emptySet() instead
+ */
+class DummySet<T> implements Set<T> {
+    //
+    //
+    //
+    // METHODS
+    //
+    @Override
+    public int size() {
+        return 0;
+    }
+    @Override
+    public boolean isEmpty() {
+        return true;
+    }
+    @Override
+    public boolean contains(Object o) {
+        return false;
+    }
+    @Override
+    public Iterator<T> iterator() {
+        return new DummyIterator<T>();
+    }
+    @Override
+    public Object[] toArray() {
+        return new Object[0];
+    }
+    @Override
+    public <T> T[] toArray(T[] a) {
+        return Arrays.copyOf(a, 0);
+    }
+    @Override
+    public boolean add(T e) {
+        throw new UnsupportedOperationException("DummySet is read-only.");
+    }
+    @Override
+    public boolean remove(Object o) {
+        throw new UnsupportedOperationException("DummySet is read-only.");
+    }
+    @Override
+    public boolean containsAll(Collection<?> c) {
+        return c.isEmpty();
+    }
+    @Override
+    public boolean addAll(Collection<? extends T> c) {
+        throw new UnsupportedOperationException("DummySet is read-only.");
+    }
+    @Override
+    public boolean retainAll(Collection<?> c) {
+        throw new UnsupportedOperationException("DummySet is read-only.");
+    }
+    @Override
+    public boolean removeAll(Collection<?> c) {
+        throw new UnsupportedOperationException("DummySet is read-only.");
+    }
+    @Override
+    public void clear() {
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 
src/net/andunix/lib/util/LimitedLengthDeque.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/LimitedLengthDeque.java  Thu Aug 01 23:42:04 
2013 +0200
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2012 Andreas Huber - http://andunix.net/
+ *
+ * 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 net.andunix.lib.util;
+
+import java.util.Collection;
+import java.util.Deque;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.TimeUnit;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * FIXME: class description
+ * 
+ * @param <E> 
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ */
+public class LimitedLengthDeque<E> extends LinkedBlockingDeque<E> implements 
Deque<E> {
+    //
+    //
+    //
+    // CONSTANTS
+    //
+    private static final Log log = 
LogFactory.getLog(LimitedLengthDeque.class);
+    private static final long serialVersionUID = 1L;
+    //
+    //
+    //
+    // FIELDS
+    //
+    private final int maxLength;
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public LimitedLengthDeque(int maxLength) {
+        this.maxLength = maxLength;
+    }
+    //
+    //
+    //
+    // METHODS
+    //
+    private void _limitHead() {
+        while (size() > maxLength) {
+            pollFirst();
+        }
+    }
+    private void _limitTail() {
+        while (size() > maxLength) {
+            pollLast();
+        }
+    }
+    @Override
+    public boolean add(E e) {
+        final boolean result = super.add(e);
+        _limitHead();
+        return result;
+    }
+    @Override
+    public boolean addAll(Collection<? extends E> c) {
+        final boolean result = super.addAll(c);
+        _limitHead();
+        return result;
+    }
+    @Override
+    public boolean offer(E e, long timeout, TimeUnit unit) throws 
InterruptedException {
+        final boolean result = super.offer(e, timeout, unit);
+        _limitHead();
+        return result;
+    }
+    @Override
+    public boolean offer(E e) {
+        final boolean result = super.offer(e);
+        _limitHead();
+        return result;
+    }
+    @Override
+    public void put(E e) throws InterruptedException {
+        super.put(e);
+        _limitHead();
+    }
+    @Override
+    public void addFirst(E e) {
+        super.addFirst(e);
+        _limitTail();
+    }
+    @Override
+    public void addLast(E e) {
+        super.addLast(e);
+        _limitHead();
+    }
+    @Override
+    public boolean offerFirst(E e) {
+        final boolean result = super.offerFirst(e);
+        _limitTail();
+        return result;
+    }
+    @Override
+    public boolean offerFirst(E e, long timeout, TimeUnit unit) throws 
InterruptedException {
+        final boolean result = super.offerFirst(e, timeout, unit);
+        _limitTail();
+        return result;
+    }
+    @Override
+    public boolean offerLast(E e) {
+        final boolean result = super.offerLast(e);
+        _limitHead();
+        return result;
+    }
+    @Override
+    public boolean offerLast(E e, long timeout, TimeUnit unit) throws 
InterruptedException {
+        final boolean result = super.offerLast(e, timeout, unit);
+        _limitHead();
+        return result;
+    }
+    @Override
+    public void push(E e) {
+        super.push(e);
+        _limitTail();
+    }
+    @Override
+    public void putFirst(E e) throws InterruptedException {
+        super.putFirst(e);
+        _limitTail();
+    }
+    @Override
+    public void putLast(E e) throws InterruptedException {
+        super.putLast(e);
+        _limitHead();
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 
src/net/andunix/lib/util/LimitedLengthList.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/LimitedLengthList.java   Thu Aug 01 23:42:04 
2013 +0200
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2012 Andreas Huber - http://andunix.net/
+ *
+ * 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 net.andunix.lib.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * FIXME: class description
+ * 
+ * @param <E> 
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ */
+public class LimitedLengthList<E> extends ArrayList<E> {
+    //
+    //
+    //
+    // CONSTANTS
+    //
+    private static final Log log = 
LogFactory.getLog(LimitedLengthList.class);
+    private static final long serialVersionUID = 1L;
+    //
+    //
+    //
+    // FIELDS
+    //
+    private final int maxLength;
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public LimitedLengthList(int maxLength) {
+        super(maxLength);
+        this.maxLength = maxLength;
+    }
+    //
+    //
+    //
+    // METHODS
+    //
+    private void _limitSize() {
+        if (size() > maxLength) {
+            removeRange(0, size()-maxLength);
+        }
+    }
+    @Override
+    public boolean add(E e) {
+        final boolean result = super.add(e);
+        _limitSize();
+        return result;
+    }
+    @Override
+    public void add(int index, E element) {
+        super.add(index, element);
+        _limitSize();
+    }
+    @Override
+    public boolean addAll(Collection<? extends E> c) {
+        final boolean result = super.addAll(c);
+        _limitSize();
+        return result;
+    }
+    @Override
+    public boolean addAll(int index, Collection<? extends E> c) {
+        final boolean result = super.addAll(index, c);
+        _limitSize();
+        return result;
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 src/net/andunix/lib/util/MapWrapper.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/MapWrapper.java  Thu Aug 01 23:42:04 2013 +0200
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2012 Andreas Huber - http://andunix.net/
+ *
+ * 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 net.andunix.lib.util;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Wraps a Map. Used to disable modifying methods.
+ * 
+ * @param <K> Type of the keys of this map.
+ * @param <V> Type of the values of this map.
+ * 
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ * 
+ * @deprecated use java.util.Collections.unmodifiableMap() instead
+ */
+public class MapWrapper<K,V> implements Map<K,V> {
+    //
+    //
+    //
+    // FIELDS
+    //
+    private Map<K,V> wrapped;
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public MapWrapper(Map<K,V> wrapped) {
+        this.wrapped = wrapped;
+    }
+    //
+    //
+    //
+    // METHODS
+    //
+    @Override
+    public int size() {
+        return wrapped.size();
+    }
+    @Override
+    public boolean isEmpty() {
+        return wrapped.isEmpty();
+    }
+    @Override
+    public boolean containsKey(Object o) {
+        return wrapped.containsKey(o);
+    }
+    @Override
+    public boolean containsValue(Object o) {
+        return wrapped.containsValue(o);
+    }
+    @Override
+    public V get(Object o) {
+        return wrapped.get(o);
+    }
+    @Override
+    public V put(K k, V v) {
+        throw new UnsupportedOperationException("MapWrapper disabled the 
put() method.");
+    }
+    @Override
+    public V remove(Object o) {
+        throw new UnsupportedOperationException("MapWrapper disabled the 
remove() method.");
+    }
+    @Override
+    public void putAll(Map<? extends K, ? extends V> map) {
+        throw new UnsupportedOperationException("MapWrapper disabled the 
putAll() method.");
+    }
+    @Override
+    public void clear() {
+        throw new UnsupportedOperationException("MapWrapper disabled the 
clear() method.");
+    }
+    @Override
+    public Set<K> keySet() {
+        return wrapped.keySet();
+    }
+    @Override
+    public Collection<V> values() {
+        return wrapped.values();
+    }
+    @Override
+    public Set<Entry<K, V>> entrySet() {
+        return wrapped.entrySet();
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 
src/net/andunix/lib/util/MultiIterator.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/MultiIterator.java       Thu Aug 01 23:42:04 
2013 +0200
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2012 Andreas Huber - http://andunix.net/
+ *
+ * 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 net.andunix.lib.util;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * FIXME: class description
+ * 
+ * @param <T> type of elemeents, this <code>Iterator</code> iterates over.
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ */
+public class MultiIterator<T> implements Iterator<T> {
+    //
+    //
+    //
+    // CONSTANTS
+    //
+    private static final Log log = LogFactory.getLog(MultiIterator.class);
+    //
+    //
+    //
+    // FIELDS
+    //
+    private Queue<Iterator<T>> iterators;
+    private Iterator<T> iterator = null;
+    //
+    //
+    //
+    // CONSTRUCTORS
+    //
+    public MultiIterator() {
+        iterators = new ConcurrentLinkedQueue<Iterator<T>>();
+    }
+    //
+    //
+    //
+    // METHODS
+    //
+    public void addIterator(Iterator<T> iterator) {
+        this.iterators.add(iterator);
+    }
+    @Override
+    public boolean hasNext() {
+        if ((iterator != null) && !iterator.hasNext()) {
+            iterator = null;
+        }
+        while (iterator == null) {
+            if (iterators.isEmpty()) {
+                return false;
+            }
+            iterator = iterators.remove();
+            if (!iterator.hasNext()) {
+                iterator = null;
+            }
+        }
+        // found an iterator which has a next element
+        return true;
+    }
+    @Override
+    public T next() {
+        if (hasNext()) {
+            return iterator.next();
+        } else {
+            throw new NoSuchElementException();
+        }
+    }
+    @Override
+    public void remove() {
+        throw new 
UnsupportedOperationException(getClass().getCanonicalName()+" doesn't support 
remove()");
+    }
+}

diff -r ac52e1c61ba9 -r 4c43bcc26b06 src/net/andunix/lib/util/Parameters.java
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/andunix/lib/util/Parameters.java  Thu Aug 01 23:42:04 2013 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2012 Andreas Huber - http://andunix.net/
+ *
+ * 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 net.andunix.lib.util;
+
+import java.util.Map;
+
+/**
+ * FIXME: class description
+ *
+ * @author Andreas Huber, <a 
href="http://andunix.net/";>http://andunix.net/</a>
+ */
+public interface Parameters extends Map<String, Object> {
+    public String[] getDefinedKeys();
+    public int getInt(String key, int defaultValue);
+    public Integer getInteger(String key);
+    public Integer getInteger(String key, Integer defaultValue);
+    public String getString(String key);
+    public String getString(String key, String defaultValue);
+    public boolean isComplete();
+    public boolean isKeyRequired(String key);
+}


diff -r 4c43bcc26b06 -r b4f2f3be8484 build.xml
--- a/build.xml Thu Aug 01 23:42:04 2013 +0200
+++ b/build.xml Tue Mar 25 15:20:07 2014 +0100
@@ -51,8 +51,7 @@
       -init-macrodef-junit:     defines macro for junit execution
       -init-macrodef-debug:     defines macro for class debugging
       -init-macrodef-java:      defines macro for class execution
-      -do-jar-with-manifest:    JAR building (if you are using a manifest)
-      -do-jar-without-manifest: JAR building (if you are not using a 
manifest)
+      -do-jar:                  JAR building
       run:                      execution of project 
       -javadoc-build:           Javadoc generation
       test-report:              JUnit report generation

diff -r 4c43bcc26b06 -r b4f2f3be8484 
lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
Binary file 
lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar has 
changed

diff -r 4c43bcc26b06 -r b4f2f3be8484 lib/imgscalr-lib-4.2-javadoc.jar
Binary file lib/imgscalr-lib-4.2-javadoc.jar has changed

diff -r 4c43bcc26b06 -r b4f2f3be8484 lib/imgscalr-lib-4.2-sources.jar
Binary file lib/imgscalr-lib-4.2-sources.jar has changed

diff -r 4c43bcc26b06 -r b4f2f3be8484 lib/imgscalr-lib-4.2.jar
Binary file lib/imgscalr-lib-4.2.jar has changed

diff -r 4c43bcc26b06 -r b4f2f3be8484 lib/nblibraries.properties
--- a/lib/nblibraries.properties        Thu Aug 01 23:42:04 2013 +0200
+++ b/lib/nblibraries.properties        Tue Mar 25 15:20:07 2014 +0100
@@ -1,4 +1,4 @@
 libs.CopyLibs.classpath=\
     ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
 libs.CopyLibs.displayName=CopyLibs Task
-libs.CopyLibs.prop-version=1.0
+libs.CopyLibs.prop-version=2.0

diff -r 4c43bcc26b06 -r b4f2f3be8484 nbproject/build-impl.xml
--- a/nbproject/build-impl.xml  Thu Aug 01 23:42:04 2013 +0200
+++ b/nbproject/build-impl.xml  Tue Mar 25 15:20:07 2014 +0100
@@ -79,6 +79,7 @@
         <property file="nbproject/project.properties"/>
     </target>
     <target 
depends="-pre-init,-init-private,-init-libraries,-init-user,-init-project,-init-macrodef-property"
 name="-do-init">
+        <property name="platform.java" value="${java.home}/bin/java"/>
         <available file="${manifest.file}" property="manifest.available"/>
         <condition property="splashscreen.available">
             <and>
@@ -96,16 +97,20 @@
                 </not>
             </and>
         </condition>
-        <condition property="manifest.available+main.class">
+        <condition property="profile.available">
             <and>
-                <isset property="manifest.available"/>
-                <isset property="main.class.available"/>
+                <isset property="javac.profile"/>
+                <length length="0" string="${javac.profile}" when="greater"/>
+                <matches pattern="1\.[89](\..*)?" string="${javac.source}"/>
             </and>
         </condition>
         <condition property="do.archive">
-            <not>
-                <istrue value="${jar.archive.disabled}"/>
-            </not>
+            <or>
+                <not>
+                    <istrue value="${jar.archive.disabled}"/>
+                </not>
+                <istrue value="${not.archive.disabled}"/>
+            </or>
         </condition>
         <condition property="do.mkdist">
             <and>
@@ -116,12 +121,6 @@
                 </not>
             </and>
         </condition>
-        <condition property="manifest.available+main.class+mkdist.available">
-            <and>
-                <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
-            </and>
-        </condition>
         <condition property="do.archive+manifest.available">
             <and>
                 <isset property="manifest.available"/>
@@ -140,24 +139,12 @@
                 <istrue value="${do.archive}"/>
             </and>
         </condition>
-        <condition property="do.archive+manifest.available+main.class">
+        <condition property="do.archive+profile.available">
             <and>
-                <istrue value="${manifest.available+main.class}"/>
+                <isset property="profile.available"/>
                 <istrue value="${do.archive}"/>
             </and>
         </condition>
-        <condition property="manifest.available-mkdist.available">
-            <or>
-                <istrue value="${manifest.available}"/>
-                <isset property="do.mkdist"/>
-            </or>
-        </condition>
-        <condition property="manifest.available+main.class-mkdist.available">
-            <or>
-                <istrue value="${manifest.available+main.class}"/>
-                <isset property="do.mkdist"/>
-            </or>
-        </condition>
         <condition property="have.tests">
             <or>
                 <available file="${test.src.dir}"/>
@@ -211,7 +198,15 @@
         </condition>
         <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
         <condition else="" property="endorsed.classpath.cmd.line.arg" 
value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
-            <length length="0" string="${endorsed.classpath}" 
when="greater"/>
+            <and>
+                <isset property="endorsed.classpath"/>
+                <not>
+                    <equals arg1="${endorsed.classpath}" arg2="" 
trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="javac.profile.cmd.line.arg" 
value="-profile ${javac.profile}">
+            <isset property="profile.available"/>
         </condition>
         <condition else="false" property="jdkBug6558476">
             <and>
@@ -300,6 +295,7 @@
                         <path path="@{classpath}"/>
                     </classpath>
                     <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
                     <compilerarg line="${javac.compilerargs}"/>
                     <compilerarg value="-processorpath"/>
                     <compilerarg path="@{processorpath}:${empty.dir}"/>
@@ -339,6 +335,7 @@
                         <path path="@{classpath}"/>
                     </classpath>
                     <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
                     <compilerarg line="${javac.compilerargs}"/>
                     <customize/>
                 </javac>
@@ -471,7 +468,7 @@
                     </fileset>
                 </union>
                 <taskdef classname="org.testng.TestNGAntTask" 
classpath="${run.test.classpath}" name="testng"/>
-                <testng classfilesetref="test.set" 
failureProperty="tests.failed" methods="${testng.methods.arg}" 
mode="${testng.mode}" outputdir="${build.test.results.dir}" 
suitename="andunix-core" testname="TestNG tests" workingDir="${work.dir}">
+                <testng classfilesetref="test.set" 
failureProperty="tests.failed" 
listeners="org.testng.reporters.VerboseReporter" 
methods="${testng.methods.arg}" mode="${testng.mode}" 
outputdir="${build.test.results.dir}" suitename="andunix-core" 
testname="TestNG tests" workingDir="${work.dir}">
                     <xmlfileset dir="${build.test.classes.dir}" 
includes="@{testincludes}"/>
                     <propertyset>
                         <propertyref prefix="test-sys-prop."/>
@@ -862,8 +859,8 @@
                     </chainedmapper>
                 </pathconvert>
                 <taskdef 
classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" 
classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
-                <copylibs compress="${jar.compress}" index="${jar.index}" 
indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" 
manifest="@{manifest}" rebase="${copylibs.rebase}" 
runtimeclasspath="${run.classpath.without.build.classes.dir}">
-                    <fileset dir="${build.classes.dir}"/>
+                <copylibs compress="${jar.compress}" 
excludeFromCopy="${copylibs.excludes}" index="${jar.index}" 
indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" 
manifest="@{manifest}" rebase="${copylibs.rebase}" 
runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                    <fileset dir="${build.classes.dir}" 
excludes="${dist.archive.excludes}"/>
                     <manifest>
                         <attribute name="Class-Path" 
value="${jar.classpath}"/>
                         <customize/>
@@ -875,7 +872,7 @@
     <target name="-init-presetdef-jar">
         <presetdef name="jar" 
uri="http://www.netbeans.org/ns/j2se-project/1";>
             <jar compress="${jar.compress}" index="${jar.index}" 
jarfile="${dist.jar}">
-                <j2seproject1:fileset dir="${build.classes.dir}"/>
+                <j2seproject1:fileset dir="${build.classes.dir}" 
excludes="${dist.archive.excludes}"/>
             </jar>
         </presetdef>
     </target>
@@ -991,41 +988,25 @@
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" 
name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
-        <j2seproject1:jar/>
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" 
if="do.archive+manifest.available" name="-do-jar-with-manifest" 
unless="manifest.available+main.class-mkdist.available">
-        <j2seproject1:jar manifest="${manifest.file}"/>
-    </target>
-    <target depends="init,compile,-pre-pre-jar,-pre-jar" 
if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" 
unless="manifest.available+main.class+mkdist.available">
-        <j2seproject1:jar manifest="${manifest.file}">
-            <j2seproject1:manifest>
-                <j2seproject1:attribute name="Main-Class" 
value="${main.class}"/>
-            </j2seproject1:manifest>
-        </j2seproject1:jar>
-        <echo level="info">To run this application from the command line 
without Ant, try:</echo>
-        <property location="${build.classes.dir}" 
name="build.classes.dir.resolved"/>
-        <property location="${dist.jar}" name="dist.jar.resolved"/>
-        <pathconvert property="run.classpath.with.dist.jar">
-            <path path="${run.classpath}"/>
-            <map from="${build.classes.dir.resolved}" 
to="${dist.jar.resolved}"/>
-        </pathconvert>
-        <echo level="info">java -cp "${run.classpath.with.dist.jar}" 
${main.class}</echo>
-    </target>
-    <target depends="init" if="do.archive" 
name="-do-jar-with-libraries-create-manifest" unless="manifest.available">
+    <target depends="init" if="do.archive" name="-do-jar-create-manifest" 
unless="manifest.available">
         <tempfile deleteonexit="true" destdir="${build.dir}" 
property="tmp.manifest.file"/>
         <touch file="${tmp.manifest.file}" verbose="false"/>
     </target>
-    <target depends="init" if="do.archive+manifest.available" 
name="-do-jar-with-libraries-copy-manifest">
+    <target depends="init" if="do.archive+manifest.available" 
name="-do-jar-copy-manifest">
         <tempfile deleteonexit="true" destdir="${build.dir}" 
property="tmp.manifest.file"/>
         <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
     </target>
-    <target 
depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest"
 if="do.archive+main.class.available" name="-do-jar-with-libraries-set-main">
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" 
if="do.archive+main.class.available" name="-do-jar-set-mainclass">
         <manifest file="${tmp.manifest.file}" mode="update">
             <attribute name="Main-Class" value="${main.class}"/>
         </manifest>
     </target>
-    <target 
depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest"
 if="do.archive+splashscreen.available" 
name="-do-jar-with-libraries-set-splashscreen">
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" 
if="do.archive+profile.available" name="-do-jar-set-profile">
+        <manifest file="${tmp.manifest.file}" mode="update">
+            <attribute name="Profile" value="${javac.profile}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" 
if="do.archive+splashscreen.available" name="-do-jar-set-splashscreen">
         <basename file="${application.splash}" 
property="splashscreen.basename"/>
         <mkdir dir="${build.classes.dir}/META-INF"/>
         <copy failonerror="false" file="${application.splash}" 
todir="${build.classes.dir}/META-INF"/>
@@ -1033,23 +1014,41 @@
             <attribute name="SplashScreen-Image" 
value="META-INF/${splashscreen.basename}"/>
         </manifest>
     </target>
-    <target 
depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen"
 if="do.mkdist" name="-do-jar-with-libraries-pack">
+    <target 
depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen"
 if="do.mkdist" name="-do-jar-copylibs">
         <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
         <echo level="info">To run this application from the command line 
without Ant, try:</echo>
         <property location="${dist.jar}" name="dist.jar.resolved"/>
         <echo level="info">java -jar "${dist.jar.resolved}"</echo>
     </target>
-    <target depends="-do-jar-with-libraries-pack" if="do.archive" 
name="-do-jar-with-libraries-delete-manifest">
+    <target 
depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen"
 if="do.archive" name="-do-jar-jar" unless="do.mkdist">
+        <j2seproject1:jar manifest="${tmp.manifest.file}"/>
+        <property location="${build.classes.dir}" 
name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" 
to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <condition else="" property="jar.usage.message" value="To run this 
application from the command line without Ant, 
try:${line.separator}${platform.java} -cp ${run.classpath.with.dist.jar} 
${main.class}">
+            <isset property="main.class.available"/>
+        </condition>
+        <condition else="debug" property="jar.usage.level" value="info">
+            <isset property="main.class.available"/>
+        </condition>
+        <echo level="${jar.usage.level}" message="${jar.usage.message}"/>
+    </target>
+    <target depends="-do-jar-copylibs" if="do.archive" 
name="-do-jar-delete-manifest">
         <delete>
             <fileset file="${tmp.manifest.file}"/>
         </delete>
     </target>
-    <target 
depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen,-do-jar-with-libraries-pack,-do-jar-with-libraries-delete-manifest"
 name="-do-jar-with-libraries"/>
+    <target 
depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-jar,-do-jar-delete-manifest"
 name="-do-jar-without-libraries"/>
+    <target 
depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-copylibs,-do-jar-delete-manifest"
 name="-do-jar-with-libraries"/>
     <target name="-post-jar">
         <!-- Empty placeholder for easier customization. -->
         <!-- You can override this target in the ../build.xml file. -->
     </target>
-    <target 
depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar"
 description="Build JAR." name="jar"/>
+    <target 
depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar"
 name="-do-jar"/>
+    <target depends="init,compile,-pre-jar,-do-jar,-post-jar" 
description="Build JAR." name="jar"/>
     <!--
                 =================
                 EXECUTION SECTION
@@ -1228,11 +1227,14 @@
                 </not>
             </and>
         </condition>
-        <javadoc additionalparam="${javadoc.additionalparam}" 
author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" 
docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" 
noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" 
notree="${javadoc.notree}" private="${javadoc.private}" 
source="${javac.source}" splitindex="${javadoc.splitindex}" 
use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" 
windowtitle="${javadoc.windowtitle}">
+        <condition else="" property="bug5101868workaround" value="*.java">
+            <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
+        </condition>
+        <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} 
${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" 
destdir="${dist.javadoc.dir}" docencoding="UTF-8" 
encoding="${javadoc.encoding.used}" failonerror="true" 
noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" 
notree="${javadoc.notree}" private="${javadoc.private}" 
source="${javac.source}" splitindex="${javadoc.splitindex}" 
use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" 
windowtitle="${javadoc.windowtitle}">
             <classpath>
                 <path path="${javac.classpath}"/>
             </classpath>
-            <fileset dir="${src.dir}" excludes="*.java,${excludes}" 
includes="${includes}">
+            <fileset dir="${src.dir}" 
excludes="${bug5101868workaround},${excludes}" includes="${includes}">
                 <filename name="**/*.java"/>
             </fileset>
             <fileset dir="${build.generated.sources.dir}" 
erroronmissingdir="false">
@@ -1306,7 +1308,7 @@
         <mkdir dir="${build.test.results.dir}"/>
     </target>
     <target depends="init,compile-test,-pre-test-run" if="have.tests" 
name="-do-test-run">
-        <j2seproject3:test testincludes="**/*Test.java"/>
+        <j2seproject3:test includes="${includes}" 
testincludes="**/*Test.java"/>
     </target>
     <target depends="init,compile-test,-pre-test-run,-do-test-run" 
if="have.tests" name="-post-test-run">
         <fail if="tests.failed" unless="ignore.failing.tests">Some tests 
failed; see details above.</fail>

diff -r 4c43bcc26b06 -r b4f2f3be8484 nbproject/genfiles.properties
--- a/nbproject/genfiles.properties     Thu Aug 01 23:42:04 2013 +0200
+++ b/nbproject/genfiles.properties     Tue Mar 25 15:20:07 2014 +0100
@@ -1,8 +1,8 @@
 build.xml.data.CRC32=008e9f8b
-build.xml.script.CRC32=841bba06
-build.xml.stylesheet.CRC32=28e38971@1.53.1.46
+build.xml.script.CRC32=bfbc6012
+build.xml.stylesheet.CRC32=8064a381@1.74.1.48
 # This file is used by a NetBeans-based IDE to track changes in generated 
files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never 
regenerate such files for you.
 nbproject/build-impl.xml.data.CRC32=008e9f8b
-nbproject/build-impl.xml.script.CRC32=a8cf75f1
-nbproject/build-impl.xml.stylesheet.CRC32=c6d2a60f@1.56.1.46
+nbproject/build-impl.xml.script.CRC32=bb492871
+nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.74.1.48

diff -r 4c43bcc26b06 -r b4f2f3be8484 nbproject/project.properties
--- a/nbproject/project.properties      Thu Aug 01 23:42:04 2013 +0200
+++ b/nbproject/project.properties      Tue Mar 25 15:20:07 2014 +0100
@@ -28,13 +28,11 @@
 endorsed.classpath=
 excludes=
 file.reference.commons-logging-1.1.1.jar=lib/commons-logging-1.1.1.jar
-file.reference.imgscalr-lib-4.2.jar=lib/imgscalr-lib-4.2.jar
 file.reference.metadata-extractor-2.6.4.jar=lib/metadata-extractor-2.6.4.jar
 includes=**
 jar.compress=false
 javac.classpath=\
     ${file.reference.commons-logging-1.1.1.jar}:\
-    ${file.reference.imgscalr-lib-4.2.jar}:\
     ${file.reference.metadata-extracto
[truncated due to length]



[andunix~andunix-core:26] In XmlNode.getChildElement(String name) switch from iterating over all ch

andunix 05/11/2014
 
 
Close
loading
Please Confirm
Close