You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/06/07 01:06:04 UTC

svn commit: r664183 - in /tapestry/tapestry5/trunk/tapestry-ioc/src: main/java/org/apache/tapestry5/ioc/internal/services/ test/java/org/apache/tapestry5/ioc/internal/services/

Author: hlship
Date: Fri Jun  6 16:06:04 2008
New Revision: 664183

URL: http://svn.apache.org/viewvc?rev=664183&view=rev
Log:
TAPESTRY-2422: The Exception report will itself throw an exception if the exception being reported contains a write-only property

Added:
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java
Modified:
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java?rev=664183&r1=664182&r2=664183&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java Fri Jun  6 16:06:04 2008
@@ -15,7 +15,8 @@
 package org.apache.tapestry5.ioc.internal.services;
 
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.*;
+import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
+import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet;
 import org.apache.tapestry5.ioc.services.*;
 
 import java.util.Collections;
@@ -94,7 +95,7 @@
 
     private ExceptionInfo extractInfo(Throwable t)
     {
-        Map<String, Object> properties = newMap();
+        Map<String, Object> properties = CollectionFactory.newMap();
 
         ClassPropertyAdapter adapter = propertyAccess.getAdapter(t);
 
@@ -102,6 +103,8 @@
         {
             if (throwableProperties.contains(name)) continue;
 
+            if (!adapter.getPropertyAdapter(name).isRead()) continue;
+
             Object value = adapter.get(t, name);
 
             if (value == null) continue;

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java?rev=664183&r1=664182&r2=664183&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java Fri Jun  6 16:06:04 2008
@@ -160,4 +160,23 @@
         verify();
     }
 
+    /**
+     * TAPESTRY-2422
+     */
+    @Test
+    public void exception_with_write_only_property()
+    {
+        WriteOnlyPropertyException ex = new WriteOnlyPropertyException();
+
+        ex.setFaultCode(99);
+
+        ExceptionAnalysis ea = analyzer.analyze(ex);
+
+        ExceptionInfo ei = ea.getExceptionInfos().get(0);
+
+        assertEquals(ei.getPropertyNames().size(), 1);
+
+        assertEquals(ei.getProperty("code"), "0099");
+    }
+
 }

Added: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java?rev=664183&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java (added)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java Fri Jun  6 16:06:04 2008
@@ -0,0 +1,34 @@
+// Copyright 2008 The Apache Software Foundation
+//
+// 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.apache.tapestry5.ioc.internal.services;
+
+/**
+ * Used to test {@link org.apache.tapestry5.ioc.internal.services.ExceptionAnalyzerImpl} against an exception that has a
+ * write-only property.
+ */
+public class WriteOnlyPropertyException extends Exception
+{
+    private String code;
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public void setFaultCode(int code)
+    {
+        this.code = String.format("%04d", code);
+    }
+}