Added: beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonInterceptorContextImpl.java URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonInterceptorContextImpl.java?rev=265795&view=auto ============================================================================== --- beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonInterceptorContextImpl.java (added) +++ beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonInterceptorContextImpl.java Thu Sep 1 15:28:23 2005 @@ -0,0 +1,96 @@ +/* + * Copyright 2004 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. + * + * $Header:$ + */ + +package org.apache.beehive.test.tools.milton.junit; + +import org.apache.beehive.controls.api.bean.ControlBean; + +import java.lang.reflect.Method; +import java.beans.beancontext.BeanContextServiceProvider; +import java.beans.beancontext.BeanContextServices; +import java.util.Iterator; + +public class MiltonInterceptorContextImpl implements MiltonInterceptorContext +{ + /** + * The ResourceContextProvider inner class acts as a single BeanContext service + * provider for the ResourceContext service class. + */ + public static class MiltonInterceptorContextProvider implements BeanContextServiceProvider + { + // + // BeanContextServiceProvider.getService() + // + public Object getService(BeanContextServices bcs, Object requestor, Class serviceClass, + Object serviceSelector) + { + System.out.println( "***********************" ); + System.out.println( "***********************" ); + System.out.println( "MiltonInterceptorContextProvider GetService " ); + System.out.println( "***********************" ); + System.out.println( "***********************" ); + return new MiltonInterceptorContextImpl(); + } + + // + // BeanContextServiceProvider.releaseService() + // + public void releaseService(BeanContextServices bcs, Object requestor, Object service) + { + return; // Should not happen, service is never unregistered + } + + // + // BeanContextServiceProvider.getContextServiceSelectors() + // + public Iterator getCurrentServiceSelectors(BeanContextServices bcs, Class serviceClass) + { + return null; // no selectors + } + } + + /** + * A singleton instance of the MiltonInterceptorContextProvider class is what will be registered + * on all ControlContainerContext instances. The provider can be a singleton because it is + * completely stateless and thread-safe. + */ + static private MiltonInterceptorContextImpl.MiltonInterceptorContextProvider _theProvider = new MiltonInterceptorContextImpl.MiltonInterceptorContextProvider(); + + /** + * Returns the provider used to create new MiltonInterceptorContext instances + */ + static public MiltonInterceptorContextImpl.MiltonInterceptorContextProvider getProvider() { return _theProvider; } + + + public void preInvoke( ControlBean cb, Method m, Object [] args) + { + System.out.println( "***********************" ); + System.out.println( "***********************" ); + System.out.println( "PREINVOKE INTERCEPTOR " ); + System.out.println( "***********************" ); + System.out.println( "***********************" ); + } + + public void postInvoke( ControlBean cb, Method m, Object [] args, Object retval, Throwable t) {} + + /** Called before a control event is fired (through a client proxy) */ + public void preEvent( ControlBean cb, Class eventSet, Method m, Object [] args) {} + /** Called after a control event is fired (through a client proxy) */ + public void postEvent( ControlBean cb, Class eventSet, Method m, Object [] args) {} +} +
Added: beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonTestCase.java URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonTestCase.java?rev=265795&view=auto ============================================================================== --- beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonTestCase.java (added) +++ beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/MiltonTestCase.java Thu Sep 1 15:28:23 2005 @@ -0,0 +1,67 @@ +package org.apache.beehive.test.tools.milton.junit; + +import java.lang.reflect.Field; + +import java.beans.beancontext.BeanContextChild; +import java.beans.beancontext.BeanContextServiceProvider; +import java.beans.beancontext.BeanContextServices; + +import junit.framework.TestCase; + +import org.apache.beehive.controls.api.bean.Control; +import org.apache.beehive.controls.api.bean.Controls; + +/* + * A JUnit TestCase class which serves as a Control Container + * and supports Declarative instantiation. + */ +public abstract class MiltonTestCase extends TestCase implements java.io.Serializable +{ + protected MiltonControlContext mcc = null; + protected boolean controlClient = false; + + protected static final long serialVersionUID = 16L; + + public MiltonTestCase() {} + + public MiltonTestCase(String name) + { + super(name); + + if (isControlClient(this)) { + this.controlClient = true; + this.mcc = new MiltonControlContext(); + } + } + + public void setUp() throws Exception + { + if (this.controlClient) { + mcc.beginContext(); + Controls.initializeClient(null, this, mcc); + } + } + + public void tearDown() { + if (null != this.mcc) + mcc.endContext(); + } + + /* + * helper method to determine if this is a client contains controls + */ + private boolean isControlClient(Object controlContainer) + { + Class controlContainerClass = controlContainer.getClass(); + + Field[] fields = controlContainerClass.getDeclaredFields(); + + for (int i = 0; i < fields.length; i++) { + Field f = fields[i]; + if (null != f.getAnnotation(org.apache.beehive.controls.api.bean.Control.class)) + return true; + } + + return false; + } +} Added: beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/RemoteReportTestCase.java URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/RemoteReportTestCase.java?rev=265795&view=auto ============================================================================== --- beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/RemoteReportTestCase.java (added) +++ beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/RemoteReportTestCase.java Thu Sep 1 15:28:23 2005 @@ -0,0 +1,72 @@ +package org.apache.beehive.test.tools.milton.junit; + +import junit.framework.TestCase; + +import org.apache.beehive.test.tools.milton.client.TestContext; + +public abstract class RemoteReportTestCase extends ReportTestCase +{ + protected static final String HTTP_PREFIX = "http://"; + protected static final String HTTPS_PREFIX = "https://"; + + private String urlPrefix = null; + + public RemoteReportTestCase(String name) + { + super(name); + + String hostName = TestContext.getProperty("TEST_HOSTNAME"); + String hostNamePort = TestContext.getProperty("TEST_HOSTNAME_PORT"); + + if (null == hostName || hostName.equals("")) { + hostName = TestContext.getProperty("HOSTNAME"); + if (null == hostName || hostName.equals("")) + hostName = "localhost"; + } + + if (null != hostNamePort) + hostName += ":" + hostNamePort; + + this.urlPrefix = HTTP_PREFIX + hostName; + } + + public String getUrlPrefix() + { + return this.urlPrefix; + } + + public void setUrlPrefix(String p_urlPrefix) + { + if (null == p_urlPrefix) + throw new IllegalArgumentException("Cannot set null URI PRefix"); + + if (! p_urlPrefix.startsWith(HTTP_PREFIX) || + ! p_urlPrefix.startsWith(HTTPS_PREFIX)) { + throw new IllegalArgumentException("URL Prefix must have a valid " + + "protocol: " + HTTP_PREFIX + + " or " + HTTPS_PREFIX + ": " + + p_urlPrefix); + } + + this.urlPrefix = p_urlPrefix; + } + + protected String createUrl(String p_url) + { + String l_url = null; + + if (null == p_url) + throw new IllegalArgumentException("URL cannot be null"); + + if (p_url.startsWith(HTTP_PREFIX) || p_url.startsWith(HTTPS_PREFIX)) + l_url = p_url; + else { + if (p_url.startsWith("/")) + l_url = getUrlPrefix() + p_url; + else + l_url = getUrlPrefix() + "/" + p_url; + } + + return l_url; + } +} Modified: beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/ReportTestCase.java URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/ReportTestCase.java?rev=265795&r1=265794&r2=265795&view=diff ============================================================================== --- beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/ReportTestCase.java (original) +++ beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/ReportTestCase.java Thu Sep 1 15:28:23 2005 @@ -1,72 +1,60 @@ package org.apache.beehive.test.tools.milton.junit; -import junit.framework.TestCase; +import org.apache.beehive.test.tools.milton.junit.MiltonTestCase; +import org.apache.beehive.test.tools.milton.common.Report; -import org.apache.beehive.test.tools.milton.client.TestContext; - -public abstract class ReportTestCase extends TestCase +/* + * A JUnit TestCase class which serves as a Control Container + * and supports Declarative instantiation. + */ +public abstract class ReportTestCase extends MiltonTestCase { - protected static final String HTTP_PREFIX = "http://"; - protected static final String HTTPS_PREFIX = "https://"; - - private String urlPrefix = null; - public ReportTestCase(String name) { - super(name); - - String hostName = TestContext.getProperty("TEST_HOSTNAME"); - String hostNamePort = TestContext.getProperty("TEST_HOSTNAME_PORT"); - - if (null == hostName || hostName.equals("")) { - hostName = TestContext.getProperty("HOSTNAME"); - if (null == hostName || hostName.equals("")) - hostName = "localhost"; - } - - if (null != hostNamePort) - hostName += ":" + hostNamePort; - - this.urlPrefix = HTTP_PREFIX + hostName; + super(name); } - public String getUrlPrefix() + protected void assertReport(Report p_report) throws Exception { - return this.urlPrefix; + if (null == p_report) + throw new IllegalArgumentException("Report parameter cannot be Null"); + + if (Report.ABORT.equals(p_report.getStatus())) + throw new AbortTestException("Abort Status Dectected: \n" + + p_report.toString()); + else if (Report.FAIL.equals(p_report.getStatus())) + throw new junit.framework.AssertionFailedError("FAILURE: \n" + + p_report.toString()); + + else if (!Report.PASS.equals(p_report.getStatus())) + throw new AbortTestException("Unknown Status Detected: \n" + + p_report.toString()); + + printMessages(p_report); + printExceptionStack(p_report); } - public void setUrlPrefix(String p_urlPrefix) + protected void printMessages(Report p_report) { - if (null == p_urlPrefix) - throw new IllegalArgumentException("Cannot set null URI PRefix"); + if (null == p_report) { + return; + } + + String l_messages = p_report.getMessage(); - if (! p_urlPrefix.startsWith(HTTP_PREFIX) || - ! p_urlPrefix.startsWith(HTTPS_PREFIX)) { - throw new IllegalArgumentException("URL Prefix must have a valid " + - "protocol: " + HTTP_PREFIX + - " or " + HTTPS_PREFIX + ": " + - p_urlPrefix); - } - - this.urlPrefix = p_urlPrefix; + if (null != l_messages && !"".equals(l_messages)) + System.out.println("\n[MESSAGES]\n\t" + l_messages); } - protected String createUrl(String p_url) + protected void printExceptionStack(Report p_report) { - String l_url = null; - - if (null == p_url) - throw new IllegalArgumentException("URL cannot be null"); + if (null == p_report) { + return; + } - if (p_url.startsWith(HTTP_PREFIX) || p_url.startsWith(HTTPS_PREFIX)) - l_url = p_url; - else { - if (p_url.startsWith("/")) - l_url = getUrlPrefix() + p_url; - else - l_url = getUrlPrefix() + "/" + p_url; - } + String l_exceptionStack = p_report.getExceptionStack(); - return l_url; + if (null != l_exceptionStack && !"".equals(l_exceptionStack)) + System.out.println("\n[EXCEPTION]\n\t" + l_exceptionStack); } } Modified: beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SOAPReportTestCase.java URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SOAPReportTestCase.java?rev=265795&r1=265794&r2=265795&view=diff ============================================================================== --- beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SOAPReportTestCase.java (original) +++ beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SOAPReportTestCase.java Thu Sep 1 15:28:23 2005 @@ -17,7 +17,7 @@ * @author [EMAIL PROTECTED] 5/20/2005 Cleaned up SOAP payload creation, created methods for doc/literal payloads * */ -public abstract class SOAPReportTestCase extends ReportTestCase +public abstract class SOAPReportTestCase extends RemoteReportTestCase { public SOAPReportTestCase(String name) { @@ -37,7 +37,6 @@ return endpoint; } - /** * This method is used to set where soap requests will be sent * the value can be one of relative or full path @@ -160,7 +159,6 @@ return l_call; } - //BUGBUG: Test this for RPC calls private Call createCall_RpcStyle(String endpoint, String p_uri, String p_method) throws java.net.MalformedURLException { @@ -195,7 +193,6 @@ assertReport(getEndpoint(), p_uri, p_method, false); } - /** * Convenience method for invoking a test method. This method works for * doc/literal wrapped web services. If you are testing against an RPC/Encoded @@ -228,31 +225,9 @@ l_resp = createCall_DocLitWrappedStyle(getEndpoint(), p_uri, p_method).invoke(new Object[]{}); - if (l_resp instanceof java.rmi.RemoteException) throw (java.rmi.RemoteException) l_resp; - Report l_report = (Report) l_resp; - - String l_status = l_report.getStatus(); - String l_message = l_report.getMessage(); - String l_exceptionStack = l_report.getExceptionStack(); - - if (Report.ABORT.equals(l_status)) - throw new AbortTestException("Abort Status Dectected: \n" + - l_report.toString()); - else if (Report.FAIL.equals(l_status)) - throw new junit.framework.AssertionFailedError("FAILURE: \n" + - l_report.toString()); - - else if (!Report.PASS.equals(l_status)) - throw new AbortTestException("Unknown Status Detected: \n" + - l_report.toString()); - - if (null != l_message && !"".equals(l_message)) - System.out.println("\n[MESSAGES]\n\t" + l_message); - - if (null != l_exceptionStack && !"".equals(l_exceptionStack)) - System.out.println("\n[EXCEPTION]\n\t" + l_exceptionStack); + super.assertReport((Report) l_resp); } -} \ No newline at end of file +} Added: beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SerializeUtils.java URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SerializeUtils.java?rev=265795&view=auto ============================================================================== --- beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SerializeUtils.java (added) +++ beehive/trunk/controls/test/tools/milton/src/org/apache/beehive/test/tools/milton/junit/SerializeUtils.java Thu Sep 1 15:28:23 2005 @@ -0,0 +1,84 @@ +/* + * Copyright 2004 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. + * + * $Header:$ + */ +package org.apache.beehive.test.tools.milton.junit; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; + +/** + * Utility code for testing serialization behavior + */ +public final class SerializeUtils { + /** + * Serializes an object into a byte array, then deserializes it from the array and returns + * the deserialized object. + */ + public static <T extends Object> T testSerialize(T obj) + { + byte [] serializedObject; + T returnObject; + + ByteArrayOutputStream baos = null; + ObjectOutputStream oos = null; + try + { + baos = new ByteArrayOutputStream(); + oos = new ObjectOutputStream(baos); + oos.writeObject(obj); + oos.flush(); + serializedObject = baos.toByteArray(); + } + catch (Exception e) { + throw new RuntimeException("Error serializing object", e); + } + finally { + if(oos != null) + try{oos.close();}catch(IOException ignore) {} + if(baos != null) + try{baos.close();}catch(IOException ignore) {} + } + + ByteArrayInputStream bais = null; + ObjectInputStream ois = null; + try + { + bais = new ByteArrayInputStream(serializedObject); + ois = new ObjectInputStream(bais); + returnObject = (T)ois.readObject(); + ois.close(); + bais.close(); + } + catch (Exception e) { + throw new RuntimeException("Error deserializing object", e); + } + finally { + if(bais != null) + try{bais.close();}catch(IOException ignore) {} + if(ois != null) + try{ois.close();}catch(IOException ignore) {} + } + + if (!obj.equals(returnObject)) + throw new RuntimeException("Deserialized object is not equivalent to original!"); + + return returnObject; + } +}
