diff --git a/gradle.properties b/gradle.properties index 02abcbe..5798b56 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group = org.xbib name = marc -version = 2.9.5 +version = 2.9.6 org.gradle.warning.mode = ALL diff --git a/gradle/compile/java.gradle b/gradle/compile/java.gradle index d66bb9c..9ba7262 100644 --- a/gradle/compile/java.gradle +++ b/gradle/compile/java.gradle @@ -22,13 +22,15 @@ jar { } task sourcesJar(type: Jar, dependsOn: classes) { + dependsOn classes classifier 'sources' from sourceSets.main.allSource } task javadocJar(type: Jar, dependsOn: javadoc) { + dependsOn javadoc classifier 'javadoc' - from sourceSets.main.allSource + from javadoc.destinationDir } artifacts { diff --git a/src/main/java/org/xbib/marc/MarcRecord.java b/src/main/java/org/xbib/marc/MarcRecord.java index a4873a1..100b37e 100644 --- a/src/main/java/org/xbib/marc/MarcRecord.java +++ b/src/main/java/org/xbib/marc/MarcRecord.java @@ -49,11 +49,10 @@ public class MarcRecord implements Map { private transient RecordLabel recordLabel; - private final transient List marcFields; + private transient List marcFields; private MarcRecord(Map delegate) { this.delegate = delegate; - this.marcFields = new LinkedList<>(); } /** @@ -107,6 +106,7 @@ public class MarcRecord implements Map { RecordLabel recordLabel, Collection privateTags) { MarcRecord marcRecord = new MarcRecord(map); + marcRecord.marcFields = new LinkedList<>(); Set forbidden = new HashSet<>(privateTags); forbidden.add(formatTag); forbidden.add(typeTag); @@ -214,7 +214,9 @@ public class MarcRecord implements Map { * @param handler the handler */ public void all(Predicate predicate, MarcFieldHandler handler) { - marcFields.stream().filter(predicate).forEach(handler::field); + if (marcFields != null) { + marcFields.stream().filter(predicate).forEach(handler::field); + } } /** @@ -298,7 +300,9 @@ public class MarcRecord implements Map { * @param handler the handler */ public void first(Predicate predicate, MarcFieldHandler handler) { - marcFields.stream().filter(predicate).findFirst().ifPresent(handler::field); + if (marcFields != null) { + marcFields.stream().filter(predicate).findFirst().ifPresent(handler::field); + } } /** @@ -350,7 +354,9 @@ public class MarcRecord implements Map { * @param handler the handler */ public void any(Predicate predicate, MarcFieldHandler handler) { - marcFields.stream().filter(predicate).findAny().ifPresent(handler::field); + if (marcFields != null) { + marcFields.stream().filter(predicate).findAny().ifPresent(handler::field); + } } /** @@ -437,7 +443,7 @@ public class MarcRecord implements Map { @Override public int hashCode() { - return (recordLabel.toString() + marcFields.toString()).hashCode(); + return (recordLabel.toString() + (marcFields != null ? marcFields.toString() : "")).hashCode(); } public String toString() { @@ -447,6 +453,9 @@ public class MarcRecord implements Map { @SuppressWarnings("unchecked") private Map createMapFromMarcFields(boolean stable) { Map map = stable ? new TreeMap<>() : new LinkedHashMap<>(); + if (marcFields == null) { + return map; + } for (MarcField marcField : marcFields) { String tag = marcField.getTag(); int repeat;