/* * #%L * JBossOSGi Resolver Felix * %% * Copyright (C) 2010 - 2012 JBoss by Red Hat * %% * 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. * #L% */ package org.jboss.osgi.resolver.felix; import static org.jboss.osgi.resolver.ResolverLogger.LOGGER; import java.util.Collection; import java.util.List; import java.util.Map; import org.apache.felix.resolver.ResolverImpl; import org.osgi.resource.Resource; import org.osgi.resource.Wire; import org.osgi.service.resolver.ResolutionException; import org.osgi.service.resolver.ResolveContext; /** * An extension to the Felix Resolver that does some logging. * * @author thomas.diesler@jboss.com * @since 31-May-2010 */ public final class LoggingResolver extends ResolverImpl { public LoggingResolver() { super(new LoggerDelegate()); } @Override public Map<Resource, List<Wire>> resolve(ResolveContext context) throws ResolutionException { Collection<Resource> mandatory = context.getMandatoryResources(); Collection<Resource> optional = context.getOptionalResources(); LOGGER.debugf("Resolve: %s, %s", mandatory, optional); Map<Resource, List<Wire>> result = super.resolve(context); if (LOGGER.isDebugEnabled()) { LOGGER.debugf("Resolution result: %d", result.size()); for (Map.Entry<Resource, List<Wire>> entry : result.entrySet()) { Resource res = entry.getKey(); List<Wire> wires = entry.getValue(); LOGGER.debugf(" %s: %d wires", res, wires.size()); for (Wire wire : wires) { LOGGER.debugf(" %s", wire); } } } return result; } }