diff --git a/org.eclipse.dawnsci.feature/feature.xml b/org.eclipse.dawnsci.feature/feature.xml
index dd7a57a4..a00b39e2 100644
--- a/org.eclipse.dawnsci.feature/feature.xml
+++ b/org.eclipse.dawnsci.feature/feature.xml
@@ -1,133 +1,140 @@
-
-
-
-
- [Enter Feature Description here.]
-
-
-
- [Enter Copyright Description here.]
-
-
-
- [Enter License Description here.]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ [Enter Feature Description here.]
+
+
+
+ [Enter Copyright Description here.]
+
+
+
+ [Enter License Description here.]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.eclipse.dawnsci.hdf.object.test/.classpath b/org.eclipse.dawnsci.hdf.object.test/.classpath
new file mode 100644
index 00000000..eca7bdba
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/org.eclipse.dawnsci.hdf.object.test/.gitignore b/org.eclipse.dawnsci.hdf.object.test/.gitignore
new file mode 100644
index 00000000..4df297aa
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/.gitignore
@@ -0,0 +1,44 @@
+### Temporary files ###
+*.bak
+*.swp
+*.tmp
+*.*~
+
+### Java ###
+*.class
+hs_err_pid*
+derby.log
+
+### Python / Jython ###
+__pycache__/
+*.py[cod]
+jythonCache/
+cachedir/
+
+### Build output ###
+.springBeans
+/bin/
+/classes/
+/src/corba/
+
+### JUnit testing ###
+/activemq-data
+/test-reports
+/test-scratch
+
+### Security files ###
+*.ppk
+*ssh.key
+id_rsa
+password
+passwords
+
+### Various OS, etc. files ###
+*.lnk
+.DS_Store
+[Dd]esktop.ini
+.nfs[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]*
+.svn/
+Thumbs.db
+$RECYCLE.BIN/
+.Trash-*
diff --git a/org.eclipse.dawnsci.hdf.object.test/.project b/org.eclipse.dawnsci.hdf.object.test/.project
new file mode 100644
index 00000000..1a3d5bf1
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/.project
@@ -0,0 +1,28 @@
+
+
+ org.eclipse.dawnsci.hdf.object.test
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/org.eclipse.dawnsci.hdf.object.test/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.dawnsci.hdf.object.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..0c68a61d
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.dawnsci.hdf.object.test/JUnit-org.eclipse.dawnsci.hdf.object.test.launch b/org.eclipse.dawnsci.hdf.object.test/JUnit-org.eclipse.dawnsci.hdf.object.test.launch
new file mode 100644
index 00000000..24013506
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/JUnit-org.eclipse.dawnsci.hdf.object.test.launch
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.eclipse.dawnsci.hdf.object.test/License.htm b/org.eclipse.dawnsci.hdf.object.test/License.htm
new file mode 100644
index 00000000..9c0feb7a
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/License.htm
@@ -0,0 +1,259 @@
+
+
+
+
+Eclipse Public License - Version 1.0
+
+
+
+
+
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes
+the Program.
+
+"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance
+with this Agreement.
+
+"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.
+
+b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.
+
+c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this
+Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and
+
+iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each
+copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), 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 OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.
+
+
+
+
\ No newline at end of file
diff --git a/org.eclipse.dawnsci.hdf.object.test/META-INF/MANIFEST.MF b/org.eclipse.dawnsci.hdf.object.test/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..48431fe0
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: DAWNSci HDF Object Test
+Bundle-SymbolicName: org.eclipse.dawnsci.hdf.object.test
+Bundle-Version: 1.2.0.qualifier
+Bundle-Vendor: Diamond Light Source
+Fragment-Host: org.eclipse.dawnsci.hdf.object;bundle-version="1.3.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.junit
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.dawnsci.hdf.object.test/build.properties b/org.eclipse.dawnsci.hdf.object.test/build.properties
new file mode 100644
index 00000000..8c210215
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ testfiles/
diff --git a/org.eclipse.dawnsci.hdf.object.test/pom.xml b/org.eclipse.dawnsci.hdf.object.test/pom.xml
new file mode 100644
index 00000000..bd85de6f
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+ org.eclipse.dawnsci
+ org.eclipse
+ 1.0.0-SNAPSHOT
+
+ org.eclipse
+ org.eclipse.dawnsci.hdf.object.test
+ 1.2.0-SNAPSHOT
+ eclipse-plugin
+
+
+ bin
+
+
+
diff --git a/org.eclipse.dawnsci.hdf.object.test/releng.ant b/org.eclipse.dawnsci.hdf.object.test/releng.ant
new file mode 100644
index 00000000..4dccabf3
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/releng.ant
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/AbstractThreadTestBase.java b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/AbstractThreadTestBase.java
new file mode 100644
index 00000000..41b5e4cf
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/AbstractThreadTestBase.java
@@ -0,0 +1,90 @@
+/*-
+ *******************************************************************************
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Gerring - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+
+package org.eclipse.dawnsci.hdf.object;
+
+/**
+ * Class to extend, does not have any tests itself.
+ */
+public abstract class AbstractThreadTestBase {
+
+ public void testInTestThread() throws Throwable {
+ doTestOfDataSet(0);
+
+ System.out.println("One thread passed.");
+ }
+
+ protected abstract void doTestOfDataSet(int index) throws Throwable;
+
+ private Throwable exception;
+
+ /**
+ * Test shows that nexus API cannot handle threads.
+ *
+ * @throws Exception
+ */
+ public void testWithTenThreads() throws Throwable {
+
+ testWithNThreads(10);
+ }
+
+ /**
+ * Start threads that each run {@link #doTestOfDataSet(int)}
+ *
+ * @param threadNumber
+ * @throws Throwable
+ */
+ protected void testWithNThreads(int threadNumber) throws Throwable {
+
+ exception = null;
+
+ final boolean[] done = new boolean[threadNumber];
+ final Thread[] threads = new Thread[threadNumber];
+ for (int i = 0; i < threads.length; i++) {
+ final int index = i;
+ threads[i] = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ done[index] = false;
+ try {
+ doTestOfDataSet(index);
+ } catch (Throwable e) {
+ exception = e;
+ } finally {
+ done[index] = true;
+ }
+ }
+ });
+ }
+
+ for (int i = 0; i < threads.length; i++) {
+ threads[i].start();
+ }
+
+ // Wait for them to do their thing.
+ WHILE_LOOP: while (true) {
+ for (boolean d : done) {
+ if (!d) {
+ Thread.sleep(1000);
+ continue WHILE_LOOP;
+ }
+ }
+ break;
+ }
+
+ if (exception != null)
+ throw exception;
+
+ System.out.println(threadNumber + " threads passed.");
+ }
+
+}
diff --git a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/Hdf5Test.java b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/Hdf5Test.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/Hdf5Test.java
rename to org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/Hdf5Test.java
index d8b99698..1e9df884 100644
--- a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/Hdf5Test.java
+++ b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/Hdf5Test.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/Hdf5ThreadTest.java b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/Hdf5ThreadTest.java
similarity index 95%
rename from org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/Hdf5ThreadTest.java
rename to org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/Hdf5ThreadTest.java
index d35d66be..5e74afea 100644
--- a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/Hdf5ThreadTest.java
+++ b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/Hdf5ThreadTest.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -13,7 +13,6 @@
import java.io.File;
-import org.eclipse.dawnsci.hdf5.AbstractThreadTestBase;
import org.junit.After;
import org.junit.Test;
diff --git a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtilsTest.java b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtilsTest.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtilsTest.java
rename to org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtilsTest.java
index 25bdbc4b..b87d3c8f 100644
--- a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtilsTest.java
+++ b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtilsTest.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/ReadThreadTest.java b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/ReadThreadTest.java
similarity index 96%
rename from org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/ReadThreadTest.java
rename to org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/ReadThreadTest.java
index a5a07d3a..7cb79ae9 100644
--- a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf/object/ReadThreadTest.java
+++ b/org.eclipse.dawnsci.hdf.object.test/src/org/eclipse/dawnsci/hdf/object/ReadThreadTest.java
@@ -1,5 +1,5 @@
/*-
- * Copyright 2015 Diamond Light Source Ltd.
+ * Copyright 2015, 2017 Diamond Light Source Ltd.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -11,7 +11,6 @@
import java.util.Arrays;
-import org.eclipse.dawnsci.hdf5.AbstractThreadTestBase;
import org.eclipse.dawnsci.hdf5.HDF5File;
import org.eclipse.dawnsci.hdf5.HDF5FileFactory;
import org.eclipse.dawnsci.hdf5.HDF5Utils;
diff --git a/org.eclipse.dawnsci.hdf5.test/testfiles/FeKedge_1_15.nxs b/org.eclipse.dawnsci.hdf.object.test/testfiles/FeKedge_1_15.nxs
similarity index 100%
rename from org.eclipse.dawnsci.hdf5.test/testfiles/FeKedge_1_15.nxs
rename to org.eclipse.dawnsci.hdf.object.test/testfiles/FeKedge_1_15.nxs
diff --git a/org.eclipse.dawnsci.hdf.object/.classpath b/org.eclipse.dawnsci.hdf.object/.classpath
new file mode 100644
index 00000000..eca7bdba
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/org.eclipse.dawnsci.hdf.object/.gitignore b/org.eclipse.dawnsci.hdf.object/.gitignore
new file mode 100644
index 00000000..4df297aa
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/.gitignore
@@ -0,0 +1,44 @@
+### Temporary files ###
+*.bak
+*.swp
+*.tmp
+*.*~
+
+### Java ###
+*.class
+hs_err_pid*
+derby.log
+
+### Python / Jython ###
+__pycache__/
+*.py[cod]
+jythonCache/
+cachedir/
+
+### Build output ###
+.springBeans
+/bin/
+/classes/
+/src/corba/
+
+### JUnit testing ###
+/activemq-data
+/test-reports
+/test-scratch
+
+### Security files ###
+*.ppk
+*ssh.key
+id_rsa
+password
+passwords
+
+### Various OS, etc. files ###
+*.lnk
+.DS_Store
+[Dd]esktop.ini
+.nfs[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]*
+.svn/
+Thumbs.db
+$RECYCLE.BIN/
+.Trash-*
diff --git a/org.eclipse.dawnsci.hdf.object/.project b/org.eclipse.dawnsci.hdf.object/.project
new file mode 100644
index 00000000..cc1022e5
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/.project
@@ -0,0 +1,28 @@
+
+
+ org.eclipse.dawnsci.hdf.object
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/org.eclipse.dawnsci.hdf.object/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.dawnsci.hdf.object/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..0c68a61d
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.dawnsci.hdf.object/License.htm b/org.eclipse.dawnsci.hdf.object/License.htm
new file mode 100644
index 00000000..9c0feb7a
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/License.htm
@@ -0,0 +1,259 @@
+
+
+
+
+Eclipse Public License - Version 1.0
+
+
+
+
+
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes
+the Program.
+
+"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance
+with this Agreement.
+
+"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.
+
+b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.
+
+c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this
+Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and
+
+iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each
+copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), 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 OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.
+
+
+
+
\ No newline at end of file
diff --git a/org.eclipse.dawnsci.hdf.object/META-INF/MANIFEST.MF b/org.eclipse.dawnsci.hdf.object/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..2a0bdb08
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Dawnsci HDF Object
+Bundle-SymbolicName: org.eclipse.dawnsci.hdf.object;singleton:=true
+Bundle-Version: 1.3.0.qualifier
+Bundle-Vendor: Diamond Light Source
+Require-Bundle: hdf.hdf5lib;bundle-version="1.10.1",
+ hdf.object;bundle-version="2.9.1",
+ org.eclipse.january;bundle-version="2.0.0",
+ org.eclipse.dawnsci.analysis.api;bundle-version="1.0.0",
+ org.eclipse.dawnsci.analysis.dataset;bundle-version="1.0.0",
+ org.eclipse.dawnsci.analysis.tree;bundle-version="1.0.0",
+ org.eclipse.dawnsci.nexus;bundle-version="1.0.0",
+ org.eclipse.osgi;bundle-version="3.8.2",
+ org.eclipse.osgi.services;bundle-version="3.3.100",
+ org.eclipse.dawnsci.hdf5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Export-Package: org.eclipse.dawnsci.hdf.object,
+ org.eclipse.dawnsci.hdf.object.nexus,
+ org.eclipse.dawnsci.hdf.object.operation
+Import-Package: org.slf4j;version="[1.7.2,2.0.0)"
+Service-Component: OSGI-INF/*.xml
diff --git a/org.eclipse.dawnsci.hdf5/OSGI-INF/hierarchicalFileExecutionVisitor.xml b/org.eclipse.dawnsci.hdf.object/OSGI-INF/hierarchicalFileExecutionVisitor.xml
similarity index 100%
rename from org.eclipse.dawnsci.hdf5/OSGI-INF/hierarchicalFileExecutionVisitor.xml
rename to org.eclipse.dawnsci.hdf.object/OSGI-INF/hierarchicalFileExecutionVisitor.xml
diff --git a/org.eclipse.dawnsci.hdf.object/buckminster.cspex b/org.eclipse.dawnsci.hdf.object/buckminster.cspex
new file mode 100644
index 00000000..b489e3be
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/buckminster.cspex
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.eclipse.dawnsci.hdf.object/build.properties b/org.eclipse.dawnsci.hdf.object/build.properties
new file mode 100644
index 00000000..c58ea217
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/
diff --git a/org.eclipse.dawnsci.hdf.object/pom.xml b/org.eclipse.dawnsci.hdf.object/pom.xml
new file mode 100644
index 00000000..2455344e
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf.object/pom.xml
@@ -0,0 +1,19 @@
+
+
+ 4.0.0
+
+ org.eclipse.dawnsci
+ org.eclipse
+ 1.0.0-SNAPSHOT
+
+ org.eclipse
+ org.eclipse.dawnsci.hdf.object
+ 1.3.0-SNAPSHOT
+ eclipse-plugin
+
+
+ bin
+
+
\ No newline at end of file
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/H5Utils.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/H5Utils.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/H5Utils.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/H5Utils.java
index b9dfc91d..3ef73053 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/H5Utils.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/H5Utils.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFactory.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFactory.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFactory.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFactory.java
index e268fafd..ac7fe95f 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFactory.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFactory.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFile.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFile.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFile.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFile.java
index 6f5646a7..62e38298 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFile.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFile.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFileUtils.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFileUtils.java
similarity index 97%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFileUtils.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFileUtils.java
index 76ffb119..6d066d6d 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFileUtils.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataFileUtils.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtils.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtils.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtils.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtils.java
index 4686b2d6..7c3bd303 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtils.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalDataUtils.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalInfo.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalInfo.java
similarity index 98%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalInfo.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalInfo.java
index ecd17aa4..96956953 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/HierarchicalInfo.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/HierarchicalInfo.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/IFileFormatDataFile.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/IFileFormatDataFile.java
similarity index 94%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/IFileFormatDataFile.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/IFileFormatDataFile.java
index 337647d9..17df8c06 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/IFileFormatDataFile.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/IFileFormatDataFile.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/IHierarchicalDataFile.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/IHierarchicalDataFile.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/IHierarchicalDataFile.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/IHierarchicalDataFile.java
index 897f170a..58e5300f 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/IHierarchicalDataFile.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/IHierarchicalDataFile.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/Nexus.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/Nexus.java
similarity index 95%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/Nexus.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/Nexus.java
index 287f4fe9..289552cf 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/Nexus.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/Nexus.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/IFindInNexus.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/IFindInNexus.java
similarity index 94%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/IFindInNexus.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/IFindInNexus.java
index 8af8db33..09c1b37b 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/IFindInNexus.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/IFindInNexus.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindDatasetByName.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindDatasetByName.java
similarity index 95%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindDatasetByName.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindDatasetByName.java
index d6533522..580a4802 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindDatasetByName.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindDatasetByName.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindGroupByAttributeText.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindGroupByAttributeText.java
similarity index 96%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindGroupByAttributeText.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindGroupByAttributeText.java
index 7058a887..f4333820 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindGroupByAttributeText.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusFindGroupByAttributeText.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusUtils.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusUtils.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusUtils.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusUtils.java
index 09d67ebd..0abc50dd 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/nexus/NexusUtils.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/nexus/NexusUtils.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/operation/HierarchicalFileExecutionVisitor.java b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/operation/HierarchicalFileExecutionVisitor.java
similarity index 99%
rename from org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/operation/HierarchicalFileExecutionVisitor.java
rename to org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/operation/HierarchicalFileExecutionVisitor.java
index 2ff441f2..2dfd5837 100644
--- a/org.eclipse.dawnsci.hdf5/src/org/eclipse/dawnsci/hdf/object/operation/HierarchicalFileExecutionVisitor.java
+++ b/org.eclipse.dawnsci.hdf.object/src/org/eclipse/dawnsci/hdf/object/operation/HierarchicalFileExecutionVisitor.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
diff --git a/org.eclipse.dawnsci.hdf5.model/META-INF/MANIFEST.MF b/org.eclipse.dawnsci.hdf5.model/META-INF/MANIFEST.MF
index 0eb16b1f..6d047750 100644
--- a/org.eclipse.dawnsci.hdf5.model/META-INF/MANIFEST.MF
+++ b/org.eclipse.dawnsci.hdf5.model/META-INF/MANIFEST.MF
@@ -10,4 +10,5 @@ Export-Package: org.eclipse.dawnsci.hdf5.model,
Require-Bundle: hdf.object;bundle-version="2.9.0",
org.eclipse.core.runtime;bundle-version="3.8.0",
org.eclipse.core.resources;bundle-version="3.8.1",
- org.eclipse.dawnsci.hdf5;bundle-version="1.3.0"
+ org.eclipse.dawnsci.hdf5;bundle-version="1.3.0",
+ org.eclipse.dawnsci.hdf.object
diff --git a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/AbstractThreadTestBase.java b/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/AbstractThreadTestBase.java
index d7fe93c3..d1abd372 100644
--- a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/AbstractThreadTestBase.java
+++ b/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/AbstractThreadTestBase.java
@@ -1,6 +1,6 @@
/*-
*******************************************************************************
- * Copyright (c) 2011, 2014 Diamond Light Source Ltd.
+ * Copyright (c) 2011, 2017 Diamond Light Source Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
*
* Contributors:
* Matthew Gerring - initial API and implementation and/or initial documentation
- *******************************************************************************/
+ *******************************************************************************/
package org.eclipse.dawnsci.hdf5;
@@ -16,76 +16,75 @@
* Class to extend, does not have any tests itself.
*/
public abstract class AbstractThreadTestBase {
-
- public void testInTestThread() throws Throwable{
+ public void testInTestThread() throws Throwable {
doTestOfDataSet(0);
-
+
System.out.println("One thread passed.");
}
-
+
protected abstract void doTestOfDataSet(int index) throws Throwable;
private Throwable exception;
-
+
/**
- * Test shows that nexus API cannot handle threads.
+ * Test shows that nexus API cannot handle threads.
*
* @throws Exception
*/
public void testWithTenThreads() throws Throwable {
-
+
testWithNThreads(10);
}
/**
* Start threads that each run {@link #doTestOfDataSet(int)}
+ *
* @param threadNumber
* @throws Throwable
*/
protected void testWithNThreads(int threadNumber) throws Throwable {
-
- exception = null;
-
- final boolean[] done = new boolean[threadNumber];
- final Thread[] threads = new Thread[threadNumber];
- for (int i = 0; i < threads.length; i++) {
- final int index = i;
- threads[i] = new Thread(new Runnable() {
- @Override
- public void run() {
- done[index] = false;
- try {
- doTestOfDataSet(index);
+
+ exception = null;
+
+ final boolean[] done = new boolean[threadNumber];
+ final Thread[] threads = new Thread[threadNumber];
+ for (int i = 0; i < threads.length; i++) {
+ final int index = i;
+ threads[i] = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ done[index] = false;
+ try {
+ doTestOfDataSet(index);
} catch (Throwable e) {
exception = e;
} finally {
- done[index] = true;
+ done[index] = true;
}
- }
- });
+ }
+ });
}
-
- for (int i = 0; i < threads.length; i++) {
- threads[i].start();
- }
-
- // Wait for them to do their thing.
- WHILE_LOOP: while(true) {
- for (boolean d : done) {
+
+ for (int i = 0; i < threads.length; i++) {
+ threads[i].start();
+ }
+
+ // Wait for them to do their thing.
+ WHILE_LOOP: while (true) {
+ for (boolean d : done) {
if (!d) {
Thread.sleep(1000);
continue WHILE_LOOP;
}
- }
- break;
- }
-
- if (exception!=null) throw exception;
-
-
- System.out.println(threadNumber+" threads passed.");
- }
+ }
+ break;
+ }
+
+ if (exception != null)
+ throw exception;
+ System.out.println(threadNumber + " threads passed.");
+ }
}
diff --git a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/ReadThreadTest.java b/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/ReadThreadTest.java
new file mode 100644
index 00000000..53b8ab62
--- /dev/null
+++ b/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/ReadThreadTest.java
@@ -0,0 +1,87 @@
+/*-
+ * Copyright 2015, 2017 Diamond Light Source Ltd.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.eclipse.dawnsci.hdf5;
+
+import java.util.Arrays;
+
+import org.eclipse.dawnsci.hdf5.HDF5File;
+import org.eclipse.dawnsci.hdf5.HDF5FileFactory;
+import org.eclipse.dawnsci.hdf5.HDF5Utils;
+import org.eclipse.january.dataset.Dataset;
+import org.eclipse.january.dataset.DatasetFactory;
+import org.eclipse.january.dataset.PositionIterator;
+import org.eclipse.january.dataset.ShapeUtils;
+import org.junit.Test;
+
+public class ReadThreadTest extends AbstractThreadTestBase {
+ String file = "test-scratch/readthread.h5";
+ String group = "/entry/group1/group2";
+ int[] shape = new int[] {512, 128, 1024};
+ int[] chunk = new int[] {1, 128, 1024};
+
+ @Test
+ public void testSingleThreadRead() throws Throwable {
+ prepareForTest(file, 1);
+
+ doTestOfDataSet(0);
+ }
+
+ @Test
+ public void testTwoThreadsRead() throws Throwable {
+ prepareForTest(file, 2);
+
+ testWithNThreads(2);
+ }
+
+ @Test
+ public void testEightThreadsRead() throws Throwable {
+ prepareForTest(file, 8);
+
+ testWithNThreads(8);
+ }
+
+ @Override
+ protected void doTestOfDataSet(int index) throws Throwable {
+ String dataName = "data" + index;
+
+ PositionIterator iter = new PositionIterator(shape, 1, 2);
+ int[] start = iter.getPos();
+ int[] stop = shape.clone();
+ int[] step = new int[shape.length];
+ Arrays.fill(step, 1);
+ int[] nshape = chunk.clone();
+ long now;
+
+ iter.reset();
+ now = -System.nanoTime();
+ while (iter.hasNext()) {
+ stop[0] = start[0] + 1;
+ HDF5Utils.loadDataset(file, dataName, start, nshape, step, Dataset.FLOAT64, 1, false);
+ }
+ HDF5FileFactory.releaseFile(file);
+ now += System.nanoTime();
+
+ System.err.println("Thd for " + dataName + " took " + now*1e-9 + "s");
+ }
+
+ private void prepareForTest(String file, int nthreads) throws Exception {
+ HDF5FileFactory.deleteFile(file);
+
+ HDF5File f = HDF5FileFactory.acquireFileAsNew(file);
+ int size = ShapeUtils.calcSize(shape);
+ Dataset data = DatasetFactory.createRange(size, Dataset.FLOAT64);
+ data.setShape(shape);
+
+ for (int i = 0; i < nthreads; i++) {
+ HDF5Utils.writeDataset(f, "data" + i, data);
+ }
+ HDF5FileFactory.releaseFile(file);
+ }
+}
diff --git a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/WriteThreadTest.java b/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/WriteThreadTest.java
index 238efb79..65fab170 100644
--- a/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/WriteThreadTest.java
+++ b/org.eclipse.dawnsci.hdf5.test/src/org/eclipse/dawnsci/hdf5/WriteThreadTest.java
@@ -1,5 +1,5 @@
/*-
- * Copyright 2015 Diamond Light Source Ltd.
+ * Copyright 2015, 2017 Diamond Light Source Ltd.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -10,6 +10,8 @@
package org.eclipse.dawnsci.hdf5;
import org.eclipse.dawnsci.analysis.api.io.ScanFileHolderException;
+import org.eclipse.dawnsci.hdf5.HDF5FileFactory;
+import org.eclipse.dawnsci.hdf5.HDF5Utils;
import org.eclipse.january.dataset.Dataset;
import org.eclipse.january.dataset.DatasetFactory;
import org.eclipse.january.dataset.PositionIterator;
diff --git a/org.eclipse.dawnsci.hdf5/META-INF/MANIFEST.MF b/org.eclipse.dawnsci.hdf5/META-INF/MANIFEST.MF
index fd2f04ce..63da0125 100644
--- a/org.eclipse.dawnsci.hdf5/META-INF/MANIFEST.MF
+++ b/org.eclipse.dawnsci.hdf5/META-INF/MANIFEST.MF
@@ -16,10 +16,7 @@ Require-Bundle: hdf.hdf5lib;bundle-version="1.10.1",
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
-Export-Package: org.eclipse.dawnsci.hdf.object,
- org.eclipse.dawnsci.hdf.object.nexus,
- org.eclipse.dawnsci.hdf.object.operation,
- org.eclipse.dawnsci.hdf5,
+Export-Package: org.eclipse.dawnsci.hdf5,
org.eclipse.dawnsci.hdf5.nexus
Import-Package: org.slf4j;version="[1.7.2,2.0.0)"
Service-Component: OSGI-INF/*.xml
diff --git a/org.eclipse.dawnsci.slicing.api/META-INF/MANIFEST.MF b/org.eclipse.dawnsci.slicing.api/META-INF/MANIFEST.MF
index 60ed1ecc..719dbe77 100644
--- a/org.eclipse.dawnsci.slicing.api/META-INF/MANIFEST.MF
+++ b/org.eclipse.dawnsci.slicing.api/META-INF/MANIFEST.MF
@@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.dawnsci.analysis.dataset;bundle-version="1.0.0",
org.eclipse.dawnsci.hdf5;bundle-version="1.2.0",
org.apache.commons.beanutils,
- org.eclipse.richbeans.annot;bundle-version="1.0.0"
+ org.eclipse.richbeans.annot;bundle-version="1.0.0",
+ org.eclipse.dawnsci.hdf.object
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.dawnsci.slicing.api,
diff --git a/pom.xml b/pom.xml
index 90bfae37..5670bf46 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,6 +32,8 @@
org.eclipse.dawnsci.hdf5.model
org.eclipse.dawnsci.hdf5.model.test
org.eclipse.dawnsci.hdf5.test
+ org.eclipse.dawnsci.hdf.object
+ org.eclipse.dawnsci.hdf.object.test
org.eclipse.dawnsci.json
org.eclipse.dawnsci.json.test
org.eclipse.dawnsci.macro.api