You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by sb...@apache.org on 2011/12/12 12:55:02 UTC

svn commit: r1213196 [2/2] - in /james/server/trunk/util: ./ src/main/java/org/apache/james/util/retry/ src/main/java/org/apache/james/util/retry/api/ src/main/java/org/apache/james/util/retry/naming/ src/main/java/org/apache/james/util/retry/naming/di...

Added: james/server/trunk/util/src/test/java/org/apache/james/util/retry/naming/NamingExceptionRetryHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/util/src/test/java/org/apache/james/util/retry/naming/NamingExceptionRetryHandlerTest.java?rev=1213196&view=auto
==============================================================================
--- james/server/trunk/util/src/test/java/org/apache/james/util/retry/naming/NamingExceptionRetryHandlerTest.java (added)
+++ james/server/trunk/util/src/test/java/org/apache/james/util/retry/naming/NamingExceptionRetryHandlerTest.java Mon Dec 12 11:55:01 2011
@@ -0,0 +1,137 @@
+/*
+ *   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.james.util.retry.naming;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+
+import org.apache.james.util.retry.api.ExceptionRetryingProxy;
+import org.apache.james.util.retry.api.RetryHandler;
+import org.apache.james.util.retry.api.RetrySchedule;
+
+import junit.framework.TestCase;
+
+/**
+ * <code>ExceptionRetryHandlerTest</code>
+ */
+public class NamingExceptionRetryHandlerTest extends TestCase {
+    
+    private Class<?>[] _exceptionClasses = null;
+    private ExceptionRetryingProxy _proxy = null;
+    private RetrySchedule _schedule = null;
+    
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        _exceptionClasses = new Class<?>[]{NamingException.class};
+        _proxy = new TestRetryingProxy();
+        _schedule = new TestRetrySchedule();
+    }
+    
+    private class TestRetryingProxy implements ExceptionRetryingProxy
+    {
+
+        /**
+         * @see org.apache.james.user.ldap.api.ExceptionRetryingProxy#getDelegate()
+         */
+        @Override
+        public Context getDelegate() throws NamingException {
+            return null;
+        }
+
+        /**
+         * @see org.apache.james.user.ldap.api.ExceptionRetryingProxy#newDelegate()
+         */
+        @Override
+        public Context newDelegate() throws NamingException {
+            return null;
+        }
+
+        /**
+         * @see org.apache.james.user.ldap.api.ExceptionRetryingProxy#resetDelegate()
+         */
+        @Override
+        public void resetDelegate() throws NamingException {
+            
+        }
+        
+    }
+    
+    private class TestRetrySchedule implements RetrySchedule
+    {
+        /**
+         * @see org.apache.james.user.ldap.api.RetrySchedule#getInterval(int)
+         */
+        @Override
+        public long getInterval(int index) {
+            return index;
+        }
+        
+    }
+
+    /**
+     * Test method for {@link org.apache.james.user.ldap.ExceptionRetryHandler#ExceptionRetryHandler(java.lang.Class<?>[], org.apache.james.user.ldap.api.ExceptionRetryingProxy, org.apache.james.user.ldap.api.RetrySchedule, int)}.
+     */
+    public final void testExceptionRetryHandler() {
+        assertTrue(RetryHandler.class.isAssignableFrom(new NamingExceptionRetryHandler(
+                _exceptionClasses, _proxy, _schedule, 0) {
+
+            @Override
+            public Object operation() throws Exception {
+                return null;
+            }
+        }.getClass()));
+    }
+
+    /**
+     * Test method for {@link org.apache.james.user.ldap.ExceptionRetryHandler#perform()}.
+     * @throws Exception 
+     */
+    public final void testPerform() throws NamingException {
+        Object result = new NamingExceptionRetryHandler(
+                _exceptionClasses, _proxy, _schedule, 0) {
+
+            @Override
+            public Object operation() throws NamingException {
+                return "Hi!";
+            }
+        }.perform();
+        assertEquals("Hi!", result);
+
+        try {
+            new NamingExceptionRetryHandler(
+                    _exceptionClasses, _proxy, _schedule, 0) {
+
+                @Override
+                public Object operation() throws Exception {
+                    throw new NamingException();
+                }
+            }.perform();
+        } catch (NamingException ex) {
+            // no-op
+        }
+        assertEquals("Hi!", result);
+    }
+
+}

Propchange: james/server/trunk/util/src/test/java/org/apache/james/util/retry/naming/NamingExceptionRetryHandlerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: james/server/trunk/util/src/test/java/org/apache/james/util/retry/naming/NamingExceptionRetryHandlerTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org