User: ejort   
  Date: 02/03/16 04:38:51

  Modified:    src/main/javax/management/relation Tag: BranchMX_1_0
                        RelationService.java RelationServiceMBean.java
                        RelationTypeSupport.java Role.java RoleList.java
                        RoleUnresolved.java RoleUnresolvedList.java
                        RoleValidator.java
  Log:
  Relations, Queries and MBeanRegistry synched with head
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.1   +110 -14   jmx/src/main/javax/management/relation/RelationService.java
  
  Index: RelationService.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jmx/src/main/javax/management/relation/RelationService.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- RelationService.java      1 Mar 2002 19:25:57 -0000       1.4
  +++ RelationService.java      16 Mar 2002 12:38:51 -0000      1.4.2.1
  @@ -15,7 +15,9 @@
   import java.util.Stack;
   
   import javax.management.Attribute;
  +import javax.management.AttributeNotFoundException;
   import javax.management.InstanceNotFoundException;
  +import javax.management.InvalidAttributeValueException;
   import javax.management.MBeanException;
   import javax.management.MBeanNotificationInfo;
   import javax.management.MBeanRegistration;
  @@ -32,10 +34,24 @@
   /**
    * Implements the management interface for a relation service.<p>
    *
  + * <p><b>Revisions:</b>
  + * <p><b>20020311 Adrian Brock:</b>
  + * <ul>
  + * <li>Fixed setRole for external MBean and exception handling
  + * <li>EmptyStack exception in purging
  + * <li>Unregistered mbeans should only contain relation mbeans
  + * <li>Unregister notifications not working after change to MBean Filter
  + * </ul>
  + * <p><b>20020312 Adrian Brock:</b>
  + * <ul>
  + * <li>Fixed wrong exception types thrown and missing exceptions
  + * <li>Allow null role list in createRelation
  + * </ul>
  + *
    * @see RelationServiceMBean
    *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>.
  - * @version $Revision: 1.4 $
  + * @version $Revision: 1.4.2.1 $
    */
   public class RelationService
     extends NotificationBroadcasterSupport
  @@ -130,12 +146,13 @@
       throws IllegalArgumentException, NoSuchMethodException,
              RelationServiceNotRegisteredException, InvalidRelationIdException,
              InvalidRelationServiceException, RelationTypeNotFoundException,
  -           InvalidRoleValueException, RoleNotFoundException
  +           InvalidRoleValueException, RoleNotFoundException,
  +           InstanceNotFoundException
     {
       // Check we have a relation
  -    isActive();
       if (relation == null)
         throw new IllegalArgumentException("null relation");
  +    isActive();
   
       // Get the information we need from the relation
       ObjectName otherService = null;
  @@ -153,6 +170,10 @@
         roleList = (RoleList) server.invoke(relation, "retrieveAllRoles",
                                             new Object[0], new String[0]);
       }
  +    catch (InstanceNotFoundException e)
  +    {
  +       throw e;
  +    }
       catch (Exception e)
       {
         throw new NoSuchMethodException("Not a relation or not registered");
  @@ -189,7 +210,7 @@
       {
         String name = relationType.getRelationTypeName();
         if (typesByName.containsKey(name))
  -        throw new IllegalArgumentException("duplicate relation id");
  +        throw new InvalidRelationTypeException("duplicate relation id: " + name);
         validateRelationType(relationType);
         typesByName.put(name, relationType);
       }
  @@ -198,6 +219,9 @@
     public Integer checkRoleReading(String roleName, String relationTypeName)
       throws IllegalArgumentException, RelationTypeNotFoundException
     {
  +    if (roleName == null)
  +       throw new IllegalArgumentException("Null role name");
  +
       // Get the relation type
       RelationType relationType = retrieveRelationTypeForName(relationTypeName);
   
  @@ -224,6 +248,11 @@
                                     Boolean initFlag)
       throws IllegalArgumentException, RelationTypeNotFoundException
     {
  +    if (role == null)
  +       throw new IllegalArgumentException("Null role name");
  +    if (initFlag == null)
  +       throw new IllegalArgumentException("Null init flag");
  +
       // Get the relation type
       RelationType relationType = retrieveRelationTypeForName(relationTypeName);
   
  @@ -254,7 +283,11 @@
              RoleNotFoundException
     {
       // Take a copy of the role list
  -    RoleList copy = new RoleList(roleList);
  +    RoleList copy = null;
  +    if (roleList != null)
  +       copy = new RoleList(roleList);
  +    else
  +       copy = new RoleList();
   
       // Create a relation
       isActive();
  @@ -284,7 +317,8 @@
       synchronized (typesByName)
       {
         if (typesByName.containsKey(relationTypeName))
  -        throw new IllegalArgumentException("duplicate relation id");
  +        throw new InvalidRelationTypeException("duplicate relation id: "
  +                                               + relationTypeName);
         RelationType relationType = new RelationTypeSupport(relationTypeName,
                                                             roleInfos);
         typesByName.put(relationTypeName, relationType);
  @@ -625,6 +659,46 @@
       return relationType.getRoleInfos();
     }
   
  +  public RoleResult getRoles(String relationId, String[] roleNames)
  +    throws IllegalArgumentException, RelationNotFoundException,
  +           RelationServiceNotRegisteredException
  +  {
  +    // Get the relation object name
  +    if (roleNames == null)
  +      throw new IllegalArgumentException("null role names");
  +    isActive();
  +    Object relation = retrieveRelationForId(relationId);
  +    
  +    // Ask the relation for the role value
  +    if (relation instanceof RelationSupport)
  +    {
  +      return ((RelationSupport) relation).getRoles(roleNames);
  +    }
  +    else
  +    {
  +      ObjectName objectName = (ObjectName) relation;
  +      try
  +      {
  +        RoleResult result = (RoleResult) server.invoke(objectName, "getRoles",
  +        new Object[] { roleNames },
  +        new String[] { new String[0].getClass().getName() });
  +        return result;
  +      }
  +      catch (InstanceNotFoundException e)
  +      {
  +        throw new RelationNotFoundException(objectName.toString());
  +      }
  +      catch (MBeanException e)
  +      {
  +        throw new RuntimeException(e.toString());
  +      }
  +      catch (ReflectionException e)
  +      {
  +        throw new RuntimeException(e.toString());
  +      }
  +    }
  +  }
  +
     public Boolean hasRelation(String relationId)
       throws IllegalArgumentException
     {
  @@ -654,6 +728,8 @@
       if (relationId == null)
         throw new IllegalArgumentException("null relation id");
       Object result = relationsById.get(relationId);
  +    if (result == null)
  +       throw new RelationNotFoundException(relationId);
       if (result instanceof ObjectName)
          return (ObjectName) result;
       else
  @@ -665,12 +741,10 @@
     {
       isActive();
       // Keep going until they are all done
  -    while (true)
  +    while (unregistered.empty() == false)
       {
         // Get the next object
         ObjectName mbean = (ObjectName) unregistered.pop();
  -      if (mbean == null)
  -        break;
   
         // Keep track of the remain relations/roles
         HashMap relationRoles = new HashMap();
  @@ -772,6 +846,7 @@
   
       // Check to see whether this will remove the MBean
       Iterator iterator = unregMBeans.iterator();
  +    while (iterator.hasNext())
       {
          // Remove the MBeans relation role map
          ObjectName mbean = (ObjectName) iterator.next();
  @@ -781,8 +856,9 @@
          // We were the last?
          if (idRolesMap.size() == 0)
            idRolesMapByMBean.remove(mbean);
  -       else
  -         // Not the last, we aren't unregistering it
  +
  +       // Is this an MBean a relation?
  +       if (idsByRelation.containsKey(mbean) == false)
            iterator.remove();
       }
   
  @@ -904,6 +980,12 @@
         type = RelationNotification.RELATION_MBEAN_UPDATE;
         description = "Update of external relation.";
       }
  +    if (newRole == null)
  +       throw new IllegalArgumentException("null role");
  +
  +    if (oldRoleValue == null)
  +       throw new IllegalArgumentException("null old role value");
  +
       // Send the notification
       sendNotification(type, description, relationId, null, newRole, oldRoleValue);
     }
  @@ -934,8 +1016,7 @@
         ObjectName objectName = (ObjectName) relation;
         try
         {
  -        server.invoke(objectName, "setRole", new Object[] { role },
  -                      new String[] { "javax.management.relation.Role" });
  +        server.setAttribute(objectName, new Attribute("Role", role));
         }
         catch (InstanceNotFoundException e)
         {
  @@ -946,9 +1027,19 @@
           Exception e = mbe.getTargetException();
           if (e instanceof RoleNotFoundException)
             throw (RoleNotFoundException) e;
  +        else if (e instanceof InvalidRoleValueException)
  +          throw (InvalidRoleValueException) e;
           else
             throw new RuntimeException(e.toString());
         }
  +      catch (AttributeNotFoundException e)
  +      {
  +        throw new RuntimeException(e.toString());
  +      }
  +      catch (InvalidAttributeValueException e)
  +      {
  +        throw new RuntimeException(e.toString());
  +      }
         catch (ReflectionException e)
         {
           throw new RuntimeException(e.toString());
  @@ -1017,6 +1108,9 @@
         throw new IllegalArgumentException("null old role value");
       isActive();
   
  +    if (relationsById.containsKey(relationId) == false)
  +      throw new RelationNotFoundException("Invalid relation id: " + relationId);
  +
       // Get the role name and new Value
       String roleName = newRole.getRoleName();
       ArrayList newRoleValue = (ArrayList) newRole.getRoleValue();
  @@ -1079,7 +1173,7 @@
       // Install our notification listener we aren't interested in registration
       // We aren't monitoring anything at start-up
       filter = new MBeanServerNotificationFilter();
  -    filter.disableType(MBeanServerNotification.REGISTRATION_NOTIFICATION);
  +    filter.enableType(MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
       filter.disableAllObjectNames();
       delegate = new ObjectName(MBeanServerImpl.MBEAN_SERVER_DELEGATE);
       server.addNotificationListener(delegate, this, filter, null);
  @@ -1258,6 +1352,8 @@
     private RelationType retrieveRelationTypeForName(String relationTypeName)
       throws IllegalArgumentException, RelationTypeNotFoundException
     {
  +    if (relationTypeName == null)
  +       throw new IllegalArgumentException("Null relation type name");
       // Get the relation type
       RelationType result = (RelationType) typesByName.get(relationTypeName);
       if (result == null)
  
  
  
  1.4.2.1   +29 -2     jmx/src/main/javax/management/relation/RelationServiceMBean.java
  
  Index: RelationServiceMBean.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jmx/src/main/javax/management/relation/RelationServiceMBean.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- RelationServiceMBean.java 1 Mar 2002 19:25:57 -0000       1.4
  +++ RelationServiceMBean.java 16 Mar 2002 12:38:51 -0000      1.4.2.1
  @@ -9,6 +9,7 @@
   import java.util.List;
   import java.util.Map;
   
  +import javax.management.InstanceNotFoundException;
   import javax.management.ObjectName;
   
   /**
  @@ -21,8 +22,15 @@
    * in their relation types/roles.<br>
    * Allowing relations to be queried.
    *
  + * <p><b>Revisions:</b>
  + * <p><b>20020312 Adrian Brock:</b>
  + * <ul>
  + * <li>Fixed wrong exception types thrown
  + * <li>Add missing method getRoles(String, String[])
  + * </ul>
  + *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>.
  - * @version $Revision: 1.4 $
  + * @version $Revision: 1.4.2.1 $
    */
   public interface RelationServiceMBean
   {
  @@ -42,6 +50,8 @@
       *            Relation interface.
       * @exception RelationServiceNotRegisteredException when the relation
       *            service is not registered with the MBeanServer.
  +    * @exception InstanceNotFoundException when the relation is not
  +    *            registered in the MBeanServer.
       * @exception InvalidRelationIdException if the relation id 
       *            is already used by another relation.
       * @exception InvalidRelationServiceException if the relation service in 
  @@ -61,7 +71,8 @@
        throws IllegalArgumentException, NoSuchMethodException,
               RelationServiceNotRegisteredException, InvalidRelationIdException,
               InvalidRelationServiceException, RelationTypeNotFoundException,
  -            InvalidRoleValueException, RoleNotFoundException;
  +            InvalidRoleValueException, RoleNotFoundException,
  +            InstanceNotFoundException;
   
      /**
       * Add a relation type to the relation service. 
  @@ -329,6 +340,22 @@
       */
      public List getRoleInfos(String relationTypeName)
        throws IllegalArgumentException, RelationTypeNotFoundException;
  +
  +   /**
  +    * Retrieves selected roles for a relation.
  +    *
  +    * @param relationId the relation id
  +    * @param roleNames an array of role name
  +    * @return a RoleResult containing resolved and unresolved roles.
  +    * @exception IllegalArgumentException for a null parameter.
  +    * @exception RelationNotFoundException when the relation id does not
  +    *            exist.
  +    * @exception RelationServiceNotRegisteredException when the relation 
  +    *            service is not registered with an MBeanServer.
  +    */
  +   public RoleResult getRoles(String relationId, String[] roleNames)
  +     throws IllegalArgumentException, RelationNotFoundException,
  +            RelationServiceNotRegisteredException;
   
      /**
       * Checks whether the relation service has the passed relation id.
  
  
  
  1.3.2.1   +9 -2      jmx/src/main/javax/management/relation/RelationTypeSupport.java
  
  Index: RelationTypeSupport.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jmx/src/main/javax/management/relation/RelationTypeSupport.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- RelationTypeSupport.java  8 Feb 2002 21:17:54 -0000       1.3
  +++ RelationTypeSupport.java  16 Mar 2002 12:38:51 -0000      1.3.2.1
  @@ -15,10 +15,15 @@
    * This class can be used to implement relation types.<p>
    *
    * It holds RoleInfo objects for all roles in the relation.
  + *
  + * <p><b>Revisions:</b>
  + * <p><b>20020312 Adrian Brock:</b>
  + * <ul>
  + * <li>Fixed error handling for getRoleInfo
  + * </ul>
    * 
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>.
  - * @version $Revision: 1.3 $
  - *
  + * @version $Revision: 1.3.2.1 $
    */
   public class RelationTypeSupport
     implements RelationType
  @@ -108,6 +113,8 @@
     public RoleInfo getRoleInfo(String roleInfoName)
       throws RoleInfoNotFoundException
     {
  +    if (roleInfoName == null)
  +       throw new IllegalArgumentException("Null role info name");
       RoleInfo result = null;
       ArrayList temp = new ArrayList(roleInfos);
       Iterator iterator = temp.iterator();
  
  
  
  1.3.2.1   +3 -1      jmx/src/main/javax/management/relation/Role.java
  
  Index: Role.java
  ===================================================================
  RCS file: /cvsroot/jboss/jmx/src/main/javax/management/relation/Role.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- Role.java 8 Feb 2002 21:17:54 -0000       1.3
  +++ Role.java 16 Mar 2002 12:38:51 -0000      1.3.2.1
  @@ -17,7 +17,7 @@
    * the MBeans in the role.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.3.2.1 $
    */
   public class Role
     implements Serializable
  @@ -139,6 +139,8 @@
   
      /**
       * Clones the object.
  +    *
  +    * @info.todo shouldn't use the copy constructor?
       *
       * @return a copy of the role
       */
  
  
  
  1.3.2.1   +8 -2      jmx/src/main/javax/management/relation/RoleList.java
  
  Index: RoleList.java
  ===================================================================
  RCS file: /cvsroot/jboss/jmx/src/main/javax/management/relation/RoleList.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- RoleList.java     8 Feb 2002 21:17:54 -0000       1.3
  +++ RoleList.java     16 Mar 2002 12:38:51 -0000      1.3.2.1
  @@ -16,8 +16,14 @@
    * I think the idea is supposed to be that only roles should be in the
    * list. But this isn't true.
    *
  + * <p><b>Revisions:</b>
  + * <p><b>20020313 Adrian Brock:</b>
  + * <ul>
  + * <li>Fix the cloning
  + * </ul>
  + *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.3.2.1 $
    */
   public class RoleList
     extends ArrayList
  @@ -172,7 +178,7 @@
       */
      public Object clone()
      {
  -     return new RoleList(this);
  +       return super.clone();
      }
   }
   
  
  
  
  1.3.2.1   +3 -1      jmx/src/main/javax/management/relation/RoleUnresolved.java
  
  Index: RoleUnresolved.java
  ===================================================================
  RCS file: /cvsroot/jboss/jmx/src/main/javax/management/relation/RoleUnresolved.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- RoleUnresolved.java       8 Feb 2002 21:17:54 -0000       1.3
  +++ RoleUnresolved.java       16 Mar 2002 12:38:51 -0000      1.3.2.1
  @@ -18,7 +18,7 @@
    * was passed and the problem type.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.3.2.1 $
    */
   public class RoleUnresolved
     implements Serializable
  @@ -145,6 +145,8 @@
   
      /**
       * Clones the object.
  +    *
  +    * @info.todo shouldn't use the copy constructor?
       */
      public Object clone()
      {
  
  
  
  1.3.2.1   +8 -2      jmx/src/main/javax/management/relation/RoleUnresolvedList.java
  
  Index: RoleUnresolvedList.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jmx/src/main/javax/management/relation/RoleUnresolvedList.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- RoleUnresolvedList.java   8 Feb 2002 21:17:54 -0000       1.3
  +++ RoleUnresolvedList.java   16 Mar 2002 12:38:51 -0000      1.3.2.1
  @@ -13,8 +13,14 @@
   /**
    * A list of unresolved roles.
    *
  + * <p><b>Revisions:</b>
  + * <p><b>20020313 Adrian Brock:</b>
  + * <ul>
  + * <li>Fix the cloning
  + * </ul>
  + *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>
  - * @version $Revision: 1.3 $
  + * @version $Revision: 1.3.2.1 $
    */
   public class RoleUnresolvedList
     extends ArrayList
  @@ -171,7 +177,7 @@
       */
      public Object clone()
      {
  -     return new RoleUnresolvedList(this);
  +      return super.clone();
      }
   }
   
  
  
  
  1.1.2.1   +14 -2     jmx/src/main/javax/management/relation/RoleValidator.java
  
  Index: RoleValidator.java
  ===================================================================
  RCS file: /cvsroot/jboss/jmx/src/main/javax/management/relation/RoleValidator.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- RoleValidator.java        26 Jan 2002 15:13:24 -0000      1.1
  +++ RoleValidator.java        16 Mar 2002 12:38:51 -0000      1.1.2.1
  @@ -20,8 +20,15 @@
    *
    * It is package private and NOT part of the specification.
    *
  + * <p><b>Revisions:</b>
  + * <p><b>20020311 Adrian Brock:</b>
  + * <ul>
  + * <li>ValidateRole always failed
  + * <li>Throws wrong exception when not writable
  + * </ul>
  + *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Adrian Brock</a>.
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.1.2.1 $
    *
    */
   class RoleValidator
  @@ -163,9 +170,12 @@
     {
       int status = checkRole(relationService, server, relationTypeName, role,
                              write);
  +
       if (status == RoleStatus.NO_ROLE_WITH_NAME)
         throw new RoleNotFoundException(role.getRoleName());
  -    else
  +    if (status == RoleStatus.ROLE_NOT_WRITABLE)
  +      throw new RoleNotFoundException(role.getRoleName() + " not writable");
  +    else if (status != 0)
         throw new InvalidRoleValueException(role.getRoleName());
     }
   
  @@ -215,6 +225,8 @@
         int status = unresolved.getProblemType();
         if (status == RoleStatus.NO_ROLE_WITH_NAME)
           throw new RoleNotFoundException(unresolved.getRoleName());
  +      if (status == RoleStatus.ROLE_NOT_WRITABLE)
  +        throw new RoleNotFoundException(unresolved.getRoleName() + " not writable");
         else
           throw new InvalidRoleValueException(unresolved.getRoleName());
       }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to