1 /*
   2  * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 /*
  26  * COMPONENT_NAME: idl.toJava
  27  *
  28  * ORIGINS: 27
  29  *
  30  * Licensed Materials - Property of IBM
  31  * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997, 1999
  32  * RMI-IIOP v1.0
  33  *
  34  */
  35 
  36 package com.sun.tools.corba.se.idl.toJavaPortable;
  37 
  38 // NOTES:
  39 // -D61056   <klr> Use Util.helperName
  40 
  41 import java.io.File;
  42 import java.io.PrintWriter;
  43 import java.util.Hashtable;
  44 import java.util.Enumeration;
  45 import java.util.Vector;
  46 
  47 import com.sun.tools.corba.se.idl.GenFileStream;
  48 import com.sun.tools.corba.se.idl.InterfaceEntry;
  49 import com.sun.tools.corba.se.idl.SymtabEntry;
  50 import com.sun.tools.corba.se.idl.TypedefEntry;
  51 import com.sun.tools.corba.se.idl.ForwardValueEntry;
  52 import com.sun.tools.corba.se.idl.InterfaceState;
  53 import com.sun.tools.corba.se.idl.MethodEntry;
  54 
  55 /**
  56  *
  57  **/
  58 public class ForwardValueGen implements com.sun.tools.corba.se.idl.ForwardValueGen, JavaGenerator
  59 {
  60   /**
  61    * Public zero-argument constructor.
  62    **/
  63   public ForwardValueGen ()
  64   {
  65   } // ctor
  66 
  67   /**
  68    *
  69    **/
  70   public void generate (Hashtable symbolTable, ForwardValueEntry v, PrintWriter str)
  71   {
  72     this.symbolTable = symbolTable;
  73     this.v = v;
  74 
  75     openStream ();
  76     if (stream == null)
  77       return;
  78     generateHelper ();
  79     generateHolder ();
  80     generateStub ();
  81     writeHeading ();
  82     writeBody ();
  83     writeClosing ();
  84     closeStream ();
  85   } // generate
  86 
  87   /**
  88    *
  89    **/
  90   protected void openStream ()
  91   {
  92     stream = Util.stream (v, ".java");
  93   } // openStream
  94 
  95   /**
  96    *
  97    **/
  98   protected void generateHelper ()
  99   {
 100     ((Factories)Compile.compiler.factories ()).helper ().generate (symbolTable, v);
 101   } // generateHelper
 102 
 103   /**
 104    *
 105    **/
 106   protected void generateHolder ()
 107   {
 108     ((Factories)Compile.compiler.factories ()).holder ().generate (symbolTable, v);
 109   } // generateHolder
 110 
 111   /**
 112    *
 113    **/
 114   protected void generateStub ()
 115   {
 116   } // generateStub
 117 
 118   /**
 119    *
 120    **/
 121   protected void writeHeading ()
 122   {
 123     Util.writePackage (stream, v);
 124     Util.writeProlog (stream, ((GenFileStream)stream).name ());
 125 
 126     if (v.comment () != null)
 127       v.comment ().generate ("", stream);
 128 
 129     stream.print ("public class " + v.name () + " implements org.omg.CORBA.portable.IDLEntity");
 130       // There should ALWAYS be at least one:  ValueBase
 131 
 132     stream.println ("{");
 133   } // writeHeading
 134 
 135   /**
 136    *
 137    **/
 138   protected void writeBody ()
 139   {
 140   } // writeBody
 141 
 142   /**
 143    *
 144    **/
 145   protected void writeClosing ()
 146   {
 147    stream.println ("} // class " + v.name ());
 148   } // writeClosing
 149 
 150   /**
 151    *
 152    **/
 153   protected void closeStream ()
 154   {
 155     stream.close ();
 156   } // closeStream
 157 
 158   ///////////////
 159   // From JavaGenerator
 160 
 161   public int helperType (int index, String indent, TCOffsets tcoffsets, String name, SymtabEntry entry, PrintWriter stream)
 162   {
 163     return index;
 164   } // helperType
 165 
 166   public int type (int index, String indent, TCOffsets tcoffsets, String name, SymtabEntry entry, PrintWriter stream) {
 167     stream.println (indent + name + " = " + Util.helperName (entry, true) + ".type ();"); // <d61056>
 168     return index;
 169   } // type
 170 
 171   public void helperRead (String entryName, SymtabEntry entry, PrintWriter stream)
 172   {
 173     stream.println ("    " + entryName + " value = new " + entryName + " ();");
 174     read (0, "    ", "value", entry, stream);
 175     stream.println ("    return value;");
 176   } // helperRead
 177 
 178   public int read (int index, String indent, String name, SymtabEntry entry, PrintWriter stream)
 179   {
 180     return index;
 181   } // read
 182 
 183   public void helperWrite (SymtabEntry entry, PrintWriter stream)
 184   {
 185     write (0, "    ", "value", entry, stream);
 186   } // helperWrite
 187 
 188   public int write (int index, String indent, String name, SymtabEntry entry, PrintWriter stream)
 189   {
 190     return index;
 191   } // write
 192 
 193   // From JavaGenerator
 194   ///////////////
 195 
 196   /**
 197    *
 198    **/
 199   protected void writeAbstract ()
 200   {
 201   } // writeAbstract
 202 
 203   protected Hashtable  symbolTable = null;
 204   protected ForwardValueEntry v = null;
 205   protected PrintWriter stream = null;
 206 } // class ForwardValueGen