FELIX-3542 - Escape property values used as Metatype default values
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1470946 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/generator/changelog.txt b/scrplugin/generator/changelog.txt
index 65617da..6f0c597 100644
--- a/scrplugin/generator/changelog.txt
+++ b/scrplugin/generator/changelog.txt
@@ -2,6 +2,8 @@
---------------------------
** Bug
* [FELIX-4030] - Generated metatype file contains all metatype infos
+ * [FELIX-3542] - Escape property values used as Metatype default values
+
Changes from 1.5.0 to 1.4.0
----------------------------
diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/MetatypeAttributeDefinition.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/MetatypeAttributeDefinition.java
index 0d096fe..3870141 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/MetatypeAttributeDefinition.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/MetatypeAttributeDefinition.java
@@ -59,7 +59,7 @@
}
}
- public Object getDefaultValue() {
+ public String getDefaultValue() {
return this.defaultValue;
}
diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
index cc2a684..9a55c69 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
@@ -212,6 +212,21 @@
IOUtils.newline(contentHandler);
}
+ /**
+ * Escape the value according to 105.13.3.21 (validate method)
+ */
+ private static String escapeDefaultValue(final String value) {
+ if ( value == null ) {
+ return value;
+ }
+
+ String result = value.trim();
+ result = result.replace(" ", "\\ ");
+ result = result.replace(",", "\\,");
+ result = result.replace("\\", "\\\\");
+ return result;
+ }
+
private static void generateAttributeXML(final MetatypeAttributeDefinition ad, final ContentHandler contentHandler)
throws SAXException {
final AttributesImpl ai = new AttributesImpl();
@@ -223,11 +238,11 @@
if ( i > 0 ) {
buf.append(',');
}
- buf.append(ad.getDefaultMultiValue()[i]);
+ buf.append(escapeDefaultValue(ad.getDefaultMultiValue()[i]));
}
IOUtils.addAttribute(ai, "default", buf);
} else {
- IOUtils.addAttribute(ai, "default", ad.getDefaultValue());
+ IOUtils.addAttribute(ai, "default", escapeDefaultValue(ad.getDefaultValue()));
}
IOUtils.addAttribute(ai, "name", ad.getName());
IOUtils.addAttribute(ai, "description", ad.getDescription());
diff --git a/scrplugin/maven-scr-plugin/changelog.txt b/scrplugin/maven-scr-plugin/changelog.txt
index 904462f..bcdf87f 100644
--- a/scrplugin/maven-scr-plugin/changelog.txt
+++ b/scrplugin/maven-scr-plugin/changelog.txt
@@ -3,6 +3,7 @@
** Bug
* [FELIX-4030] - Generated metatype file contains all metatype infos
* [FELIX-4023] - SCR-Plugin not working reliably in m2e 1.3.1
+ * [FELIX-3542] - Escape property values used as Metatype default values
Changes from 1.11.0 to 1.10.0
diff --git a/scrplugin/scrtask/changelog.txt b/scrplugin/scrtask/changelog.txt
index cc440f0..73a1571 100644
--- a/scrplugin/scrtask/changelog.txt
+++ b/scrplugin/scrtask/changelog.txt
@@ -2,6 +2,8 @@
---------------------------
** Bug
* [FELIX-4030] - Generated metatype file contains all metatype infos
+ * [FELIX-3542] - Escape property values used as Metatype default values
+
Changes from 1.5.0 to 1.4.0
----------------------------