use of org.datanucleus.samples.annotations.one_many.bidir_3.Document in project jPOS by jpos.
the class QThreadPoolExecutorTest method setQBeanConfig.
protected void setQBeanConfig(byte[] config) {
ByteArrayInputStream bis = new ByteArrayInputStream(config);
Document doc = getDocument(bis);
qbean.setPersist(doc.getRootElement());
}
use of org.datanucleus.samples.annotations.one_many.bidir_3.Document in project jPOS by jpos.
the class Q2 method persist.
private long persist(File f, ObjectName name) {
long deployed = f.lastModified();
try {
Element e = (Element) server.getAttribute(name, "Persist");
if (e != null) {
XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
Document doc = new Document();
e.detach();
doc.setRootElement(e);
File tmp = new File(f.getAbsolutePath() + ".tmp");
Writer writer = new BufferedWriter(new FileWriter(tmp));
try {
out.output(doc, writer);
} finally {
writer.close();
}
f.delete();
tmp.renameTo(f);
deployed = f.lastModified();
}
} catch (Exception ex) {
log.warn("persist", ex);
}
return deployed;
}
use of org.datanucleus.samples.annotations.one_many.bidir_3.Document in project jPOS by jpos.
the class Q2 method deployBundle.
private void deployBundle(File bundle, boolean encrypt) throws JDOMException, IOException, ISOException, GeneralSecurityException {
SAXBuilder builder = createSAXBuilder();
Document doc = builder.build(bundle);
Iterator iter = doc.getRootElement().getChildren().iterator();
for (int i = 1; iter.hasNext(); i++) {
Element e = (Element) iter.next();
deployElement(e, String.format("%02d_%s.xml", i, e.getName()), encrypt, !encrypt);
// the !encrypt above is tricky and deserves an explanation
// if we are encrypting a QBean, we want it to stay in the deploy
// directory for future runs. If on the other hand we are deploying
// a bundle, we want it to be transient.
}
}
use of org.datanucleus.samples.annotations.one_many.bidir_3.Document in project jPOS by jpos.
the class Q2 method deployElement.
public void deployElement(Element e, String fileName, boolean encrypt, boolean isTransient) throws ISOException, IOException, GeneralSecurityException {
e = e.clone();
XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
Document doc = new Document();
doc.setRootElement(e);
File qbean = new File(deployDir, fileName);
if (isTransient) {
e.setAttribute("instance", getInstanceId().toString());
qbean.deleteOnExit();
}
if (encrypt) {
doc = encrypt(doc);
}
try (Writer writer = new BufferedWriter(new FileWriter(qbean))) {
out.output(doc, writer);
}
}
use of org.datanucleus.samples.annotations.one_many.bidir_3.Document in project jPOS by jpos.
the class Q2 method deploy.
private boolean deploy(File f) {
LogEvent evt = log != null ? log.createInfo() : null;
try {
QEntry qentry = dirMap.get(f);
SAXBuilder builder = createSAXBuilder();
Document doc;
if (decorator != null && !f.getName().equals(LOGGER_CONFIG)) {
doc = decrypt(builder.build(new StringReader(decorator.decorateFile(f))));
} else {
doc = decrypt(builder.build(f));
}
Element rootElement = doc.getRootElement();
String iuuid = rootElement.getAttributeValue("instance");
if (iuuid != null) {
UUID uuid = UUID.fromString(iuuid);
if (!uuid.equals(getInstanceId())) {
deleteFile(f, iuuid);
return false;
}
}
String enabledAttribute = rootElement.getAttributeValue("enabled", "true");
if ("true".equalsIgnoreCase(enabledAttribute) || "yes".equalsIgnoreCase(enabledAttribute)) {
if (evt != null)
evt.addMessage("deploy: " + f.getCanonicalPath());
Object obj = factory.instantiate(this, rootElement);
qentry.setObject(obj);
ObjectInstance instance = factory.createQBean(this, doc.getRootElement(), obj);
qentry.setInstance(instance);
} else if (evt != null) {
evt.addMessage("deploy ignored (enabled='" + enabledAttribute + "'): " + f.getCanonicalPath());
}
} catch (InstanceAlreadyExistsException e) {
/*
* Ok, the file we tried to deploy, holds an object
* that already has been deployed.
*
* Rename it out of the way.
*
*/
tidyFileAway(f, DUPLICATE_EXTENSION);
if (evt != null)
evt.addMessage(e);
return false;
} catch (Exception e) {
if (evt != null)
evt.addMessage(e);
tidyFileAway(f, ERROR_EXTENSION);
// This will also save deploy error repeats...
return false;
} catch (Error e) {
if (evt != null)
evt.addMessage(e);
tidyFileAway(f, ENV_EXTENSION);
// This will also save deploy error repeats...
return false;
} finally {
if (evt != null)
Logger.log(evt);
}
return true;
}
Aggregations