Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceUtil.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceUtil.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceUtil.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceUtil.java Mon Feb 6 14:37:49 2017 @@ -18,10 +18,14 @@ */ package org.apache.felix.dm.impl; +import java.util.Arrays; +import java.util.Collections; import java.util.Dictionary; import java.util.Enumeration; +import java.util.HashSet; import java.util.Hashtable; import java.util.List; +import java.util.Set; import org.apache.felix.dm.DependencyManager; import org.osgi.framework.Bundle; @@ -38,6 +42,62 @@ public class ServiceUtil { * Useful when needing to provide empty service properties. */ public final static Dictionary<String, Object> EMPTY_PROPERTIES = new Hashtable<>(); + + /** + * Defines service properties which must not be propagated from the dependencies to component service properties. + */ + public final static Set<String> NOT_PROPAGATABLE_SERVICE_PROPERTIES = + Collections.unmodifiableSet(new HashSet<>(Arrays.asList( + Constants.SERVICE_ID, + Constants.SERVICE_RANKING, + Constants.SERVICE_BUNDLEID, + Constants.SERVICE_SCOPE, + Constants.OBJECTCLASS, + DependencyManager.ASPECT))); + + /** + * Helper method used to convert a dictionary with untyped keys to a dictionary having a String key. + * (this method is useful when converting a Properties object into a compatible Dictionary<String, Object> + * object that is often needed in OSGI R6 API. + */ + @SuppressWarnings("unchecked") + public static <K,V> Dictionary<K, V> toR6Dictionary(Dictionary<?,?> properties) { + return (Dictionary<K, V>) properties; + } + + /** + * Dump some service properties in a petty form. + */ + public static void appendProperties(StringBuilder result, Dictionary<?, ?> properties) { + if (properties != null) { + result.append("("); + Enumeration<?> enumeration = properties.keys(); + while (enumeration.hasMoreElements()) { + Object key = enumeration.nextElement(); + result.append(key.toString()); + result.append('='); + Object value = properties.get(key); + if (value instanceof String[]) { + String[] values = (String[]) value; + result.append('{'); + for (int i = 0; i < values.length; i++) { + if (i > 0) { + result.append(','); + } + result.append(values[i].toString()); + } + result.append('}'); + } + else { + result.append(value.toString()); + } + if (enumeration.hasMoreElements()) { + result.append(','); + } + } + result.append(")"); + } + } /** * Returns the service ranking of a service, based on its service reference. If @@ -47,7 +107,7 @@ public class ServiceUtil { * @param ref the service reference to determine the ranking for * @return the ranking */ - public static int getRanking(ServiceReference ref) { + public static int getRanking(ServiceReference<?> ref) { return getRankingAsInteger(ref).intValue(); } @@ -59,7 +119,7 @@ public class ServiceUtil { * @param ref the service reference to determine the ranking for * @return the ranking */ - public static Integer getRankingAsInteger(ServiceReference ref) { + public static Integer getRankingAsInteger(ServiceReference<?> ref) { Integer rank = (Integer) ref.getProperty(Constants.SERVICE_RANKING); if (rank != null) { return rank; @@ -75,7 +135,7 @@ public class ServiceUtil { * @param ref the service reference to determine the service ID of * @return the service ID */ - public static long getServiceId(ServiceReference ref) { + public static long getServiceId(ServiceReference<?> ref) { return getServiceIdAsLong(ref).longValue(); } @@ -87,11 +147,11 @@ public class ServiceUtil { * @param ref the service reference to determine the service ID of * @return the service ID */ - public static Long getServiceIdAsLong(ServiceReference ref) { + public static Long getServiceIdAsLong(ServiceReference<?> ref) { return getServiceIdObject(ref); } - public static Long getServiceIdObject(ServiceReference ref) { + public static Long getServiceIdObject(ServiceReference<?> ref) { Long aid = (Long) ref.getProperty(DependencyManager.ASPECT); if (aid != null) { return aid; @@ -110,7 +170,7 @@ public class ServiceUtil { * @param ref the service reference * @return <code>true</code> if it's an aspect, <code>false</code> otherwise */ - public static boolean isAspect(ServiceReference ref) { + public static boolean isAspect(ServiceReference<?> ref) { Long aid = (Long) ref.getProperty(DependencyManager.ASPECT); return (aid != null); } @@ -122,7 +182,7 @@ public class ServiceUtil { * @param ref the service reference * @return a string representation of the service */ - public static String toString(ServiceReference ref) { + public static String toString(ServiceReference<?> ref) { if (ref == null) { return "ServiceReference[null]"; } @@ -150,7 +210,7 @@ public class ServiceUtil { * @param exclude a list of properties to exclude, or <code>null</code> to show everything * @return a string representation of the service properties */ - public static String propertiesToString(ServiceReference ref, List<String> exclude) { + public static String propertiesToString(ServiceReference<?> ref, List<String> exclude) { StringBuffer buf = new StringBuffer(); String[] keys = ref.getPropertyKeys(); for (int i = 0; i < keys.length; i++) { @@ -187,7 +247,7 @@ public class ServiceUtil { * @param ref the ServiceReference to wrap * @return a new Dictionary used to wrap the ServiceReference properties */ - public static Dictionary<String, Object> propertiesToDictionary(final ServiceReference ref) { + public static Dictionary<String, Object> propertiesToDictionary(final ServiceReference<?> ref) { return new Dictionary<String, Object>() { private Dictionary<String, Object> m_wrapper;
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/TemporalServiceDependencyImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/TemporalServiceDependencyImpl.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/TemporalServiceDependencyImpl.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/TemporalServiceDependencyImpl.java Mon Feb 6 14:37:49 2017 @@ -99,8 +99,9 @@ public class TemporalServiceDependencyIm /** * The ServiceTracker calls us here in order to inform about a service arrival. */ - @Override - public void addedService(ServiceReference ref, Object service) { + @SuppressWarnings("rawtypes") + @Override + public void addedService(ServiceReference ref, Object event) { // Update our service cache, using the tracker. We do this because the // just added service might not be the service with the highest rank ... boolean makeAvailable = false; @@ -111,8 +112,8 @@ public class TemporalServiceDependencyIm } } if (makeAvailable) { - getComponentContext().handleEvent(this, EventType.ADDED, - new ServiceEventImpl(m_component.getBundle(), m_component.getBundleContext(), ref, m_serviceInstance)); + getComponentContext().handleEvent(this, EventType.ADDED, + new ServiceEventImpl(m_component, ref, m_serviceInstance)); } else { // This added will possibly unblock our invoke() method (if it's blocked in m_tracker.waitForService method). } @@ -121,7 +122,8 @@ public class TemporalServiceDependencyIm /** * The ServiceTracker calls us here when a tracked service properties are modified. */ - @Override + @SuppressWarnings("rawtypes") + @Override public void modifiedService(ServiceReference ref, Object service) { // We don't care. } @@ -129,9 +131,12 @@ public class TemporalServiceDependencyIm /** * The ServiceTracker calls us here when a tracked service is lost. */ - @Override - public void removedService(ServiceReference ref, Object service) { - // If we detect that the fwk is stopping, we behave as our superclass. That is: + @SuppressWarnings("rawtypes") + @Override + public void removedService(ServiceReference ref, Object event) { + ServiceEventImpl eventImpl = (ServiceEventImpl) event; + + // If we detect that the fwk is stopping, we behave as our superclass. That is: // the lost dependency has to trigger our service deactivation, since the fwk is stopping // and the lost dependency won't come up anymore. if (m_frameworkBundle.getState() == Bundle.STOPPING) { @@ -148,29 +153,32 @@ public class TemporalServiceDependencyIm } if (makeUnavailable) { // the event.close method will unget the service. - m_component.handleEvent(this, EventType.REMOVED, new ServiceEventImpl(m_component.getBundle(), - m_component.getBundleContext(), ref, m_serviceInstance)); + m_component.handleEvent(this, EventType.REMOVED, new ServiceEventImpl(m_component, ref, m_serviceInstance)); } } else { - // Unget what we got in addingService (see ServiceTracker 701.4.1) - m_component.getBundleContext().ungetService(ref); - // if there is no available services, the next call to invoke() method will block until another service - // becomes available. Else the next call to invoke() will return that highest ranked available service. + eventImpl.close(); // will unget the service. + // if there is no available services, the next call to invoke() method will block until another service + // becomes available. Else the next call to invoke() will return that highest ranked available service. } } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - Object service = null; + ServiceEventImpl event = null; try { - service = m_tracker.waitForService(m_timeout); + event = (ServiceEventImpl) m_tracker.waitForService(m_timeout); } catch (InterruptedException e) { } - if (service == null) { + if (event == null) { throw new IllegalStateException("Service unavailable: " + m_trackedServiceName.getName()); } + Object service = event.getEvent(); + if (service == null) { + throw new IllegalStateException("Service unavailable: " + m_trackedServiceName.getName()); + } + try { try { return method.invoke(service, args); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AbstractFactoryFilterIndex.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AbstractFactoryFilterIndex.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AbstractFactoryFilterIndex.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AbstractFactoryFilterIndex.java Mon Feb 6 14:37:49 2017 @@ -32,6 +32,7 @@ import org.osgi.framework.ServiceReferen /** * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> */ +@SuppressWarnings("rawtypes") public abstract class AbstractFactoryFilterIndex { protected final Map<Long, SortedSet<ServiceReference>> m_sidToServiceReferencesMap = new HashMap<>(); protected final Map <ServiceListener, String> m_listenerToFilterMap = new HashMap<>(); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AdapterFilterIndex.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AdapterFilterIndex.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AdapterFilterIndex.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AdapterFilterIndex.java Mon Feb 6 14:37:49 2017 @@ -42,6 +42,7 @@ import org.osgi.framework.ServiceReferen /** * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> */ +@SuppressWarnings("rawtypes") public class AdapterFilterIndex extends AbstractFactoryFilterIndex implements FilterIndex, ServiceTrackerCustomizer { // (&(objectClass=foo.Bar)(|(service.id=18233)(org.apache.felix.dependencymanager.aspect=18233))) private static final String FILTER_REGEXP = "\\(&\\(" + Constants.OBJECTCLASS + "=([a-zA-Z\\.\\$0-9]*)\\)\\(\\|\\(" @@ -198,7 +199,8 @@ public class AdapterFilterIndex extends } } - public Object addingService(ServiceReference reference) { + @SuppressWarnings("unchecked") + public Object addingService(ServiceReference reference) { BundleContext context; synchronized (m_lock) { context = m_context; Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AspectFilterIndex.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AspectFilterIndex.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AspectFilterIndex.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/AspectFilterIndex.java Mon Feb 6 14:37:49 2017 @@ -43,6 +43,7 @@ import org.osgi.framework.ServiceReferen /** * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> */ +@SuppressWarnings("rawtypes") public class AspectFilterIndex extends AbstractFactoryFilterIndex implements FilterIndex, ServiceTrackerCustomizer { // (&(objectClass=foo.Bar)(|(!(service.ranking=*))(service.ranking<=99))(|(service.id=4451)(org.apache.felix.dependencymanager.aspect=4451))) private static final String FILTER_START = "(&(" + Constants.OBJECTCLASS + "="; @@ -240,7 +241,8 @@ public class AspectFilterIndex extends A } } - public Object addingService(ServiceReference reference) { + @SuppressWarnings("unchecked") + public Object addingService(ServiceReference reference) { BundleContext context; synchronized (m_lock) { context = m_context; Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptor.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptor.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptor.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptor.java Mon Feb 6 14:37:49 2017 @@ -19,6 +19,7 @@ package org.apache.felix.dm.impl.index; import java.util.Arrays; +import java.util.Collection; import java.util.Iterator; import java.util.List; @@ -34,6 +35,7 @@ import org.osgi.framework.ServiceReferen /** * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> */ +@SuppressWarnings("rawtypes") public class BundleContextInterceptor extends BundleContextInterceptorBase { protected static final String INDEX_LOG_TRESHOLD = "org.apache.felix.dm.index.log.treshold"; private final ServiceRegistryCache m_cache; @@ -159,4 +161,19 @@ public class BundleContextInterceptor ex public void serviceChanged(ServiceEvent event) { m_cache.serviceChangedForFilterIndices(event); } + + @SuppressWarnings("unchecked") + @Override + public <S> ServiceReference<S> getServiceReference(Class<S> clazz) + { + return getServiceReference(clazz.getName()); + } + + @SuppressWarnings("unchecked") + @Override + public <S> Collection<ServiceReference<S>> getServiceReferences(Class<S> clazz, String filter) + throws InvalidSyntaxException + { + return Arrays.asList(getServiceReferences(clazz.getName(), filter)); + } } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptorBase.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptorBase.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptorBase.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/BundleContextInterceptorBase.java Mon Feb 6 14:37:49 2017 @@ -20,6 +20,7 @@ package org.apache.felix.dm.impl.index; import java.io.File; import java.io.InputStream; +import java.util.Collection; import java.util.Dictionary; import java.util.HashMap; import java.util.Map; @@ -32,7 +33,9 @@ import org.osgi.framework.BundleListener import org.osgi.framework.Filter; import org.osgi.framework.FrameworkListener; import org.osgi.framework.InvalidSyntaxException; +import org.osgi.framework.ServiceFactory; import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceObjects; import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; @@ -41,6 +44,7 @@ import org.osgi.framework.ServiceRegistr * * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> */ +@SuppressWarnings({ "unchecked", "rawtypes" }) public abstract class BundleContextInterceptorBase implements BundleContext, ServiceListener { protected final BundleContext m_context; /** Keeps track of all service listeners and their optional filters. */ @@ -114,14 +118,24 @@ public abstract class BundleContextInter m_context.removeFrameworkListener(listener); } - public ServiceRegistration registerService(String[] clazzes, Object service, @SuppressWarnings("rawtypes") Dictionary properties) { + public ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties) { return m_context.registerService(clazzes, service, properties); } - public ServiceRegistration registerService(String clazz, Object service, @SuppressWarnings("rawtypes") Dictionary properties) { + public ServiceRegistration registerService(String clazz, Object service, Dictionary properties) { return m_context.registerService(clazz, service, properties); } + @Override + public <S> ServiceRegistration<S> registerService(Class<S> clazz, S service, Dictionary<String, ?> properties) { + return m_context.registerService(clazz, service, properties); + } + + @Override + public <S> ServiceRegistration<S> registerService(Class<S> clazz, ServiceFactory<S> factory, Dictionary<String, ?> properties) { + return m_context.registerService(clazz, factory, properties); + } + public ServiceReference[] getServiceReferences(String clazz, String filter) throws InvalidSyntaxException { return m_context.getServiceReferences(clazz, filter); } @@ -134,10 +148,26 @@ public abstract class BundleContextInter return m_context.getServiceReference(clazz); } + @Override + public <S> ServiceReference<S> getServiceReference(Class<S> clazz) { + return m_context.getServiceReference(clazz); + } + + @Override + public <S> Collection<ServiceReference<S>> getServiceReferences(Class<S> clazz, String filter) throws InvalidSyntaxException { + return m_context.getServiceReferences(clazz, filter); + } + public Object getService(ServiceReference reference) { return m_context.getService(reference); } + @Override + public <S> ServiceObjects<S> getServiceObjects(ServiceReference<S> reference) + { + return m_context.getServiceObjects(reference); + } + public boolean ungetService(ServiceReference reference) { return m_context.ungetService(reference); } @@ -150,7 +180,11 @@ public abstract class BundleContextInter return m_context.createFilter(filter); } - @SuppressWarnings("unchecked") + @Override + public Bundle getBundle(String location) { + return m_context.getBundle(location); + } + protected Entry<ServiceListener, String>[] synchronizeCollection() { // lazy copy on write: we make a new copy only if writes have changed the collection synchronized (m_serviceListenerFilterMap) { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/multiproperty/MultiPropertyFilterIndex.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/multiproperty/MultiPropertyFilterIndex.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/multiproperty/MultiPropertyFilterIndex.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/index/multiproperty/MultiPropertyFilterIndex.java Mon Feb 6 14:37:49 2017 @@ -43,6 +43,7 @@ import org.osgi.framework.ServiceReferen /** * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> */ +@SuppressWarnings("rawtypes") public class MultiPropertyFilterIndex implements FilterIndex, ServiceTrackerCustomizer { private final Object m_lock = new Object(); @@ -50,7 +51,7 @@ public class MultiPropertyFilterIndex im private BundleContext m_context; private Map<String, Property> m_configProperties = new LinkedHashMap<>(); private List<String> m_negatePropertyKeys = new ArrayList<>(); - private final Map<String, List<ServiceReference>> m_keyToServiceReferencesMap = new HashMap<>(); + private final Map<String, List<ServiceReference>> m_keyToServiceReferencesMap = new HashMap<>(); private final Map<String, List<ServiceListener>> m_keyToListenersMap = new HashMap<>(); private final Map<ServiceListener, String> m_listenerToFilterMap = new HashMap<>(); @@ -281,7 +282,8 @@ public class MultiPropertyFilterIndex im return builder.toString(); } - public Object addingService(ServiceReference reference) { + @SuppressWarnings("unchecked") + public Object addingService(ServiceReference reference) { BundleContext context; synchronized (m_lock) { context = m_context; Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/metatype/MetaTypeProviderImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/metatype/MetaTypeProviderImpl.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/metatype/MetaTypeProviderImpl.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/metatype/MetaTypeProviderImpl.java Mon Feb 6 14:37:49 2017 @@ -200,8 +200,7 @@ public class MetaTypeProviderImpl implem * We also implements the ManagedService and we just delegates the configuration handling to * our associated ConfigurationDependency. */ - @SuppressWarnings("rawtypes") - public void updated(Dictionary properties) throws ConfigurationException { + public void updated(Dictionary<String, ?> properties) throws ConfigurationException { m_managedServiceDelegate.updated(properties); } @@ -268,8 +267,7 @@ public class MetaTypeProviderImpl implem return m_pid; } - @SuppressWarnings("rawtypes") - public void updated(String pid, Dictionary properties) throws ConfigurationException { + public void updated(String pid, Dictionary<String, ?> properties) throws ConfigurationException { m_managedServiceFactoryDelegate.updated(pid, properties); } } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java Mon Feb 6 14:37:49 2017 @@ -63,6 +63,7 @@ import org.osgi.framework.Version; * @ThreadSafe * @version $Revision: 6386 $ */ +@SuppressWarnings("rawtypes") public class ServiceTracker implements ServiceTrackerCustomizer { /* set this to true to compile in debug messages */ static final boolean DEBUG = false; @@ -498,6 +499,7 @@ public class ServiceTracker implements S * <code>ServiceTracker</code>. * @see ServiceTrackerCustomizer#addingService(ServiceReference) */ + @SuppressWarnings("unchecked") public Object addingService(ServiceReference reference) { return context.getService(reference); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTrackerCustomizer.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTrackerCustomizer.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTrackerCustomizer.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTrackerCustomizer.java Mon Feb 6 14:37:49 2017 @@ -46,6 +46,7 @@ import org.osgi.framework.ServiceReferen * @ThreadSafe * @version $Revision: 5874 $ */ +@SuppressWarnings("rawtypes") public interface ServiceTrackerCustomizer { /** * A service is being added to the <code>ServiceTracker</code>. Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/impl/FactoryConfigurationAdapterImplTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/impl/FactoryConfigurationAdapterImplTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/impl/FactoryConfigurationAdapterImplTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/impl/FactoryConfigurationAdapterImplTest.java Mon Feb 6 14:37:49 2017 @@ -52,7 +52,7 @@ public class FactoryConfigurationAdapter FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service, Map.class); ensure.step(1); - ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, createDictionary()); + ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary()); TimeUnit.SECONDS.sleep(1L); @@ -67,7 +67,7 @@ public class FactoryConfigurationAdapter FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service, MyConfiguration.class); - ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, createDictionary()); + ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary()); ensure.waitForStep(1, 1000); @@ -83,7 +83,7 @@ public class FactoryConfigurationAdapter FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service); - ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, createDictionary()); + ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary()); ensure.waitForStep(1, 1000); @@ -99,7 +99,7 @@ public class FactoryConfigurationAdapter FactoryConfigurationAdapterImpl cdi = createConfigurationDependency(service); - ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, createDictionary()); + ((ManagedServiceFactory) cdi.m_component.getInstance()).updated(CONF_PID, (Dictionary<String, ?>) createDictionary()); ensure.waitForStep(1, 1000); @@ -137,7 +137,7 @@ public class FactoryConfigurationAdapter return (FactoryConfigurationAdapterImpl) result; } - private Dictionary<?,?> createDictionary() { + private Dictionary<String, Object> createDictionary() { Dictionary<String, Object> result = new Hashtable<>(); result.put("true", "true"); result.put("value", "42"); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/tracker/TrackedTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/tracker/TrackedTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/tracker/TrackedTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/test/org/apache/felix/dm/tracker/TrackedTest.java Mon Feb 6 14:37:49 2017 @@ -40,6 +40,7 @@ import org.osgi.framework.ServiceReferen /** * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> */ +@SuppressWarnings("rawtypes") public class TrackedTest { @Test @@ -73,7 +74,7 @@ public class TrackedTest { tracker.open(); Tracked tracked = tracker.getTracked(); - ServiceReference[] initialReferences = new ServiceReference[] { + ServiceReference<?>[] initialReferences = new ServiceReference[] { createServiceReference(1L), createServiceReference(2L, 1L, 10), createServiceReference(3L), @@ -104,7 +105,7 @@ public class TrackedTest { tracker.open(); Tracked tracked = tracker.getTracked(); - ServiceReference[] initialReferences = new ServiceReference[] { + ServiceReference<?>[] initialReferences = new ServiceReference[] { createServiceReference(1L), createServiceReference(2L, 1L, 10), createServiceReference(3L), @@ -117,7 +118,7 @@ public class TrackedTest { assertArrayEquals(new Long[] { 2L, 5L }, customizer.getServiceReferenceIds()); // create a service event that registers another but lower ranked aspect for service with id 1. - ServiceReference newReference = createServiceReference(6L, 1L, 8); + ServiceReference<?> newReference = createServiceReference(6L, 1L, 8); ServiceEvent event = new ServiceEvent(ServiceEvent.REGISTERED, newReference); tracked.serviceChanged(event); assertArrayEquals(new Long[] { 2L, 5L }, customizer.getServiceReferenceIds()); @@ -133,7 +134,7 @@ public class TrackedTest { assertArrayEquals(new Long[] { 5L, 4L }, customizer.getServiceReferenceIds()); // create a service event that registers a higher ranked aspect for service with id 1. - ServiceReference higherRankedReference = createServiceReference(7L, 1L, 15); + ServiceReference<?> higherRankedReference = createServiceReference(7L, 1L, 15); ServiceEvent addHigherRankedEvent = new ServiceEvent(ServiceEvent.REGISTERED, higherRankedReference); tracked.serviceChanged(addHigherRankedEvent); assertArrayEquals(new Long[] { 5L, 7L }, customizer.getServiceReferenceIds()); @@ -165,11 +166,11 @@ public class TrackedTest { return context; } - private ServiceReference createServiceReference(Long serviceId) { + private ServiceReference<?> createServiceReference(Long serviceId) { return createServiceReference(serviceId, null, null); } - private ServiceReference createServiceReference(Long serviceId, Long aspectId, Integer ranking) { + private ServiceReference<?> createServiceReference(Long serviceId, Long aspectId, Integer ranking) { return new TestServiceReference(serviceId, aspectId, ranking); } @@ -183,7 +184,7 @@ public class TrackedTest { class TestCustomizer implements ServiceTrackerCustomizer { - List<ServiceReference> serviceReferences = new ArrayList<>(); + List<ServiceReference<?>> serviceReferences = new ArrayList<>(); @Override public Object addingService(ServiceReference reference) { Modified: felix/trunk/dependencymanager/release/resources/deps/NOTICE URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/release/resources/deps/NOTICE?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/release/resources/deps/NOTICE (original) +++ felix/trunk/dependencymanager/release/resources/deps/NOTICE Mon Feb 6 14:37:49 2017 @@ -1,5 +1,5 @@ Apache Felix Dependency Manager -Copyright 2011-2015 The Apache Software Foundation +Copyright 2011-2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). @@ -7,14 +7,10 @@ Licensed under the Apache License 2.0. This product includes software developed at The OSGi Alliance (http://www.osgi.org/). -Copyright: (c) OSGi Alliance (2000, 2015) +Copyright: (c) OSGi Alliance (2000, 2017) Copyright (c) 2000 Gatespace AB. All Rights Reserved. Licensed under the Apache License 2.0. -This product includes software from http://www.json.org. -Copyright (c) 2002 JSON.org -Licensed under the JSON License - This product includes software from (http://junit.org), Licensed under the Eclipse Public License - v 1.0.