KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mule > umo > Invocation


1 /*
2  * $Id: Invocation.java 3198 2006-09-24 23:20:35Z holger $
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 MuleSource MPL
7  * license, a copy of which has been included with this distribution in the
8  * LICENSE.txt file.
9  */

10
11 package org.mule.umo;
12
13 import org.mule.impl.RequestContext;
14
15 /**
16  * <code>Invocation</code> represents a link in an interceptor chain. Interceptors
17  * can be configured om Mule Managed components.
18  */

19 // @ThreadSafe
20
public class Invocation
21 {
22     /** The components descriptor */
23     // @GuardedBy(itself)
24
private final UMOImmutableDescriptor descriptor;
25
26     /** the next invocation in the chain */
27     // @GuardedBy(itself)
28
private final Invocation invocation;
29
30     /** The current message for the component */
31     // @GuardedBy(this)
32
private UMOMessage message;
33
34     /**
35      * Constructs an initialised invocation
36      *
37      * @param descriptor the components descriptor
38      * @param message the current message
39      * @param invocation the next invocation in the chain or null.
40      */

41     public Invocation(UMOImmutableDescriptor descriptor, UMOMessage message, Invocation invocation)
42     {
43         this.descriptor = descriptor;
44         this.message = message;
45         this.invocation = invocation;
46     }
47
48     /**
49      * Excutes this invocation
50      *
51      * @return the current message that may have been altered by the invocation
52      * @throws UMOException if something goes wrong
53      */

54     public UMOMessage execute() throws UMOException
55     {
56         return invocation.execute();
57     }
58
59     /**
60      * Returns the descriptor for the component associated with this invocation
61      *
62      * @return the descriptor for the component associated with this invocation
63      */

64     public UMOImmutableDescriptor getDescriptor()
65     {
66         return descriptor;
67     }
68
69     public UMOEvent getEvent()
70     {
71         return RequestContext.getEvent();
72     }
73
74     /**
75      * Returns the current message
76      *
77      * @return the current message
78      */

79     public UMOMessage getMessage()
80     {
81         synchronized (this)
82         {
83             return message;
84         }
85     }
86
87     public void setMessage(UMOMessage message)
88     {
89         synchronized (this)
90         {
91             this.message = message;
92         }
93     }
94
95 }
96
Popular Tags