Search on a protected resource returns one result with a URL reference

and a non-surrogate Diagnostics Nr. 3 covering all records.
Alternatively, Diagnostics N.68 can be used to set diagnostics within a
record (surrogate).

Change-Id: Id9109b7c05753f9ebcd1d106904e5c4ec45cffaf
diff --git a/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java b/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java
index 5f42f03..f843df9 100644
--- a/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java
+++ b/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java
@@ -233,6 +233,7 @@
         // remove matches for public search metadata response
         if (!freeAccess) {
         	result.getMatches().clear();
+        	result.getMatches().add(new KorapMatch());
         }
         return result;
     }
diff --git a/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java b/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java
index b4406d9..4c876c9 100644
--- a/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java
+++ b/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java
@@ -113,18 +113,20 @@
 
     @Override
     public void writeRecord(XMLStreamWriter writer) throws XMLStreamException {
-        KorapMatch match = korapResult.getMatch(i);
-        match.parseMatchId();
         XMLStreamWriterHelper.writeStartResource(writer, null,
                 reference);
-        XMLStreamWriterHelper.writeStartResourceFragment(writer, null, null);
-
-        List<AnnotationLayer> annotationLayers;
-        annotationLayers = parseAnnotations(match);
-
-        writeAdvancedDataView(writer, annotationLayers);
-
-        XMLStreamWriterHelper.writeEndResourceFragment(writer);
+        KorapMatch match = korapResult.getMatch(i);
+        if (match.getMatchId() != null) {
+        	match.parseMatchId();
+        	
+        	XMLStreamWriterHelper.writeStartResourceFragment(writer, null, null);
+        
+            List<AnnotationLayer> annotationLayers;
+            annotationLayers = parseAnnotations(match);
+            writeAdvancedDataView(writer, annotationLayers);
+        
+            XMLStreamWriterHelper.writeEndResourceFragment(writer);
+        }
         XMLStreamWriterHelper.writeEndResource(writer);
     }
 
@@ -164,7 +166,7 @@
         if (match == null) {
             throw new NullPointerException("KorapMatch is null.");
         }
-
+        
         try {
             String annotationSnippet = korapClient.retrieveAnnotations(
                     match.getCorpusId(), match.getDocId(), match.getTextId(),