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

    1   /*
    2    * Copyright (c) 2000, 2008, 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   package javax.management.relation;
   27   
   28   
   29   import com.sun.jmx.mbeanserver.GetPropertyAction;
   30   
   31   import java.io.IOException;
   32   import java.io.ObjectInputStream;
   33   import java.io.ObjectOutputStream;
   34   import java.io.ObjectStreamField;
   35   import java.io.Serializable;
   36   
   37   import java.security.AccessController;
   38   import java.util.Iterator;
   39   
   40   /**
   41    * Represents the result of a multiple access to several roles of a relation
   42    * (either for reading or writing).
   43    *
   44    * <p>The <b>serialVersionUID</b> of this class is <code>-6304063118040985512L</code>.
   45    *
   46    * @since 1.5
   47    */
   48   @SuppressWarnings("serial")
   49   public class RoleResult implements Serializable {
   50   
   51       // Serialization compatibility stuff:
   52       // Two serial forms are supported in this class. The selected form depends
   53       // on system property "jmx.serial.form":
   54       //  - "1.0" for JMX 1.0
   55       //  - any other value for JMX 1.1 and higher
   56       //
   57       // Serial version for old serial form
   58       private static final long oldSerialVersionUID = 3786616013762091099L;
   59       //
   60       // Serial version for new serial form
   61       private static final long newSerialVersionUID = -6304063118040985512L;
   62       //
   63       // Serializable fields in old serial form
   64       private static final ObjectStreamField[] oldSerialPersistentFields =
   65       {
   66         new ObjectStreamField("myRoleList", RoleList.class),
   67         new ObjectStreamField("myRoleUnresList", RoleUnresolvedList.class)
   68       };
   69       //
   70       // Serializable fields in new serial form
   71       private static final ObjectStreamField[] newSerialPersistentFields =
   72       {
   73         new ObjectStreamField("roleList", RoleList.class),
   74         new ObjectStreamField("unresolvedRoleList", RoleUnresolvedList.class)
   75       };
   76       //
   77       // Actual serial version and serial form
   78       private static final long serialVersionUID;
   79       /**
   80        * @serialField roleList RoleList List of roles successfully accessed
   81        * @serialField unresolvedRoleList RoleUnresolvedList List of roles unsuccessfully accessed
   82        */
   83       private static final ObjectStreamField[] serialPersistentFields;
   84       private static boolean compat = false;
   85       static {
   86           try {
   87               GetPropertyAction act = new GetPropertyAction("jmx.serial.form");
   88               String form = AccessController.doPrivileged(act);
   89               compat = (form != null && form.equals("1.0"));
   90           } catch (Exception e) {
   91               // OK : Too bad, no compat with 1.0
   92           }
   93           if (compat) {
   94               serialPersistentFields = oldSerialPersistentFields;
   95               serialVersionUID = oldSerialVersionUID;
   96           } else {
   97               serialPersistentFields = newSerialPersistentFields;
   98               serialVersionUID = newSerialVersionUID;
   99           }
  100       }
  101       //
  102       // END Serialization compatibility stuff
  103   
  104       //
  105       // Private members
  106       //
  107   
  108       /**
  109        * @serial List of roles successfully accessed
  110        */
  111       private RoleList roleList = null;
  112   
  113       /**
  114        * @serial List of roles unsuccessfully accessed
  115        */
  116       private RoleUnresolvedList unresolvedRoleList = null;
  117   
  118       //
  119       // Constructor
  120       //
  121   
  122       /**
  123        * Constructor.
  124        *
  125        * @param list  list of roles successfully accessed.
  126        * @param unresolvedList  list of roles not accessed (with problem
  127        * descriptions).
  128        */
  129       public RoleResult(RoleList list,
  130                         RoleUnresolvedList unresolvedList) {
  131   
  132           setRoles(list);
  133           setRolesUnresolved(unresolvedList);
  134           return;
  135       }
  136   
  137       //
  138       // Accessors
  139       //
  140   
  141       /**
  142        * Retrieves list of roles successfully accessed.
  143        *
  144        * @return a RoleList
  145        *
  146        * @see #setRoles
  147        */
  148       public RoleList getRoles() {
  149           return roleList;
  150       }
  151   
  152       /**
  153        * Retrieves list of roles unsuccessfully accessed.
  154        *
  155        * @return a RoleUnresolvedList.
  156        *
  157        * @see #setRolesUnresolved
  158        */
  159       public RoleUnresolvedList getRolesUnresolved() {
  160           return unresolvedRoleList;
  161       }
  162   
  163       /**
  164        * Sets list of roles successfully accessed.
  165        *
  166        * @param list  list of roles successfully accessed
  167        *
  168        * @see #getRoles
  169        */
  170       public void setRoles(RoleList list) {
  171           if (list != null) {
  172   
  173               roleList = new RoleList();
  174   
  175               for (Iterator<?> roleIter = list.iterator();
  176                    roleIter.hasNext();) {
  177                   Role currRole = (Role)(roleIter.next());
  178                   roleList.add((Role)(currRole.clone()));
  179               }
  180           } else {
  181               roleList = null;
  182           }
  183           return;
  184       }
  185   
  186       /**
  187        * Sets list of roles unsuccessfully accessed.
  188        *
  189        * @param unresolvedList  list of roles unsuccessfully accessed
  190        *
  191        * @see #getRolesUnresolved
  192        */
  193       public void setRolesUnresolved(RoleUnresolvedList unresolvedList) {
  194           if (unresolvedList != null) {
  195   
  196               unresolvedRoleList = new RoleUnresolvedList();
  197   
  198               for (Iterator<?> roleUnresIter = unresolvedList.iterator();
  199                    roleUnresIter.hasNext();) {
  200                   RoleUnresolved currRoleUnres =
  201                       (RoleUnresolved)(roleUnresIter.next());
  202                   unresolvedRoleList.add((RoleUnresolved)(currRoleUnres.clone()));
  203               }
  204           } else {
  205               unresolvedRoleList = null;
  206           }
  207           return;
  208       }
  209   
  210       /**
  211        * Deserializes a {@link RoleResult} from an {@link ObjectInputStream}.
  212        */
  213       private void readObject(ObjectInputStream in)
  214               throws IOException, ClassNotFoundException {
  215         if (compat)
  216         {
  217           // Read an object serialized in the old serial form
  218           //
  219           ObjectInputStream.GetField fields = in.readFields();
  220           roleList = (RoleList) fields.get("myRoleList", null);
  221           if (fields.defaulted("myRoleList"))
  222           {
  223             throw new NullPointerException("myRoleList");
  224           }
  225           unresolvedRoleList = (RoleUnresolvedList) fields.get("myRoleUnresList", null);
  226           if (fields.defaulted("myRoleUnresList"))
  227           {
  228             throw new NullPointerException("myRoleUnresList");
  229           }
  230         }
  231         else
  232         {
  233           // Read an object serialized in the new serial form
  234           //
  235           in.defaultReadObject();
  236         }
  237       }
  238   
  239   
  240       /**
  241        * Serializes a {@link RoleResult} to an {@link ObjectOutputStream}.
  242        */
  243       private void writeObject(ObjectOutputStream out)
  244               throws IOException {
  245         if (compat)
  246         {
  247           // Serializes this instance in the old serial form
  248           //
  249           ObjectOutputStream.PutField fields = out.putFields();
  250           fields.put("myRoleList", roleList);
  251           fields.put("myRoleUnresList", unresolvedRoleList);
  252           out.writeFields();
  253         }
  254         else
  255         {
  256           // Serializes this instance in the new serial form
  257           //
  258           out.defaultWriteObject();
  259         }
  260       }
  261   }

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