View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.api;
8   
9   import org.mule.api.construct.FlowConstruct;
10  import org.mule.api.security.SecurityContext;
11  
12  import java.io.Serializable;
13  import java.util.Iterator;
14  import java.util.Set;
15  
16  /**
17   * <code>MuleSession</code> is the context in which a request is executed. The
18   * session manages the marshalling of events to and from components This object is
19   * not usually referenced by client code directly. If needed Components should manage
20   * events via the <code>MuleEventContext</code> which is obtainable via the
21   * <code>UMOManager</code> or by implementing
22   * <code>org.mule.api.lifecycle.Callable</code>.
23   */
24  
25  public interface MuleSession extends Serializable
26  {
27      /**
28       * Returns the Service associated with the session in its current execution
29       * 
30       * @return the Service associated with the session in its current execution
31       * @see FlowConstruct
32       */
33      FlowConstruct getFlowConstruct();
34  
35      /**
36       * Sets the Service associated with the session in its current execution
37       * 
38       * @see FlowConstruct
39       */
40      void setFlowConstruct(FlowConstruct flowConstruct);
41  
42      /**
43       * Determines if this session is valid. A session becomes invalid if an exception
44       * occurs while processing
45       * 
46       * @return true if the service is functioning properly, false otherwise
47       */
48      boolean isValid();
49  
50      /**
51       * Determines if this session is valid. A session becomes invalid if an exception
52       * occurs while processing
53       * 
54       * @param value true if the service is functioning properly, false otherwise
55       */
56      void setValid(boolean value);
57  
58      /**
59       * Returns the unique id for this session
60       * 
61       * @return the unique id for this session
62       */
63      String getId();
64  
65      /**
66       * The security context for this session. If not null outbound, inbound and/or
67       * method invocations will be authenticated using this context
68       * 
69       * @param context the context for this session or null if the request is not
70       *            secure.
71       */
72      void setSecurityContext(SecurityContext context);
73  
74      /**
75       * The security context for this session. If not null outbound, inbound and/or
76       * method invocations will be authenticated using this context
77       * 
78       * @return the context for this session or null if the request is not secure.
79       */
80      SecurityContext getSecurityContext();
81  
82      /**
83       * Will set a session level property. These will either be stored and retrieved
84       * using the underlying transport mechanism of stored using a default mechanism
85       * 
86       * @param key the key for the object data being stored on the session
87       * @param value the value of the session data
88       */
89      void setProperty(String key, Object value);
90  
91      /**
92       * Will retrieve a session level property.
93       * 
94       * @param key the key for the object data being stored on the session
95       * @return the value of the session data or null if the property does not exist
96       */
97      <T> T getProperty(Object key);
98  
99      /**
100      * Will retrieve a session level property and remove it from the session
101      * 
102      * @param key the key for the object data being stored on the session
103      * @return the value of the session data or null if the property does not exist
104      */
105     Object removeProperty(Object key);
106 
107     /**
108      * Returns an iterater of property keys for the session properties on this
109      * session
110      * 
111      * @return an iterater of property keys for the session properties on this
112      *         session
113      * @deprecated Use getPropertyNamesAsSet() instead
114      */
115     Iterator getPropertyNames();
116 
117     /**
118      * @return property keys for all session properties
119      */
120     Set<String> getPropertyNamesAsSet();
121 
122     /**
123      * Merge current session with an updated version
124      * Result session will contain all the properties from updatedSession
125      * plus those properties in the current session that couldn't be serialized
126      * In case updatedSession is null, then no change will be applied.
127      *
128      * @param updatedSession mule session with updated properties
129      */
130     void merge(MuleSession updatedSession);
131 }