aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java')
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java
index bce179d..578371c 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java
@@ -6,14 +6,18 @@ import at.gv.egiz.asic.api.ASiCFormat;
import at.gv.egiz.asic.impl.handler.*;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOAException;
+import iaik.util.logging.Log;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -31,14 +35,21 @@ public abstract class ASiCBaseFormatFactory implements ASiCContainer {
protected String mimeType = null;
protected List<ASiCEntry> signatureEntries = new ArrayList<ASiCEntry>();
- protected List<ASiCEntry> dataEntries = new ArrayList<ASiCEntry>();
+ protected Map<String, ASiCEntry> dataEntries = new HashMap<String, ASiCEntry>();
protected List<ASiCEntry> informationEntries = new ArrayList<ASiCEntry>();
protected List<EntryHandler> handlers = new ArrayList<EntryHandler>();
@Override
- public void addDataEntry(ASiCEntry entry) {
- this.dataEntries.add(entry);
+ public void addDataEntry(ASiCEntry entry) throws MOAApplicationException {
+ //check if entry with a specific name already exists
+ if (!dataEntries.containsKey(entry.getEntryName())) {
+ this.dataEntries.put(entry.getEntryName(), entry);
+
+ } else {
+ logger.warn("ASiC container already contains a DataEntry with name: " + entry.getEntryName() + " ASiC container is INVALID");
+ throw new MOAApplicationException("asic.0017", new Object[]{entry.getEntryName()});
+ }
}
@Override
@@ -96,7 +107,7 @@ public abstract class ASiCBaseFormatFactory implements ASiCContainer {
this.validate();
// unpack and retrieve all available information on ASiC signature
- return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries, dataEntries, this.informationEntries);
+ return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries, dataEntries.values(), this.informationEntries);
}
@Override