Home » Open-JDK-6.b17-src » javax » activation » [javadoc | source]

    1   /*
    2    * Copyright 1997-1999 Sun Microsystems, Inc.  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.  Sun designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
   22    * CA 95054 USA or visit www.sun.com if you need additional information or
   23    * have any questions.
   24    */
   25   
   26   package javax.activation;
   27   
   28   import java.io;
   29   import java.beans.Beans;
   30   
   31   /**
   32    * The CommandInfo class is used by CommandMap implementations to
   33    * describe the results of command requests. It provides the requestor
   34    * with both the verb requested, as well as an instance of the
   35    * bean. There is also a method that will return the name of the
   36    * class that implements the command but <i>it is not guaranteed to
   37    * return a valid value</i>. The reason for this is to allow CommandMap
   38    * implmentations that subclass CommandInfo to provide special
   39    * behavior. For example a CommandMap could dynamically generate
   40    * JavaBeans. In this case, it might not be possible to create an
   41    * object with all the correct state information solely from the class
   42    * name.
   43    *
   44    * @since 1.6
   45    */
   46   
   47   public class CommandInfo {
   48       private String verb;
   49       private String className;
   50   
   51       /**
   52        * The Constructor for CommandInfo.
   53        * @param verb The command verb this CommandInfo decribes.
   54        * @param className The command's fully qualified class name.
   55        */
   56       public CommandInfo(String verb, String className) {
   57           this.verb = verb;
   58           this.className = className;
   59       }
   60   
   61       /**
   62        * Return the command verb.
   63        *
   64        * @return the command verb.
   65        */
   66       public String getCommandName() {
   67           return verb;
   68       }
   69   
   70       /**
   71        * Return the command's class name. <i>This method MAY return null in
   72        * cases where a CommandMap subclassed CommandInfo for its
   73        * own purposes.</i> In other words, it might not be possible to
   74        * create the correct state in the command by merely knowing
   75        * its class name. <b>DO NOT DEPEND ON THIS METHOD RETURNING
   76        * A VALID VALUE!</b>
   77        *
   78        * @return The class name of the command, or <i>null</i>
   79        */
   80       public String getCommandClass() {
   81           return className;
   82       }
   83   
   84       /**
   85        * Return the instantiated JavaBean component.
   86        * <p>
   87        * Begin by instantiating the component with
   88        * <code>Beans.instantiate()</code>.
   89        * <p>
   90        * If the bean implements the <code>javax.activation.CommandObject</code>
   91        * interface, call its <code>setCommandContext</code> method.
   92        * <p>
   93        * If the DataHandler parameter is null, then the bean is
   94        * instantiated with no data. NOTE: this may be useful
   95        * if for some reason the DataHandler that is passed in
   96        * throws IOExceptions when this method attempts to
   97        * access its InputStream. It will allow the caller to
   98        * retrieve a reference to the bean if it can be
   99        * instantiated.
  100        * <p>
  101        * If the bean does NOT implement the CommandObject interface,
  102        * this method will check if it implements the
  103        * java.io.Externalizable interface. If it does, the bean's
  104        * readExternal method will be called if an InputStream
  105        * can be acquired from the DataHandler.<p>
  106        *
  107        * @param dh        The DataHandler that describes the data to be
  108        *                  passed to the command.
  109        * @param loader    The ClassLoader to be used to instantiate the bean.
  110        * @return The bean
  111        * @see java.beans.Beans#instantiate
  112        * @see javax.activation.CommandObject
  113        */
  114       public Object getCommandObject(DataHandler dh, ClassLoader loader)
  115                           throws IOException, ClassNotFoundException {
  116           Object new_bean = null;
  117   
  118           // try to instantiate the bean
  119           new_bean = java.beans.Beans.instantiate(loader, className);
  120   
  121           // if we got one and it is a CommandObject
  122           if (new_bean != null) {
  123               if (new_bean instanceof CommandObject) {
  124                   ((CommandObject)new_bean).setCommandContext(verb, dh);
  125               } else if (new_bean instanceof Externalizable) {
  126                   if (dh != null) {
  127                       InputStream is = dh.getInputStream();
  128                       if (is != null) {
  129                           ((Externalizable)new_bean).readExternal(
  130                                                  new ObjectInputStream(is));
  131                       }
  132                   }
  133               }
  134           }
  135   
  136           return new_bean;
  137       }
  138   }

Home » Open-JDK-6.b17-src » javax » activation » [javadoc | source]