Create a new file under jcr node
Some cases we need to create a text or xml file under jcr nodes in CQ. In below code we are creating a text file with current jcr node name under specified location
-------Similar Posts---------------
Mapping of requests in AEM
Interact With AEM
Run Modes
AEM
Apache Sling in AEM
-------------------------------------
private static final String TEXT_RENDERER_NODE_URL = "/content/projectname";
try {
// writing to file in temp location
FileOutputStream fop = null;
File file = null;
File testFile = null;
StreamResult result = new StreamResult(new StringWriter());
try {
Path filePath = Files.createTempFile("Test" , ".txt");
file = filePath.toFile();
fop = new FileOutputStream(file);
// get the content in bytes
byte[] contentInBytes = pagePropertiesString.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
testFile = file;
} catch (IOException ioExc) {
log.error(
"TestFile :: IOException: ",
ioExc);
} finally {
try {
if (fop != null) {
fop.close();
}
} catch (IOException ioExc) {
log.error(
"TestFile :: IOException while closing output stream :",
ioExc);
}
}
}catch (Exception exc) {
log.error("TestFile Creation Failed :: Exception: " , exc);
}
//Create file under jcr node
try{
FileInputStream fileInputStream = new FileInputStream(testFile);
ValueFactory valueFactory = currentSession.getValueFactory();
Binary contentValue;
contentValue = valueFactory.createBinary(fileInputStream);
Node textRendererNode = currentSession.getNode(TEXT_RENDERER_NODE_URL + "/textRenderer");
//We are creating a new text file based on current jcr node name after converting to lower case, '' to _
Node fileNode = textRendererNode.addNode(jcrTitle.replace(' ', '-').toLowerCase()+".txt", "nt:file");
Node actualNode = (childNode.getParent()).addNode(jcrTitle+".txt", "nt:file");
actualNode.addMixin("mix:referenceable");
fileNode.addMixin("mix:referenceable");
Node resNode = fileNode.addNode("jcr:content", "nt:resource");
resNode.setProperty("jcr:data", contentValue);
Calendar lastModified = Calendar.getInstance();
lastModified.setTimeInMillis(lastModified.getTimeInMillis());
resNode.setProperty("jcr:lastModified", lastModified);
currentSession.save();
}catch(RepositoryException rpe){
log.error("Exception in Text Renderer :"+rpe.getMessage());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception exc) {
// TODO Auto-generated catch block
exc.printStackTrace();
}
Some cases we need to create a text or xml file under jcr nodes in CQ. In below code we are creating a text file with current jcr node name under specified location
-------Similar Posts---------------
Mapping of requests in AEM
Interact With AEM
Run Modes
AEM
Apache Sling in AEM
-------------------------------------
private static final String TEXT_RENDERER_NODE_URL = "/content/projectname";
try {
// writing to file in temp location
FileOutputStream fop = null;
File file = null;
File testFile = null;
StreamResult result = new StreamResult(new StringWriter());
try {
Path filePath = Files.createTempFile("Test" , ".txt");
file = filePath.toFile();
fop = new FileOutputStream(file);
// get the content in bytes
byte[] contentInBytes = pagePropertiesString.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
testFile = file;
} catch (IOException ioExc) {
log.error(
"TestFile :: IOException: ",
ioExc);
} finally {
try {
if (fop != null) {
fop.close();
}
} catch (IOException ioExc) {
log.error(
"TestFile :: IOException while closing output stream :",
ioExc);
}
}
}catch (Exception exc) {
log.error("TestFile Creation Failed :: Exception: " , exc);
}
//Create file under jcr node
try{
FileInputStream fileInputStream = new FileInputStream(testFile);
ValueFactory valueFactory = currentSession.getValueFactory();
Binary contentValue;
contentValue = valueFactory.createBinary(fileInputStream);
Node textRendererNode = currentSession.getNode(TEXT_RENDERER_NODE_URL + "/textRenderer");
//We are creating a new text file based on current jcr node name after converting to lower case, '' to _
Node fileNode = textRendererNode.addNode(jcrTitle.replace(' ', '-').toLowerCase()+".txt", "nt:file");
Node actualNode = (childNode.getParent()).addNode(jcrTitle+".txt", "nt:file");
actualNode.addMixin("mix:referenceable");
fileNode.addMixin("mix:referenceable");
Node resNode = fileNode.addNode("jcr:content", "nt:resource");
resNode.setProperty("jcr:data", contentValue);
Calendar lastModified = Calendar.getInstance();
lastModified.setTimeInMillis(lastModified.getTimeInMillis());
resNode.setProperty("jcr:lastModified", lastModified);
currentSession.save();
}catch(RepositoryException rpe){
log.error("Exception in Text Renderer :"+rpe.getMessage());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception exc) {
// TODO Auto-generated catch block
exc.printStackTrace();
}