You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2009/05/26 17:38:26 UTC

svn commit: r778756 [2/2] - in /servicemix/components/engines/servicemix-bean/trunk: ./ src/main/java/org/apache/servicemix/bean/ src/main/java/org/apache/servicemix/bean/pojos/ src/main/java/org/apache/servicemix/bean/support/ src/test/java/org/apache...

Added: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/HolderTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/HolderTest.java?rev=778756&view=auto
==============================================================================
--- servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/HolderTest.java (added)
+++ servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/HolderTest.java Tue May 26 15:38:25 2009
@@ -0,0 +1,100 @@
+/*
+ * 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.servicemix.bean.support;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.MessageExchange;
+import javax.jbi.messaging.MessageExchangeFactory;
+import javax.jbi.messaging.NormalizedMessage;
+
+import junit.framework.TestCase;
+
+import org.apache.servicemix.jbi.exception.FaultException;
+import org.apache.servicemix.tck.mock.MockExchangeFactory;
+
+/**
+ * Test cases for {@link Holder}
+ */
+public class HolderTest extends TestCase {
+    
+    private final MessageExchangeFactory factory = new MockExchangeFactory(); 
+    
+    private Holder holder;
+    
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        holder = new Holder();
+    }
+    
+    public void testBasicFunctionality() throws Exception {
+        Executors.newSingleThreadExecutor().execute(new Runnable() {
+            public void run() {
+                try {
+                    assertNotNull(holder.get(1, TimeUnit.SECONDS));
+                    assertTrue(holder.isDone());
+                } catch (InterruptedException e) {
+                    fail(e.getMessage());
+                } catch (ExecutionException e) {
+                    fail(e.getMessage());
+                }
+            }
+        });
+        
+        MessageExchange exchange = factory.createInOutExchange();
+        exchange.setStatus(ExchangeStatus.DONE);
+        NormalizedMessage out = exchange.createMessage();
+        exchange.setMessage(out, "out");
+
+        //this should kick off the tests in the background thread
+        holder.set(exchange);
+    }
+    
+    public void testCancel() throws Exception {
+        holder.cancel(true);
+        assertTrue(holder.isCancelled());
+    }
+    
+    public void testWrapFaults() throws Exception {
+        MessageExchange exchange = factory.createInOutExchange();
+        exchange.setStatus(ExchangeStatus.ACTIVE);
+        exchange.setFault(exchange.createFault());
+        assertExecutionExceptionOnGet(exchange, FaultException.class);
+    }
+    
+    public void testWrapErrors() throws Exception {
+        MessageExchange exchange = factory.createInOutExchange();
+        exchange.setStatus(ExchangeStatus.ERROR);
+        exchange.setError(new RuntimeException("This thing completely went wrong..."));
+        assertExecutionExceptionOnGet(exchange, RuntimeException.class);
+    }
+
+    private void assertExecutionExceptionOnGet(MessageExchange exchange, Class<?> type) throws InterruptedException {
+        try {
+            holder.set(exchange);
+            holder.get();
+            fail("Should have thrown an ExecutionException");
+        } catch (ExecutionException e) {
+            assertEquals(type, e.getCause().getClass());
+        }
+    }
+
+}

Propchange: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/HolderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ReflectionUtilsTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ReflectionUtilsTest.java?rev=778756&view=auto
==============================================================================
--- servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ReflectionUtilsTest.java (added)
+++ servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ReflectionUtilsTest.java Tue May 26 15:38:25 2009
@@ -0,0 +1,44 @@
+/*
+ * 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.servicemix.bean.support;
+
+import javax.annotation.PostConstruct;
+
+import junit.framework.TestCase;
+
+/**
+ * Test cases for {@link ReflectionUtils}
+ */
+public class ReflectionUtilsTest extends TestCase {
+    
+    public void testInvoke() throws Exception {
+        Pojo pojo = new Pojo();
+        assertFalse(pojo.constructed);
+        ReflectionUtils.callLifecycleMethod(pojo, PostConstruct.class);
+        assertTrue(pojo.constructed);
+    }
+    
+    private static final class Pojo {
+        
+        private boolean constructed;
+
+        @PostConstruct
+        public void doSomething() {
+            constructed = true;
+        }
+    }
+}

Propchange: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ReflectionUtilsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/RequestTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/RequestTest.java?rev=778756&r1=778755&r2=778756&view=diff
==============================================================================
--- servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/RequestTest.java (original)
+++ servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/RequestTest.java Tue May 26 15:38:25 2009
@@ -16,6 +16,9 @@
  */
 package org.apache.servicemix.bean.support;
 
+import java.lang.reflect.Method;
+import java.util.Map;
+
 import javax.jbi.messaging.ExchangeStatus;
 import javax.jbi.messaging.MessageExchange;
 
@@ -67,6 +70,14 @@
         assertEquals("We shouldn't have duplicate MessageExchange instances", 1, request.getExchanges().size());
     }
     
+    public void testLazyCreateCallbacks() throws Exception {
+        MessageExchange exchange = createMockExchange("my-exchange-id");
+        Request request = new Request("my-correlation-id", new Object(), exchange);
+        Map<Method, Boolean> callbacks = request.getCallbacks();
+        assertNotNull(callbacks);
+        assertSame(callbacks, request.getCallbacks());
+    }
+    
     private MessageExchange createMockExchange(String id) {
         MockMessageExchange exchange = new MockMessageExchange();
         exchange.setExchangeId(id);

Added: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ResolverUtilTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ResolverUtilTest.java?rev=778756&view=auto
==============================================================================
--- servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ResolverUtilTest.java (added)
+++ servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ResolverUtilTest.java Tue May 26 15:38:25 2009
@@ -0,0 +1,73 @@
+/*
+ * 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.servicemix.bean.support;
+
+import org.apache.camel.util.ResolverUtil.IsA;
+import org.apache.servicemix.bean.Endpoint;
+import org.apache.servicemix.bean.beans.AutoDeployedBean;
+import org.apache.servicemix.bean.beans.ListenerBean;
+import org.apache.servicemix.bean.beans.PlainBean;
+import org.apache.servicemix.bean.support.ResolverUtil.AnnotatedWith;
+import org.apache.servicemix.jbi.listener.MessageExchangeListener;
+
+import junit.framework.TestCase;
+
+/**
+ * Test cases for {@link ResolverUtil}
+ */
+public class ResolverUtilTest extends TestCase {
+    
+    public void testIsA() throws Exception {
+        IsA test = new IsA(MessageExchangeListener.class);
+        assertFalse(test.matches(PlainBean.class));
+        assertTrue(test.matches(ListenerBean.class));
+    }
+    
+    public void testAnnotatedWith() throws Exception {
+        AnnotatedWith test = new AnnotatedWith(Endpoint.class);
+        assertFalse(test.matches(PlainBean.class));
+        assertTrue(test.matches(AutoDeployedBean.class));
+    }
+    
+    public void testFindImplementations() throws Exception {
+        ResolverUtil util = new ResolverUtil();
+        util.findImplementations(MessageExchangeListener.class, "org.apache.servicemix.bean.beans");
+        // should have found 3 implementations
+        assertEquals(3, util.getClasses().size());
+        // and make sure we don't break by omitting the package to search
+        util.findImplementations(MessageExchangeListener.class, null);
+        assertEquals(3, util.getClasses().size());
+    }
+    
+    public void testFindImplementationsInJar() throws Exception {
+        ResolverUtil util = new ResolverUtil();
+        util.findImplementations(MessageExchangeListener.class, "org.apache.servicemix.common");
+        // should have found 3 implementations
+        assertNotNull(util.getClasses());
+        assertFalse(util.getClasses().isEmpty());
+    }
+    
+    public void testFindAnnotated() throws Exception {
+        ResolverUtil util = new ResolverUtil();
+        util.findAnnotated(Endpoint.class, "org.apache.servicemix.bean.beans");
+        // should have found 1 implementation
+        assertEquals(1, util.getClasses().size());
+        // and make sure we don't break by omitting the package to search
+        util.findAnnotated(Endpoint.class, null);
+        assertEquals(1, util.getClasses().size());
+    }
+}

Propchange: servicemix/components/engines/servicemix-bean/trunk/src/test/java/org/apache/servicemix/bean/support/ResolverUtilTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: servicemix/components/engines/servicemix-bean/trunk/src/test/resources/attachment.png
URL: http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-bean/trunk/src/test/resources/attachment.png?rev=778756&view=auto
==============================================================================
Binary file - no diff available.

Propchange: servicemix/components/engines/servicemix-bean/trunk/src/test/resources/attachment.png
------------------------------------------------------------------------------
    svn:mime-type = image/png