1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
/**
*
* Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.tuscany.core.invocation;
import java.lang.reflect.Method;
import java.util.Map;
import org.apache.tuscany.core.context.QualifiedName;
import org.apache.tuscany.core.message.MessageFactory;
/**
* Represents configuration information for creating a service proxy. When a client component implementation is injected
* with a service proxy representing a wire, source- and target-side proxy configurations are "bridged" together. This
* concatenated configuration may then be used to generate a proxy implemented a particular business interface required
* by the client.
*
* @version $Rev$ $Date$
*/
public class ProxyConfiguration {
private Map<Method, InvocationConfiguration> configurations;
private ClassLoader proxyClassLoader;
private MessageFactory messageFactory;
private QualifiedName serviceName;
// ----------------------------------
// Constructors
// ----------------------------------
/**
* Creates a configuration used to generate proxies representing a service.
*
* @param serviceName the qualified name of the service represented by this configuration
* @param invocationConfigs a collection of operation-to-invocation configuration mappings for the service
* @param proxyClassLoader the classloader to use when creating a proxy
* @param messageFactory the factory used to create invocation messages
*/
public ProxyConfiguration(QualifiedName serviceName, Map<Method, InvocationConfiguration> invocationConfigs,
ClassLoader proxyClassLoader, MessageFactory messageFactory) {
assert (invocationConfigs != null) : "No invocation configuration map specified";
this.serviceName = serviceName;
configurations = invocationConfigs;
this.messageFactory = messageFactory;
if (proxyClassLoader == null) {
this.proxyClassLoader = Thread.currentThread().getContextClassLoader();
} else {
this.proxyClassLoader = proxyClassLoader;
}
}
// ----------------------------------
// Methods
// ----------------------------------
/**
* Returns the qualified service name the configuration is associated with
*/
public QualifiedName getTargetName() {
return serviceName;
}
/**
* Returns a collection of operation types to {@link InvocationConfiguration} mappings that represent the specific
* proxy configuration information for particular operations
*/
public Map<Method, InvocationConfiguration> getInvocationConfigurations() {
return configurations;
}
/**
* Returns the classloader to use in creating proxies
*/
public ClassLoader getProxyClassLoader() {
return proxyClassLoader;
}
/**
* Returns the factory used to create invocation messages
*/
public MessageFactory getMessageFactory() {
return messageFactory;
}
}
|