corba/src/java.corba/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Helper24.java
author avstepan
Tue, 05 May 2015 15:17:13 +0400
changeset 30383 45960fdbe465
parent 25862 a5e25d68f971
permissions -rw-r--r--
8079075: some docs cleanup for CORBA - part 1 Summary: some fix for CORBA docs Reviewed-by: rriggs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
02bb8761fcce Initial load
duke
parents:
diff changeset
     1
/*
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
     2
 * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
4
02bb8761fcce Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
02bb8761fcce Initial load
duke
parents:
diff changeset
     4
 *
02bb8761fcce Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
02bb8761fcce Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
4
02bb8761fcce Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    10
 *
02bb8761fcce Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
02bb8761fcce Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
02bb8761fcce Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
02bb8761fcce Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
02bb8761fcce Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
02bb8761fcce Initial load
duke
parents:
diff changeset
    16
 *
02bb8761fcce Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
02bb8761fcce Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
02bb8761fcce Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
02bb8761fcce Initial load
duke
parents:
diff changeset
    20
 *
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    23
 * questions.
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    24
 */
02bb8761fcce Initial load
duke
parents:
diff changeset
    25
/*
02bb8761fcce Initial load
duke
parents:
diff changeset
    26
 * COMPONENT_NAME: idl.toJava
02bb8761fcce Initial load
duke
parents:
diff changeset
    27
 *
02bb8761fcce Initial load
duke
parents:
diff changeset
    28
 * ORIGINS: 27
02bb8761fcce Initial load
duke
parents:
diff changeset
    29
 *
02bb8761fcce Initial load
duke
parents:
diff changeset
    30
 * Licensed Materials - Property of IBM
02bb8761fcce Initial load
duke
parents:
diff changeset
    31
 * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997, 1999
02bb8761fcce Initial load
duke
parents:
diff changeset
    32
 * RMI-IIOP v1.0
02bb8761fcce Initial load
duke
parents:
diff changeset
    33
 *
02bb8761fcce Initial load
duke
parents:
diff changeset
    34
 */
02bb8761fcce Initial load
duke
parents:
diff changeset
    35
02bb8761fcce Initial load
duke
parents:
diff changeset
    36
package com.sun.tools.corba.se.idl.toJavaPortable;
02bb8761fcce Initial load
duke
parents:
diff changeset
    37
02bb8761fcce Initial load
duke
parents:
diff changeset
    38
// NOTES:
02bb8761fcce Initial load
duke
parents:
diff changeset
    39
// -D62023   <klr> New file to implement CORBA 2.4 RTF
02bb8761fcce Initial load
duke
parents:
diff changeset
    40
02bb8761fcce Initial load
duke
parents:
diff changeset
    41
import java.io.PrintWriter;
02bb8761fcce Initial load
duke
parents:
diff changeset
    42
02bb8761fcce Initial load
duke
parents:
diff changeset
    43
import java.util.Enumeration;
02bb8761fcce Initial load
duke
parents:
diff changeset
    44
import java.util.Vector;
02bb8761fcce Initial load
duke
parents:
diff changeset
    45
02bb8761fcce Initial load
duke
parents:
diff changeset
    46
import com.sun.tools.corba.se.idl.GenFileStream;
02bb8761fcce Initial load
duke
parents:
diff changeset
    47
import com.sun.tools.corba.se.idl.InterfaceEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    48
import com.sun.tools.corba.se.idl.MethodEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    49
import com.sun.tools.corba.se.idl.ParameterEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    50
import com.sun.tools.corba.se.idl.SymtabEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    51
import com.sun.tools.corba.se.idl.ValueEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    52
import com.sun.tools.corba.se.idl.ValueBoxEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    53
import com.sun.tools.corba.se.idl.TypedefEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    54
import com.sun.tools.corba.se.idl.InterfaceState;
02bb8761fcce Initial load
duke
parents:
diff changeset
    55
import com.sun.tools.corba.se.idl.PrimitiveEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    56
import com.sun.tools.corba.se.idl.StructEntry;
02bb8761fcce Initial load
duke
parents:
diff changeset
    57
02bb8761fcce Initial load
duke
parents:
diff changeset
    58
/**
02bb8761fcce Initial load
duke
parents:
diff changeset
    59
 *
02bb8761fcce Initial load
duke
parents:
diff changeset
    60
 **/
02bb8761fcce Initial load
duke
parents:
diff changeset
    61
public class Helper24 extends Helper
02bb8761fcce Initial load
duke
parents:
diff changeset
    62
{
02bb8761fcce Initial load
duke
parents:
diff changeset
    63
  /**
02bb8761fcce Initial load
duke
parents:
diff changeset
    64
   * Public zero-argument constructor.
02bb8761fcce Initial load
duke
parents:
diff changeset
    65
   **/
02bb8761fcce Initial load
duke
parents:
diff changeset
    66
  public Helper24 ()
02bb8761fcce Initial load
duke
parents:
diff changeset
    67
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
    68
  } // ctor
02bb8761fcce Initial load
duke
parents:
diff changeset
    69
02bb8761fcce Initial load
duke
parents:
diff changeset
    70
  /**
02bb8761fcce Initial load
duke
parents:
diff changeset
    71
   * Generate the heading, including package, imports, class statements,
02bb8761fcce Initial load
duke
parents:
diff changeset
    72
   * and open curly.
30383
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
    73
   * d62023 - don't implement ValueHelper, make non-boxed helpers abstract
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    74
   **/
02bb8761fcce Initial load
duke
parents:
diff changeset
    75
  protected void writeHeading ()
02bb8761fcce Initial load
duke
parents:
diff changeset
    76
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
    77
    Util.writePackage (stream, entry, Util.HelperFile);
02bb8761fcce Initial load
duke
parents:
diff changeset
    78
    Util.writeProlog (stream, stream.name ());
02bb8761fcce Initial load
duke
parents:
diff changeset
    79
02bb8761fcce Initial load
duke
parents:
diff changeset
    80
    // Transfer comment to target <30jul1997daz>.
02bb8761fcce Initial load
duke
parents:
diff changeset
    81
    if (entry.comment () != null)
02bb8761fcce Initial load
duke
parents:
diff changeset
    82
      entry.comment ().generate ("", stream);
02bb8761fcce Initial load
duke
parents:
diff changeset
    83
02bb8761fcce Initial load
duke
parents:
diff changeset
    84
    if (entry instanceof ValueBoxEntry) {
02bb8761fcce Initial load
duke
parents:
diff changeset
    85
        stream.print   ("public final class " + helperClass);
02bb8761fcce Initial load
duke
parents:
diff changeset
    86
        stream.println (" implements org.omg.CORBA.portable.BoxedValueHelper");
02bb8761fcce Initial load
duke
parents:
diff changeset
    87
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
    88
    else
02bb8761fcce Initial load
duke
parents:
diff changeset
    89
        stream.println ("abstract public class " + helperClass);
02bb8761fcce Initial load
duke
parents:
diff changeset
    90
    stream.println ('{');
02bb8761fcce Initial load
duke
parents:
diff changeset
    91
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
    92
02bb8761fcce Initial load
duke
parents:
diff changeset
    93
  /**
02bb8761fcce Initial load
duke
parents:
diff changeset
    94
   * Generate the instance variables.
30383
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
    95
   * <pre>
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
    96
   * d62023 - no helper instance except for boxed valuetypes;
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
    97
   *        - move truncatable_ids to mapped class.
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
    98
   * </pre>
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    99
   **/
02bb8761fcce Initial load
duke
parents:
diff changeset
   100
  protected void writeInstVars ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   101
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   102
    stream.println ("  private static String  _id = \"" + Util.stripLeadingUnderscoresFromID (entry.repositoryID ().ID ()) + "\";");
02bb8761fcce Initial load
duke
parents:
diff changeset
   103
    if (entry instanceof ValueEntry)
02bb8761fcce Initial load
duke
parents:
diff changeset
   104
    {
02bb8761fcce Initial load
duke
parents:
diff changeset
   105
      stream.println ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   106
      if (entry instanceof ValueBoxEntry) {
02bb8761fcce Initial load
duke
parents:
diff changeset
   107
          stream.println ("  private static " + helperClass + " _instance = new " + helperClass + " ();");
02bb8761fcce Initial load
duke
parents:
diff changeset
   108
          stream.println ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   109
      }
02bb8761fcce Initial load
duke
parents:
diff changeset
   110
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
   111
    stream.println ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   112
  } // writeInstVars
02bb8761fcce Initial load
duke
parents:
diff changeset
   113
02bb8761fcce Initial load
duke
parents:
diff changeset
   114
  /**
30383
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
   115
   * d62023 - generate members of BoxedValueHelper interface if boxed
4
02bb8761fcce Initial load
duke
parents:
diff changeset
   116
   *
30383
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
   117
   * d62023 - hook in here to write factory methods for non-boxed ValueTypes
4
02bb8761fcce Initial load
duke
parents:
diff changeset
   118
   *          into Helper.
02bb8761fcce Initial load
duke
parents:
diff changeset
   119
   **/
02bb8761fcce Initial load
duke
parents:
diff changeset
   120
  protected void writeValueHelperInterface ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   121
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   122
    if (entry instanceof ValueBoxEntry) {
02bb8761fcce Initial load
duke
parents:
diff changeset
   123
        writeGetID ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   124
    } else if (entry instanceof ValueEntry) {
02bb8761fcce Initial load
duke
parents:
diff changeset
   125
        writeHelperFactories ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   126
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
   127
  } // writeValueHelperInterface
02bb8761fcce Initial load
duke
parents:
diff changeset
   128
02bb8761fcce Initial load
duke
parents:
diff changeset
   129
  /**
02bb8761fcce Initial load
duke
parents:
diff changeset
   130
   *
02bb8761fcce Initial load
duke
parents:
diff changeset
   131
   **/
02bb8761fcce Initial load
duke
parents:
diff changeset
   132
  protected void writeHelperFactories ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   133
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   134
    Vector init = ((ValueEntry)entry).initializers ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   135
    if (init != null)
02bb8761fcce Initial load
duke
parents:
diff changeset
   136
    {
02bb8761fcce Initial load
duke
parents:
diff changeset
   137
      stream.println ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   138
      for (int i = 0; i < init.size (); i++)
02bb8761fcce Initial load
duke
parents:
diff changeset
   139
      {
02bb8761fcce Initial load
duke
parents:
diff changeset
   140
        MethodEntry element = (MethodEntry) init.elementAt (i);
02bb8761fcce Initial load
duke
parents:
diff changeset
   141
        element.valueMethod (true); //tag value method if not tagged previously
02bb8761fcce Initial load
duke
parents:
diff changeset
   142
        ((MethodGen24) element.generator ()). helperFactoryMethod (symbolTable, element, entry, stream);
02bb8761fcce Initial load
duke
parents:
diff changeset
   143
      }
02bb8761fcce Initial load
duke
parents:
diff changeset
   144
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
   145
  } // writeHelperFactories
02bb8761fcce Initial load
duke
parents:
diff changeset
   146
02bb8761fcce Initial load
duke
parents:
diff changeset
   147
  /**
30383
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
   148
   * d62023 - generate constructors only for boxed valuetype helpers.
45960fdbe465 8079075: some docs cleanup for CORBA - part 1
avstepan
parents: 25862
diff changeset
   149
   *          All other helpers are abstract.
4
02bb8761fcce Initial load
duke
parents:
diff changeset
   150
   **/
02bb8761fcce Initial load
duke
parents:
diff changeset
   151
  protected void writeCtors ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   152
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   153
    if (entry instanceof ValueBoxEntry) {
02bb8761fcce Initial load
duke
parents:
diff changeset
   154
        stream.println ("  public " + helperClass + "()");
02bb8761fcce Initial load
duke
parents:
diff changeset
   155
        stream.println ("  {");
02bb8761fcce Initial load
duke
parents:
diff changeset
   156
        stream.println ("  }");
02bb8761fcce Initial load
duke
parents:
diff changeset
   157
        stream.println ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   158
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
   159
  } // writeCtors
02bb8761fcce Initial load
duke
parents:
diff changeset
   160
}