You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ch...@apache.org on 2015/07/22 10:31:55 UTC

svn commit: r1692236 - in /sling/trunk/bundles/commons/log/src: main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java

Author: chetanm
Date: Wed Jul 22 08:31:55 2015
New Revision: 1692236

URL: http://svn.apache.org/r1692236
Log:
SLING-4764 - ClassCastException when trying to modify properties in custom appender Service

Modified:
    sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
    sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java

Modified: sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java?rev=1692236&r1=1692235&r2=1692236&view=diff
==============================================================================
--- sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java (original)
+++ sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/AppenderTracker.java Wed Jul 22 08:31:55 2015
@@ -60,15 +60,15 @@ public class AppenderTracker extends Ser
     @SuppressWarnings("unchecked")
     @Override
     public Object addingService(final ServiceReference reference) {
-        final Appender<ILoggingEvent> a = (Appender<ILoggingEvent>) super.addingService(reference);
-        a.setContext(loggerContext);
-        a.start();
+        final Appender<ILoggingEvent> appender = (Appender<ILoggingEvent>) super.addingService(reference);
+        appender.setContext(loggerContext);
+        appender.start();
 
-        final AppenderInfo ai = new AppenderInfo(reference, a);
+        final AppenderInfo ai = new AppenderInfo(reference, appender);
         appenders.put(reference, ai);
         attachAppender(ai);
 
-        return ai;
+        return appender;
     }
 
     @SuppressWarnings("unchecked")

Modified: sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java?rev=1692236&r1=1692235&r2=1692236&view=diff
==============================================================================
--- sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java (original)
+++ sling/trunk/bundles/commons/log/src/test/java/org/apache/sling/commons/log/logback/integration/ITAppenderServices.java Wed Jul 22 08:31:55 2015
@@ -45,6 +45,7 @@ import org.osgi.service.cm.Configuration
 import org.slf4j.LoggerFactory;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.ops4j.pax.exam.CoreOptions.composite;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
@@ -90,6 +91,37 @@ public class ITAppenderServices extends
     }
 
     @Test
+    public void testAppenderServiceModified() throws Exception {
+        TestAppender ta = registerAppender("foo.bar", "foo.baz");
+        delay();
+
+        Logger bar = (Logger)LoggerFactory.getLogger("foo.bar");
+        bar.setLevel(Level.DEBUG);
+        Logger baz = (Logger)LoggerFactory.getLogger("foo.baz");
+        baz.setLevel(Level.INFO);
+
+        bar.debug("Test message");
+        baz.debug("Test message"); // Would not be logged
+
+        // One event should be logged.
+        assertEquals(1, ta.events.size());
+
+        ta.reset();
+
+        Dictionary<String, Object> props = new Hashtable<String, Object>();
+        props.put("loggers", new String[]{"foo.bar2"});
+        sr.setProperties(props);
+
+        delay();
+        LoggerFactory.getLogger("foo.bar2").info("foo.bar2");
+        LoggerFactory.getLogger("foo.baz").info("foo.baz");
+
+        assertEquals(1, ta.msgs.size());
+        assertTrue(ta.msgs.contains("foo.bar2"));
+        assertFalse(ta.msgs.contains("foo.baz"));
+    }
+
+    @Test
     public void testOsgiAppenderRef() throws Exception {
         Configuration config = ca.getConfiguration(ITConfigAdminSupport.PID, null);
         Dictionary<String, Object> p = new Hashtable<String, Object>();
@@ -137,16 +169,23 @@ public class ITAppenderServices extends
 
     private static class TestAppender extends AppenderBase<ILoggingEvent> {
         final List<ILoggingEvent> events = new ArrayList<ILoggingEvent>();
+        final List<String> msgs = new ArrayList<String>();
 
         @Override
         protected void append(ILoggingEvent eventObject) {
             events.add(eventObject);
+            msgs.add(eventObject.getFormattedMessage());
         }
 
         @Override
         public String getName() {
             return "TestAppender";
         }
+
+        public void reset(){
+            events.clear();
+            msgs.clear();
+        }
     }
 
 }