diff --git a/README.md b/README.md
index d852e08d6..16798eb51 100644
--- a/README.md
+++ b/README.md
@@ -33,7 +33,7 @@ If your build fails with Android/dex packaging errors, you forgot the clean.
org.fourthline.cling
cling-core
- 2.0.0
+ 2.0.1
````
diff --git a/core/pom.xml b/core/pom.xml
index 4f9359e28..11d2d9c07 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -7,7 +7,7 @@
org.fourthline.cling
cling
- 2.0.0
+ 2.0.1
Cling Core
diff --git a/core/src/main/java/org/fourthline/cling/android/FixedAndroidLogHandler.java b/core/src/main/java/org/fourthline/cling/android/FixedAndroidLogHandler.java
new file mode 100644
index 000000000..6d20e0ebf
--- /dev/null
+++ b/core/src/main/java/org/fourthline/cling/android/FixedAndroidLogHandler.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed 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.fourthline.cling.android;
+
+import android.util.Log;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.logging.Formatter;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/*
+Taken from: http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=core/java/com/android/internal/logging/AndroidHandler.java;hb=c2ad241504fcaa12d4579d3b0b4038d1ca8d08c9
+ */
+public class FixedAndroidLogHandler extends Handler {
+ /**
+ * Holds the formatter for all Android log handlers.
+ */
+ private static final Formatter THE_FORMATTER = new Formatter() {
+ @Override
+ public String format(LogRecord r) {
+ Throwable thrown = r.getThrown();
+ if (thrown != null) {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ sw.write(r.getMessage());
+ sw.write("\n");
+ thrown.printStackTrace(pw);
+ pw.flush();
+ return sw.toString();
+ } else {
+ return r.getMessage();
+ }
+ }
+ };
+
+ /**
+ * Constructs a new instance of the Android log handler.
+ */
+ public FixedAndroidLogHandler() {
+ setFormatter(THE_FORMATTER);
+ }
+
+ @Override
+ public void close() {
+ // No need to close, but must implement abstract method.
+ }
+
+ @Override
+ public void flush() {
+ // No need to flush, but must implement abstract method.
+ }
+
+ @Override
+ public void publish(LogRecord record) {
+ try {
+ int level = getAndroidLevel(record.getLevel());
+ String tag = record.getLoggerName();
+
+ if (tag == null) {
+ // Anonymous logger.
+ tag = "null";
+ } else {
+ // Tags must be <= 23 characters.
+ int length = tag.length();
+ if (length > 23) {
+ // Most loggers use the full class name. Try dropping the
+ // package.
+ int lastPeriod = tag.lastIndexOf(".");
+ if (length - lastPeriod - 1 <= 23) {
+ tag = tag.substring(lastPeriod + 1);
+ } else {
+ // Use last 23 chars.
+ tag = tag.substring(tag.length() - 23);
+ }
+ }
+ }
+
+ /* ############################################################################################
+
+ Instead of using the perfectly fine java.util.logging API for setting the
+ loggable levels, this call relies on a totally obscure "local.prop" file which you have to place on
+ your device. By default, if you do not have that file and if you do not execute some magic
+ "setprop" commands on your device, only INFO/WARN/ERROR is loggable. So whatever you do with
+ java.util.logging.Logger.setLevel(...) doesn't have any effect. The debug messages might arrive
+ here but they are dropped because you _also_ have to set the Android internal logging level with
+ the aforementioned magic switches.
+
+ Also, consider that you have to understand how a JUL logger name is mapped to the "tag" of
+ the Android log. Basically, the whole cutting and cropping procedure above is what you have to
+ memorize if you want to log with JUL and configure Android for debug output.
+
+ I actually admire the pure evil of this setup, even Mr. Ceki can learn something!
+
+ Commenting out these lines makes it all work as expected:
+
+ if (!Log.isLoggable(tag, level)) {
+ return;
+ }
+
+ ############################################################################################### */
+
+ String message = getFormatter().format(record);
+ Log.println(level, tag, message);
+ } catch (RuntimeException e) {
+ Log.e("AndroidHandler", "Error logging message.", e);
+ }
+ }
+
+ /**
+ * Converts a {@link java.util.logging.Logger} logging level into an Android one.
+ *
+ * @param level The {@link java.util.logging.Logger} logging level.
+ *
+ * @return The resulting Android logging level.
+ */
+ static int getAndroidLevel(Level level) {
+ int value = level.intValue();
+ if (value >= 1000) { // SEVERE
+ return Log.ERROR;
+ } else if (value >= 900) { // WARNING
+ return Log.WARN;
+ } else if (value >= 800) { // INFO
+ return Log.INFO;
+ } else {
+ return Log.DEBUG;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/core/src/manual/android/index.xhtml b/core/src/manual/android/index.xhtml
index edb6f9675..0534279ed 100644
--- a/core/src/manual/android/index.xhtml
+++ b/core/src/manual/android/index.xhtml
@@ -150,7 +150,7 @@
on Android you will not see FINE
, FINER
, and FINEST
log
messages, as their built-in log handler is broken (or, so badly designed that it might as well
be broken). The easiest workaround is to set a custom log handler available in the
- seamless-android
package.
+ FixedAndroidLogHandler
class.
diff --git a/core/src/site/xhtml/index.xhtml b/core/src/site/xhtml/index.xhtml
index 60f3be56e..61ff2eb90 100644
--- a/core/src/site/xhtml/index.xhtml
+++ b/core/src/site/xhtml/index.xhtml
@@ -92,7 +92,7 @@
org.fourthline.cling
cling-core
- 2.0.0
+ 2.0.1
]]>
diff --git a/demo/android/browser/pom.xml b/demo/android/browser/pom.xml
index fc1d89766..52c8ece70 100755
--- a/demo/android/browser/pom.xml
+++ b/demo/android/browser/pom.xml
@@ -5,7 +5,7 @@
org.fourthline.cling
cling-demo-android
- 2.0.0
+ 2.0.1
Cling Demo Android Browser
diff --git a/demo/android/browser/src/main/java/org/fourthline/cling/demo/android/browser/BrowserActivity.java b/demo/android/browser/src/main/java/org/fourthline/cling/demo/android/browser/BrowserActivity.java
index 9d1ad302e..e2d0534db 100644
--- a/demo/android/browser/src/main/java/org/fourthline/cling/demo/android/browser/BrowserActivity.java
+++ b/demo/android/browser/src/main/java/org/fourthline/cling/demo/android/browser/BrowserActivity.java
@@ -33,6 +33,7 @@
import android.widget.Toast;
import org.fourthline.cling.android.AndroidUpnpService;
import org.fourthline.cling.android.AndroidUpnpServiceImpl;
+import org.fourthline.cling.android.FixedAndroidLogHandler;
import org.fourthline.cling.model.meta.Device;
import org.fourthline.cling.model.meta.LocalDevice;
import org.fourthline.cling.model.meta.RemoteDevice;
@@ -90,7 +91,7 @@ public void onCreate(Bundle savedInstanceState) {
// Fix the logging integration between java.util.logging and Android internal logging
org.seamless.util.logging.LoggingUtil.resetRootHandler(
- new org.seamless.android.FixedAndroidLogHandler()
+ new FixedAndroidLogHandler()
);
// Now you can enable logging as needed for various categories of Cling:
// Logger.getLogger("org.fourthline.cling").setLevel(Level.FINEST);
diff --git a/demo/android/light/pom.xml b/demo/android/light/pom.xml
index 77302f84c..9f8ccc2bc 100755
--- a/demo/android/light/pom.xml
+++ b/demo/android/light/pom.xml
@@ -5,7 +5,7 @@
org.fourthline.cling
cling-demo-android
- 2.0.0
+ 2.0.1
Cling Demo Android Light
diff --git a/demo/android/light/src/main/java/org/fourthline/cling/demo/android/light/LightActivity.java b/demo/android/light/src/main/java/org/fourthline/cling/demo/android/light/LightActivity.java
index c39b92e5f..c1408905d 100644
--- a/demo/android/light/src/main/java/org/fourthline/cling/demo/android/light/LightActivity.java
+++ b/demo/android/light/src/main/java/org/fourthline/cling/demo/android/light/LightActivity.java
@@ -29,6 +29,7 @@
import android.widget.Toast;
import org.fourthline.cling.android.AndroidUpnpService;
import org.fourthline.cling.android.AndroidUpnpServiceImpl;
+import org.fourthline.cling.android.FixedAndroidLogHandler;
import org.fourthline.cling.binding.LocalServiceBindingException;
import org.fourthline.cling.binding.annotations.AnnotationLocalServiceBinder;
import org.fourthline.cling.model.DefaultServiceManager;
@@ -110,9 +111,9 @@ public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// DOC:LOGGING
// Fix the logging integration between java.util.logging and Android internal logging
- org.seamless.util.logging.LoggingUtil.resetRootHandler(
- new org.seamless.android.FixedAndroidLogHandler()
- );
+ // org.seamless.util.logging.LoggingUtil.resetRootHandler(
+ // new FixedAndroidLogHandler()
+ // );
// Logger.getLogger("org.fourthline.cling").setLevel(Level.FINEST);
// DOC:LOGGING
diff --git a/demo/android/pom.xml b/demo/android/pom.xml
index ab33dff77..ef5806a17 100755
--- a/demo/android/pom.xml
+++ b/demo/android/pom.xml
@@ -6,7 +6,7 @@
org.fourthline.cling
cling-demo
- 2.0.0
+ 2.0.1
Cling Demo Android
@@ -52,23 +52,6 @@
${project.version}
-
- org.seamless
- seamless-android
- ${seamless.version}
-
-
-
- com.android.support
- support-v4
-
-
- com.android.support
- support-v13
-
-
-
-
com.google.android
android
diff --git a/demo/pom.xml b/demo/pom.xml
index 9078751dd..f3b4db6b7 100644
--- a/demo/pom.xml
+++ b/demo/pom.xml
@@ -7,7 +7,7 @@
org.fourthline.cling
cling
- 2.0.0
+ 2.0.1
Cling Demo
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 21affeac7..82a8b50dd 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -7,7 +7,7 @@
cling
org.fourthline.cling
- 2.0.0
+ 2.0.1
Cling Distribution
diff --git a/distribution/src/dist/README.txt b/distribution/src/dist/README.txt
index 5cba77f6d..1edaa69bc 100644
--- a/distribution/src/dist/README.txt
+++ b/distribution/src/dist/README.txt
@@ -57,7 +57,7 @@ DEPENDENCIES
Required dependencies of Cling Core (included with this distribution):
- +- org.fourthline.cling:cling-core:jar:2.0.0
+ +- org.fourthline.cling:cling-core:jar:2.0.1
+- org.seamless:seamless-util:jar:1.0.0
+- org.seamless:seamless-http:jar:1.0.0
\- org.seamless:seamless-xml:jar:1.0.0
@@ -76,11 +76,6 @@ Additional dependencies of Cling Core on Android (not included):
+- org.slf4j:slf4j-jdk14:jar:1.6.1 (or any other SLF4J implementation)
\- org.slf4j:slf4j-api:jar:1.6.1
-If you need the fixed Android java.util.logging Handler:
-
- +- org.seamless:seamless-android:jar:1.0.0
- \- android.support:compatibility-v13:jar:10 (Exclude this in pom.xml)
-
WARNING: Jetty JAR files each contain an 'about.html' file, you will get
an error when trying to package your application with APK. Use the Android
Maven plugin and set the "extractDuplicates" option or repackage the Jetty
diff --git a/mediarenderer/pom.xml b/mediarenderer/pom.xml
index dac6890a9..78aa20061 100644
--- a/mediarenderer/pom.xml
+++ b/mediarenderer/pom.xml
@@ -7,7 +7,7 @@
org.fourthline.cling
cling
- 2.0.0
+ 2.0.1
Cling MediaRenderer
diff --git a/mediarenderer/src/site/xhtml/index.xhtml b/mediarenderer/src/site/xhtml/index.xhtml
index 48d38a2d6..c68ffbdf2 100644
--- a/mediarenderer/src/site/xhtml/index.xhtml
+++ b/mediarenderer/src/site/xhtml/index.xhtml
@@ -51,7 +51,7 @@ java -Djna.library.path=/usr/lib -jar cling-mediarenderer.jar
-
- JDK 1.6 desktop application (any OS)
+ JDK 1.6 desktop application (any OS)
-
Cling main distribution (incl. Cling Core library)
diff --git a/pom.xml b/pom.xml
index fbcbe6913..119d07b99 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
org.fourthline.cling
cling
pom
- 2.0.0
+ 2.0.1
core
@@ -80,7 +80,7 @@
6
6
- 1.0.0
+ 1.1.0
1.1.0
6.2
4.2.2
diff --git a/support/pom.xml b/support/pom.xml
index 3dde2c0d4..ba2a11e03 100644
--- a/support/pom.xml
+++ b/support/pom.xml
@@ -7,7 +7,7 @@
org.fourthline.cling
cling
- 2.0.0
+ 2.0.1
Cling Support
diff --git a/support/src/site/xhtml/index.xhtml b/support/src/site/xhtml/index.xhtml
index 49e7b5f78..05b7fd4eb 100644
--- a/support/src/site/xhtml/index.xhtml
+++ b/support/src/site/xhtml/index.xhtml
@@ -100,7 +100,7 @@
org.fourthline.cling
cling-support
- 2.0.0
+ 2.0.1
]]>
diff --git a/website/pom.xml b/website/pom.xml
index f9e63f0b1..12c91a72f 100644
--- a/website/pom.xml
+++ b/website/pom.xml
@@ -7,7 +7,7 @@
cling
org.fourthline.cling
- 2.0.0
+ 2.0.1
Cling Website
diff --git a/website/src/site/xhtml/index.xhtml b/website/src/site/xhtml/index.xhtml
index cc5a72a8f..9af0f14c5 100644
--- a/website/src/site/xhtml/index.xhtml
+++ b/website/src/site/xhtml/index.xhtml
@@ -23,7 +23,7 @@
-->
- The current release of Cling is 2.0.0 (2014-11-05): Download
+ The current release of Cling is 2.0.1 (2014-11-06): Download
diff --git a/website/src/site/xhtml/roadmap.xhtml b/website/src/site/xhtml/roadmap.xhtml
index 7fa615311..693848f62 100644
--- a/website/src/site/xhtml/roadmap.xhtml
+++ b/website/src/site/xhtml/roadmap.xhtml
@@ -21,7 +21,7 @@
- Cling 2.0.1
+ Cling 2.0.x
diff --git a/workbench/pom.xml b/workbench/pom.xml
index 463f820be..0159c15ac 100644
--- a/workbench/pom.xml
+++ b/workbench/pom.xml
@@ -7,7 +7,7 @@
org.fourthline.cling
cling
- 2.0.0
+ 2.0.1
Cling Workbench
diff --git a/workbench/src/site/xhtml/index.xhtml b/workbench/src/site/xhtml/index.xhtml
index 70647ea7c..518014841 100644
--- a/workbench/src/site/xhtml/index.xhtml
+++ b/workbench/src/site/xhtml/index.xhtml
@@ -28,7 +28,7 @@