This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git
The following commit(s) were added to refs/heads/master by this push:
new cfd2202 SLING-11764 - jcr:content node missing for file resources
generated in binaries index defintions (#154)
cfd2202 is described below
commit cfd2202bdab9a4cd7f0fb305a48751e5e3addee1
Author: Abhishek Garg <[email protected]>
AuthorDate: Wed Feb 1 18:21:38 2023 +0530
SLING-11764 - jcr:content node missing for file resources generated in
binaries index defintions (#154)
Co-authored-by: Abhishek Garg <[email protected]>
---
.../cpconverter/index/IndexDefinitionsJsonWriter.java | 16 ++++++++++++----
.../index/IndexDefinitionsJsonWriterTest.java | 6 ++++--
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git
a/src/main/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriter.java
b/src/main/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriter.java
index a75e72c..b386c70 100644
---
a/src/main/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriter.java
+++
b/src/main/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriter.java
@@ -16,8 +16,11 @@
*/
package org.apache.sling.feature.cpconverter.index;
+import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -30,6 +33,7 @@ import jakarta.json.JsonArrayBuilder;
import jakarta.json.JsonValue;
import jakarta.json.stream.JsonGenerator;
+import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.util.Base64;
import org.apache.jackrabbit.vault.util.DocViewNode2;
import org.apache.jackrabbit.vault.util.DocViewProperty2;
@@ -46,7 +50,7 @@ import org.slf4j.LoggerFactory;
*/
public class IndexDefinitionsJsonWriter {
- private static final Function<String, JsonValue> BLOB_MAPPER = s ->
Json.createValue(":blobid:" + Base64.encode(s));
+ private static final Function<String, JsonValue> BLOB_MAPPER = s ->
Json.createValue(":blobId:" + Base64.encode(s));
private static final Function<String, JsonValue> SAFE_LONG_MAPPER = new
Function<String, JsonValue>() {
@@ -72,7 +76,7 @@ public class IndexDefinitionsJsonWriter {
*
* @param out the output stream to write to
*/
- public void writeAsJson(@NotNull OutputStream out) {
+ public void writeAsJson(@NotNull OutputStream out) throws IOException {
try ( JsonGenerator root = Json.createGenerator(out) ) {
root.writeStartObject();
for ( Map.Entry<String, List<DocViewNode2>> indexEntry :
indexDefinitions.getIndexes().entrySet() )
@@ -82,7 +86,7 @@ public class IndexDefinitionsJsonWriter {
}
}
- private void write(JsonGenerator json, DocViewNode2 index, String
parentPath) {
+ private void write(JsonGenerator json, DocViewNode2 index, String
parentPath) throws IOException {
String nodeName = indexDefinitions.toShortName(index.getName());
String objectKey = parentPath.equals(IndexDefinitions.OAK_INDEX_PATH) ?
@@ -137,8 +141,12 @@ public class IndexDefinitionsJsonWriter {
// in this case, this is the nt:resource node
Optional<byte[]> binary = indexDefinitions.getBinary(nodePath);
if ( binary.isPresent() ) {
+ json.writeStartObject(JcrConstants.JCR_CONTENT);
String blobAsString = new String(binary.get(),
StandardCharsets.UTF_8);
- write(json, "jcr:data", Collections.singletonList(blobAsString),
BLOB_MAPPER);
+ write(json, JcrConstants.JCR_PRIMARYTYPE,
Collections.singletonList(JcrConstants.NT_RESOURCE), s ->
Json.createValue("nam:" + s ));
+ write(json,
JcrConstants.JCR_MIMETYPE,Collections.singletonList(Files.probeContentType(Paths.get(nodePath))),
Json::createValue );
+ write(json, JcrConstants.JCR_DATA,
Collections.singletonList(blobAsString), BLOB_MAPPER);
+ json.writeEnd();
};
// 4. write children
diff --git
a/src/test/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriterTest.java
b/src/test/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriterTest.java
index 903ed6e..c32eaba 100644
---
a/src/test/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriterTest.java
+++
b/src/test/java/org/apache/sling/feature/cpconverter/index/IndexDefinitionsJsonWriterTest.java
@@ -39,6 +39,7 @@ import jakarta.json.JsonString;
import jakarta.json.JsonValue;
import jakarta.json.stream.JsonParser;
+import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.spi.NameFactory;
import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
import org.apache.jackrabbit.util.Base64;
@@ -177,9 +178,10 @@ public class IndexDefinitionsJsonWriterTest {
assertThat(configNode).as("config node")
.hasEntrySatisfying("jcr:resource", Conditions.isJsonObject());
- JsonString binaryEntry = configNode.getJsonString("jcr:data");
+ JsonObject configContentNode =
configNode.getJsonObject(JcrConstants.JCR_CONTENT);
+ JsonString binaryEntry =
configContentNode.getJsonString(JcrConstants.JCR_DATA);
assertThat(binaryEntry).as("config.xml blob")
- .hasFieldOrPropertyWithValue("string", ":blobid:" +
Base64.encode(configXmlFileContents));
+ .hasFieldOrPropertyWithValue("string", ":blobId:" +
Base64.encode(configXmlFileContents));
}