1 package org.codehaus.plexus.component.factory;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import org.codehaus.plexus.PlexusConstants;
20 import org.codehaus.plexus.PlexusContainer;
21 import org.codehaus.plexus.component.factory.java.JavaComponentFactory;
22 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
23 import org.codehaus.plexus.context.Context;
24 import org.codehaus.plexus.context.ContextException;
25 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
26
27
28
29
30 public class DefaultComponentFactoryManager implements ComponentFactoryManager, Contextualizable {
31 private ComponentFactory defaultComponentFactory = new JavaComponentFactory();
32
33 private PlexusContainer container;
34
35 public ComponentFactory findComponentFactory(String id) throws UndefinedComponentFactoryException {
36 if (id == null || id.equals("java")) {
37 return defaultComponentFactory;
38 }
39
40 try {
41 return container.lookup(ComponentFactory.class, id);
42 } catch (ComponentLookupException e) {
43 throw new UndefinedComponentFactoryException("Specified component factory cannot be found: " + id);
44 }
45 }
46
47 public void contextualize(Context context) throws ContextException {
48 container = (PlexusContainer) context.get(PlexusConstants.PLEXUS_KEY);
49 }
50 }