| /******************************************************************************* |
| * Copyright (c) 2008 Martin Lippert 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: |
| * Martin Lippert initial implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.equinox.service.weaving; |
| |
| import org.osgi.framework.Bundle; |
| |
| /** |
| * This is the central interface for other bundles to implement when they would |
| * like to contribute a concrete caching implementation. Bundles should |
| * implement this interface and register an implementation as an OSGi service |
| * under this interface. |
| * |
| * @author Martin Lippert |
| */ |
| public interface ICachingServiceFactory { |
| |
| /** |
| * Create concrete caching service for the given bundle. The caching service |
| * is then responsible to cache woven bytecode and retrieve those bytecodes |
| * from the cache. |
| * |
| * @param classLoader The classloader if the given bundle |
| * @param bundle The bundle the caching service should be created for |
| * @param key A fingerprint that is created by the concrete weavers to |
| * indicate what the weaving configuration for this bundle is. |
| * The caching service should be able to handle different keys |
| * for the same bundle in order not the deliver the wrong cached |
| * bytes from the cache |
| * @return The caching service for the given bundle |
| */ |
| public ICachingService createCachingService(ClassLoader classLoader, |
| Bundle bundle, String key); |
| |
| } |