DAM에서 사용자가 업로드 한 XML 파일을 가져와이 파일을 구문 분석하고 내용을 JCR에 저장해야합니다. 여기에 지금까지CQ5의 DAM에서 XML 파일에 액세스
public class foo implements Runnable {
private static final Logger log = LoggerFactory
.getLogger(foo.class);
@Reference
ResourceResolverFactory resourceResolverFactory;
@Reference
ResourceProvider resourceProvider;
ResourceResolver resourceResolver = null;
@Reference
SlingRepository repository;
Session session;
// private static ReadXMLFileUsingDomparserTest readxml;
File tempFile;
public void run(){
log.info("\n *** Seems okay ***\n");
ResourceResolver resourceResolver = null;
try {
resourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
Resource resource = resourceResolver.getResource("/content/dam/foo/file.xml");
Node node = resource.adaptTo(Node.class);
boolean isAssest = DamUtil.isAsset(resource);
if (isAssest) {
Asset asset = resource.adaptTo(Asset.class);
List<Rendition> rendition = asset.getRenditions();
for (Rendition re : rendition) {
InputStream in = re.getStream();
File xmlFile = copy(in,tempFile);
if(filetest.exists()){
ReadXMLFileUsingDomparserTest.parseXML(filetest,null);
}else {
log.info("File not found at all");
}
}
}
File xmlFile = copy(in,tempFile);*/
}catch (Exception e) {
log.error("Exception while running foo" , e);
}
}
private File copy(InputStream in, File file) {
try {
OutputStream out = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return file;
}
}
내가 제대로 노드 객체를 선택할 수 있어요 있지만 (Node.getPath()
반환 올바른 경로를하고), 내가 File 객체로이 노드를 변환 할 수 없으며 나는 무슨이다. (적응할 수 없음). 나는 이것을 파싱을위한 File 객체의 관점에서 접근하고자한다. 이 때문에 자산의 변환을 통해 스트림을 사용하여 파일로 복사했습니다.
그러나 위 코드에서 항상 null이 표시됩니다. 출력은 항상 File not found at all
입니다.
올바르게 파싱 할 수 있도록 DAM의 필수 데이터가 포함 된 File 객체를 가져 오는 올바른 방법은 무엇입니까?