Copyright (c) 2008, 2013 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2008, 2013 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.osgi.storage.bundlefile; import org.eclipse.osgi.internal.hookregistry.BundleFileWrapperFactoryHook;
Used to chain the BundleFile objects returned from BundleFileWrapperFactoryHook. This class is useful for traversing the chain of wrapped bundle files.
/** * Used to chain the BundleFile objects returned from {@link BundleFileWrapperFactoryHook}. * This class is useful for traversing the chain of wrapped bundle files. */
public class BundleFileWrapperChain extends BundleFileWrapper { private final BundleFile wrapped; private final BundleFileWrapperChain next; public BundleFileWrapperChain(BundleFile wrapped, BundleFileWrapperChain next) { super(wrapped); this.wrapped = wrapped; this.next = next; } @Override public String toString() { return wrapped.toString(); }
The BundleFile that is wrapped
Returns:the BunldeFile that is wrapped
/** * The BundleFile that is wrapped * @return the BunldeFile that is wrapped */
public BundleFile getWrapped() { return wrapped; }
The next WrapperBundleFile in the chain. A null value is returned if this is the end of the chain.
Returns:the next WrapperBundleFile
/** * The next WrapperBundleFile in the chain. A <code>null</code> value * is returned if this is the end of the chain. * @return the next WrapperBundleFile */
public BundleFileWrapperChain getNext() { return next; }
Returns the first bundle file wrapped in this chain which also is an instance of the specified type.
Params:
  • type – the class of the type being searched for
Type parameters:
  • <T> – The type being searched for
Returns:the found bundle file that is an instance of the specified type
/** * Returns the first bundle file wrapped in this chain which * also is an instance of the specified type. * @param <T> The type being searched for * @param type the class of the type being searched for * @return the found bundle file that is an instance of the specified type */
@SuppressWarnings("unchecked") public <T> T getWrappedType(Class<T> type) { BundleFileWrapperChain current = this; do { if (type.isInstance(current.getWrapped())) { return (T) current.getWrapped(); } current = current.getNext(); } while (current != null); return null; } }