donaldp 01/11/16 17:01:40
Modified: src/scratchpad/org/apache/avalon/excalibur/extension
PackageManager.java
Log:
Pass in available packages when scanning so that if a required Optional
Package has a dependency on an already available extension then this will not
return a duplicate Optional Packages.
Revision Changes Path
1.3 +20 -13
jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/extension/PackageManager.java
Index: PackageManager.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/extension/PackageManager.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PackageManager.java 2001/09/12 15:36:05 1.2
+++ PackageManager.java 2001/11/17 01:01:40 1.3
@@ -19,7 +19,7 @@
* directories.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
- * @version $Revision: 1.2 $ $Date: 2001/09/12 15:36:05 $
+ * @version $Revision: 1.3 $ $Date: 2001/11/17 01:01:40 $
* @see PackageRepository
*/
public class PackageManager
@@ -106,18 +106,20 @@
* then it is added to list of dependencies. scanDependencies() is then
recursively
* called on all of the candidates required extensions.</p>
*
- * @param extensions the array of required Extensions.
+ * @param required the array of required Extensions.
+ * @param available the array of Extensions already available to caller.
* @param dependencies the list of dependencies.
* @param unsatisfied the list of unsatisfied (ie non-local)
dependencies.
* @see #scanDependencies
*/
- public void scanDependencies( final Extension[] extensions,
+ public void scanDependencies( final Extension[] required,
+ final Extension[] available,
final List dependencies,
final List unsatisfied )
{
- for( int i = 0; i < extensions.length; i++ )
+ for( int i = 0; i < required.length; i++ )
{
- scanDependencies( extensions[ i ], dependencies, unsatisfied );
+ scanDependencies( required[ i ], available, dependencies,
unsatisfied );
}
}
@@ -132,12 +134,14 @@
* then it is added to list of dependencies. scanDependencies() is then
recursively
* called on all of the candidates required extensions.</p>
*
- * @param extension the required Extension.
+ * @param required the required Extension.
+ * @param available the array of Extensions already available to caller.
* @param dependencies the list of OptionalPackages required to satisfy
extension.
* @param unsatisfied the list of unsatisfied (ie non-local)
dependencies.
* @see #scanDependencies
*/
- public void scanDependencies( final Extension extension,
+ public void scanDependencies( final Extension required,
+ final Extension[] available,
final List dependencies,
final List unsatisfied )
{
@@ -147,18 +151,18 @@
for( int i = 0; i < size; i++ )
{
final OptionalPackage optionalPackage =
(OptionalPackage)dependencies.get( i );
- if( optionalPackage.isCompatible( extension ) )
+ if( optionalPackage.isCompatible( required ) )
{
return;
}
}
- final OptionalPackage optionalPackage = getOptionalPackage(
extension );
+ final OptionalPackage optionalPackage = getOptionalPackage( required
);
if( null == optionalPackage )
{
- if( !unsatisfied.contains( extension ) )
+ if( !unsatisfied.contains( required ) )
{
- unsatisfied.add( extension );
+ unsatisfied.add( required );
}
}
else
@@ -167,8 +171,11 @@
{
dependencies.add( optionalPackage );
}
-
- scanDependencies( optionalPackage.getRequiredExtensions(),
dependencies, unsatisfied );
+
+ scanDependencies( optionalPackage.getRequiredExtensions(),
+ available,
+ dependencies,
+ unsatisfied );
}
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>