use of org.openecard.addon.AddonPropertiesException in project open-ecard by ecsec.
the class LogSettingsGroup method setRootlevel.
private static void setRootlevel(Document conf, String level) throws AddonPropertiesException {
try {
XPath p = XPathFactory.newInstance().newXPath();
XPathExpression exp = p.compile("/configuration/root");
Element e = (Element) exp.evaluate(conf, XPathConstants.NODE);
// no root is beyond our capability
if (e == null) {
throw new AddonPropertiesException("Logging config is invalid, the root element is missing.");
}
e.setAttribute("level", level);
} catch (DOMException | XPathExpressionException ex) {
throw new AddonPropertiesException("Failed to operate on log config document.");
}
}
use of org.openecard.addon.AddonPropertiesException in project open-ecard by ecsec.
the class LogSettingsGroup method setLoglevel.
private static void setLoglevel(Document conf, String path, String level) throws AddonPropertiesException {
try {
XPath p = XPathFactory.newInstance().newXPath();
XPathExpression exp = p.compile(String.format("/configuration/logger[@name='%s']", path));
Element e = (Element) exp.evaluate(conf, XPathConstants.NODE);
// create new element
if (e == null) {
if (!level.isEmpty()) {
e = conf.createElement("logger");
e.setAttribute("name", path);
e.setAttribute("level", level);
conf.getDocumentElement().appendChild(e);
}
return;
}
// we have a node let's see what to do next
if (level.isEmpty()) {
// delete entry
e.getParentNode().removeChild(e);
} else {
// modify level
e.setAttribute("level", level);
}
} catch (DOMException | XPathExpressionException ex) {
throw new AddonPropertiesException("Failed to operate on log config document.");
}
}
use of org.openecard.addon.AddonPropertiesException in project open-ecard by ecsec.
the class LogSettingsGroup method loadProperties.
private static Properties loadProperties() {
try {
File confFile = LogbackConfig.getConfFile();
if (!confFile.exists()) {
// no file yet
return new Properties();
} else {
// load file into a Document
WSMarshaller m = WSMarshallerFactory.createInstance();
m.removeAllTypeClasses();
FileInputStream fin = new FileInputStream(confFile);
Document conf = m.str2doc(fin);
// fill the properties
Properties p = new Properties();
p.setProperty(ROOT_KEY, getRootlevel(conf));
p.setProperty(PAOS_KEY, getLoglevel(conf, PAOS_KEY));
p.setProperty(EAC_KEY, getLoglevel(conf, EAC_KEY));
p.setProperty(PACE_KEY, getLoglevel(conf, PACE_KEY));
p.setProperty(TRCHECKS_KEY, getLoglevel(conf, TRCHECKS_KEY));
p.setProperty(TCTOKEN_KEY, getLoglevel(conf, TCTOKEN_KEY));
p.setProperty(EVENT_KEY, getLoglevel(conf, EVENT_KEY));
p.setProperty(HTTPBIND_KEY, getLoglevel(conf, HTTPBIND_KEY));
p.setProperty(ADDON_KEY, getLoglevel(conf, ADDON_KEY));
p.setProperty(SALSTATE_KEY, getLoglevel(conf, SALSTATE_KEY));
p.setProperty(MDLW_KEY, getLoglevel(conf, MDLW_KEY));
p.setProperty(MDLW_EVENT_KEY, getLoglevel(conf, MDLW_EVENT_KEY));
p.setProperty(CG_KEY, getLoglevel(conf, CG_KEY));
return p;
}
} catch (IOException | SAXException | WSMarshallerException | AddonPropertiesException ex) {
// something else went wrong
return new Properties();
}
}
use of org.openecard.addon.AddonPropertiesException in project open-ecard by ecsec.
the class LogSettingsGroup method saveProperties.
@Override
protected void saveProperties() throws IOException, SecurityException, AddonPropertiesException {
try {
File confFile = LogbackConfig.getConfFile();
// create file if needed
// if (! confFile.exists()) {
{
// overwrite with default settings
InputStream is = FileUtils.resolveResourceAsStream(LogSettingsGroup.class, "/logback.xml");
try (FileOutputStream os = new FileOutputStream(confFile)) {
byte[] buffer = new byte[4096];
int n;
while ((n = is.read(buffer)) > 0) {
os.write(buffer, 0, n);
}
}
}
// load file into a Document
WSMarshaller m = WSMarshallerFactory.createInstance();
m.removeAllTypeClasses();
FileInputStream fin = new FileInputStream(confFile);
Document conf = m.str2doc(fin);
// process root value
String val = properties.getProperty(ROOT_KEY);
val = (val != null) ? val : "ERROR";
setRootlevel(conf, val);
// process every value
val = properties.getProperty(PAOS_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, PAOS_KEY, val);
val = properties.getProperty(EAC_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, EAC_KEY, val);
val = properties.getProperty(PACE_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, PACE_KEY, val);
val = properties.getProperty(TRCHECKS_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, TRCHECKS_KEY, val);
val = properties.getProperty(TCTOKEN_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, TCTOKEN_KEY, val);
val = properties.getProperty(EVENT_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, EVENT_KEY, val);
val = properties.getProperty(HTTPBIND_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, HTTPBIND_KEY, val);
val = properties.getProperty(ADDON_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, ADDON_KEY, val);
val = properties.getProperty(SALSTATE_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, SALSTATE_KEY, val);
val = properties.getProperty(MDLW_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, MDLW_KEY, val);
val = properties.getProperty(MDLW_EVENT_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, MDLW_EVENT_KEY, val);
val = properties.getProperty(CG_KEY);
val = (val != null) ? val : "";
setLoglevel(conf, CG_KEY, val);
try (// write log to file
FileWriter w = new FileWriter(confFile)) {
String confStr = m.doc2str(conf);
w.write(confStr);
}
// reload log config
LogbackConfig.load();
} catch (JoranException ex) {
throw new AddonPropertiesException(ex.getMessage(), ex);
} catch (WSMarshallerException | SAXException | TransformerException ex) {
throw new IOException(ex.getMessage(), ex);
}
}
use of org.openecard.addon.AddonPropertiesException in project open-ecard by ecsec.
the class LogSettingsGroup method getRootlevel.
private static String getRootlevel(Document conf) throws AddonPropertiesException {
try {
XPath p = XPathFactory.newInstance().newXPath();
XPathExpression exp = p.compile("/configuration/root");
Element e = (Element) exp.evaluate(conf, XPathConstants.NODE);
// no root is beyond our capability
if (e == null) {
throw new AddonPropertiesException("Logging config is invalid, the root element is missing.");
}
return e.getAttribute("level");
} catch (DOMException | XPathExpressionException ex) {
throw new AddonPropertiesException("Failed to operate on log config document.");
}
}
Aggregations