OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libjava/] [classpath/] [org/] [omg/] [CORBA/] [portable/] [Delegate.java] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 jlechner
/* Delegate.java --
2
Copyright (C) 2005 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package org.omg.CORBA.portable;
40
 
41
import org.omg.CORBA.BAD_PARAM;
42
import org.omg.CORBA.Context;
43
import org.omg.CORBA.ContextList;
44
import org.omg.CORBA.DomainManager;
45
import org.omg.CORBA.ExceptionList;
46
import org.omg.CORBA.NO_IMPLEMENT;
47
import org.omg.CORBA.NVList;
48
import org.omg.CORBA.NamedValue;
49
import org.omg.CORBA.ORB;
50
import org.omg.CORBA.Policy;
51
import org.omg.CORBA.Request;
52
import org.omg.CORBA.SetOverrideType;
53
 
54
/**
55
 * Specifies a vendor specific implementation of the
56
 * {@link org.omg.CORBA.Object} methods. The calls to these
57
 * methods are forwarded to the object delegate that can be
58
 * replaced, if needed. The first parameter is the actual
59
 * CORBA object to that the operation must be applied.
60
 *
61
 * Some methods in this class are not abstract, but no implemented,
62
 * thowing the {@link NO_IMPLEMENT}. This, however, does not mean that
63
 * they are not implemented in the derived classes as well.
64
 *
65
 * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
66
 */
67
public abstract class Delegate
68
{
69
  /**
70
   * Explains the reason of throwing the NO_IMPLEMENT.
71
   */
72
  private static final String WHY =
73
    "Following 1.4 API, this Delegate method must not be implemented. Override.";
74
 
75
  /**
76
   * Create a request to invoke the method of this object.
77
   *
78
   * @param target the CORBA object, to that this operation must be applied.
79
   * @param context a list of additional properties.
80
   * @param operation the name of method to be invoked.
81
   * @param parameters the method parameters.
82
   * @param returns the container for tge method returned value.
83
   *
84
   * @return the created reaquest.
85
   */
86
  public abstract Request create_request(org.omg.CORBA.Object target,
87
                                         Context context, String operation,
88
                                         NVList parameters, NamedValue returns
89
                                        );
90
 
91
  /**
92
   * Create a request to invoke the method of this object, specifying
93
   * context list and the list of the expected exception.
94
   *
95
   * @param target the CORBA object, to that this operation must be applied.
96
   * @param context a list of additional properties.
97
   * @param operation the name of method to be invoked.
98
   * @param parameters the method parameters.
99
   * @param returns the container for tge method returned value.
100
   * @param exceptions the list of the possible exceptions that the method
101
   * can throw.
102
   * @param ctx_list the list of the context strings that need to be
103
   * resolved and send as a context instance.
104
   *
105
   * @return the created reaquest.
106
   */
107
  public abstract Request create_request(org.omg.CORBA.Object target,
108
                                         Context context, String operation,
109
                                         NVList parameters, NamedValue returns,
110
                                         ExceptionList exceptions,
111
                                         ContextList ctx_list
112
                                        );
113
 
114
  /**
115
   * Duplicate the object reference. This does not make much sense for
116
   * java platform and is just included for the sake of compliance with
117
   * CORBA APIs.
118
   *
119
   * @param target the CORBA object, to that this operation must be applied.
120
   *
121
   * The method may return the object reference itself.
122
   *
123
   * @return as a rule, <code>this</code>.
124
   */
125
  public abstract org.omg.CORBA.Object duplicate(org.omg.CORBA.Object target);
126
 
127
  /**
128
   * Retrieve the domain managers for this object.
129
   *
130
   * @param target the CORBA object, to that this operation must be applied.
131
   *
132
   * @return the domain managers.
133
   *
134
   * @throws NO_IMPLEMENT, always (following the 1.4 specification).
135
   */
136
  public DomainManager[] get_domain_managers(org.omg.CORBA.Object target)
137
  {
138
    throw new NO_IMPLEMENT(WHY);
139
  }
140
 
141
  /**
142
   *
143
   * @param target the CORBA object, to that this operation must be applied.
144
   *
145
   * Get the <code>InterfaceDef</code> for this Object.
146
   */
147
  public abstract org.omg.CORBA.Object get_interface_def(org.omg.CORBA.Object target);
148
 
149
  /**
150
   * Returns the {@link Policy}, applying to this object.
151
   *
152
   * @param target the CORBA object, to that this operation must be applied.
153
   * @param a_policy_type a type of policy to be obtained.
154
   * @return a corresponding Policy object.
155
   *
156
   * @throws NO_IMPLEMENT, always (following the 1.4 specification).
157
   */
158
  public Policy get_policy(org.omg.CORBA.Object target, int a_policy_type)
159
                    throws BAD_PARAM
160
  {
161
    throw new NO_IMPLEMENT(WHY);
162
  }
163
 
164
  /**
165
   * Get the hashcode this object reference. The same hashcode still
166
   * does not means that the references are the same. From the other
167
   * side, two different references may still refer to the same CORBA
168
   * object. The returned value must not change during the object
169
   * lifetime.
170
   *
171
   * @param target the CORBA object, to that this operation must be applied.
172
   * @param maximum the maximal value to return.
173
   *
174
   * @return the hashcode.
175
   */
176
  public abstract int hash(org.omg.CORBA.Object target, int maximum);
177
 
178
  /**
179
   * Check if this object can be referenced by the given repository id.
180
   *
181
   * @param target the CORBA object, to that this operation must be applied.
182
   * @param repositoryIdentifer the repository id.
183
   *
184
   * @return true if the passed parameter is a repository id of this
185
   * CORBA object.
186
   */
187
  public abstract boolean is_a(org.omg.CORBA.Object target,
188
                               String repositoryIdentifer
189
                              );
190
 
191
  /**
192
   * Return true if the other object references are equivalent, so far as
193
   * it is possible to determine this easily.
194
   *
195
   * @param target the CORBA object, to that this operation must be applied.
196
   * @param other the other object reference.
197
   *
198
   * @return true if both references refer the same object, false
199
   * if they probably can refer different objects.
200
   *
201
   */
202
  public abstract boolean is_equivalent(org.omg.CORBA.Object target,
203
                                        org.omg.CORBA.Object other
204
                                       );
205
 
206
  /**
207
   * Returns true if the object is local.
208
   *
209
   * @param self the object to check.
210
   *
211
   * @return false, always (following 1.4 specs). Override to get
212
   * functionality.
213
   */
214
  public boolean is_local(org.omg.CORBA.Object self)
215
  {
216
    return false;
217
  }
218
 
219
  /**
220
   * Determines if the server object for this reference has already
221
   * been destroyed.
222
   *
223
   * @param target the CORBA object, to that this operation must be applied.
224
   *
225
   * @return true if the object has been destroyed, false otherwise.
226
   */
227
  public abstract boolean non_existent(org.omg.CORBA.Object target);
228
 
229
  /**
230
   * Compares two objects for equality. The default implementations
231
   * delegated call to {@link java.lang.Object#equals(java.lang.Object)}.
232
   *
233
   * @param self this CORBA object.
234
   * @param other the other CORBA object.
235
   *
236
   * @return true if the objects are equal.
237
   */
238
  public boolean equals(org.omg.CORBA.Object self, java.lang.Object other)
239
  {
240
    return self==other;
241
  }
242
 
243
  /**
244
   * Return the hashcode for this CORBA object. The default implementation
245
   * delegates call to {@link #hash(int)}, passing Integer.MAX_VALUE as an
246
   * argument.
247
   *
248
   * @param target the object, for that the hash code must be computed.
249
   *
250
   * @return the hashcode.
251
   */
252
  public int hashCode(org.omg.CORBA.Object target)
253
  {
254
    return hash(target, Integer.MAX_VALUE);
255
  }
256
 
257
  /**
258
   * Invoke the operation.
259
   *
260
   * @param target the invocation target.
261
   * @param output the stream, containing the written arguments.
262
   *
263
   * @return the stream, from where the input parameters could be read.
264
   *
265
   * @throws ApplicationException if the application throws an exception,
266
   * defined as a part of its remote method definition.
267
   *
268
   * @throws RemarshalException if reading(remarshalling) fails.
269
   *
270
   * @throws NO_IMPLEMENT, always (following the 1.4 specification).
271
   */
272
  public InputStream invoke(org.omg.CORBA.Object target,
273
                            org.omg.CORBA.portable.OutputStream output
274
                           )
275
                     throws ApplicationException, RemarshalException
276
  {
277
    throw new NO_IMPLEMENT(WHY);
278
  }
279
 
280
  /**
281
   * Provides the reference to ORB.
282
   *
283
   * @param target the object reference.
284
   *
285
   * @return the associated ORB.
286
   *
287
   * @throws NO_IMPLEMENT, always (following the 1.4 specification).
288
   */
289
  public ORB orb(org.omg.CORBA.Object target)
290
  {
291
    throw new NO_IMPLEMENT(WHY);
292
  }
293
 
294
  /**
295
   * Free resoureces, occupied by this reference. The object implementation
296
   * is not notified, and the other references to the same object are not
297
   * affected.
298
   *
299
   * @param target the CORBA object, to that this operation must be applied.
300
   */
301
  public abstract void release(org.omg.CORBA.Object target);
302
 
303
  /**
304
   * Release the reply stream back to ORB after finishing reading the data
305
   * from it.
306
   *
307
   * @param target the CORBA object, to that this operation must be applied.
308
   * @param input the stream, normally returned by {@link #invoke} or
309
   * {@link ApplicationException#getInputStream()}, can be null.
310
   *
311
   * The default method returns without action.
312
   */
313
  public void releaseReply(org.omg.CORBA.Object target,
314
                           org.omg.CORBA.portable.InputStream input
315
                          )
316
  {
317
  }
318
 
319
  /**
320
   * Create a request to invoke the method of this CORBA object.
321
   *
322
   * @param target the CORBA object, to that this operation must be applied.
323
   * @param operation the name of the method to invoke.
324
   *
325
   * @return the request.
326
   */
327
  public abstract Request request(org.omg.CORBA.Object target, String operation);
328
 
329
  /**
330
   * Create a request to invoke the method of this CORBA object.
331
   *
332
   * @param target the CORBA object, to that this operation must be applied.
333
   * @param operation the name of the method to invoke.
334
   * @param response_expected specifies if this is one way message or the
335
   * response to the message is expected.
336
   *
337
   * @return the stream where the method arguments should be written.
338
   */
339
  public org.omg.CORBA.portable.OutputStream request(org.omg.CORBA.Object target,
340
                                                     String operation,
341
                                                     boolean response_expected
342
                                                    )
343
  {
344
    throw new NO_IMPLEMENT(WHY);
345
  }
346
 
347
  /**
348
   * This method is always called after invoking the operation on the
349
   * local servant.
350
   *
351
   * The default method returns without action.
352
   *
353
   * @param self the object.
354
   * @param servant the servant.
355
   */
356
  public void servant_postinvoke(org.omg.CORBA.Object self,
357
                                 ServantObject servant
358
                                )
359
  {
360
  }
361
 
362
  /**
363
   * Returns a servant that should be used for this request.
364
   * The servant can also be casted to the expected type, calling the
365
   * required method directly.
366
   *
367
   * @param self the object
368
   * @param operation the operation
369
   * @param expectedType the expected type of the servant.
370
   *
371
   * This implementation always returns null; override for different
372
   * behavior.
373
   *
374
   * @return the servant or null if the servant is not an expected type
375
   * of the method is not supported, for example, due security reasons.
376
   */
377
  public ServantObject servant_preinvoke(org.omg.CORBA.Object self,
378
                                         String operation, Class expectedType
379
                                        )
380
  {
381
    return null;
382
  }
383
 
384
  /**
385
   * Returns a new object with the new policies either replacing or
386
   * extending the current policies, depending on the second parameter.
387
   *
388
   * @param target the CORBA object, to that this operation must be applied.
389
   * @param policies the policy additions or replacements.
390
   * @param how either {@link SetOverrideType#SET_OVERRIDE} to override the
391
   * current policies of {@link SetOverrideType#ADD_OVERRIDE} to replace
392
   * them.
393
   *
394
   * @throws NO_IMPLEMENT, always (following the 1.4 specification).
395
   *
396
   * @return the new reference with the changed policies.
397
   */
398
  public org.omg.CORBA.Object set_policy_override(org.omg.CORBA.Object target,
399
                                                  Policy[] policies,
400
                                                  SetOverrideType how
401
                                                 )
402
  {
403
    throw new NO_IMPLEMENT(WHY);
404
  }
405
 
406
  /**
407
   * Return a string representation of the passed object.
408
   *
409
   * @param self the CORBA object, to that the string representation must be
410
   * returned. By default, the call is delegated to
411
   * {@link java.lang.Object.toString()}.
412
   *
413
   * @return the string representation.
414
   */
415
  public String toString(org.omg.CORBA.Object self)
416
  {
417
    if (self instanceof ObjectImpl)
418
      {
419
        ObjectImpl x = (ObjectImpl) self;
420
        StringBuffer b = new StringBuffer(x.getClass().getName());
421
        b.append(": [");
422
        for (int i = 0; i < x._ids().length; i++)
423
          {
424
            b.append(x._ids() [ i ]);
425
            b.append(" ");
426
          }
427
        b.append("]");
428
        return b.toString();
429
      }
430
    else
431
      return self.getClass().getName();
432
  }
433
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.