/** * Returns a human-friendly key, suitable for display. * @return a human-friendly key */ public String getHumanReadableKey() { StringBuilder key = new StringBuilder(); key.append( "role: '").append( getRole() ).append( "'" ); if ( getRoleHint() != null ) { key.append( ", role-hint: '" ).append( getRoleHint() ).append( "'. " ); } if ( getFieldName() != null ) { key.append( ", field name: '" ).append( getFieldName() ).append( "' " ); } return key.toString(); }
public String toString() { return "ComponentRequirement{" + "role='" + getRole() + "'" + ", " + "roleHint='" + getRoleHint() + "', " + "fieldName='" + getFieldName() + "'" + "}"; }
public boolean canCreate(Type expectedType) { if (!autoMatch) { return true; } Class<?> propertyType = toClass(expectedType); // Never auto match array, map or collection if (propertyType.isArray() || Map.class.isAssignableFrom(propertyType) || Collection.class.isAssignableFrom(propertyType) || requirement instanceof ComponentRequirementList) { return false; } // if the type to be created is an instance of the expected type, return true try { ComponentRegistry componentRegistry = container.getComponentRegistry(); return componentRegistry.getComponentDescriptor(propertyType, requirement.getRole(), requirement.getRoleHint()) != null; } catch (Exception e) { } return false; }
String hint = requirement.getRoleHint(); String mappingType = requirement.getFieldMappingType();
String roleHint = requirement.getRoleHint(); assignment = container.lookup(propertyType, role, roleHint);
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 ); } } }
/** * Returns a human-friendly key, suitable for display. * @return a human-friendly key */ public String getHumanReadableKey() { StringBuilder key = new StringBuilder(); key.append( "role: '").append( getRole() ).append( "'" ); if ( getRoleHint() != null ) { key.append( ", role-hint: '" ).append( getRoleHint() ).append( "'. " ); } if ( getFieldName() != null ) { key.append( ", field name: '" ).append( getFieldName() ).append( "' " ); } return key.toString(); }
/** * Returns a human-friendly key, suitable for display. * @return a human-friendly key */ public String getHumanReadableKey() { StringBuffer key = new StringBuffer(); key.append( "role: '").append( getRole() ).append( "'" ); if ( getRoleHint() != null ) { key.append( ", role-hint: '" ).append( getRoleHint() ).append( "'. " ); } if ( getFieldName() != null ) { key.append( ", field name: '" ).append( getFieldName() ).append( "' " ); } return key.toString(); }
public String toString() { return "ComponentRequirement{" + "role='" + getRole() + "'" + ", " + "roleHint='" + getRoleHint() + "', " + "fieldName='" + getFieldName() + "'" + "}"; }
public String toString() { return "ComponentRequirement{" + "role='" + getRole() + "'" + ", " + "roleHint='" + getRoleHint() + "', " + "fieldName='" + getFieldName() + "'" + "}"; }
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 ); }
static Requirement newRequirement( final ClassSpace space, final ComponentRequirement cr ) { return new RequirementImpl( space.deferLoadClass( cr.getRole() ), cr.isOptional(), Collections.singletonList( cr.getRoleHint() ) ); }
public boolean canCreate(Type expectedType) { if (!autoMatch) { return true; } ClassRealm realm = (ClassRealm) Thread.currentThread().getContextClassLoader(); Class propertyType = toClass(expectedType); // Never auto match array, map or collection if (propertyType.isArray() || Map.class.isAssignableFrom(propertyType) || Collection.class.isAssignableFrom(propertyType) || requirement instanceof ComponentRequirementList) { return false; } // if the type to be created is an instance of the expceted type, return true try { ComponentDescriptor descriptor = ((MutablePlexusContainer) container).getComponentRepository().getComponentDescriptor(requirement.getRole(), requirement.getRoleHint(), realm); String typeName = descriptor.getImplementation(); Class actualClass = realm.loadClass(typeName); if (RecipeHelper.isAssignable(expectedType, actualClass)) { return true; } } catch (Exception e) { } return false; }
private void writeRequirements( XMLWriter w, List requirements ) { if ( requirements == null || requirements.size() == 0 ) { return; } w.startElement( "requirements" ); for ( Iterator j = requirements.iterator(); j.hasNext(); ) { ComponentRequirement cr = (ComponentRequirement) j.next(); w.startElement( "requirement" ); element( w, "role", cr.getRole() ); element( w, "role-hint", cr.getRoleHint() ); element( w, "field-name", cr.getFieldName() ); w.endElement(); } w.endElement(); }
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 static MojoRequirement toMojoRequirement(ComponentRequirement requirement) { MojoRequirement result = new MojoRequirement(); result.setFieldName(requirement.getFieldName()); result.setRole(requirement.getRole()); result.setRoleHint(requirement.getRoleHint()); return result; }
private static MojoRequirement toMojoRequirement(ComponentRequirement requirement) { MojoRequirement result = new MojoRequirement(); result.setFieldName(requirement.getFieldName()); result.setRole(requirement.getRole()); result.setRoleHint(requirement.getRoleHint()); return result; }
element( w, "role-hint", "".equals( cr.getRoleHint() ) ? null : cr.getRoleHint() );
String hint = requirement.getRoleHint(); String mappingType = requirement.getFieldMappingType();
@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; }