List<ComponentRequirement> toRemove = new ArrayList<ComponentRequirement>(); for ( ComponentRequirement sourceReq : override.getRequirements() ) for ( ComponentRequirement targetReq : target.getRequirements() )
private void processMapOrientedComponent(ComponentDescriptor<?> descriptor, MapOrientedComponent mapOrientedComponent, ClassRealm realm) throws ComponentConfigurationException, ComponentLookupException { MutablePlexusContainer container = getContainer(); for (ComponentRequirement requirement : descriptor.getRequirements()) { String role = requirement.getRole(); String hint = requirement.getRoleHint();
/** * Add a project requirement to this component. * * @param requirement the requirement to add */ public void addRequirement( final ComponentRequirement requirement ) { getRequirements().add( requirement ); }
/** * Adds a list of requirements to this component. * * @param requirements the requirements to add */ public void addRequirements( List requirements ) { getRequirements().addAll( requirements ); }
public void addComponentDescriptor( ComponentDescriptor<?> componentDescriptor ) throws CycleDetectedInComponentGraphException { String key = getDAGKey( componentDescriptor.getRole(), componentDescriptor.getRoleHint() ); List<ComponentRequirement> requirements = componentDescriptor.getRequirements(); for ( ComponentRequirement requirement : requirements ) { try { if ( requirement instanceof ComponentRequirementList ) { for ( String hint : ( (ComponentRequirementList) requirement ).getRoleHints() ) { dag.addEdge( key, getDAGKey( requirement.getRole(), hint ) ); } } else { dag.addEdge( key, getDAGKey( requirement.getRole(), requirement.getRoleHint() ) ); } } catch ( CycleDetectedException e ) { throw new CycleDetectedInComponentGraphException( "Cyclic requirement detected", e ); } } }
for (ComponentRequirement requirement : descriptor.getRequirements() ) { String name = requirement.getFieldName(); RequirementRecipe requirementRecipe = new RequirementRecipe(descriptor, requirement, getContainer(), name == null);
public void addComponentRequirement( ComponentRequirement rd, Object rv ) throws ComponentConfigurationException { if ( !descriptor.getRequirements().contains( rd ) ) { throw new ComponentConfigurationException( "Requirement: " + rd.getHumanReadableKey() + " is not listed in this component's descriptor." ); } references.put( rd.getRole() + "_" + rd.getRoleHint(), rv ); }
/** * Merges override and target, where target is updated with override. */ public static void merge( ComponentDescriptor override, ComponentDescriptor target ) { if ( override.getImplementation() != null ) { target.setImplementation( override.getImplementation() ); } mergeRequirements( override.getRequirements(), target.getRequirements() ); mergeConfiguration( override, target ); // TODO: other getters/setters. }
public void assembleComponent( Object component, ComponentDescriptor componentDescriptor, PlexusContainer container, ClassRealm lookupRealm ) throws CompositionException { // ---------------------------------------------------------------------- // If a ComponentComposer wishes to check any criteria before attempting // composition it may do so here. // ---------------------------------------------------------------------- verifyComponentSuitability( component ); Map compositionContext = createCompositionContext( component, componentDescriptor ); // ---------------------------------------------------------------------- // If the ComponentDescriptor is null then we are attempting to autowire // this component which means that Plexus has just been handled a // POJO to wire up. // ---------------------------------------------------------------------- List requirements = componentDescriptor.getRequirements(); for ( Iterator i = requirements.iterator(); i.hasNext(); ) { ComponentRequirement requirement = (ComponentRequirement) i.next(); assignRequirement( component, componentDescriptor, requirement, container, compositionContext, lookupRealm ); } }
public ComponentDescriptorBeanModule( final ClassSpace space, final List<ComponentDescriptor<?>> descriptors ) { this.space = space; for ( int i = 0, size = descriptors.size(); i < size; i++ ) { final ComponentDescriptor<?> cd = descriptors.get( i ); final Component component = newComponent( cd ); final String factory = cd.getComponentFactory(); if ( null == factory || "java".equals( factory ) ) { try { componentMap.put( component, new LoadedClass<Object>( cd.getImplementationClass() ) ); } catch ( final TypeNotPresentException e ) { componentMap.put( component, space.deferLoadClass( cd.getImplementation() ) ); } } else { componentMap.put( component, new DeferredFactoryClass( cd, factory ) ); } final List<ComponentRequirement> requirements = cd.getRequirements(); if ( !requirements.isEmpty() ) { metadataMap.put( cd.getImplementation(), new ComponentMetadata( space, requirements ) ); } } }
public void addComponentDescriptor( ComponentDescriptor componentDescriptor ) throws CompositionException { String key = getDAGKey( componentDescriptor.getRole(), componentDescriptor.getRoleHint() ); List requirements = componentDescriptor.getRequirements(); for ( Iterator iterator = requirements.iterator(); iterator.hasNext(); ) { ComponentRequirement requirement = (ComponentRequirement) iterator.next(); try { if ( requirement instanceof ComponentRequirementList ) { Iterator iter = ( (ComponentRequirementList) requirement ).getRoleHints().iterator(); while (iter.hasNext()) { String hint = (String) iter.next(); dag.addEdge( key, getDAGKey( requirement.getRole(), hint ) ); } } else { dag.addEdge( key, getDAGKey( requirement.getRole(), requirement.getRoleHint() ) ); } } catch ( CycleDetectedException e ) { throw new CompositionException( "Cyclic requirement detected", e ); } } }
private void processMapOrientedComponent(ComponentDescriptor descriptor, MapOrientedComponent mapOrientedComponent, ClassRealm realm) throws ComponentConfigurationException, ComponentLookupException { MutablePlexusContainer container = getContainer(); for (ComponentRequirement requirement : cast(descriptor.getRequirements(), ComponentRequirement.class)) { String role = requirement.getRole(); String hint = requirement.getRoleHint();
private void writeComponents( XMLWriter w, List componentDescriptors ) throws ComponentDescriptorCreatorException, PlexusConfigurationException { w.startElement( "components" ); for ( Iterator i = componentDescriptors.iterator(); i.hasNext(); ) { w.startElement( "component" ); ComponentDescriptor cd = (ComponentDescriptor) i.next(); element( w, "role", cd.getRole() ); element( w, "role-hint", cd.getRoleHint() ); element( w, "implementation", cd.getImplementation() ); element( w, "instantiation-strategy", cd.getInstantiationStrategy() ); element( w, "lifecycle-handler", cd.getLifecycleHandler() ); writeRequirements( w, cd.getRequirements() ); writeConfiguration( w, cd.getConfiguration() ); w.endElement(); } w.endElement(); }
@SuppressWarnings("unchecked") private <T> ComponentDescriptor<T> createXWikiComponentDescriptor( org.codehaus.plexus.component.repository.ComponentDescriptor pcd) { DefaultComponentDescriptor<T> descriptor = null; if (pcd != null) { descriptor = new DefaultComponentDescriptor<T>(); descriptor.setImplementation((Class< ? extends T>) loadClass(pcd.getImplementation())); descriptor.setRoleHint(pcd.getRoleHint()); descriptor.setRole((Class<T>) loadClass(pcd.getRole())); if ("per-lookup".equals(pcd.getInstantiationStrategy())) { descriptor.setInstantiationStrategy(ComponentInstantiationStrategy.PER_LOOKUP); } else { descriptor.setInstantiationStrategy(ComponentInstantiationStrategy.SINGLETON); } // Copy dependencies for (ComponentRequirement requirement : (List<ComponentRequirement>) pcd.getRequirements()) { DefaultComponentDependency dependency = new DefaultComponentDependency(); dependency.setRole(loadClass(requirement.getRole())); dependency.setRoleHint(requirement.getRoleHint()); dependency.setMappingType(loadClass(requirement.getFieldMappingType())); dependency.setName(requirement.getFieldName()); // TODO: Handle specific hints when we move to a more recent Plexus version. // See createPlexusComponentDescriptor descriptor.addComponentDependency(dependency); } } return descriptor; }
writeRequirements( w, cd.getRequirements() );
for (ComponentRequirement requirement : cast(descriptor.getRequirements(), ComponentRequirement.class)) { String name = requirement.getFieldName(); RequirementRecipe requirementRecipe = new RequirementRecipe(descriptor, requirement, getContainer(), name == null);