Package org.eclipse.ecf.tests.discovery

Source Code of org.eclipse.ecf.tests.discovery.DiscoveryServiceRegistryTest

/*******************************************************************************
* Copyright (c) 2013 Markus Alexander Kuppe and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*   Markus Alexander Kuppe - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.tests.discovery;

import org.eclipse.ecf.core.identity.IDFactory;
import org.eclipse.ecf.discovery.IServiceInfo;
import org.eclipse.ecf.discovery.ServiceInfo;
import org.eclipse.ecf.discovery.identity.IServiceTypeID;
import org.eclipse.ecf.discovery.identity.ServiceIDFactory;
import org.eclipse.ecf.internal.discovery.DiscoveryNamespace;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;


public abstract class DiscoveryServiceRegistryTest extends DiscoveryServiceTest {

  protected ServiceRegistration registerService;
  protected IServiceInfo genericServiceInfo;

  public DiscoveryServiceRegistryTest(String name) {
    super(name);
  }

  protected void setUp() throws Exception {
    super.setUp();
   
    // override the service info with a _generic_ service info. Generic in
    // the sense that its namespace if the parent DiscoveryNamespace and not
    // a provider specific one. We need to use the parent DN because users of the
    // whiteboard pattern do not interact with the IDA directly.
    IServiceTypeID serviceTypeID = ServiceIDFactory.getDefault()
        .createServiceTypeID(
            IDFactory.getDefault().getNamespaceByName(
                DiscoveryNamespace.NAME), services,
            new String[] { scope }, new String[] { protocol },
            namingAuthority);
    assertNotNull(serviceTypeID);
   
    // Register a generic IServiceInfo (discovery generic) in the OSGi
    // service registry. Let all comparison be done on the provider specific
    // ("serviceInfo") super class member though Otherwise we would have to
    // register a specific type ignoring ServiceInfoComparator (see below) because the
    // generic IServiceInfo will never be equal to the (converted) discovery
    // provider .
    genericServiceInfo = new ServiceInfo(serviceInfo.getLocation(), DiscoveryTestHelper.SERVICENAME,
        serviceTypeID, 1, 1, serviceInfo.getServiceProperties(), ttl);
  }

  protected synchronized void registerService() {
    BundleContext context = Activator.getDefault().getContext();
    registerService = context.registerService(IServiceInfo.class, genericServiceInfo, null);
  }

  protected synchronized void unregisterService() {
    registerService.unregister();
    registerService = null;
  }
// 
//  private static class TypeIgnoringComparator extends ServiceInfoComparator {
//
//    public int compare(Object arg0, Object arg1) {
//      if (arg0 instanceof IServiceInfo && arg1 instanceof IServiceInfo) {
//        final IServiceInfo first = (IServiceInfo) arg0;
//        final IServiceInfo second = (IServiceInfo) arg1;
//       
//        final IServiceID firstServiceId = first.getServiceID();
//        final IServiceID secondServiceId = second.getServiceID();
//               
//        boolean idsSame = firstServiceId.getLocation().equals(secondServiceId.getLocation());
//        boolean idTypesSame = firstServiceId.getServiceTypeID().equals(secondServiceId.getServiceTypeID());
//       
//        boolean prioSame = first.getPriority() == second.getPriority();
//        boolean weightSame = first.getWeight() == second.getWeight();
//        boolean servicePropertiesSame = compareServiceProperties(first.getServiceProperties(), second.getServiceProperties());
//        boolean ttlSame = first.getTTL() == second.getTTL();
//        final boolean result = (idsSame && idTypesSame && prioSame && weightSame && servicePropertiesSame && ttlSame);
//        if (result == true) {
//          return 0;
//        }
//      }
//      return -1;
//    }
//  }
}
TOP

Related Classes of org.eclipse.ecf.tests.discovery.DiscoveryServiceRegistryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.