1
2
3
4
5
6
7
8
9
10 package org.mule.model.resolvers;
11
12 import org.mule.api.MuleEventContext;
13 import org.mule.api.model.EntryPointResolver;
14 import org.mule.api.model.EntryPointResolverSet;
15 import org.mule.api.model.InvocationResult;
16 import org.mule.util.CollectionUtils;
17
18 import java.util.HashSet;
19 import java.util.LinkedHashSet;
20 import java.util.Set;
21
22
23
24
25
26
27
28
29 public class DefaultEntryPointResolverSet implements EntryPointResolverSet
30 {
31 private final Set<EntryPointResolver> entryPointResolvers = new LinkedHashSet<EntryPointResolver>(4);
32
33 public Object invoke(Object component, MuleEventContext context) throws Exception
34 {
35 Set<String> exceptions = new HashSet<String>();
36
37 for (EntryPointResolver resolver : entryPointResolvers)
38 {
39 InvocationResult result = resolver.invoke(component, context);
40 if (result.getState() == InvocationResult.State.SUCCESSFUL)
41 {
42 return result.getResult();
43 }
44 else
45 {
46 if (result.hasError())
47 {
48 exceptions.add(result.getErrorMessage());
49 }
50 }
51 }
52 throw new EntryPointNotFoundException(CollectionUtils.toString(exceptions, true));
53 }
54
55
56
57
58
59 public Set<EntryPointResolver> getEntryPointResolvers()
60 {
61 return entryPointResolvers;
62 }
63
64 public void setEntryPointResolvers(Set<EntryPointResolver> entryPointResolvers)
65 {
66 synchronized (this.entryPointResolvers)
67 {
68 this.entryPointResolvers.clear();
69 this.entryPointResolvers.addAll(entryPointResolvers);
70 }
71 }
72
73 public void addEntryPointResolver(EntryPointResolver resolver)
74 {
75 synchronized (entryPointResolvers)
76 {
77 this.entryPointResolvers.add(resolver);
78 }
79 }
80
81 public boolean removeEntryPointResolver(EntryPointResolver resolver)
82 {
83 synchronized (entryPointResolvers)
84 {
85 return this.entryPointResolvers.remove(resolver);
86 }
87 }
88 }