Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
OptimizedRequestContext |
|
| 0.0;0 |
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; | |
8 | ||
9 | import org.mule.api.MuleEvent; | |
10 | import org.mule.api.MuleMessage; | |
11 | ||
12 | import org.apache.commons.logging.Log; | |
13 | import org.apache.commons.logging.LogFactory; | |
14 | ||
15 | /** | |
16 | * NOT FOR PUBLIC USE - please use the interface provided by RequestContext. | |
17 | * This is a temporary interface that helps provide an (optimized) fix for message | |
18 | * scribbling. | |
19 | * | |
20 | * <p>Mutating methods have three versions: default (RequestContext; safe, makes and returns a new | |
21 | * copy - although this can be changed via {@link RequestContext#DEFAULT_ACTION}); | |
22 | * unsafe (doesn't make a copy, use only where certain no threading); critical (safe, | |
23 | * documents that threading a known issue).</p> | |
24 | * | |
25 | * @deprecated | |
26 | * If access to MuleEvent or MuleMessage is required, | |
27 | * then implement a {@link org.mule.api.processor.MessageProcessor} | |
28 | * or {@link org.mule.api.lifecycle.Callable} instead | |
29 | */ | |
30 | @Deprecated | |
31 | public final class OptimizedRequestContext | |
32 | { | |
33 | ||
34 | private static final boolean DOCUMENT_UNSAFE_CALLS = false; | |
35 | 0 | private static final Log logger = LogFactory.getLog(OptimizedRequestContext.class); |
36 | ||
37 | /** | |
38 | * Do not instantiate. | |
39 | */ | |
40 | private OptimizedRequestContext() | |
41 | 0 | { |
42 | // unused | |
43 | 0 | } |
44 | ||
45 | /** | |
46 | * Set an event for out-of-scope thread access. Unsafe: use only when known to be single threaded. | |
47 | * | |
48 | * @param event - the event to set | |
49 | * @return The event set | |
50 | */ | |
51 | public static MuleEvent unsafeSetEvent(MuleEvent event) | |
52 | { | |
53 | 0 | documentUnsafeCall("unsafeSetEvent"); |
54 | 0 | return RequestContext.internalSetEvent(event); |
55 | } | |
56 | ||
57 | /** | |
58 | * Set an event for out-of-scope thread access. Critical: thread safety known to be required | |
59 | * | |
60 | * @param event - the event to set | |
61 | * @return A new mutable copy of the event set | |
62 | */ | |
63 | public static MuleEvent criticalSetEvent(MuleEvent event) | |
64 | { | |
65 | 0 | return RequestContext.internalSetEvent(RequestContext.newEvent(event, RequestContext.SAFE)); |
66 | } | |
67 | ||
68 | /** | |
69 | * Sets a new message payload in the RequestContext but maintains all other | |
70 | * properties (session, endpoint, synchronous, etc.) from the previous event. | |
71 | * Unsafe: use only when known to be single threaded | |
72 | * | |
73 | * @param message - the new message payload | |
74 | * @return The message set | |
75 | */ | |
76 | public static MuleMessage unsafeRewriteEvent(MuleMessage message) | |
77 | { | |
78 | 0 | documentUnsafeCall("unsafeRewriteEvent"); |
79 | 0 | return RequestContext.internalRewriteEvent(message, RequestContext.UNSAFE); |
80 | } | |
81 | ||
82 | private static void documentUnsafeCall(String message) | |
83 | { | |
84 | if (DOCUMENT_UNSAFE_CALLS) | |
85 | { | |
86 | logger.debug(message, new Exception(message)); | |
87 | } | |
88 | 0 | } |
89 | ||
90 | } |