Skip to content

Commit

Permalink
[SHRINKWRAP-244] Add fix
Browse files Browse the repository at this point in the history
  • Loading branch information
DavideD authored and Andrew Lee Rubinger committed Apr 27, 2011
1 parent 2758bbb commit c382f93
Showing 1 changed file with 47 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1049,6 +1049,7 @@ public boolean include(ArchivePath path)
return path.get().matches(expression);
};
},
clazz.getClassLoader(),
clazz.getPackage()
);
}
Expand Down Expand Up @@ -1082,6 +1083,11 @@ public T addPackages(boolean recursive, Package... packages) throws IllegalArgum
*/
@Override
public T addPackages(final boolean recursive, final Filter<ArchivePath> filter, final Package... packages) throws IllegalArgumentException
{
return addPackages(recursive, filter, null, packages);
}

private T addPackages(final boolean recursive, final Filter<ArchivePath> filter, final ClassLoader cl, final Package... packages) throws IllegalArgumentException
{
Validate.notNull(filter, "Filter must be specified");
Validate.notNull(packages, "Packages must be specified");
Expand All @@ -1091,7 +1097,11 @@ public T addPackages(final boolean recursive, final Filter<ArchivePath> filter,
{
packageNames[i] = packages[i] == null ? null:packages[i].getName();
}
return addPackages(recursive, filter, packageNames);

if (cl == null)
return addPackages(recursive, filter, packageNames);

return addPackages(recursive, filter, cl, packageNames);
}

/* (non-Javadoc)
Expand Down Expand Up @@ -1130,32 +1140,49 @@ public T addPackages(boolean recursive, final Filter<ArchivePath> filter, String

for (String packageName : packageNames)
{

for (final ClassLoader classLoader : classLoaders)
{
final URLPackageScanner.Callback callback = new URLPackageScanner.Callback()
{
@Override
public void classFound(String className)
{
ArchivePath classNamePath = AssetUtil.getFullPathForClassResource(className);
if (!filter.include(classNamePath))
{
return;
}
Asset asset = new ClassLoaderAsset(classNamePath.get().substring(1), classLoader);
ArchivePath location = new BasicPath(getClassesPath(), classNamePath);
add(asset, location);
}
};
final URLPackageScanner scanner = packageName == null ? URLPackageScanner.newInstance(recursive,
classLoader, callback) : URLPackageScanner.newInstance(recursive, classLoader, callback, packageName);
scanner.scanPackage();
addPackage(recursive, filter, classLoader, packageName);
}
}
return covarientReturn();
}

private T addPackages(final boolean recursive, final Filter<ArchivePath> filter, final ClassLoader classLoader, String... packageNames)
{
Validate.notNull(filter, "Filter must be specified");
Validate.notNull(packageNames, "PackageNames must be specified");

for (String packageName : packageNames)
{
addPackage(recursive, filter, classLoader, packageName);
}
return covarientReturn();
}

private void addPackage(final boolean recursive, final Filter<ArchivePath> filter, final ClassLoader classLoader, String packageName)
{
final URLPackageScanner.Callback callback = new URLPackageScanner.Callback()
{
@Override
public void classFound(String className)
{
ArchivePath classNamePath = AssetUtil.getFullPathForClassResource(className);
if (!filter.include(classNamePath))
{
return;
}
Asset asset = new ClassLoaderAsset(classNamePath.get().substring(1), classLoader);
ArchivePath location = new BasicPath(getClassesPath(), classNamePath);
add(asset, location);
}
};
final URLPackageScanner scanner = packageName == null ? URLPackageScanner.newInstance(recursive,
classLoader, callback) : URLPackageScanner.newInstance(recursive, classLoader, callback, packageName);
scanner.scanPackage();
}


//-------------------------------------------------------------------------------------||
// Required Implementations - LibraryContainer ----------------------------------------||
//-------------------------------------------------------------------------------------||
Expand Down

0 comments on commit c382f93

Please sign in to comment.