You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2014/03/06 10:08:26 UTC
[3/3] git commit: [KARAF-2811] Upgrade to felix utils 1.6.0
[KARAF-2811] Upgrade to felix utils 1.6.0
Conflicts:
config/command/pom.xml
shell/core/src/main/java/org/apache/karaf/shell/impl/console/commands/help/HelpCommand.java
shell/help/pom.xml
wrapper/core/pom.xml
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/85157132
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/85157132
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/85157132
Branch: refs/heads/karaf-3.0.x
Commit: 85157132f7618de27ca52947d8e96e4878bed514
Parents: 9a1909b
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Mar 6 09:46:20 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Thu Mar 6 10:07:56 2014 +0100
----------------------------------------------------------------------
config/command/pom.xml | 7 +
instance/core/pom.xml | 1 -
.../core/internal/InstanceServiceImpl.java | 20 +-
.../org/apache/karaf/main/ConfigProperties.java | 2 +-
.../org/apache/karaf/main/InstanceHelper.java | 3 +-
.../main/java/org/apache/karaf/main/Main.java | 3 +-
.../org/apache/karaf/main/PropertiesLoader.java | 4 +-
.../apache/karaf/main/lock/DefaultJDBCLock.java | 2 +-
.../apache/karaf/main/lock/DerbyJDBCLock.java | 2 +-
.../apache/karaf/main/lock/GenericJDBCLock.java | 3 +-
.../org/apache/karaf/main/lock/LockFactory.java | 2 +-
.../apache/karaf/main/lock/MySQLJDBCLock.java | 2 +-
.../apache/karaf/main/lock/OracleJDBCLock.java | 2 +-
.../karaf/main/lock/PostgreSQLJDBCLock.java | 2 +-
.../karaf/main/lock/SQLServerJDBCLock.java | 2 +-
.../apache/karaf/main/lock/SimpleFileLock.java | 2 +-
.../karaf/main/util/BootstrapLogManager.java | 4 +-
.../java/org/apache/karaf/main/MockLock.java | 2 +-
.../main/lock/BaseJDBCLockIntegrationTest.java | 2 +-
.../karaf/main/lock/BaseJDBCLockTest.java | 2 +-
.../lock/DefaultJDBCLockIntegrationTest.java | 3 +-
.../karaf/main/lock/DefaultJDBCLockTest.java | 3 +-
.../main/lock/DerbyJDBCLockIntegrationTest.java | 4 +-
.../karaf/main/lock/DerbyJDBCLockTest.java | 3 +-
.../main/lock/MySQLJDBCLockIntegrationTest.java | 3 +-
.../karaf/main/lock/MySQLJDBCLockTest.java | 3 +-
.../lock/OracleJDBCLockIntegrationTest.java | 3 +-
.../karaf/main/lock/OracleJDBCLockTest.java | 3 +-
.../lock/PostgreSQLJDBCLockIntegrationTest.java | 2 +-
.../karaf/main/lock/PostgreSQLJDBCLockTest.java | 2 +-
.../main/util/BootstrapLogManagerTest.java | 2 +-
pom.xml | 2 +-
shell/help/pom.xml | 2 +-
.../karaf/shell/help/impl/HelpSystem.java | 2 +-
.../apache/karaf/util/locks/FileLockUtils.java | 2 +-
.../util/properties/InterpolationHelper.java | 325 ------
.../karaf/util/properties/Properties.java | 1102 ------------------
wrapper/core/pom.xml | 2 +-
38 files changed, 53 insertions(+), 1484 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/config/command/pom.xml
----------------------------------------------------------------------
diff --git a/config/command/pom.xml b/config/command/pom.xml
index fe237df..8f64026 100644
--- a/config/command/pom.xml
+++ b/config/command/pom.xml
@@ -97,6 +97,13 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Private-Package>
+ org.apache.felix.utils.properties
+ </Private-Package>
+ </instructions>
+ </configuration>
</plugin>
</plugins>
</build>
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/instance/core/pom.xml
----------------------------------------------------------------------
diff --git a/instance/core/pom.xml b/instance/core/pom.xml
index 45844e4..75bf981 100644
--- a/instance/core/pom.xml
+++ b/instance/core/pom.xml
@@ -153,7 +153,6 @@
org.apache.karaf.jpm.impl,
org.apache.karaf.instance.core.internal,
org.apache.felix.utils.properties;-split-package:=merge-first,
- org.apache.karaf.util.properties,
org.apache.karaf.util.locks
</Private-Package>
</instructions>
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
----------------------------------------------------------------------
diff --git a/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java b/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
index 32326ba..1d3e922 100644
--- a/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
+++ b/instance/core/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
@@ -110,7 +110,7 @@ public class InstanceServiceImpl implements InstanceService {
this.stopTimeout = stopTimeout;
}
- private State loadData(org.apache.karaf.util.properties.Properties storage) {
+ private State loadData(org.apache.felix.utils.properties.Properties storage) {
State state = new State();
int count = getInt(storage, "count", 0);
state.defaultSshPortStart = getInt(storage, "ssh.port", state.defaultSshPortStart);
@@ -142,7 +142,7 @@ public class InstanceServiceImpl implements InstanceService {
return state;
}
- private void saveData(State state, org.apache.karaf.util.properties.Properties storage) {
+ private void saveData(State state, org.apache.felix.utils.properties.Properties storage) {
storage.put("ssh.port", Integer.toString(state.defaultSshPortStart));
storage.put("rmi.registry.port", Integer.toString(state.defaultRmiRegistryPortStart));
storage.put("rmi.server.port", Integer.toString(state.defaultRmiServerPortStart));
@@ -166,7 +166,7 @@ public class InstanceServiceImpl implements InstanceService {
}
}
- private boolean getBool(org.apache.karaf.util.properties.Properties storage, String name, boolean def) {
+ private boolean getBool(org.apache.felix.utils.properties.Properties storage, String name, boolean def) {
Object value = storage.get(name);
if (value != null) {
return Boolean.parseBoolean(value.toString());
@@ -175,7 +175,7 @@ public class InstanceServiceImpl implements InstanceService {
}
}
- private int getInt(org.apache.karaf.util.properties.Properties storage, String name, int def) {
+ private int getInt(org.apache.felix.utils.properties.Properties storage, String name, int def) {
Object value = storage.get(name);
if (value != null) {
return Integer.parseInt(value.toString());
@@ -184,7 +184,7 @@ public class InstanceServiceImpl implements InstanceService {
}
}
- private String getString(org.apache.karaf.util.properties.Properties storage, String name, String def) {
+ private String getString(org.apache.felix.utils.properties.Properties storage, String name, String def) {
Object value = storage.get(name);
return value != null ? value.toString() : def;
}
@@ -209,7 +209,7 @@ public class InstanceServiceImpl implements InstanceService {
}
try {
return FileLockUtils.execute(storageFile, new FileLockUtils.CallableWithProperties<T>() {
- public T call(org.apache.karaf.util.properties.Properties properties) throws IOException {
+ public T call(org.apache.felix.utils.properties.Properties properties) throws IOException {
State state = loadData(properties);
T t = callback.call(state);
saveData(state, properties);
@@ -355,14 +355,14 @@ public class InstanceServiceImpl implements InstanceService {
void addFeaturesFromSettings(File featuresCfg, final InstanceSettings settings) throws IOException {
FileLockUtils.execute(featuresCfg, new FileLockUtils.RunnableWithProperties() {
- public void run(org.apache.karaf.util.properties.Properties properties) throws IOException {
+ public void run(org.apache.felix.utils.properties.Properties properties) throws IOException {
appendToPropList(properties, "featuresBoot", settings.getFeatures());
appendToPropList(properties, "featuresRepositories", settings.getFeatureURLs());
}
});
}
- private void appendToPropList(org.apache.karaf.util.properties.Properties p, String key, List<String> elements) {
+ private void appendToPropList(org.apache.felix.utils.properties.Properties p, String key, List<String> elements) {
if (elements == null) {
return;
}
@@ -708,7 +708,7 @@ public class InstanceServiceImpl implements InstanceService {
File f = new File(instance.loc, path);
try {
return FileLockUtils.execute(f, new FileLockUtils.CallableWithProperties<Integer>() {
- public Integer call(org.apache.karaf.util.properties.Properties properties) throws IOException {
+ public Integer call(org.apache.felix.utils.properties.Properties properties) throws IOException {
return Integer.parseInt(properties.get(key).toString());
}
});
@@ -730,7 +730,7 @@ public class InstanceServiceImpl implements InstanceService {
}
File f = new File(instance.loc, path);
FileLockUtils.execute(f, new FileLockUtils.RunnableWithProperties() {
- public void run(org.apache.karaf.util.properties.Properties properties) throws IOException {
+ public void run(org.apache.felix.utils.properties.Properties properties) throws IOException {
properties.put(key, Integer.toString(port));
}
});
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/ConfigProperties.java b/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
index 25f19b6..d30c9c1 100644
--- a/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
+++ b/main/src/main/java/org/apache/karaf/main/ConfigProperties.java
@@ -22,7 +22,7 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.net.URI;
import java.net.URISyntaxException;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import org.apache.karaf.main.lock.SimpleFileLock;
import org.apache.karaf.main.util.Utils;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/InstanceHelper.java b/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
index 01f08c5..02b0a54 100644
--- a/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
+++ b/main/src/main/java/org/apache/karaf/main/InstanceHelper.java
@@ -30,6 +30,7 @@ import java.net.ServerSocket;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.felix.utils.properties.Properties;
import org.apache.karaf.util.locks.FileLockUtils;
import org.osgi.framework.launch.Framework;
@@ -60,7 +61,7 @@ public class InstanceHelper {
}
}
FileLockUtils.execute(propertiesFile, new FileLockUtils.RunnableWithProperties() {
- public void run(org.apache.karaf.util.properties.Properties props) throws IOException {
+ public void run(Properties props) throws IOException {
if (props.isEmpty()) {
if (isRoot) {
props.setProperty("count", "1");
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/Main.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/Main.java b/main/src/main/java/org/apache/karaf/main/Main.java
index bc3e3d4..2ebd2ff 100644
--- a/main/src/main/java/org/apache/karaf/main/Main.java
+++ b/main/src/main/java/org/apache/karaf/main/Main.java
@@ -29,9 +29,8 @@ import java.net.URLClassLoader;
import java.security.Provider;
import java.security.Security;
import java.util.ArrayList;
-import java.util.Enumeration;
import java.util.List;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/PropertiesLoader.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/PropertiesLoader.java b/main/src/main/java/org/apache/karaf/main/PropertiesLoader.java
index 750241e..7fe2057 100644
--- a/main/src/main/java/org/apache/karaf/main/PropertiesLoader.java
+++ b/main/src/main/java/org/apache/karaf/main/PropertiesLoader.java
@@ -26,12 +26,12 @@ import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.StringTokenizer;
import org.apache.karaf.main.util.Utils;
-import static org.apache.karaf.util.properties.InterpolationHelper.substVars;
+import static org.apache.felix.utils.properties.InterpolationHelper.substVars;
public class PropertiesLoader {
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
index 1b624a6..aeb0a6a 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
@@ -24,7 +24,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/DerbyJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/DerbyJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/DerbyJDBCLock.java
index 9b7027d..fce3d33 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/DerbyJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/DerbyJDBCLock.java
@@ -19,7 +19,7 @@
package org.apache.karaf.main.lock;
import java.sql.Connection;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
/**
* Represents an exclusive lock on a database,
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/GenericJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/GenericJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/GenericJDBCLock.java
index a31bd3c..286c0d4 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/GenericJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/GenericJDBCLock.java
@@ -24,12 +24,11 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.karaf.main.ConfigProperties;
-import org.apache.karaf.main.Main;
import org.apache.karaf.main.util.BootstrapLogManager;
/**
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/LockFactory.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/LockFactory.java b/main/src/main/java/org/apache/karaf/main/lock/LockFactory.java
index 6b11f9d..039c067 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/LockFactory.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/LockFactory.java
@@ -18,7 +18,7 @@
*/
package org.apache.karaf.main.lock;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
public class LockFactory {
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/MySQLJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/MySQLJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/MySQLJDBCLock.java
index 6000b85..2e98b0c 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/MySQLJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/MySQLJDBCLock.java
@@ -19,7 +19,7 @@
package org.apache.karaf.main.lock;
import java.sql.Connection;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
/**
* Represents an exclusive lock on a database,
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/OracleJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/OracleJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/OracleJDBCLock.java
index b2a41c2..bdfdf07 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/OracleJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/OracleJDBCLock.java
@@ -20,7 +20,7 @@ package org.apache.karaf.main.lock;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
/**
* Represents an exclusive lock on a database,
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/PostgreSQLJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/PostgreSQLJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/PostgreSQLJDBCLock.java
index c73e568..407a431 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/PostgreSQLJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/PostgreSQLJDBCLock.java
@@ -18,7 +18,7 @@
*/
package org.apache.karaf.main.lock;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
/**
* Represents an exclusive lock on a database,
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/SQLServerJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/SQLServerJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/SQLServerJDBCLock.java
index d14f9c0..cd2a4d9 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/SQLServerJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/SQLServerJDBCLock.java
@@ -18,7 +18,7 @@
*/
package org.apache.karaf.main.lock;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
/**
* Represents an exclusive lock on a database,
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java b/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java
index 3cb43ab..7004f7f 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java
@@ -22,7 +22,7 @@ import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.logging.Logger;
import org.apache.karaf.main.util.BootstrapLogManager;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java b/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java
index e46b50f..5e093d5 100644
--- a/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java
+++ b/main/src/main/java/org/apache/karaf/main/util/BootstrapLogManager.java
@@ -24,8 +24,8 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
-import org.apache.karaf.util.properties.Properties;
-import org.apache.karaf.util.properties.InterpolationHelper;
+import org.apache.felix.utils.properties.Properties;
+import org.apache.felix.utils.properties.InterpolationHelper;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/MockLock.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/MockLock.java b/main/src/test/java/org/apache/karaf/main/MockLock.java
index 176d8bb..e2ac2b2 100644
--- a/main/src/test/java/org/apache/karaf/main/MockLock.java
+++ b/main/src/test/java/org/apache/karaf/main/MockLock.java
@@ -1,6 +1,6 @@
package org.apache.karaf.main;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.logging.Logger;
import org.apache.karaf.main.lock.Lock;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java
index dc29b70..aac0210 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockIntegrationTest.java
@@ -23,7 +23,7 @@ import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.logging.Logger;
import org.apache.karaf.main.util.BootstrapLogManager;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
index 0fd32f3..ea8b7c5 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
@@ -28,7 +28,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import org.apache.karaf.main.util.BootstrapLogManager;
import org.easymock.EasyMock;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockIntegrationTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockIntegrationTest.java b/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockIntegrationTest.java
index 91c5bc8..d262fef 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockIntegrationTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockIntegrationTest.java
@@ -20,9 +20,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertTrue;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.DefaultJDBCLock;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
index 5705033..9a3451b 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/DefaultJDBCLockTest.java
@@ -21,9 +21,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.DefaultJDBCLock;
import org.junit.Before;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockIntegrationTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockIntegrationTest.java b/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockIntegrationTest.java
index 6cbedb9..ba9365d 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockIntegrationTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockIntegrationTest.java
@@ -20,10 +20,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertTrue;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.DefaultJDBCLock;
-import org.apache.karaf.main.lock.DerbyJDBCLock;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
index 26cae64..b2bee85 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/DerbyJDBCLockTest.java
@@ -21,9 +21,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.DerbyJDBCLock;
import org.junit.Before;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockIntegrationTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockIntegrationTest.java b/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockIntegrationTest.java
index e22ef09..91ca1fe 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockIntegrationTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockIntegrationTest.java
@@ -22,9 +22,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertFalse;
import java.sql.Connection;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.MySQLJDBCLock;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
index 842f4e1..c49d71d 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/MySQLJDBCLockTest.java
@@ -21,9 +21,8 @@ package org.apache.karaf.main.lock;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.MySQLJDBCLock;
import org.junit.Before;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockIntegrationTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockIntegrationTest.java b/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockIntegrationTest.java
index 80f105c..9c3f170 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockIntegrationTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockIntegrationTest.java
@@ -22,9 +22,8 @@ package org.apache.karaf.main.lock;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.OracleJDBCLock;
import org.junit.Before;
import org.junit.Ignore;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
index 20a8198..30b2400 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/OracleJDBCLockTest.java
@@ -26,9 +26,8 @@ import static org.junit.Assert.*;
import java.sql.Connection;
import java.sql.SQLException;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
-import org.apache.karaf.main.lock.OracleJDBCLock;
import org.junit.Before;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockIntegrationTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockIntegrationTest.java b/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockIntegrationTest.java
index 76a9dbc..9006630 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockIntegrationTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockIntegrationTest.java
@@ -22,7 +22,7 @@ import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import static org.junit.Assert.assertTrue;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
index 818aafe..6d4121f 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/PostgreSQLJDBCLockTest.java
@@ -23,7 +23,7 @@ import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.assertEquals;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/main/src/test/java/org/apache/karaf/main/util/BootstrapLogManagerTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/util/BootstrapLogManagerTest.java b/main/src/test/java/org/apache/karaf/main/util/BootstrapLogManagerTest.java
index 7eb468a..af5bf91 100644
--- a/main/src/test/java/org/apache/karaf/main/util/BootstrapLogManagerTest.java
+++ b/main/src/test/java/org/apache/karaf/main/util/BootstrapLogManagerTest.java
@@ -19,7 +19,7 @@
package org.apache.karaf.main.util;
import java.io.File;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
import java.util.logging.Handler;
import junit.framework.Assert;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 08aeecf..b55ac81 100644
--- a/pom.xml
+++ b/pom.xml
@@ -160,7 +160,7 @@
<felix.framework.security.version>2.2.0</felix.framework.security.version>
<felix.gogo.version>0.10.0</felix.gogo.version>
<felix.plugin.version>2.4.0</felix.plugin.version>
- <felix.utils.version>1.4.2</felix.utils.version>
+ <felix.utils.version>1.6.0</felix.utils.version>
<felix.webconsole.version>4.2.0</felix.webconsole.version>
<felix.webconsole.api.version>3.1.2</felix.webconsole.api.version>
<felix.metatype.version>1.0.10</felix.metatype.version>
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/shell/help/pom.xml
----------------------------------------------------------------------
diff --git a/shell/help/pom.xml b/shell/help/pom.xml
index 78952da..796572a 100644
--- a/shell/help/pom.xml
+++ b/shell/help/pom.xml
@@ -110,7 +110,7 @@
</Export-Package>
<Private-Package>
org.apache.karaf.util.process;-split-package:=merge-first,
- org.apache.karaf.util.properties;-split-package:=merge-first,
+ org.apache.felix.utils.properties;-split-package:=merge-first,
org.apache.karaf.shell.help.impl*
</Private-Package>
</instructions>
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/shell/help/src/main/java/org/apache/karaf/shell/help/impl/HelpSystem.java
----------------------------------------------------------------------
diff --git a/shell/help/src/main/java/org/apache/karaf/shell/help/impl/HelpSystem.java b/shell/help/src/main/java/org/apache/karaf/shell/help/impl/HelpSystem.java
index d88a747..3f05124 100644
--- a/shell/help/src/main/java/org/apache/karaf/shell/help/impl/HelpSystem.java
+++ b/shell/help/src/main/java/org/apache/karaf/shell/help/impl/HelpSystem.java
@@ -24,8 +24,8 @@ import java.util.List;
import java.util.Map;
import org.apache.felix.service.command.CommandSession;
+import org.apache.felix.utils.properties.InterpolationHelper;
import org.apache.karaf.shell.console.HelpProvider;
-import org.apache.karaf.util.properties.InterpolationHelper;
import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/util/src/main/java/org/apache/karaf/util/locks/FileLockUtils.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/locks/FileLockUtils.java b/util/src/main/java/org/apache/karaf/util/locks/FileLockUtils.java
index b3d1c32..b64639b 100644
--- a/util/src/main/java/org/apache/karaf/util/locks/FileLockUtils.java
+++ b/util/src/main/java/org/apache/karaf/util/locks/FileLockUtils.java
@@ -24,7 +24,7 @@ import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock;
-import org.apache.karaf.util.properties.Properties;
+import org.apache.felix.utils.properties.Properties;
public final class FileLockUtils {
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/util/src/main/java/org/apache/karaf/util/properties/InterpolationHelper.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/properties/InterpolationHelper.java b/util/src/main/java/org/apache/karaf/util/properties/InterpolationHelper.java
deleted file mode 100644
index b59dda5..0000000
--- a/util/src/main/java/org/apache/karaf/util/properties/InterpolationHelper.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.util.properties;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.osgi.framework.BundleContext;
-
-/**
- * <p>
- * Enhancement of the standard <code>Properties</code>
- * managing the maintain of comments, etc.
- * </p>
- *
- * @author gnodet, jbonofre
- */
-public class InterpolationHelper {
-
- private InterpolationHelper() {
- }
-
- private static final char ESCAPE_CHAR = '\\';
- private static final String DELIM_START = "${";
- private static final String DELIM_STOP = "}";
-
-
- /**
- * Callback for substitution
- */
- public interface SubstitutionCallback {
-
- public String getValue(String key);
-
- }
-
- /**
- * Perform substitution on a property set
- *
- * @param properties the property set to perform substitution on
- */
- public static void performSubstitution(Map<String,String> properties)
- {
- performSubstitution(properties, (BundleContext) null);
- }
-
- /**
- * Perform substitution on a property set
- *
- * @param properties the property set to perform substitution on
- */
- public static void performSubstitution(Map<String,String> properties, BundleContext context)
- {
- performSubstitution(properties, new BundleContextSubstitutionCallback(context));
- }
-
- /**
- * Perform substitution on a property set
- *
- * @param properties the property set to perform substitution on
- */
- public static void performSubstitution(Map<String,String> properties, SubstitutionCallback callback)
- {
- Map<String, String> org = new HashMap<String, String>(properties);
- for (String name : properties.keySet())
- {
- String value = properties.get(name);
- properties.put(name, substVars(value, name, null, org, callback));
- }
- }
-
- /**
- * <p>
- * This method performs property variable substitution on the
- * specified value. If the specified value contains the syntax
- * <tt>${<prop-name>}</tt>, where <tt><prop-name></tt>
- * refers to either a configuration property or a system property,
- * then the corresponding property value is substituted for the variable
- * placeholder. Multiple variable placeholders may exist in the
- * specified value as well as nested variable placeholders, which
- * are substituted from inner most to outer most. Configuration
- * properties override system properties.
- * </p>
- *
- * @param val The string on which to perform property substitution.
- * @param currentKey The key of the property being evaluated used to
- * detect cycles.
- * @param cycleMap Map of variable references used to detect nested cycles.
- * @param configProps Set of configuration properties.
- * @return The value of the specified string after system property substitution.
- * @throws IllegalArgumentException If there was a syntax error in the
- * property placeholder syntax or a recursive variable reference.
- **/
- public static String substVars(String val,
- String currentKey,
- Map<String,String> cycleMap,
- Map<String,String> configProps)
- throws IllegalArgumentException
- {
- return substVars(val, currentKey, cycleMap, configProps, (SubstitutionCallback) null);
- }
-
- /**
- * <p>
- * This method performs property variable substitution on the
- * specified value. If the specified value contains the syntax
- * <tt>${<prop-name>}</tt>, where <tt><prop-name></tt>
- * refers to either a configuration property or a system property,
- * then the corresponding property value is substituted for the variable
- * placeholder. Multiple variable placeholders may exist in the
- * specified value as well as nested variable placeholders, which
- * are substituted from inner most to outer most. Configuration
- * properties override system properties.
- * </p>
- *
- * @param val The string on which to perform property substitution.
- * @param currentKey The key of the property being evaluated used to
- * detect cycles.
- * @param cycleMap Map of variable references used to detect nested cycles.
- * @param configProps Set of configuration properties.
- * @param context the bundle context to retrieve properties from
- * @return The value of the specified string after system property substitution.
- * @throws IllegalArgumentException If there was a syntax error in the
- * property placeholder syntax or a recursive variable reference.
- **/
- public static String substVars(String val,
- String currentKey,
- Map<String,String> cycleMap,
- Map<String,String> configProps,
- BundleContext context)
- throws IllegalArgumentException
- {
- return substVars(val, currentKey, cycleMap, configProps, new BundleContextSubstitutionCallback(context));
- }
-
- /**
- * <p>
- * This method performs property variable substitution on the
- * specified value. If the specified value contains the syntax
- * <tt>${<prop-name>}</tt>, where <tt><prop-name></tt>
- * refers to either a configuration property or a system property,
- * then the corresponding property value is substituted for the variable
- * placeholder. Multiple variable placeholders may exist in the
- * specified value as well as nested variable placeholders, which
- * are substituted from inner most to outer most. Configuration
- * properties override system properties.
- * </p>
- *
- * @param val The string on which to perform property substitution.
- * @param currentKey The key of the property being evaluated used to
- * detect cycles.
- * @param cycleMap Map of variable references used to detect nested cycles.
- * @param configProps Set of configuration properties.
- * @param callback the callback to obtain substitution values
- * @return The value of the specified string after system property substitution.
- * @throws IllegalArgumentException If there was a syntax error in the
- * property placeholder syntax or a recursive variable reference.
- **/
- public static String substVars(String val,
- String currentKey,
- Map<String,String> cycleMap,
- Map<String,String> configProps,
- SubstitutionCallback callback)
- throws IllegalArgumentException
- {
- return unescape(doSubstVars(val, currentKey, cycleMap, configProps, callback));
- }
-
- private static String doSubstVars(String val,
- String currentKey,
- Map<String,String> cycleMap,
- Map<String,String> configProps,
- SubstitutionCallback callback)
- throws IllegalArgumentException
- {
- if (cycleMap == null)
- {
- cycleMap = new HashMap<String,String>();
- }
-
- // Put the current key in the cycle map.
- cycleMap.put(currentKey, currentKey);
-
- // Assume we have a value that is something like:
- // "leading ${foo.${bar}} middle ${baz} trailing"
-
- // Find the first ending '}' variable delimiter, which
- // will correspond to the first deepest nested variable
- // placeholder.
- int stopDelim = val.indexOf(DELIM_STOP);
- while (stopDelim > 0 && val.charAt(stopDelim - 1) == ESCAPE_CHAR)
- {
- stopDelim = val.indexOf(DELIM_STOP, stopDelim + 1);
- }
-
- // Find the matching starting "${" variable delimiter
- // by looping until we find a start delimiter that is
- // greater than the stop delimiter we have found.
- int startDelim = val.indexOf(DELIM_START);
- while (stopDelim >= 0)
- {
- int idx = val.indexOf(DELIM_START, startDelim + DELIM_START.length());
- if ((idx < 0) || (idx > stopDelim))
- {
- break;
- }
- else if (idx < stopDelim)
- {
- startDelim = idx;
- }
- }
-
- // If we do not have a start or stop delimiter, then just
- // return the existing value.
- if ((startDelim < 0) || (stopDelim < 0))
- {
- return val;
- }
-
- // At this point, we have found a variable placeholder so
- // we must perform a variable substitution on it.
- // Using the start and stop delimiter indices, extract
- // the first, deepest nested variable placeholder.
- String variable = val.substring(startDelim + DELIM_START.length(), stopDelim);
-
- // Verify that this is not a recursive variable reference.
- if (cycleMap.get(variable) != null)
- {
- throw new IllegalArgumentException("recursive variable reference: " + variable);
- }
-
- // Get the value of the deepest nested variable placeholder.
- // Try to configuration properties first.
- String substValue = (String) ((configProps != null) ? configProps.get(variable) : null);
- if (substValue == null)
- {
- if (variable.length() <= 0)
- {
- substValue = "";
- }
- else
- {
- if (callback != null)
- {
- substValue = callback.getValue(variable);
- }
- if (substValue == null)
- {
- substValue = System.getProperty(variable, "");
- }
- }
- }
-
- // Remove the found variable from the cycle map, since
- // it may appear more than once in the value and we don't
- // want such situations to appear as a recursive reference.
- cycleMap.remove(variable);
-
- // Append the leading characters, the substituted value of
- // the variable, and the trailing characters to get the new
- // value.
- val = val.substring(0, startDelim) + substValue + val.substring(stopDelim + DELIM_STOP.length(), val.length());
-
- // Now perform substitution again, since there could still
- // be substitutions to make.
- val = doSubstVars(val, currentKey, cycleMap, configProps, callback);
-
- // Return the value.
- return val;
- }
-
- private static String unescape(String val)
- {
- int escape = val.indexOf(ESCAPE_CHAR);
- while (escape >= 0 && escape < val.length() - 1)
- {
- char c = val.charAt(escape + 1);
- if (c == '{' || c == '}' || c == ESCAPE_CHAR)
- {
- val = val.substring(0, escape) + val.substring(escape + 1);
- }
- escape = val.indexOf(ESCAPE_CHAR, escape + 1);
- }
- return val;
- }
-
- static class BundleContextSubstitutionCallback implements SubstitutionCallback
- {
- private final BundleContext context;
-
- public BundleContextSubstitutionCallback(BundleContext context)
- {
- this.context = context;
- }
-
- public String getValue(String key)
- {
- String value = null;
- if (context != null)
- {
- value = context.getProperty(key);
- }
- if (value == null)
- {
- value = System.getProperty(key, "");
- }
- return value;
- }
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/util/src/main/java/org/apache/karaf/util/properties/Properties.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/properties/Properties.java b/util/src/main/java/org/apache/karaf/util/properties/Properties.java
deleted file mode 100644
index dffc3f2..0000000
--- a/util/src/main/java/org/apache/karaf/util/properties/Properties.java
+++ /dev/null
@@ -1,1102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.util.properties;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FilterWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import org.osgi.framework.BundleContext;
-
-/**
- * <p>
- * Enhancement of the standard <code>Properties</code>
- * managing the maintain of comments, etc.
- * </p>
- *
- * @author gnodet, jbonofre
- */
-public class Properties extends AbstractMap<String, String> {
-
- /** Constant for the supported comment characters.*/
- private static final String COMMENT_CHARS = "#!";
-
- /** The list of possible key/value separators */
- private static final char[] SEPARATORS = new char[] {'=', ':'};
-
- /** The white space characters used as key/value separators. */
- private static final char[] WHITE_SPACE = new char[] {' ', '\t', '\f'};
-
- /**
- * The default encoding (ISO-8859-1 as specified by
- * http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html)
- */
- private static final String DEFAULT_ENCODING = "ISO-8859-1";
-
- /** Constant for the platform specific line separator.*/
- private static final String LINE_SEPARATOR = AccessController.doPrivileged(new PrivilegedAction<String>() {
- public String run() {
- return System.getProperty("line.separator");
- }
- });
-
- /** Constant for the radix of hex numbers.*/
- private static final int HEX_RADIX = 16;
-
- /** Constant for the length of a unicode literal.*/
- private static final int UNICODE_LEN = 4;
-
- private final Map<String,String> storage = new LinkedHashMap<String,String>();
- private final Map<String,Layout> layout = new LinkedHashMap<String,Layout>();
- private List<String> header;
- private List<String> footer;
- private File location;
- private InterpolationHelper.SubstitutionCallback callback;
- private boolean substitute = true;
-
- public Properties() {
- }
-
- public Properties(File location) throws IOException {
- this(location, (InterpolationHelper.SubstitutionCallback) null);
- }
-
- public Properties(File location, BundleContext context) throws IOException {
- this(location, new InterpolationHelper.BundleContextSubstitutionCallback(context));
- }
-
- public Properties(File location, InterpolationHelper.SubstitutionCallback callback) throws IOException {
- this.location = location;
- this.callback = callback;
- if(location.exists())
- load(location);
- }
-
- public Properties(boolean substitute) throws IOException {
- this.substitute = substitute;
- }
-
- public Properties(File location, boolean substitute) throws IOException {
- this.location = location;
- this.substitute = substitute;
- }
-
- public void load(File location) throws IOException {
- InputStream is = new FileInputStream(location);
- try {
- load(is);
- } finally {
- is.close();
- }
- }
-
- public void load(URL location) throws IOException {
- InputStream is = location.openStream();
- try {
- load(is);
- } finally {
- is.close();
- }
- }
-
- public void load(InputStream is) throws IOException {
- load(new InputStreamReader(is, DEFAULT_ENCODING));
- }
-
- public void load(Reader reader) throws IOException {
- loadLayout(reader);
- }
-
- public void save() throws IOException {
- save(this.location);
- }
-
- public void save(File location) throws IOException {
- OutputStream os = new FileOutputStream(location);
- try {
- save(os);
- } finally {
- os.close();
- }
- }
-
- public void save(OutputStream os) throws IOException {
- save(new OutputStreamWriter(os, DEFAULT_ENCODING));
- }
-
- public void save(Writer writer) throws IOException {
- saveLayout(writer);
- }
-
- /**
- * Store a properties into a output stream, preserving comments, special character, etc.
- * This method is mainly to be compatible with the java.util.Properties class.
- *
- * @param os an output stream.
- * @param comment this parameter is ignored as this Properties
- * @throws java.io.IOException
- */
- public void store(OutputStream os, String comment) throws IOException {
- this.save(os);
- }
-
- /**
- * Searches for the property with the specified key in this property list.
- *
- * @param key the property key.
- * @return the value in this property list with the specified key value.
- */
- public String getProperty(String key) {
- return this.get(key);
- }
-
- /**
- * Searches for the property with the specified key in this property list. If the key is not found in this property
- * list, the default property list, and its defaults, recursively, are then checked. The method returns the default
- * value argument if the property is not found.
- *
- * @param key the property key.
- * @param defaultValue a default value.
- * @return
- */
- public String getProperty(String key, String defaultValue) {
- if (this.get(key) != null)
- return this.get(key);
- return defaultValue;
- }
-
- @Override
- public Set<Entry<String, String>> entrySet() {
- return storage.entrySet();
- }
-
- /**
- * Returns an enumeration of all the keys in this property list, including distinct keys in the default property
- * list if a key of the same name has not already been found from the main properties list.
- *
- * @return an enumeration of all the keys in this property list, including the keys in the default property list.
- */
- public Enumeration<?> propertyNames() {
- return Collections.enumeration(storage.keySet());
- }
-
- /**
- * Calls the map method put. Provided for parallelism with the getProperty method.
- * Enforces use of strings for property keys and values. The value returned is the result of the map call to put.
- *
- * @param key the key to be placed into this property list.
- * @param value the value corresponding to the key.
- * @return the previous value of the specified key in this property list, or null if it did not have one.
- */
- public Object setProperty(String key, String value) {
- return this.put(key, value);
- }
-
- @Override
- public String put(String key, String value) {
- String old = storage.put(key, value);
- if (old == null || !old.equals(value)) {
- Layout l = layout.get(key);
- if (l != null) {
- l.clearValue();
- }
- }
- return old;
- }
-
- public String put(String key, List<String> commentLines, List<String> valueLines) {
- commentLines = new ArrayList<String>(commentLines);
- valueLines = new ArrayList<String>(valueLines);
- String escapedKey = escapeKey(key);
- int lastLine = valueLines.size() - 1;
- if (valueLines.isEmpty()) {
- valueLines.add(escapedKey + "=");
- } else if (!valueLines.get(0).trim().startsWith(escapedKey)) {
- valueLines.set(0, escapedKey + " = " + escapeJava(valueLines.get(0)) + (0 < lastLine? "\\": ""));
- }
- for (int i = 1; i < valueLines.size(); i++) {
- valueLines.set(i, escapeJava(valueLines.get(i)) + (i < lastLine? "\\": ""));
- }
- StringBuilder value = new StringBuilder();
- for (String line: valueLines) {
- value.append(line);
- }
- this.layout.put(key, new Layout(commentLines, valueLines));
- return storage.put(key, unescapeJava(value.toString()));
- }
-
- public String put(String key, List<String> commentLines, String value) {
- commentLines = new ArrayList<String>(commentLines);
- this.layout.put(key, new Layout(commentLines, null));
- return storage.put(key, value);
- }
-
- public String put(String key, String comment, String value) {
- return put(key, Collections.singletonList(comment), value);
- }
-
- public List<String> getRaw(String key) {
- if (layout.containsKey(key)) {
- if (layout.get(key).getValueLines() != null) {
- return new ArrayList<String>(layout.get(key).getValueLines());
- }
- }
- List<String> result = new ArrayList<String>();
- if (storage.containsKey(key)) {
- result.add(storage.get(key));
- }
- return result;
- }
-
- @Override
- public String remove(Object key) {
- Layout l = layout.get(key);
- if (l != null) {
- l.clearValue();
- }
- return storage.remove(key);
- }
-
- @Override
- public void clear() {
- for (Layout l : layout.values()) {
- l.clearValue();
- }
- storage.clear();
- }
-
- /**
- * Return the comment header.
- *
- * @return the comment header
- */
- public List<String> getHeader()
- {
- return header;
- }
-
- /**
- * Set the comment header.
- *
- * @param header the header to use
- */
- public void setHeader(List<String> header)
- {
- this.header = header;
- }
-
- /**
- * Return the comment footer.
- *
- * @return the comment footer
- */
- public List<String> getFooter()
- {
- return footer;
- }
-
- /**
- * Set the comment footer.
- *
- * @param footer the footer to use
- */
- public void setFooter(List<String> footer)
- {
- this.footer = footer;
- }
-
- /**
- * Reads a properties file and stores its internal structure. The found
- * properties will be added to the associated configuration object.
- *
- * @param in the reader to the properties file
- * @throws java.io.IOException if an error occurs
- */
- protected void loadLayout(Reader in) throws IOException
- {
- PropertiesReader reader = new PropertiesReader(in);
- while (reader.nextProperty())
- {
- storage.put(reader.getPropertyName(), reader.getPropertyValue());
- int idx = checkHeaderComment(reader.getCommentLines());
- layout.put(reader.getPropertyName(),
- new Layout(idx < reader.getCommentLines().size() ?
- new ArrayList<String>(reader.getCommentLines().subList(idx, reader.getCommentLines().size())) :
- null,
- new ArrayList<String>(reader.getValueLines())));
- }
- footer = new ArrayList<String>(reader.getCommentLines());
- if (substitute)
- {
- substitute();
- }
- }
-
- public void substitute()
- {
- substitute(callback);
- }
-
- public void substitute(InterpolationHelper.SubstitutionCallback callback)
- {
- if(callback != null)
- {
- InterpolationHelper.performSubstitution(storage, callback);
- }
- else {
- InterpolationHelper.performSubstitution(storage);
- }
-
- }
-
- /**
- * Writes the properties file to the given writer, preserving as much of its
- * structure as possible.
- *
- * @param out the writer
- * @throws java.io.IOException if an error occurs
- */
- protected void saveLayout(Writer out) throws IOException
- {
- PropertiesWriter writer = new PropertiesWriter(out);
- if (header != null)
- {
- for (String s : header)
- {
- writer.writeln(s);
- }
- }
-
- for (String key : storage.keySet())
- {
- Layout l = layout.get(key);
- if (l != null && l.getCommentLines() != null)
- {
- for (String s : l.getCommentLines())
- {
- writer.writeln(s);
- }
- }
- if (l != null && l.getValueLines() != null)
- {
- for (String s : l.getValueLines())
- {
- writer.writeln(s);
- }
- }
- else
- {
- writer.writeProperty(key, storage.get(key));
- }
- }
- if (footer != null)
- {
- for (String s : footer)
- {
- writer.writeln(s);
- }
- }
- writer.flush();
- }
-
- /**
- * Checks if parts of the passed in comment can be used as header comment.
- * This method checks whether a header comment can be defined (i.e. whether
- * this is the first comment in the loaded file). If this is the case, it is
- * searched for the lates blank line. This line will mark the end of the
- * header comment. The return value is the index of the first line in the
- * passed in list, which does not belong to the header comment.
- *
- * @param commentLines the comment lines
- * @return the index of the next line after the header comment
- */
- private int checkHeaderComment(List<String> commentLines)
- {
- if (getHeader() == null && layout.isEmpty())
- {
- // This is the first comment. Search for blank lines.
- int index = commentLines.size() - 1;
- while (index >= 0 && commentLines.get(index).length() > 0)
- {
- index--;
- }
- setHeader(new ArrayList<String>(commentLines.subList(0, index + 1)));
- return index + 1;
- }
- else
- {
- return 0;
- }
- }
-
- /**
- * Tests whether a line is a comment, i.e. whether it starts with a comment
- * character.
- *
- * @param line the line
- * @return a flag if this is a comment line
- */
- static boolean isCommentLine(String line) {
- String s = line.trim();
- // blank lines are also treated as comment lines
- return s.length() < 1 || COMMENT_CHARS.indexOf(s.charAt(0)) >= 0;
- }
-
- /**
- * <p>Unescapes any Java literals found in the <code>String</code> to a
- * <code>Writer</code>.</p> This is a slightly modified version of the
- * StringEscapeUtils.unescapeJava() function in commons-lang that doesn't
- * drop escaped separators (i.e '\,').
- *
- * @param str the <code>String</code> to unescape, may be null
- * @return the processed string
- * @throws IllegalArgumentException if the Writer is <code>null</code>
- */
- protected static String unescapeJava(String str) {
- if (str == null) {
- return null;
- }
- int sz = str.length();
- StringBuffer out = new StringBuffer(sz);
- StringBuffer unicode = new StringBuffer(UNICODE_LEN);
- boolean hadSlash = false;
- boolean inUnicode = false;
- for (int i = 0; i < sz; i++) {
- char ch = str.charAt(i);
- if (inUnicode) {
- // if in unicode, then we're reading unicode
- // values in somehow
- unicode.append(ch);
- if (unicode.length() == UNICODE_LEN) {
- // unicode now contains the four hex digits
- // which represents our unicode character
- try {
- int value = Integer.parseInt(unicode.toString(), HEX_RADIX);
- out.append((char) value);
- unicode.setLength(0);
- inUnicode = false;
- hadSlash = false;
- } catch (NumberFormatException nfe) {
- throw new IllegalArgumentException("Unable to parse unicode value: " + unicode, nfe);
- }
- }
- continue;
- }
-
- if (hadSlash) {
- // handle an escaped value
- hadSlash = false;
- switch (ch) {
- case '\\' :
- out.append('\\');
- break;
- case '\'' :
- out.append('\'');
- break;
- case '\"' :
- out.append('"');
- break;
- case 'r' :
- out.append('\r');
- break;
- case 'f' :
- out.append('\f');
- break;
- case 't' :
- out.append('\t');
- break;
- case 'n' :
- out.append('\n');
- break;
- case 'b' :
- out.append('\b');
- break;
- case 'u' :
- // uh-oh, we're in unicode country....
- inUnicode = true;
- break;
- default :
- out.append(ch);
- break;
- }
- continue;
- } else if (ch == '\\') {
- hadSlash = true;
- continue;
- }
- out.append(ch);
- }
-
- if (hadSlash) {
- // then we're in the weird case of a \ at the end of the
- // string, let's output it anyway.
- out.append('\\');
- }
-
- return out.toString();
- }
-
- /**
- * <p>Escapes the characters in a <code>String</code> using Java String rules.</p>
- *
- * <p>Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.) </p>
- *
- * <p>So a tab becomes the characters <code>'\\'</code> and
- * <code>'t'</code>.</p>
- *
- * <p>The only difference between Java strings and JavaScript strings
- * is that in JavaScript, a single quote must be escaped.</p>
- *
- * <p>Example:
- * <pre>
- * input string: He didn't say, "Stop!"
- * output string: He didn't say, \"Stop!\"
- * </pre>
- * </p>
- *
- * @param str String to escape values in, may be null
- * @return String with escaped values, <code>null</code> if null string input
- */
- protected static String escapeJava(String str) {
- if (str == null) {
- return null;
- }
- int sz = str.length();
- StringBuffer out = new StringBuffer(sz * 2);
- for (int i = 0; i < sz; i++) {
- char ch = str.charAt(i);
- // handle unicode
- if (ch > 0xfff) {
- out.append("\\u").append(hex(ch));
- } else if (ch > 0xff) {
- out.append("\\u0").append(hex(ch));
- } else if (ch > 0x7f) {
- out.append("\\u00").append(hex(ch));
- } else if (ch < 32) {
- switch (ch) {
- case '\b' :
- out.append('\\');
- out.append('b');
- break;
- case '\n' :
- out.append('\\');
- out.append('n');
- break;
- case '\t' :
- out.append('\\');
- out.append('t');
- break;
- case '\f' :
- out.append('\\');
- out.append('f');
- break;
- case '\r' :
- out.append('\\');
- out.append('r');
- break;
- default :
- if (ch > 0xf) {
- out.append("\\u00").append(hex(ch));
- } else {
- out.append("\\u000").append(hex(ch));
- }
- break;
- }
- } else {
- switch (ch) {
- case '"' :
- out.append('\\');
- out.append('"');
- break;
- case '\\' :
- out.append('\\');
- out.append('\\');
- break;
- default :
- out.append(ch);
- break;
- }
- }
- }
- return out.toString();
- }
-
- /**
- * <p>Returns an upper case hexadecimal <code>String</code> for the given
- * character.</p>
- *
- * @param ch The character to convert.
- * @return An upper case hexadecimal <code>String</code>
- */
- protected static String hex(char ch) {
- return Integer.toHexString(ch).toUpperCase(Locale.ENGLISH);
- }
-
- /**
- * <p>Checks if the value is in the given array.</p>
- *
- * <p>The method returns <code>false</code> if a <code>null</code> array is passed in.</p>
- *
- * @param array the array to search through
- * @param valueToFind the value to find
- * @return <code>true</code> if the array contains the object
- */
- public static boolean contains(char[] array, char valueToFind) {
- if (array == null) {
- return false;
- }
- for (int i = 0; i < array.length; i++) {
- if (valueToFind == array[i]) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Escape the separators in the key.
- *
- * @param key the key
- * @return the escaped key
- */
- private static String escapeKey(String key)
- {
- StringBuffer newkey = new StringBuffer();
-
- for (int i = 0; i < key.length(); i++)
- {
- char c = key.charAt(i);
-
- if (contains(SEPARATORS, c) || contains(WHITE_SPACE, c))
- {
- // escape the separator
- newkey.append('\\');
- newkey.append(c);
- }
- else
- {
- newkey.append(c);
- }
- }
-
- return newkey.toString();
- }
-
- /**
- * This class is used to read properties lines. These lines do
- * not terminate with new-line chars but rather when there is no
- * backslash sign a the end of the line. This is used to
- * concatenate multiple lines for readability.
- */
- public static class PropertiesReader extends LineNumberReader
- {
- /** Stores the comment lines for the currently processed property.*/
- private final List<String> commentLines;
-
- /** Stores the value lines for the currently processed property.*/
- private final List<String> valueLines;
-
- /** Stores the name of the last read property.*/
- private String propertyName;
-
- /** Stores the value of the last read property.*/
- private String propertyValue;
-
- /**
- * Creates a new instance of <code>PropertiesReader</code> and sets
- * the underlaying reader and the list delimiter.
- *
- * @param reader the reader
- */
- public PropertiesReader(Reader reader)
- {
- super(reader);
- commentLines = new ArrayList<String>();
- valueLines = new ArrayList<String>();
- }
-
- /**
- * Reads a property line. Returns null if Stream is
- * at EOF. Concatenates lines ending with "\".
- * Skips lines beginning with "#" or "!" and empty lines.
- * The return value is a property definition (<code><name></code>
- * = <code><value></code>)
- *
- * @return A string containing a property value or null
- *
- * @throws java.io.IOException in case of an I/O error
- */
- public String readProperty() throws IOException
- {
- commentLines.clear();
- valueLines.clear();
- StringBuffer buffer = new StringBuffer();
-
- while (true)
- {
- String line = readLine();
- if (line == null)
- {
- // EOF
- return null;
- }
-
- if (isCommentLine(line))
- {
- commentLines.add(line);
- continue;
- }
-
- valueLines.add(line);
- while (line.length() > 0 && contains(WHITE_SPACE, line.charAt(0)))
- {
- line = line.substring(1, line.length());
- }
-
- if (checkCombineLines(line))
- {
- line = line.substring(0, line.length() - 1);
- buffer.append(line);
- }
- else
- {
- buffer.append(line);
- break;
- }
- }
- return buffer.toString();
- }
-
- /**
- * Parses the next property from the input stream and stores the found
- * name and value in internal fields. These fields can be obtained using
- * the provided getter methods. The return value indicates whether EOF
- * was reached (<b>false</b>) or whether further properties are
- * available (<b>true</b>).
- *
- * @return a flag if further properties are available
- * @throws java.io.IOException if an error occurs
- */
- public boolean nextProperty() throws IOException
- {
- String line = readProperty();
-
- if (line == null)
- {
- return false; // EOF
- }
-
- // parse the line
- String[] property = parseProperty(line);
- propertyName = unescapeJava(property[0]);
- propertyValue = unescapeJava(property[1]);
- return true;
- }
-
- /**
- * Returns the comment lines that have been read for the last property.
- *
- * @return the comment lines for the last property returned by
- * <code>readProperty()</code>
- */
- public List<String> getCommentLines()
- {
- return commentLines;
- }
-
- /**
- * Returns the value lines that have been read for the last property.
- *
- * @return the raw value lines for the last property returned by
- * <code>readProperty()</code>
- */
- public List<String> getValueLines()
- {
- return valueLines;
- }
-
- /**
- * Returns the name of the last read property. This method can be called
- * after <code>{@link #nextProperty()}</code> was invoked and its
- * return value was <b>true</b>.
- *
- * @return the name of the last read property
- */
- public String getPropertyName()
- {
- return propertyName;
- }
-
- /**
- * Returns the value of the last read property. This method can be
- * called after <code>{@link #nextProperty()}</code> was invoked and
- * its return value was <b>true</b>.
- *
- * @return the value of the last read property
- */
- public String getPropertyValue()
- {
- return propertyValue;
- }
-
- /**
- * Checks if the passed in line should be combined with the following.
- * This is true, if the line ends with an odd number of backslashes.
- *
- * @param line the line
- * @return a flag if the lines should be combined
- */
- private static boolean checkCombineLines(String line)
- {
- int bsCount = 0;
- for (int idx = line.length() - 1; idx >= 0 && line.charAt(idx) == '\\'; idx--)
- {
- bsCount++;
- }
-
- return bsCount % 2 != 0;
- }
-
- /**
- * Parse a property line and return the key and the value in an array.
- *
- * @param line the line to parse
- * @return an array with the property's key and value
- */
- private static String[] parseProperty(String line)
- {
- // sorry for this spaghetti code, please replace it as soon as
- // possible with a regexp when the Java 1.3 requirement is dropped
-
- String[] result = new String[2];
- StringBuffer key = new StringBuffer();
- StringBuffer value = new StringBuffer();
-
- // state of the automaton:
- // 0: key parsing
- // 1: antislash found while parsing the key
- // 2: separator crossing
- // 3: white spaces
- // 4: value parsing
- int state = 0;
-
- for (int pos = 0; pos < line.length(); pos++)
- {
- char c = line.charAt(pos);
-
- switch (state)
- {
- case 0:
- if (c == '\\')
- {
- state = 1;
- }
- else if (contains(WHITE_SPACE, c))
- {
- // switch to the separator crossing state
- state = 2;
- }
- else if (contains(SEPARATORS, c))
- {
- // switch to the value parsing state
- state = 3;
- }
- else
- {
- key.append(c);
- }
-
- break;
-
- case 1:
- if (contains(SEPARATORS, c) || contains(WHITE_SPACE, c))
- {
- // this is an escaped separator or white space
- key.append(c);
- }
- else
- {
- // another escaped character, the '\' is preserved
- key.append('\\');
- key.append(c);
- }
-
- // return to the key parsing state
- state = 0;
-
- break;
-
- case 2:
- if (contains(WHITE_SPACE, c))
- {
- // do nothing, eat all white spaces
- state = 2;
- }
- else if (contains(SEPARATORS, c))
- {
- // switch to the value parsing state
- state = 3;
- }
- else
- {
- // any other character indicates we encoutered the beginning of the value
- value.append(c);
-
- // switch to the value parsing state
- state = 4;
- }
-
- break;
-
- case 3:
- if (contains(WHITE_SPACE, c))
- {
- // do nothing, eat all white spaces
- state = 3;
- }
- else
- {
- // any other character indicates we encoutered the beginning of the value
- value.append(c);
-
- // switch to the value parsing state
- state = 4;
- }
-
- break;
-
- case 4:
- value.append(c);
- break;
- }
- }
-
- result[0] = key.toString();
- result[1] = value.toString();
-
- return result;
- }
- } // class PropertiesReader
-
- /**
- * This class is used to write properties lines.
- */
- public static class PropertiesWriter extends FilterWriter
- {
- /**
- * Constructor.
- *
- * @param writer a Writer object providing the underlying stream
- */
- public PropertiesWriter(Writer writer)
- {
- super(writer);
- }
-
- /**
- * Writes the given property and its value.
- *
- * @param key the property key
- * @param value the property value
- * @throws java.io.IOException if an error occurs
- */
- public void writeProperty(String key, String value) throws IOException
- {
- write(escapeKey(key));
- write(" = ");
- write(escapeJava(value));
- writeln(null);
- }
-
- /**
- * Helper method for writing a line with the platform specific line
- * ending.
- *
- * @param s the content of the line (may be <b>null</b>)
- * @throws java.io.IOException if an error occurs
- */
- public void writeln(String s) throws IOException
- {
- if (s != null)
- {
- write(s);
- }
- write(LINE_SEPARATOR);
- }
-
- } // class PropertiesWriter
-
- /**
- * TODO
- */
- protected static class Layout {
-
- private List<String> commentLines;
- private List<String> valueLines;
-
- public Layout() {
- }
-
- public Layout(List<String> commentLines, List<String> valueLines) {
- this.commentLines = commentLines;
- this.valueLines = valueLines;
- }
-
- public List<String> getCommentLines() {
- return commentLines;
- }
-
- public void setCommentLines(List<String> commentLines) {
- this.commentLines = commentLines;
- }
-
- public List<String> getValueLines() {
- return valueLines;
- }
-
- public void setValueLines(List<String> valueLines) {
- this.valueLines = valueLines;
- }
-
- public void clearValue() {
- this.valueLines = null;
- }
-
- } // class Layout
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/karaf/blob/85157132/wrapper/core/pom.xml
----------------------------------------------------------------------
diff --git a/wrapper/core/pom.xml b/wrapper/core/pom.xml
index 966d340..f17a2b0 100644
--- a/wrapper/core/pom.xml
+++ b/wrapper/core/pom.xml
@@ -114,7 +114,7 @@
</Private-Package>
<Import-Package>
!org.apache.felix.utils.properties,
- !org.apache.karaf.util.properties,
+ !org.apache.karaf.util.locks,
!org.apache.karaf.info,
*
</Import-Package>