Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
InvocationResult |
|
| 1.3333333333333333;1.333 |
1 | /* | |
2 | * $Id: InvocationResult.java 10489 2008-01-23 17:53:38Z dfeist $ | |
3 | * -------------------------------------------------------------------------------------- | |
4 | * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com | |
5 | * | |
6 | * The software in this package is published under the terms of the CPAL v1.0 | |
7 | * license, a copy of which has been included with this distribution in the | |
8 | * LICENSE.txt file. | |
9 | */ | |
10 | package org.mule.api.model; | |
11 | ||
12 | import org.mule.config.i18n.CoreMessages; | |
13 | ||
14 | import java.lang.reflect.Method; | |
15 | ||
16 | /** TODO */ | |
17 | public class InvocationResult | |
18 | { | |
19 | /** the resover performing the invocation knows that it cannot attempt to make the invocation */ | |
20 | public static final int STATE_INVOKE_NOT_SUPPORTED = 0; | |
21 | ||
22 | /** the invocation was successful */ | |
23 | public static final int STATE_INVOKED_SUCESSFUL = 1; | |
24 | ||
25 | /** The invocation was attempted but failed */ | |
26 | public static final int STATE_INVOKED_FAILED = 2; | |
27 | ||
28 | private String errorMessage; | |
29 | ||
30 | /** the name of the method called for this invocation */ | |
31 | private String methodCalled; | |
32 | ||
33 | private Object result; | |
34 | ||
35 | private int state; | |
36 | ||
37 | /** | |
38 | * Will construct an InvocationResult with a given state. The state must be either | |
39 | * {@link #STATE_INVOKE_NOT_SUPPORTED} if the resover performing the invocation knows that it cannot | |
40 | * attempt to make the invocation | |
41 | * {@link #STATE_INVOKED_FAILED} If an invocation attempt is made but fails | |
42 | * {@link #STATE_INVOKED_SUCESSFUL} If the invocation was successful | |
43 | * | |
44 | * @param state the state of the result | |
45 | */ | |
46 | public InvocationResult(int state) | |
47 | 86 | { |
48 | 86 | if (state < 0 || state > 2) |
49 | { | |
50 | 0 | throw new IllegalArgumentException("state"); |
51 | } | |
52 | 86 | this.state = state; |
53 | 86 | } |
54 | ||
55 | /** | |
56 | * Creates a result with the result payload set. The state of this result will be {@link #STATE_INVOKED_SUCESSFUL} | |
57 | * since only in this state will a result be set. | |
58 | * | |
59 | * @param result the result of a successful invocation | |
60 | */ | |
61 | public InvocationResult(Object result, Method method) | |
62 | 52 | { |
63 | ||
64 | 52 | this.result = result; |
65 | 52 | this.state = STATE_INVOKED_SUCESSFUL; |
66 | 52 | this.methodCalled = method.getName(); |
67 | 52 | } |
68 | ||
69 | /** | |
70 | * Returns the name of the method invoked, this property is only set if the state of the invocation is | |
71 | * {@link #STATE_INVOKED_SUCESSFUL} | |
72 | * | |
73 | * @return the name of the method invoked | |
74 | */ | |
75 | public String getMethodCalled() | |
76 | { | |
77 | 8 | return methodCalled; |
78 | } | |
79 | ||
80 | /** | |
81 | * The result of this invocation | |
82 | * | |
83 | * @return an object or null if the result did not yeild a result or because the state of this invocation result | |
84 | * is either {@link #STATE_INVOKE_NOT_SUPPORTED} or {@link #STATE_INVOKED_FAILED}. | |
85 | */ | |
86 | public Object getResult() | |
87 | { | |
88 | 30 | return result; |
89 | } | |
90 | ||
91 | /** | |
92 | * Returns the state of this invocation. Possible values are: | |
93 | * {@link #STATE_INVOKE_NOT_SUPPORTED} if the resover performing the invocation knows that it cannot | |
94 | * attempt to make the invocation | |
95 | * {@link #STATE_INVOKED_FAILED} If an invocation attempt is made but fails | |
96 | * {@link #STATE_INVOKED_SUCESSFUL} If the invocation was successful | |
97 | * | |
98 | * @return | |
99 | */ | |
100 | public int getState() | |
101 | { | |
102 | 138 | return state; |
103 | } | |
104 | ||
105 | /** | |
106 | * An optional error message can be set if the invocation state is not {@link #STATE_INVOKED_SUCESSFUL} | |
107 | * | |
108 | * @param message | |
109 | */ | |
110 | public void setErrorMessage(String message) | |
111 | { | |
112 | 86 | if (state == STATE_INVOKED_SUCESSFUL) |
113 | { | |
114 | 0 | throw new IllegalStateException(CoreMessages.invocationSuccessfulCantSetError().toString()); |
115 | } | |
116 | 86 | errorMessage = message; |
117 | 86 | } |
118 | ||
119 | /** | |
120 | * Returns true if an error message has been set on this result, false otherwise | |
121 | * | |
122 | * @return true if an error message has been set on this result, false otherwise | |
123 | */ | |
124 | public boolean hasError() | |
125 | { | |
126 | 62 | return errorMessage != null; |
127 | } | |
128 | ||
129 | /** | |
130 | * Returns the error message set on this result or null if none has been set | |
131 | * | |
132 | * @return the error message set on this result or null if none has been set | |
133 | */ | |
134 | public String getErrorMessage() | |
135 | { | |
136 | 62 | return errorMessage; |
137 | } | |
138 | ||
139 | public void setErrorTooManyMatchingMethods(Object component, Class[] argTypes, String methods, EntryPointResolver resolver) | |
140 | { | |
141 | 8 | setErrorMessage(CoreMessages.tooManyAcceptableMethodsOnObjectUsingResolverForTypes( |
142 | component.getClass().getName(), argTypes, resolver).toString()); | |
143 | 8 | } |
144 | ||
145 | public void setErrorTooManyMatchingMethods(Object component, Class[] argTypes, EntryPointResolver resolver) | |
146 | { | |
147 | 4 | setErrorMessage(CoreMessages.tooManyAcceptableMethodsOnObjectUsingResolverForTypes( |
148 | component.getClass().getName(), argTypes, resolver).toString()); | |
149 | 4 | } |
150 | ||
151 | public void setErrorNoMatchingMethods(Object component, Class[] args, EntryPointResolver resolver) | |
152 | { | |
153 | 32 | setErrorMessage(CoreMessages.noEntryPointFoundWithArgsUsingResolver( |
154 | component.getClass().getName(), args, resolver).toString()); | |
155 | 32 | } |
156 | ||
157 | public void setErrorNoMatchingMethodsCalled(Object component, String methods, EntryPointResolver resolver) | |
158 | { | |
159 | 0 | setErrorMessage(CoreMessages.noMatchingMethodsOnObjectCalledUsingResolver( |
160 | component.getClass().getName(), methods, resolver).toString()); | |
161 | 0 | } |
162 | ||
163 | } |