org.ops4j.pax.swissbox.extender.BundleURLEntryScanner Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pax-swissbox-extender Show documentation
Show all versions of pax-swissbox-extender Show documentation
OPS4J Pax Swissbox - Utilities related to extender pattern.
Detailed information to be found at http://wiki.ops4j.org/confluence/x/NQRN.
The newest version!
/*
* Copyright 2007 Alin Dreghiciu.
*
* 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.
*/
package org.ops4j.pax.swissbox.extender;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import org.osgi.framework.Bundle;
/**
* A bundle scanner that uses Bundle.findEntries to search for entries and allows customization of created resources.
*
* @author Alin Dreghiciu
* @since 0.2.1, March 08, 2007
*/
public abstract class BundleURLEntryScanner
extends BundleEntryScanner
{
/**
* Delegate to BundleEntryScanner.
*
* @see BundleEntryScanner#BundleEntryScanner(String,String,boolean)
*/
public BundleURLEntryScanner( final String path,
final String filePattern,
final boolean recurse )
{
super( path, filePattern, recurse );
}
/**
* Delegate to BundleEntryScanner.
*
* @see BundleEntryScanner#BundleEntryScanner(String,String,boolean)
*/
public BundleURLEntryScanner( final String pathManifestHeader,
final String filePatternManifestHeader,
final String recurseManifestHeader,
final String path,
final String filePattern,
boolean recurse )
{
super( pathManifestHeader, filePatternManifestHeader, recurseManifestHeader, path, filePattern, recurse );
}
/**
* @see BundleScanner#scan(org.osgi.framework.Bundle)
*/
public List scan( final Bundle bundle )
{
final List resources = new ArrayList();
final Enumeration e = bundle.findEntries( getPath( bundle ), getFilePattern( bundle ), getRecurse( bundle ) );
if( e != null )
{
while( e.hasMoreElements() )
{
final URL entry = (URL) e.nextElement();
if( entry != null )
{
resources.add( createResource( bundle, entry ) );
}
}
}
return resources;
}
/**
* Resource factory method.
*
* @param bundle bundle containing the entry
* @param entry entry URL
*
* @return created resource
*/
protected abstract T createResource( Bundle bundle, URL entry );
}