You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by bd...@apache.org on 2016/07/11 21:10:45 UTC

shiro git commit: Small bug fix and test for handling classnames in LoggingBeanEventListener

Repository: shiro
Updated Branches:
  refs/heads/master f4df3818d -> 3432f6ade


Small bug fix and test for handling classnames in LoggingBeanEventListener


Project: http://git-wip-us.apache.org/repos/asf/shiro/repo
Commit: http://git-wip-us.apache.org/repos/asf/shiro/commit/3432f6ad
Tree: http://git-wip-us.apache.org/repos/asf/shiro/tree/3432f6ad
Diff: http://git-wip-us.apache.org/repos/asf/shiro/diff/3432f6ad

Branch: refs/heads/master
Commit: 3432f6ade45618781c944496615cd811af69ad83
Parents: f4df381
Author: Brian Demers <bd...@apache.org>
Authored: Mon Jul 11 09:19:31 2016 -0400
Committer: Brian Demers <bd...@apache.org>
Committed: Mon Jul 11 17:03:43 2016 -0400

----------------------------------------------------------------------
 .../config/event/LoggingBeanEventListener.java  |  2 +-
 .../event/LoggingBeanEventListenerTest.groovy   | 48 ++++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/3432f6ad/config/ogdl/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java
----------------------------------------------------------------------
diff --git a/config/ogdl/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java b/config/ogdl/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java
index eb1e8a1..f6837e2 100644
--- a/config/ogdl/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java
+++ b/config/ogdl/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java
@@ -36,7 +36,7 @@ public class LoggingBeanEventListener {
     public void onEvent(BeanEvent e) {
         String className = e.getClass().getSimpleName();
         int i = className.lastIndexOf(SUFFIX);
-        String subclassPrefix = className.substring(0, i);
+        String subclassPrefix = i > 0 ? className.substring(0, i) : className;
         logger.trace("{} bean '{}' [{}]", new Object[]{subclassPrefix, e.getBeanName(), e.getBean()});
     }
 }

http://git-wip-us.apache.org/repos/asf/shiro/blob/3432f6ad/core/src/test/groovy/org/apache/shiro/config/event/LoggingBeanEventListenerTest.groovy
----------------------------------------------------------------------
diff --git a/core/src/test/groovy/org/apache/shiro/config/event/LoggingBeanEventListenerTest.groovy b/core/src/test/groovy/org/apache/shiro/config/event/LoggingBeanEventListenerTest.groovy
new file mode 100644
index 0000000..2d37f99
--- /dev/null
+++ b/core/src/test/groovy/org/apache/shiro/config/event/LoggingBeanEventListenerTest.groovy
@@ -0,0 +1,48 @@
+/*
+ * 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.shiro.config.event
+
+import org.junit.Test
+
+/**
+ * @since 1.3
+ */
+class LoggingBeanEventListenerTest {
+
+    /**
+     * Test that LoggingBeanEventListener attempts to substring class names of BeanEvents that contain the
+     * string 'BeanEvent'.
+     */
+    @Test
+    void testMisnamedBeanEventClass() {
+
+        def m = [foo: 'bar'] as Map<String,Object>
+        Object o = new Object()
+        BeanEvent evt = new MisnamedBean('baz', o, m)
+
+        // This was previously throwing a StringIndexOutOfBoundsException
+        new LoggingBeanEventListener().onEvent(evt)
+    }
+
+    private class MisnamedBean extends BeanEvent {
+        MisnamedBean(String beanName, Object bean, Map<String, Object> beanContext) {
+            super(beanName, bean, beanContext)
+        }
+    }
+}