COMPRESS-341 listing of 7z archives
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 809aa08..d9929f6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -44,6 +44,10 @@
   <body>
     <release version="1.11" date="not released, yet"
              description="Release 1.11">
+      <action issue="COMPRESS-341" type="add" date="2016-03-20">
+        New method SevenZFile.getEntries can be used to list the
+        contents of a 7z archive.
+      </action>
       <action issue="COMPRESS-343" type="fix" date="2016-03-17"
               due-to="Rene Preissel">
         Native Memory Leak in Sevenz-DeflateDecoder.
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
index 4a86dd2..3ea9369 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
@@ -157,6 +157,23 @@
         return entry;
     }
     
+    /**
+     * Returns meta-data of all archive entries.
+     *
+     * <p>This method only provides meta-data, the entries can not be
+     * used to read the contents, you still need to process all
+     * entries in order using {@link #getNextEntry} for that.</p>
+     *
+     * <p>The content methods are only available for entries that have
+     * already been reached via {@link #getNextEntry}.</p>
+     *
+     * @return meta-data of all archive entries.
+     * @since 1.11
+     */
+    public Iterable<SevenZArchiveEntry> getEntries() {
+        return Arrays.asList(archive.files);
+    }
+    
     private Archive readHeaders(byte[] password) throws IOException {
         final byte[] signature = new byte[6];
         file.readFully(signature);
diff --git a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
index a57d4cb..7ed4f11 100644
--- a/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
+++ b/src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
@@ -25,6 +25,7 @@
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Random;
 
@@ -243,6 +244,22 @@
         }
     }
 
+    @Test
+    public void getEntriesOfUnarchiveTest() throws IOException {
+        SevenZFile sevenZFile = new SevenZFile(getFile("bla.7z"));
+        try {
+            Iterable<SevenZArchiveEntry> entries = sevenZFile.getEntries();
+            Iterator<SevenZArchiveEntry> iter = entries.iterator();
+            SevenZArchiveEntry entry = iter.next();
+            assertEquals("test1.xml", entry.getName());
+            entry = iter.next();
+            assertEquals("test2.xml", entry.getName());
+            assertFalse(iter.hasNext());
+        } finally {
+            sevenZFile.close();
+        }
+    }
+    
     private void test7zUnarchive(File f, SevenZMethod m, byte[] password) throws Exception {
         SevenZFile sevenZFile = new SevenZFile(f, password);
         try {