Home » openjdk-7 » javax » management » modelmbean » [javadoc | source]

    1   /*
    2    * Copyright (c) 2000, 2006, 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    * @author    IBM Corp.
   27    *
   28    * Copyright IBM Corp. 1999-2000.  All rights reserved.
   29    */
   30   
   31   
   32   package javax.management.modelmbean;
   33   
   34   import com.sun.jmx.mbeanserver.GetPropertyAction;
   35   
   36   import java.io.IOException;
   37   import java.io.ObjectInputStream;
   38   import java.io.ObjectOutputStream;
   39   import java.io.ObjectStreamField;
   40   import java.security.AccessController;
   41   
   42   /**
   43   * This exception is thrown when an XML formatted string is being parsed into ModelMBean objects
   44   * or when XML formatted strings are being created from ModelMBean objects.
   45   *
   46   * It is also used to wrapper exceptions from XML parsers that may be used.
   47   *
   48   * <p>The <b>serialVersionUID</b> of this class is <code>3176664577895105181L</code>.
   49   *
   50   * @since 1.5
   51   */
   52   @SuppressWarnings("serial")  // serialVersionUID not constant
   53   public class XMLParseException
   54   extends Exception
   55   {
   56       // Serialization compatibility stuff:
   57       // Two serial forms are supported in this class. The selected form depends
   58       // on system property "jmx.serial.form":
   59       //  - "1.0" for JMX 1.0
   60       //  - any other value for JMX 1.1 and higher
   61       //
   62       // Serial version for old serial form
   63       private static final long oldSerialVersionUID = -7780049316655891976L;
   64       //
   65       // Serial version for new serial form
   66       private static final long newSerialVersionUID = 3176664577895105181L;
   67       //
   68       // Serializable fields in old serial form
   69       private static final ObjectStreamField[] oldSerialPersistentFields =
   70       {
   71         new ObjectStreamField("msgStr", String.class)
   72       };
   73       //
   74       // Serializable fields in new serial form
   75     private static final ObjectStreamField[] newSerialPersistentFields = { };
   76       //
   77       // Actual serial version and serial form
   78       private static final long serialVersionUID;
   79       private static final ObjectStreamField[] serialPersistentFields;
   80       private static boolean compat = false;
   81       static {
   82           try {
   83               GetPropertyAction act = new GetPropertyAction("jmx.serial.form");
   84               String form = AccessController.doPrivileged(act);
   85               compat = (form != null && form.equals("1.0"));
   86           } catch (Exception e) {
   87               // OK: No compat with 1.0
   88           }
   89           if (compat) {
   90               serialPersistentFields = oldSerialPersistentFields;
   91               serialVersionUID = oldSerialVersionUID;
   92           } else {
   93               serialPersistentFields = newSerialPersistentFields;
   94               serialVersionUID = newSerialVersionUID;
   95           }
   96       }
   97       //
   98       // END Serialization compatibility stuff
   99   
  100       /**
  101        * Default constructor .
  102        */
  103       public  XMLParseException ()
  104       {
  105         super("XML Parse Exception.");
  106       }
  107   
  108       /**
  109        * Constructor taking a string.
  110        *
  111        * @param s the detail message.
  112        */
  113       public  XMLParseException (String s)
  114       {
  115         super("XML Parse Exception: " + s);
  116       }
  117       /**
  118        * Constructor taking a string and an exception.
  119        *
  120        * @param e the nested exception.
  121        * @param s the detail message.
  122        */
  123       public  XMLParseException (Exception e, String s)
  124       {
  125         super("XML Parse Exception: " + s + ":" + e.toString());
  126       }
  127   
  128       /**
  129        * Deserializes an {@link XMLParseException} from an {@link ObjectInputStream}.
  130        */
  131       private void readObject(ObjectInputStream in)
  132               throws IOException, ClassNotFoundException {
  133         // New serial form ignores extra field "msgStr"
  134         in.defaultReadObject();
  135       }
  136   
  137   
  138       /**
  139        * Serializes an {@link XMLParseException} to an {@link ObjectOutputStream}.
  140        */
  141       private void writeObject(ObjectOutputStream out)
  142               throws IOException {
  143         if (compat)
  144         {
  145           // Serializes this instance in the old serial form
  146           //
  147           ObjectOutputStream.PutField fields = out.putFields();
  148           fields.put("msgStr", getMessage());
  149           out.writeFields();
  150         }
  151         else
  152         {
  153           // Serializes this instance in the new serial form
  154           //
  155           out.defaultWriteObject();
  156         }
  157       }
  158   }

Home » openjdk-7 » javax » management » modelmbean » [javadoc | source]