HDA
Parsing a HDA file from a Java application
Submitted by radu on May 17, 2010 - 11:52pm
Sometimes you might want to parse a .hda file in a custom Java application, outside of the Oracle UCM.
Here is a sample code:
/* * Main.java */ package hdatest; import intradoc.data.DataBinder; import intradoc.data.DataSerializeUtils; import intradoc.resource.ResourceUtils; import intradoc.serialize.DataBinderSerializer; public class Main { public static void main(String[] args) { DataBinder dataBinder = null; String dir = "/usr/lib/oracle/ucm/data/profiles/document/"; String file = "dprules.hda"; DataSerializeUtils.setDataSerialize(new DataBinderSerializer()); try { dataBinder = ResourceUtils.readDataBinderHeader(dir, file); } catch (Exception e) { e.printStackTrace(); return; } String str = dataBinder.getLocal("blDateFormat"); System.out.println("blDateFormat: " + str); } }
To compile the above source code you'll have to include the file /shared/classes/server.zip in your classpath:
javac -classpath /usr/lib/oracle/ucm/shared/classes/server.zip hdatest/Main.java
The important bit here is the initialization of the serializer. Without it you will get an ugly exception like this one:
intradoc.common.ServiceException: !csResourceUtilsFileIOError!csResourceUtilsFileReadError,dprules.hda at intradoc.resource.ResourceUtils.serializeDataBinderWithEncoding(ResourceUtils.java:251) at intradoc.resource.ResourceUtils.serializeDataBinderEx(ResourceUtils.java:86) at intradoc.resource.ResourceUtils.readDataBinderHeader(ResourceUtils.java:283) at hdareadtest.Main.main(Main.java:18) Caused by: java.lang.NullPointerException at intradoc.data.DataSerializeUtils.detectEncoding(DataSerializeUtils.java:157) at intradoc.resource.ResourceUtils.serializeDataBinderWithEncoding(ResourceUtils.java:224) ... 3 more
