View Javadoc

1   /* 
2    * Copyright (c) 2007, Fraunhofer-Gesellschaft
3    * All rights reserved.
4    * 
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are
7    * met:
8    * 
9    * (1) Redistributions of source code must retain the above copyright
10   *     notice, this list of conditions and the disclaimer at the end.
11   *     Redistributions in binary form must reproduce the above copyright
12   *     notice, this list of conditions and the following disclaimer in
13   *     the documentation and/or other materials provided with the
14   *     distribution.
15   * 
16   * (2) Neither the name of Fraunhofer nor the names of its
17   *     contributors may be used to endorse or promote products derived
18   *     from this software without specific prior written permission.
19   * 
20   * DISCLAIMER
21   * 
22   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33   *  
34   */
35  package org.ogf.graap.wsag.client.api;
36  
37  import java.util.Properties;
38  
39  import org.ogf.graap.wsag.api.security.ISecurityProperties;
40  import org.ogf.graap.wsag.api.security.SecurityProperties;
41  import org.w3.x2005.x08.addressing.EndpointReferenceType;
42  
43  /**
44   * Interface of a remote client. A remote client encapsulates the client object used for communicating with
45   * the server application. Different remote technologies can be supported, i.e. REST (HTTP) or SOAP based
46   * services.
47   * 
48   * @author Oliver Waeldrich
49   */
50  public class RemoteClient
51  {
52  
53      private Properties properties = new Properties();
54  
55      private ISecurityProperties securityProperties = new SecurityProperties( null );
56  
57      private final EndpointReferenceType remoteReference;
58  
59      private boolean isUsingTrace = false;
60  
61      /**
62       * Constructs a new remote client with the given reference.
63       * 
64       * @param reference
65       *            the remote reference
66       */
67      public RemoteClient( EndpointReferenceType reference )
68      {
69          remoteReference = reference;
70      }
71  
72      /**
73       * Constructs a new remote client with the given remote reference.
74       * 
75       * @param reference
76       *            the remote reference
77       */
78      public RemoteClient( String reference )
79      {
80          remoteReference = EndpointReferenceType.Factory.newInstance();
81          remoteReference.addNewAddress().setStringValue( reference );
82      }
83  
84      /**
85       * Constructs a new remote client with the given properties and reference.
86       * 
87       * @param reference
88       *            the remote reference
89       * 
90       * @param properties
91       *            the client properties
92       * 
93       * @param securityProperties
94       *            the security properties associated with the remote client
95       */
96      public RemoteClient( EndpointReferenceType reference, Properties properties,
97                           ISecurityProperties securityProperties )
98      {
99          remoteReference = reference;
100         this.properties = properties;
101         this.securityProperties = securityProperties;
102     }
103 
104     /**
105      * Constructs a new remote client with the given properties and reference.
106      * 
107      * @param reference
108      *            the remote reference
109      * 
110      * @param properties
111      *            the client properties
112      * 
113      * @param securityProperties
114      *            the security properties associated with the remote client
115      */
116     public RemoteClient( String reference, Properties properties, ISecurityProperties securityProperties )
117     {
118         this( reference );
119         this.properties = properties;
120         this.securityProperties = securityProperties;
121     }
122 
123     /**
124      * Returns the security properties used by the web-service client.
125      * 
126      * @return the security properties for this client
127      */
128     public ISecurityProperties getSecurityProperties()
129     {
130         return securityProperties;
131     }
132 
133     /**
134      * Sets the security properties used by the web-service client.
135      * 
136      * @param securityProperties
137      *            the security properties for this client
138      */
139     public void setSecurityProperties( ISecurityProperties securityProperties )
140     {
141         this.securityProperties = securityProperties;
142     }
143 
144     /**
145      * Returns the properties used by the web-service client.
146      * 
147      * @return a list of properties associated with the client
148      */
149     public Properties getProperties()
150     {
151         return properties;
152     }
153 
154     /**
155      * Sets the properties used for the web-service client.
156      * 
157      * @param properties
158      *            Sets the properties for this client
159      */
160     public void setProperties( Properties properties )
161     {
162         this.properties = properties;
163     }
164 
165     /**
166      * Returns the endpoint of the client instance.
167      * 
168      * @return Returns the endpoint reference for this WS resource.
169      */
170     public EndpointReferenceType getRemoteReference()
171     {
172         return remoteReference;
173     }
174 
175     /**
176      * Determines whether or not a client prints the web-service messages to the console.
177      * 
178      * @return true, if the web service client traces the incoming/outgoing messages.
179      */
180     public boolean isUsingTrace()
181     {
182         return isUsingTrace;
183     }
184 
185     /**
186      * Sets the clients trace mode.
187      * 
188      * @param trace
189      *            true, if the web service client should traces incoming/outgoing messages.
190      */
191     public void setTrace( boolean trace )
192     {
193         isUsingTrace = trace;
194     }
195 
196 }