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:04:38 UTC
[11/13] shiro git commit: Small bug fix and test for handling
classnames in LoggingBeanEventListener
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/67e7a36d
Tree: http://git-wip-us.apache.org/repos/asf/shiro/tree/67e7a36d
Diff: http://git-wip-us.apache.org/repos/asf/shiro/diff/67e7a36d
Branch: refs/heads/1.3.x
Commit: 67e7a36d406201860836f07916470f6dc0815d13
Parents: 1e6a89c
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 09:19:31 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/67e7a36d/core/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java b/core/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java
index eb1e8a1..f6837e2 100644
--- a/core/src/main/java/org/apache/shiro/config/event/LoggingBeanEventListener.java
+++ b/core/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/67e7a36d/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)
+ }
+ }
+}