String instantiationStrategy = descriptor.getInstantiationStrategy(); if ( instantiationStrategy == null )
protected void applyDefaults( ComponentDescriptor<?> descriptor, Map<String, ComponentDescriptor<?>> defaultsByRole ) { assert descriptor != null; assert defaultsByRole != null; if ( defaultsByRole.containsKey( descriptor.getRole() ) ) { ComponentDescriptor<?> defaults = defaultsByRole.get( descriptor.getRole() ); if ( descriptor.getInstantiationStrategy() == null ) { descriptor.setInstantiationStrategy( defaults.getInstantiationStrategy() ); } } } }
static Component newComponent( final ComponentDescriptor<?> cd ) { return new ComponentImpl( cd.getRoleClass(), cd.getRoleHint(), cd.getInstantiationStrategy(), cd.getDescription() ); }
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(); }
public ComponentManager createComponentManager( ComponentDescriptor descriptor, MutablePlexusContainer container, String role, String roleHint ) throws UndefinedComponentManagerException, UndefinedLifecycleHandlerException { String componentManagerId = descriptor.getInstantiationStrategy(); ComponentManager componentManager; if ( componentManagerId == null ) { componentManagerId = defaultComponentManagerId; } componentManager = copyComponentManager( componentManagerId ); componentManager.setup( container, findLifecycleHandler( descriptor ), descriptor ); componentManager.initialize(); if ( StringUtils.equals( role, descriptor.getRole() ) && StringUtils.equals( roleHint, descriptor.getRoleHint() ) ) { activeComponentManagers.put( descriptor.getRealmId() + "/" + descriptor.getRole() + "/" + descriptor.getRoleHint(), componentManager ); } else { activeComponentManagers.put( descriptor.getRealmId() + "/" + role + "/" + roleHint, componentManager ); } return componentManager; }
@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; }
element( w, "instantiation-strategy", cd.getInstantiationStrategy() );