001: /**
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */package org.apache.openejb.test.stateful;
017:
018: /**
019: *
020: * @author <a href="mailto:david.blevins@visi.com">David Blevins</a>
021: * @author <a href="mailto:Richard@Monson-Haefel.com">Richard Monson-Haefel</a>
022: */
023: public class StatefulRemoteBusinessIntfcTests extends
024: StatefulTestClient {
025: private BasicStatefulBusinessRemote businessRemote;
026:
027: public StatefulRemoteBusinessIntfcTests() {
028: super ("RemoteBusinessIntfc.");
029: }
030:
031: protected void setUp() throws Exception {
032: super .setUp();
033: }
034:
035: //=================================
036: // Test remote interface methods
037: //
038: public void test00_lookupBusinessInterface() throws Exception {
039: Object obj = initialContext
040: .lookup("client/tests/stateful/BasicStatefulPojoHomeBusinessRemote");
041: assertNotNull(obj);
042: assertTrue("instance of BasicStatefulBusinessRemote",
043: obj instanceof BasicStatefulBusinessRemote);
044: businessRemote = (BasicStatefulBusinessRemote) obj;
045: }
046:
047: public void test01_businessMethod() {
048: try {
049: String expected = "Success";
050: String actual = businessRemote.businessMethod("sseccuS");
051: assertEquals(expected, actual);
052: } catch (Exception e) {
053: fail("Received Exception " + e.getClass() + " : "
054: + e.getMessage());
055: }
056:
057: try {
058: Integer expected = new Integer(42);
059: Object actual = businessRemote.echo(expected);
060: assertEquals(expected, actual);
061: assertNotSame("pass by value", expected, actual);
062: } catch (Exception e) {
063: fail("Received Exception " + e.getClass() + " : "
064: + e.getMessage());
065: }
066: }
067:
068: /**
069: * Throw an application exception and make sure the exception
070: * reaches the bean nicely.
071: */
072: public void test02_throwApplicationException() {
073: try {
074: businessRemote.throwApplicationException();
075: } catch (org.apache.openejb.test.ApplicationException e) {
076: //Good. This is the correct behaviour
077: return;
078: } catch (Throwable e) {
079: fail("Received Exception " + e.getClass() + " : "
080: + e.getMessage());
081: }
082: fail("An ApplicationException should have been thrown.");
083: }
084:
085: /**
086: * After an application exception we should still be able to
087: * use our bean
088: */
089: public void test03_invokeAfterApplicationException() {
090: try {
091: String expected = "Success";
092: String actual = businessRemote.businessMethod("sseccuS");
093: assertEquals(expected, actual);
094: } catch (Throwable e) {
095: fail("Received Exception " + e.getClass() + " : "
096: + e.getMessage());
097: }
098: }
099:
100: // TODO: check which exception should be thrown
101: public void _test04_throwSystemException() {
102: try {
103: businessRemote.throwSystemException_NullPointer();
104: } catch (Exception e) {
105: //Good, so far.
106: Throwable n = e.getCause();
107: assertNotNull("Nested exception should not be is null", n);
108: assertTrue(
109: "Nested exception should be an instance of NullPointerException, but exception is "
110: + n.getClass().getName(),
111: (n instanceof NullPointerException));
112: return;
113: } catch (Throwable e) {
114: fail("Received Exception " + e.getClass() + " : "
115: + e.getMessage());
116: }
117: fail("A NullPointerException should have been thrown.");
118: }
119:
120: /**
121: * After a system exception the intance should be garbage collected
122: * and the remote reference should be invalidated.
123: *
124: * This one seems to fail. we should double-check the spec on this.
125: */
126: //TODO: implement
127: public void TODO_test05_invokeAfterSystemException() {
128: // try{
129: // businessRemote.businessMethod("This refernce is invalid");
130: // fail("A java.rmi.NoSuchObjectException should have been thrown.");
131: // } catch (java.rmi.NoSuchObjectException e){
132: // // Good.
133: // } catch (Throwable e){
134: // fail("Received Exception "+e.getClass()+ " : "+e.getMessage());
135: // }
136: }
137:
138: //
139: // Test remote interface methods
140: //=================================
141:
142: public void test06_testRemove() {
143: Object obj = businessRemote.remove();
144: assertNotNull(obj);
145: }
146:
147: protected void tearDown() throws Exception {
148: super.tearDown();
149: }
150: }
|