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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [org/] [omg/] [CORBA/] [portable/] [Delegate.java] - Blame information for rev 775

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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