001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019: package org.apache.axis2.context;
020:
021: import junit.framework.TestCase;
022: import org.apache.axis2.description.AxisOperation;
023: import org.apache.axis2.description.AxisService;
024: import org.apache.axis2.description.AxisServiceGroup;
025: import org.apache.axis2.description.InOutAxisOperation;
026: import org.apache.axis2.engine.AxisConfiguration;
027:
028: import javax.xml.namespace.QName;
029:
030: /**
031: *
032: */
033: public class ContextListenerTest extends TestCase {
034: static class MyListener implements ContextListener {
035: private AbstractContext lastContext;
036:
037: public void contextCreated(AbstractContext context) {
038: lastContext = context;
039: }
040:
041: public void contextRemoved(AbstractContext context) {
042: //TODO: Method implementation
043:
044: }
045:
046: public AbstractContext getLastContext() {
047: return lastContext;
048: }
049: }
050:
051: /**
052: * Confirm that creating contexts at various levels correctly causes notifications to
053: * ContextListeners that are registered on a given ConfigurationContext.
054: *
055: * @throws Exception if an error occurs
056: */
057: public void testContextListener() throws Exception {
058: // Set up metadata
059: AxisConfiguration axisConfig = new AxisConfiguration();
060: ConfigurationContext configCtx = new ConfigurationContext(
061: axisConfig);
062: AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
063: AxisService service = new AxisService("TestService");
064: AxisOperation operation = new InOutAxisOperation(new QName(
065: "ns", "op1"));
066: service.addOperation(operation);
067: serviceGroup.addService(service);
068:
069: // Register a listener and make sure it starts out clean
070: MyListener listener = new MyListener();
071: configCtx.addContextListener(listener);
072: assertNull(listener.getLastContext());
073:
074: MessageContext mc = configCtx.createMessageContext();
075: assertNotNull(mc);
076: assertEquals("MessageContext not stored", mc, listener
077: .getLastContext());
078:
079: ServiceGroupContext sgc = configCtx
080: .createServiceGroupContext(serviceGroup);
081: assertNotNull(sgc);
082: assertEquals("ServiceGroupContext not stored", sgc, listener
083: .getLastContext());
084:
085: ServiceContext sc = sgc.getServiceContext(service);
086: assertNotNull(sc);
087: assertEquals("ServiceContext not stored", sc, listener
088: .getLastContext());
089:
090: OperationContext oc = sc.createOperationContext(operation);
091: assertNotNull(oc);
092: assertEquals("OperationContext not stored", oc, listener
093: .getLastContext());
094:
095: // Try a second listener and make sure they both get notified
096: MyListener listener2 = new MyListener();
097: configCtx.addContextListener(listener2);
098:
099: mc = configCtx.createMessageContext();
100: assertNotNull(mc);
101: assertEquals("MessageContext not stored", mc, listener
102: .getLastContext());
103: assertEquals("MessageContext not stored in listener 2", mc,
104: listener2.getLastContext());
105: }
106: }
|