javadoc
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ClassRealmUtils.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ClassRealmUtils.java
index 5747a46..13e846d 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ClassRealmUtils.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ClassRealmUtils.java
@@ -19,6 +19,9 @@
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.eclipse.sisu.inject.Weak;
+/**
+ * Utility methods for dealing with Plexus {@link ClassRealm}s.
+ */
public final class ClassRealmUtils
{
// ----------------------------------------------------------------------
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ComponentDescriptorBeanModule.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ComponentDescriptorBeanModule.java
index 65ec5a2..7486006 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ComponentDescriptorBeanModule.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/ComponentDescriptorBeanModule.java
@@ -36,15 +36,26 @@
import com.google.inject.Injector;
import com.google.inject.ProvisionException;
+/**
+ * {@link PlexusBeanModule} backed by a sequence of {@link ComponentDescriptor}s.
+ */
public final class ComponentDescriptorBeanModule
implements PlexusBeanModule
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private final ClassSpace space;
private final Map<Component, DeferredClass<?>> componentMap = new HashMap<Component, DeferredClass<?>>();
private final Map<String, PlexusBeanMetadata> metadataMap = new HashMap<String, PlexusBeanMetadata>();
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
public ComponentDescriptorBeanModule( final ClassSpace space, final List<ComponentDescriptor<?>> descriptors )
{
this.space = space;
@@ -77,6 +88,10 @@
}
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public PlexusBeanSource configure( final Binder binder )
{
final PlexusTypeBinder plexusTypeBinder = new PlexusTypeBinder( binder );
@@ -87,6 +102,10 @@
return new PlexusDescriptorBeanSource( metadataMap );
}
+ // ----------------------------------------------------------------------
+ // Implementation methods
+ // ----------------------------------------------------------------------
+
static Component newComponent( final ComponentDescriptor<?> cd )
{
return new ComponentImpl( cd.getRoleClass(), cd.getRoleHint(), cd.getInstantiationStrategy(),
@@ -99,9 +118,20 @@
Collections.singletonList( cr.getRoleHint() ) );
}
+ // ----------------------------------------------------------------------
+ // Implementation types
+ // ----------------------------------------------------------------------
+
+ /**
+ * {@link DeferredClass} backed by a {@link ComponentDescriptor} and {@link ComponentFactory} hint.
+ */
private static final class DeferredFactoryClass
implements DeferredClass<Object>, DeferredProvider<Object>
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
@Inject
private PlexusContainer container;
@@ -112,12 +142,20 @@
private final String hint;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
DeferredFactoryClass( final ComponentDescriptor<?> cd, final String hint )
{
this.cd = cd;
this.hint = hint;
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
@SuppressWarnings( { "unchecked", "rawtypes" } )
public Class load()
throws TypeNotPresentException
@@ -168,11 +206,22 @@
}
}
+ /**
+ * {@link PlexusBeanMetadata} backed by list of {@link ComponentRequirement}s.
+ */
private static final class ComponentMetadata
implements PlexusBeanMetadata
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private Map<String, Requirement> requirementMap = new HashMap<String, Requirement>();
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
ComponentMetadata( final ClassSpace space, final List<ComponentRequirement> requirements )
{
for ( int i = 0, size = requirements.size(); i < size; i++ )
@@ -182,6 +231,10 @@
}
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public boolean isEmpty()
{
return requirementMap.isEmpty();
@@ -203,16 +256,31 @@
}
}
+ /**
+ * {@link PlexusBeanSource} backed by simple map of {@link PlexusBeanMetadata}.
+ */
private static final class PlexusDescriptorBeanSource
implements PlexusBeanSource
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private Map<String, PlexusBeanMetadata> metadataMap;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
PlexusDescriptorBeanSource( final Map<String, PlexusBeanMetadata> metadataMap )
{
this.metadataMap = metadataMap;
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public PlexusBeanMetadata getBeanMetadata( final Class<?> implementation )
{
if ( null == metadataMap )
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/CompositeBeanHelper.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/CompositeBeanHelper.java
index b3bb528..ce304c8 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/CompositeBeanHelper.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/CompositeBeanHelper.java
@@ -34,10 +34,21 @@
import com.google.inject.TypeLiteral;
+/**
+ * Helper class that implements low-level Plexus configuration of composite beans.
+ */
public final class CompositeBeanHelper
{
+ // ----------------------------------------------------------------------
+ // Constants
+ // ----------------------------------------------------------------------
+
private static final Type[] NO_TYPES = {};
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private final ConverterLookup lookup;
private final ClassLoader loader;
@@ -46,6 +57,10 @@
private final ConfigurationListener listener;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
public CompositeBeanHelper( final ConverterLookup lookup, final ClassLoader loader,
final ExpressionEvaluator evaluator, final ConfigurationListener listener )
{
@@ -55,6 +70,10 @@
this.listener = listener;
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public void setDefault( final Object bean, final Object defaultValue, final PlexusConfiguration configuration )
throws ComponentConfigurationException
{
@@ -219,6 +238,10 @@
}
}
+ // ----------------------------------------------------------------------
+ // Implementation methods
+ // ----------------------------------------------------------------------
+
private Object convertProperty( final Class<?> beanType, final Class<?> rawPropertyType,
final Type genericPropertyType, final PlexusConfiguration configuration )
throws ComponentConfigurationException
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/DefaultPlexusBeans.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/DefaultPlexusBeans.java
index 6262f7a..b1022ef 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/DefaultPlexusBeans.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/DefaultPlexusBeans.java
@@ -16,6 +16,9 @@
import com.google.inject.name.Named;
+/**
+ * Sequence of {@link PlexusBean}s backed by {@link BeanEntry}s.
+ */
final class DefaultPlexusBeans<T>
implements Iterable<PlexusBean<T>>
{
@@ -47,11 +50,22 @@
// Implementation types
// ----------------------------------------------------------------------
+ /**
+ * {@link PlexusBean} iterator backed by {@link BeanEntry}s.
+ */
final class Itr
implements Iterator<PlexusBean<T>>
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private final Iterator<BeanEntry<Named, T>> itr = beans.iterator();
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public boolean hasNext()
{
return itr.hasNext();
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/HintedPlexusBeans.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/HintedPlexusBeans.java
index 72d51bf..17cfa6f 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/HintedPlexusBeans.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/HintedPlexusBeans.java
@@ -19,6 +19,9 @@
import com.google.inject.TypeLiteral;
import com.google.inject.name.Named;
+/**
+ * Hint-driven sequence of {@link PlexusBean}s that uses {@link MissingPlexusBean}s to indicate missing hints.
+ */
final class HintedPlexusBeans<T>
implements Iterable<PlexusBean<T>>
{
@@ -51,8 +54,10 @@
public Iterator<PlexusBean<T>> iterator()
{
+ // assume all hints are missing to begin with
final List<PlexusBean<T>> plexusBeans = new ArrayList<PlexusBean<T>>( missingPlexusBeans );
+ // scan available beans and populate list according to hint
final int size = plexusBeans.size();
final Iterator<BeanEntry<Named, T>> itr = beans.iterator();
for ( int numFound = 0; numFound < size && itr.hasNext(); )
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusAnnotatedBeanModule.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusAnnotatedBeanModule.java
index 4277617..266dc71 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusAnnotatedBeanModule.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusAnnotatedBeanModule.java
@@ -99,16 +99,31 @@
// Implementation types
// ----------------------------------------------------------------------
+ /**
+ * {@link PlexusBeanSource} backed by runtime annotation metadata.
+ */
private static final class PlexusAnnotatedBeanSource
implements PlexusBeanSource
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private final PlexusBeanMetadata metadata;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
PlexusAnnotatedBeanSource( final Map<?, ?> variables )
{
metadata = new PlexusAnnotatedMetadata( variables );
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public PlexusBeanMetadata getBeanMetadata( final Class<?> implementation )
{
return implementation.isAnnotationPresent( Component.class ) ? metadata : null;
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusBeanModule.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusBeanModule.java
index 360547e..c24bbab 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusBeanModule.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusBeanModule.java
@@ -11,8 +11,17 @@
package org.eclipse.sisu.plexus;
import com.google.inject.Binder;
+import com.google.inject.Module;
+/**
+ * {@link Module}-like interface for contributing Plexus bindings with additional metadata.
+ */
public interface PlexusBeanModule
{
+ /**
+ * Contributes bindings and returns any associated {@link PlexusBeanSource} metadata.
+ *
+ * @see Module#configure(Binder)
+ */
PlexusBeanSource configure( Binder binder );
}
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusConfigurations.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusConfigurations.java
index 1ff41d2..9cca04e 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusConfigurations.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusConfigurations.java
@@ -55,7 +55,7 @@
}
// ----------------------------------------------------------------------
- // Implementation classes
+ // Implementation types
// ----------------------------------------------------------------------
/**
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusDateTypeConverter.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusDateTypeConverter.java
index 72bbe7a..2884034 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusDateTypeConverter.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusDateTypeConverter.java
@@ -47,7 +47,7 @@
}
// ----------------------------------------------------------------------
- // Guice binding
+ // Public methods
// ----------------------------------------------------------------------
public void configure( final Binder binder )
@@ -56,10 +56,6 @@
binder.convertToTypes( this, this );
}
- // ----------------------------------------------------------------------
- // Public methods
- // ----------------------------------------------------------------------
-
public boolean matches( final TypeLiteral<?> type )
{
return Date.class == type.getRawType();
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusLifecycleManager.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusLifecycleManager.java
index c96e8bc..f0dc25a 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusLifecycleManager.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusLifecycleManager.java
@@ -202,7 +202,7 @@
}
// ----------------------------------------------------------------------
- // Shared implementation methods
+ // Locally-shared methods
// ----------------------------------------------------------------------
Logger getPlexusLogger( final Object bean )
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusRequirements.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusRequirements.java
index 9fe0997..ef5a001 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusRequirements.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusRequirements.java
@@ -101,7 +101,7 @@
}
// ----------------------------------------------------------------------
- // Implementation classes
+ // Implementation types
// ----------------------------------------------------------------------
/**
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusSpaceModule.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusSpaceModule.java
index 8917889..7ddaae9 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusSpaceModule.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusSpaceModule.java
@@ -26,16 +26,31 @@
import com.google.inject.Binder;
import com.google.inject.Module;
+/**
+ * {@link Module} that provides Plexus semantics without the full-blown Plexus container.
+ */
public final class PlexusSpaceModule
implements Module
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private final ClassSpace space;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
public PlexusSpaceModule( final ClassSpace space )
{
this.space = space;
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public void configure( final Binder binder )
{
final Context context = new ParameterizedContext();
@@ -58,9 +73,20 @@
binder.install( new PlexusBindingModule( manager, xmlModule ) );
}
+ // ----------------------------------------------------------------------
+ // Implementation types
+ // ----------------------------------------------------------------------
+
+ /**
+ * {@link Context} backed by Sisu {@link Parameters}.
+ */
static final class ParameterizedContext
extends DefaultContext
{
+ // ----------------------------------------------------------------------
+ // Implementation methods
+ // ----------------------------------------------------------------------
+
@Inject
protected void setParameters( @Parameters final Map<?, ?> parameters )
{
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeBinder.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeBinder.java
index 6b1f5ea..397fc92 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeBinder.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeBinder.java
@@ -21,6 +21,9 @@
import com.google.inject.Scopes;
import com.google.inject.binder.ScopedBindingBuilder;
+/**
+ * {@link PlexusTypeListener} that binds Plexus {@link Component}s.
+ */
public final class PlexusTypeBinder
implements PlexusTypeListener
{
@@ -110,19 +113,34 @@
// Implementation types
// ----------------------------------------------------------------------
+ /**
+ * {@link DescribedBinding} that captures Plexus descriptions.
+ */
private static final class PlexusDescribedBinding
implements DescribedBinding
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private final Object source;
private final String description;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
PlexusDescribedBinding( final Object source, final String description )
{
this.source = source;
this.description = description;
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public String getDescription()
{
return description;
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeVisitor.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeVisitor.java
index 66f84cb..6078146 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeVisitor.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusTypeVisitor.java
@@ -122,12 +122,19 @@
}
// ----------------------------------------------------------------------
- // Component annotation scanner
+ // Implementation types
// ----------------------------------------------------------------------
+ /**
+ * {@link AnnotationVisitor} that records details of @{@link Component} annotations.
+ */
static final class ComponentAnnotationVisitor
implements AnnotationVisitor
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private String role;
private String hint;
@@ -136,6 +143,10 @@
private String description;
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public void reset()
{
role = null;
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlBeanModule.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlBeanModule.java
index d928c01..9e7379a 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlBeanModule.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlBeanModule.java
@@ -97,16 +97,31 @@
// Implementation types
// ----------------------------------------------------------------------
+ /**
+ * {@link PlexusBeanSource} backed by consumable XML metadata.
+ */
private static final class PlexusXmlBeanSource
implements PlexusBeanSource
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private Map<String, PlexusBeanMetadata> metadataMap;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
PlexusXmlBeanSource( final Map<String, PlexusBeanMetadata> metadataMap )
{
this.metadataMap = metadataMap;
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public PlexusBeanMetadata getBeanMetadata( final Class<?> implementation )
{
if ( null == metadataMap )
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlScanner.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlScanner.java
index fe7e4cb..dbe28f9 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlScanner.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PlexusXmlScanner.java
@@ -34,6 +34,9 @@
import org.eclipse.sisu.space.ClassSpace;
import org.eclipse.sisu.space.Streams;
+/**
+ * Helper class that can scan XML resources for Plexus metadata.
+ */
final class PlexusXmlScanner
{
// ----------------------------------------------------------------------
@@ -65,7 +68,7 @@
}
// ----------------------------------------------------------------------
- // Local methods
+ // Locally-shared methods
// ----------------------------------------------------------------------
Map<Component, DeferredClass<?>> scan( final ClassSpace space, final boolean root )
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PseudoPlexusContainer.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PseudoPlexusContainer.java
index a6c3a71..ad45b80 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PseudoPlexusContainer.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/PseudoPlexusContainer.java
@@ -28,6 +28,9 @@
import com.google.inject.TypeLiteral;
+/**
+ * Delegating {@link PlexusContainer} wrapper that doesn't require an actual container instance.
+ */
@Singleton
@SuppressWarnings( { "unchecked", "rawtypes" } )
final class PseudoPlexusContainer
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/RealmFilter.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/RealmFilter.java
index d30eadd..e853900 100644
--- a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/RealmFilter.java
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/RealmFilter.java
@@ -14,10 +14,14 @@
import java.util.NoSuchElementException;
import java.util.Set;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.eclipse.sisu.BeanEntry;
import com.google.inject.name.Named;
+/**
+ * Sequence of {@link BeanEntry}s filtered according to whether they are visible from the current {@link ClassRealm}.
+ */
final class RealmFilter<T>
implements Iterable<BeanEntry<Named, T>>
{
@@ -54,20 +58,35 @@
// Implementation types
// ----------------------------------------------------------------------
+ /**
+ * {@link BeanEntry} iterator that only returns entries visible from the given set of named realms.
+ */
final class FilteredItr
implements Iterator<BeanEntry<Named, T>>
{
+ // ----------------------------------------------------------------------
+ // Implementation fields
+ // ----------------------------------------------------------------------
+
private final Iterator<BeanEntry<Named, T>> itr = beans.iterator();
private final Set<String> realmNames;
private BeanEntry<Named, T> nextBean;
+ // ----------------------------------------------------------------------
+ // Constructors
+ // ----------------------------------------------------------------------
+
public FilteredItr( final Set<String> realmNames )
{
this.realmNames = realmNames;
}
+ // ----------------------------------------------------------------------
+ // Public methods
+ // ----------------------------------------------------------------------
+
public boolean hasNext()
{
if ( null != nextBean )
diff --git a/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/package-info.java b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/package-info.java
new file mode 100644
index 0000000..c2bad33
--- /dev/null
+++ b/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/package-info.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2013 Sonatype, Inc.
+ * 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:
+ * Stuart McCulloch (Sonatype, Inc.) - initial API and implementation
+ *******************************************************************************/
+/**
+ * Implements Plexus semantics on top of Google-Guice.
+ */
+package org.eclipse.sisu.plexus;
+