SLING-5190 factor out of SlingSettingsServiceImpl a Sling ID util
* fix logging and adjust exception handling
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1710190 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/settings/impl/SlingIdUtil.java b/src/main/java/org/apache/sling/settings/impl/SlingIdUtil.java
index 95032c2..0bcbf3b 100644
--- a/src/main/java/org/apache/sling/settings/impl/SlingIdUtil.java
+++ b/src/main/java/org/apache/sling/settings/impl/SlingIdUtil.java
@@ -31,7 +31,7 @@
/**
* Read the id from a file.
*/
- static String readSlingId(final File idFile, int maxLength) {
+ static String readSlingId(final File idFile, int maxLength) throws IOException {
if (idFile.exists() && idFile.length() >= maxLength) {
DataInputStream dis = null;
try {
@@ -41,13 +41,7 @@
final String rawString = new String(rawBytes, "ISO-8859-1");
// roundtrip to ensure correct format of UUID value
- final String id = UUID.fromString(rawString).toString();
- // logger.debug("Got Sling ID {} from file {}", id, idFile);
-
- return id;
- } catch (final Throwable t) {
- // logger.error("Failed reading UUID from id file " + idFile
- // + ", creating new id", t);
+ return UUID.fromString(rawString).toString();
} finally {
if (dis != null) {
try {
@@ -62,7 +56,7 @@
/**
* Write the sling id file.
*/
- static void writeSlingId(final File idFile, final String id) {
+ static void writeSlingId(final File idFile, final String id) throws IOException {
idFile.delete();
idFile.getParentFile().mkdirs();
DataOutputStream dos = null;
@@ -71,8 +65,6 @@
dos = new DataOutputStream(new FileOutputStream(idFile));
dos.write(rawBytes, 0, rawBytes.length);
dos.flush();
- } catch (final Throwable t) {
- // logger.error("Failed writing UUID to id file " + idFile, t);
} finally {
if (dos != null) {
try {
diff --git a/src/main/java/org/apache/sling/settings/impl/SlingSettingsServiceImpl.java b/src/main/java/org/apache/sling/settings/impl/SlingSettingsServiceImpl.java
index 1899aa3..d865896 100644
--- a/src/main/java/org/apache/sling/settings/impl/SlingSettingsServiceImpl.java
+++ b/src/main/java/org/apache/sling/settings/impl/SlingSettingsServiceImpl.java
@@ -127,12 +127,23 @@
// the osgi framework does not support storing something in the file system
throw new RuntimeException("Unable to read from bundle data file.");
}
- this.slingId = SlingIdUtil.readSlingId(idFile, SLING_ID_LENGTH);
+
+ try {
+ slingId = SlingIdUtil.readSlingId(idFile, SLING_ID_LENGTH);
+ logger.info("Read Sling ID {} from file {}", slingId, idFile);
+ } catch (final Throwable t) {
+ logger.error("Failed reading Sling ID from file " + idFile, t);
+ }
// no sling id yet or failure to read file: create an id and store
if (slingId == null) {
slingId = UUID.randomUUID().toString();
- SlingIdUtil.writeSlingId(idFile, this.slingId);
+ logger.info("Created new Sling ID {}", slingId);
+ try {
+ SlingIdUtil.writeSlingId(idFile, slingId);
+ } catch (final Throwable t) {
+ logger.error("Failed writing Sling ID to file " + idFile, t);
+ }
}
}