From e017c9804821f042a401f19f7cefe94fe407f4aa Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 29 Jun 2020 16:07:57 +0200 Subject: [PATCH] [New] Added tx.getConfiguration() to get getResourceBy(TYPE_CONFIGURATION, RES_CONFIGURATION) gracefully handles missing resource --- .../persistence/api/AbstractTransaction.java | 14 +++++++++++++- .../persistence/api/StrolchTransaction.java | 12 ++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java index dbf15a17f..6b7e1aa9d 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java @@ -662,6 +662,17 @@ public abstract class AbstractTransaction implements StrolchTransaction { return getResourceMap().getTemplate(this, type, assertExists); } + @Override + public Resource getConfiguration() { + Resource configuration = getResourceBy(TYPE_CONFIGURATION, RES_CONFIGURATION, false); + if (configuration == null) { + configuration = new Resource(RES_CONFIGURATION, TYPE_CONFIGURATION, TYPE_CONFIGURATION); + if (!isReadOnly()) + add(configuration); + } + return configuration; + } + @Override public Order getOrderTemplate(String type) { return getOrderTemplate(type, false); @@ -1693,7 +1704,8 @@ public abstract class AbstractTransaction implements StrolchTransaction { OperationsLog operationsLog = container.getComponent(OperationsLog.class); operationsLog.addMessage(new LogMessage(this.realm.getRealm(), this.certificate.getUsername(), Locator.valueOf(AGENT, "tx", this.action, getUniqueId()), LogSeverity.Exception, - LogMessageState.Information, ResourceBundle.getBundle("strolch-agent"), "agent.tx.failed").withException(e).value("reason", e)); + LogMessageState.Information, ResourceBundle.getBundle("strolch-agent"), "agent.tx.failed") + .withException(e).value("reason", e)); } String msg = "Strolch Transaction for realm {0} failed due to {1}\n{2}"; //$NON-NLS-1$ diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java index c67000426..aa3221b7f 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/StrolchTransaction.java @@ -705,6 +705,18 @@ public interface StrolchTransaction extends AutoCloseable { */ Resource getResourceTemplate(String type, boolean assertExists) throws StrolchException; + /** + *

Returns the {@link Resource} with the type {@link StrolchConstants#TYPE_CONFIGURATION} and id {@link + * StrolchConstants#RES_CONFIGURATION}.

+ * + *

Should the configuration resource not exist, then it will be created without any parameters, as {@link + * Resource#getBoolean(String)} methods et. al. will then just return empty values for their corresponding + * types.

+ * + * @return the configuration resource + */ + Resource getConfiguration(); + /** *

* Returns a copy of the {@link Order} of Type {@link StrolchConstants#TEMPLATE} with the given type as id, or null