This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/karaf.git
The following commit(s) were added to refs/heads/main by this push:
new 3bd28ac KARAF-7157 - Editing a factory cfg lacking a
FILEINSTALL_FILE_NAME prop. produces a file with incorrect filename
new 47424a2 Merge pull request #1380 from jassuncao/KARAF-7157
3bd28ac is described below
commit 3bd28ac8812b131c688c565c4dc989bef106a366
Author: exp_jassuncao <[email protected]>
AuthorDate: Sun May 23 18:26:44 2021 +0100
KARAF-7157 - Editing a factory cfg lacking a FILEINSTALL_FILE_NAME prop.
produces a file with incorrect filename
When generating a filename for a configuration lacking a
FILEINSTALL_FILE_NAME property, the type of configuration is taken in
consideration and a filename following the convention
<factoryPID>-<identifier>.cfg will be used for factory configs.
Change-Id: I5bd2012a48bb4d7804199e64f6b387d4201333e1
---
.../karaf/config/core/impl/ConfigRepositoryImpl.java | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git
a/config/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java
b/config/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java
index 84a1d05..c5bfa76 100644
---
a/config/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java
+++
b/config/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java
@@ -81,7 +81,7 @@ public class ConfigRepositoryImpl implements ConfigRepository
{
file =
getCfgFileFromProperty(properties.get(FILEINSTALL_FILE_NAME));
}
if (file == null) {
- file = new File(System.getProperty("karaf.etc"), pid + "."
+ suffix);
+ file = generateConfigFilename(cfg, suffix);
}
props.putAll(properties);
props.keySet().retainAll(properties.keySet());
@@ -93,6 +93,21 @@ public class ConfigRepositoryImpl implements
ConfigRepository {
throw new IOException("Error updating config", e);
}
}
+
+ private static File generateConfigFilename(Configuration cfg, String
suffix) {
+ final String pid = cfg.getPid();
+ final String factoryPid = cfg.getFactoryPid();
+ String fName;
+ if(factoryPid!=null) {
+ //pid = <factoryPid>.<identifier>
+ String identifier = pid.substring(factoryPid.length()+1);
+ fName = cfg.getFactoryPid() + "-"+identifier+ "." + suffix;
+ }
+ else {
+ fName = pid + "." + suffix;
+ }
+ return new File(System.getProperty("karaf.etc"), fName);
+ }
/* (non-Javadoc)
* @see
org.apache.karaf.shell.config.impl.ConfigRepository#delete(java.lang.String)