You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ro...@apache.org on 2018/10/01 16:21:43 UTC
svn commit: r1842516 -
/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java
Author: rotty3000
Date: Mon Oct 1 16:21:42 2018
New Revision: 1842516
URL: http://svn.apache.org/viewvc?rev=1842516&view=rev
Log:
FELIX-5948 Collection of performance and memory optimizations
Signed-off-by: Raymond Auge <ro...@apache.org>
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java?rev=1842516&r1=1842515&r2=1842516&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java Mon Oct 1 16:21:42 2018
@@ -674,9 +674,48 @@ public abstract class RegionConfiguratio
String bsn = bundle.getSymbolicName();
String version = bundle.getVersion().toString();
String location = escape( bundle.getLocation() );
- String f = String.format( "(|(%1$s=%2$s)(%1$s=%2$s|%3$s)(%1$s=%2$s|%3$s|%4$s)(%1$s=%2$s|%3$s|%4$s|%5$s))", key,
- pid, bsn, version, location );
- return f;
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("(|(");
+
+ sb.append(key);
+ sb.append('=');
+ sb.append(pid);
+
+ sb.append(")(");
+
+ sb.append(key);
+ sb.append('=');
+ sb.append(pid);
+ sb.append('|');
+ sb.append(bsn);
+
+ sb.append(")(");
+
+ sb.append(key);
+ sb.append('=');
+ sb.append(pid);
+ sb.append('|');
+ sb.append(bsn);
+ sb.append('|');
+ sb.append(version);
+
+ sb.append(")(");
+
+ sb.append(key);
+ sb.append('=');
+ sb.append(pid);
+ sb.append('|');
+ sb.append(bsn);
+ sb.append('|');
+ sb.append(version);
+ sb.append('|');
+ sb.append(location);
+
+ sb.append("))");
+
+ return sb.toString();
}
/**
@@ -686,7 +725,41 @@ public abstract class RegionConfiguratio
*/
static final String escape(String value)
{
- return value.replaceAll( "([\\\\\\*\\(\\)])", "\\\\$1" );
+ StringBuilder sb = null;
+
+ int index = 0;
+
+ for (int i = 0; i < value.length(); i++) {
+ char c = value.charAt(i);
+
+ switch (c) {
+ case '\\':
+ case '*':
+ case '(':
+ case ')':
+ if (sb == null) {
+ sb = new StringBuilder();
+ }
+
+ sb.append(value, index, i);
+ sb.append('\\');
+ sb.append(c);
+
+ index = i + 1;
+
+ break;
+ }
+ }
+
+ if (sb == null) {
+ return value;
+ }
+
+ if (index < value.length()) {
+ sb.append(value, index, value.length());
+ }
+
+ return sb.toString();
}
private ConfigurationAdmin getConfigAdmin(BundleContext bundleContext)