use of com.google.firestore.v1.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 com.google.firestore.v1.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 com.google.firestore.v1.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;
}
use of com.google.firestore.v1.Document in project jPOS by jpos.
the class Q2 method encrypt.
protected Document encrypt(Document doc) throws GeneralSecurityException, IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(os);
XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
out.output(doc, writer);
writer.close();
byte[] crypt = dodes(os.toByteArray(), Cipher.ENCRYPT_MODE);
Document secureDoc = new Document();
Element root = new Element(PROTECTED_QBEAN);
secureDoc.setRootElement(root);
Element secureData = new Element("data");
root.addContent(secureData);
secureData.setText(ISOUtil.hexString(crypt));
return secureDoc;
}
use of com.google.firestore.v1.Document in project jPOS by jpos.
the class Q2 method deployResource.
private void deployResource(String resource) throws IOException, SAXException, JDOMException, GeneralSecurityException, ISOException {
SAXBuilder builder = new SAXBuilder();
try (InputStream source = getClass().getClassLoader().getResourceAsStream(resource)) {
Document doc = builder.build(source);
deployElement(doc.getRootElement(), resource.substring(DEPLOY_PREFIX.length()), false, true);
}
}
Aggregations