2014-04-14 69 views
1

我需要从DAM中获取用户上传的XML文件,解析此文件并将内容存储在JCR中。这里是我到目前为止从CQ中的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对象(做Node.getPath()回到正确的路径),我不能在此节点转换成一个文件对象。 (不能改编)。我想根据File对象来解析。这就是为什么我浏览了资源的引用并使用流将其复制到文件中的原因。

但是,上述代码始终显示为空;输出始终为File not found at all

从DAM获取必要的数据以便我可以成功解析它的File对象的正确方法是什么?

回答