blob: fde48d243ae356154e84627632903575033a9a7e [file] [log] [blame]
/**
* 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.cxf.dosgi.dsw.hooks;
import org.junit.Assert;
import org.junit.Test;
public class CxfFindListenerHookTest extends Assert {
@Test
public void testDUMMY() throws Exception {
}
// private IMocksControl control;
//
// @Before
// public void setUp() {
// control = EasyMock.createNiceControl();
// }
/* Todo this test doesn't apply at the moment since the ListenerHook doesn't
* have a serviceReferencesRequested() API (yet).
@Test
public void testSyncListenerHook() throws Exception {
Bundle bundle = control.createMock(Bundle.class);
bundle.findEntries(EasyMock.eq("OSGI-INF/remote-service"),
EasyMock.eq("*.xml"), EasyMock.anyBoolean());
EasyMock.expectLastCall().andReturn(Collections.enumeration(
Arrays.asList(getClass().getResource("/OSGI-INF/remote-service/remote-services.xml"))));
Dictionary<String, String> bundleHeaders = new Hashtable<String, String>();
bundleHeaders.put(org.osgi.framework.Constants.BUNDLE_NAME,
"Test Bundle");
bundleHeaders.put(org.osgi.framework.Constants.BUNDLE_VERSION,
"1.0.0");
bundle.getHeaders();
EasyMock.expectLastCall().andReturn(bundleHeaders).anyTimes();
bundle.loadClass(TestService.class.getName());
EasyMock.expectLastCall().andReturn(TestService.class).anyTimes();
final BundleContext requestingContext = control.createMock(BundleContext.class);
requestingContext.getBundle();
EasyMock.expectLastCall().andReturn(bundle).anyTimes();
BundleTestContext dswContext = new BundleTestContext(bundle);
dswContext.addServiceReference(TestService.class.getName(),
control.createMock(ServiceReference.class));
control.replay();
CxfListenerHook hook = new CxfListenerHook(dswContext, null);
// TODO : if the next call ends up being executed in a thread of its own then
// update the test accordingly, use Futures for ex
hook.serviceReferencesRequested(requestingContext,
TestService.class.getName(), null, true);
List<ServiceReference> registeredRefs = dswContext.getRegisteredReferences();
assertNotNull(registeredRefs);
assertEquals(1, registeredRefs.size());
} */
// @Test
// public void testTrackerPropertiesOnlyClassInFilterWithMatchingInterface() throws Exception {
// String filter = "(objectClass=" + TestService.class.getName() + ")";
// doTestTrackerPropertiesSet(filter,
// "osgi.remote.discovery.interest.interfaces",
// TestService.class.getName(),
// asList(TestService.class.getName()),
// Collections.EMPTY_SET);
// }
//
// @Test
// public void testTrackerPropertiesGenericFilterWithMatchingInterface() throws Exception {
// String filter = "(&(objectClass=" + TestService.class.getName()
// + ")(colour=blue))";
// doTestTrackerPropertiesSet(filter,
// "osgi.remote.discovery.interest.filters",
// replacePredicate(filter),
// asList(TestService.class.getName()),
// Collections.EMPTY_SET);
// }
//
// @Test
// public void testTrackerPropertiesOnlyClassInFilterWithMatchingFilter() throws Exception {
// String filter = "(objectClass=" + TestService.class.getName() + ")";
// doTestTrackerPropertiesSet(filter,
// "osgi.remote.discovery.interest.interfaces",
// TestService.class.getName(),
// Collections.EMPTY_SET,
// asList(replacePredicate(filter)));
// }
//
// @Test
// public void testTrackerPropertiesGenericFilterWithMatchingFilter() throws Exception {
// String filter = "(&(objectClass=" + TestService.class.getName()
// + ")(colour=blue))";
// doTestTrackerPropertiesSet(filter,
// "osgi.remote.discovery.interest.filters",
// replacePredicate(filter),
// Collections.EMPTY_SET,
// asList(replacePredicate(filter)));
// }
//
// @Test
// public void testTrackerPropertiesOnlyClassInFilterWithMatchingBoth() throws Exception {
// String filter = "(objectClass=" + TestService.class.getName() + ")";
// doTestTrackerPropertiesSet(filter,
// "osgi.remote.discovery.interest.interfaces",
// TestService.class.getName(),
// asList(TestService.class.getName()),
// asList(replacePredicate(filter)));
// }
//
// @Test
// public void testTrackerPropertiesGenericFilterWithMatchingBoth() throws Exception {
// String filter = "(&(objectClass=" + TestService.class.getName()
// + ")(colour=blue))";
// doTestTrackerPropertiesSet(filter,
// "osgi.remote.discovery.interest.filters",
// replacePredicate(filter),
// Collections.EMPTY_SET,
// asList(replacePredicate(filter)));
// }
//
// private void doTestTrackerPropertiesSet(final String filter,
// String propKey,
// String propValue,
// Collection matchingInterfaces,
// Collection matchingFilters) throws Exception {
// Bundle bundle = control.createMock(Bundle.class);
// Dictionary<String, String> bundleHeaders = new Hashtable<String, String>();
// bundleHeaders.put(org.osgi.framework.Constants.BUNDLE_NAME,
// "Test Bundle");
// bundleHeaders.put(org.osgi.framework.Constants.BUNDLE_VERSION,
// "1.0.0");
// bundle.getHeaders();
// EasyMock.expectLastCall().andReturn(bundleHeaders).times(2);
// final String serviceClass = TestService.class.getName();
// bundle.loadClass(serviceClass);
// EasyMock.expectLastCall().andReturn(TestService.class).times(2);
// final BundleContext requestingContext = control.createMock(BundleContext.class);
//
// BundleTestContext dswContext = new BundleTestContext(bundle);
// ServiceRegistration serviceRegistration = control.createMock(ServiceRegistration.class);
// dswContext.addServiceRegistration(serviceClass, serviceRegistration);
// serviceRegistration.unregister();
// EasyMock.expectLastCall().times(1);
// ServiceReference serviceReference = control.createMock(ServiceReference.class);
// dswContext.addServiceReference(serviceClass, serviceReference);
//
// final String trackerClass = DiscoveredServiceTracker.class.getName();
// ServiceRegistration trackerRegistration = control.createMock(ServiceRegistration.class);
// dswContext.addServiceRegistration(trackerClass, trackerRegistration);
// ServiceReference trackerReference = control.createMock(ServiceReference.class);
// dswContext.addServiceReference(trackerClass, trackerReference);
//
// List property = asList(propValue);
// Dictionary properties = new Hashtable();
// properties.put(propKey, property);
// trackerRegistration.setProperties(properties);
// EasyMock.expectLastCall();
//
// if (matchingInterfaces.size() == 0 && matchingFilters.size() > 0) {
// Iterator filters = matchingFilters.iterator();
// while (filters.hasNext()) {
// Filter f = control.createMock(Filter.class);
// dswContext.addFilter((String)filters.next(), f);
// f.match(EasyMock.isA(Dictionary.class));
// EasyMock.expectLastCall().andReturn(true);
// }
// }
//
// control.replay();
//
// CxfFindListenerHook hook = new CxfFindListenerHook(dswContext, null);
//
// ListenerHook.ListenerInfo info = new ListenerHook.ListenerInfo() {
// public BundleContext getBundleContext() {
// return requestingContext;
// }
//
// public String getFilter() {
// return filter;
// }
//
// public boolean isRemoved() {
// return false;
// }
// };
// hook.added(Collections.singleton(info));
//
// DiscoveredServiceTracker tracker = (DiscoveredServiceTracker)
// dswContext.getService(trackerReference);
// assertNotNull(tracker);
//
// Collection interfaces = asList(serviceClass);
//
// notifyAvailable(tracker, matchingInterfaces, matchingFilters, "1234");
// notifyAvailable(tracker, matchingInterfaces, matchingFilters, "5678");
// notifyAvailable(tracker, matchingInterfaces, matchingFilters, "1234");
//
// notifyUnAvailable(tracker, "1234");
// notifyUnAvailable(tracker, "5678");
//
// notifyAvailable(tracker, matchingInterfaces, matchingFilters , "1234");
//
// control.verify();
//
// Map<String, ServiceReference> registeredRefs = dswContext.getRegisteredReferences();
// assertNotNull(registeredRefs);
// assertEquals(2, registeredRefs.size());
// assertNotNull(registeredRefs.get(serviceClass));
// assertSame(serviceReference, registeredRefs.get(serviceClass));
//
// Map<String, ServiceRegistration> registeredRegs = dswContext.getRegisteredRegistrations();
// assertNotNull(registeredRegs);
// assertEquals(2, registeredRegs.size());
// assertNotNull(registeredRegs.get(trackerClass));
// assertSame(trackerRegistration, registeredRegs.get(trackerClass));
//
// List<Object> registeredServices = dswContext.getRegisteredServices();
// assertNotNull(registeredServices);
// assertEquals(2, registeredServices.size());
// }
//
// @Test
// public void testConstructorAndGetters() {
// BundleContext bc = control.createMock(BundleContext.class);
// CxfRemoteServiceAdmin dp = control.createMock(CxfRemoteServiceAdmin.class);
// control.replay();
//
// CxfFindListenerHook clh = new CxfFindListenerHook(bc, dp);
// assertSame(bc, clh.getContext());
// assertSame(dp, clh.getDistributionProvider());
// }
//
// @Test
// public void testFindHook() {
// BundleContext bc = EasyMock.createNiceMock(BundleContext.class);
//
// final List<String> lookupCalls = new ArrayList<String>();
// CxfFindListenerHook fh = new CxfFindListenerHook(bc, null) {
// @Override
// protected synchronized void lookupDiscoveryService(
// String interfaceName, String filterValue) {
// lookupCalls.add(interfaceName);
// lookupCalls.add(filterValue);
// }
// };
//
// String clazz = "my.app.Class";
// String filter = "&(A=B)(C=D)";
// fh.find(null, clazz, filter, true, null);
//
// assertEquals(Arrays.asList(clazz, filter), lookupCalls);
// }
//
// private void notifyAvailable(DiscoveredServiceTracker tracker,
// Collection interfaces,
// Collection filters,
// String endpointId) {
// Map<String, Object> props = new Hashtable<String, Object>();
// props.put("osgi.remote.interfaces", "*");
// props.put("osgi.remote.endpoint.id", endpointId);
// tracker.serviceChanged(new Notification(AVAILABLE,
// TestService.class.getName(),
// interfaces,
// filters,
// props));
// }
//
// private void notifyUnAvailable(DiscoveredServiceTracker tracker,
// String endpointId) {
// Map<String, Object> props = new Hashtable<String, Object>();
// props.put("osgi.remote.endpoint.id", endpointId);
// tracker.serviceChanged(new Notification(UNAVAILABLE,
// TestService.class.getName(),
// Collections.EMPTY_SET,
// Collections.EMPTY_SET,
// props));
// }
//
// private List<String> asList(String s) {
// List l = new ArrayList<String>();
// l.add(s);
// return l;
// }
//
// private String replacePredicate(String filter) {
// return filter.replace("objectClass", ServicePublication.SERVICE_INTERFACE_NAME);
// }
//
// private class Notification implements DiscoveredServiceNotification {
// private int type;
// private ServiceEndpointDescription sed;
// private Collection interfaces;
// private Collection filters;
//
// Notification(int type,
// String interfaceName,
// Collection interfaces,
// Collection filters,
// Map<String, Object> props) {
// this.type = type;
// this.sed = new ServiceEndpointDescriptionImpl(interfaceName, props);
// this.interfaces = interfaces;
// this.filters = filters;
// }
//
// public int getType() {
// return type;
// }
//
// public ServiceEndpointDescription getServiceEndpointDescription() {
// return sed;
// }
//
// public Collection getInterfaces() {
// return interfaces;
// }
//
// public Collection getFilters() {
// return filters;
// }
// }
}