/**
   * Obtain and return the value of a specific attribute of this MBean.
   *
   * @param name Name of the requested attribute
   * @exception AttributeNotFoundException if this attribute is not supported by this MBean
   * @exception MBeanException if the initializer of an object throws an exception
   * @exception ReflectionException if a Java reflection exception occurs when invoking the getter
   */
  @Override
  public Object getAttribute(String name)
      throws AttributeNotFoundException, MBeanException, ReflectionException, RemoteException,
          RemoteException {

    // Validate the input parameters
    if (name == null)
      throw new RuntimeOperationsException(
          new IllegalArgumentException("Attribute name is null"), "Attribute name is null");

    ContextResourceLinkRemoteInterface cl = null;
    try {
      cl = (ContextResourceLinkRemoteInterface) getManagedResource();
    } catch (InstanceNotFoundException e) {
      throw new MBeanException(e);
    } catch (InvalidTargetObjectTypeException e) {
      throw new MBeanException(e);
    }

    String value = null;
    if ("global".equals(name)) {
      return (cl.getGlobal());
    } else if ("description".equals(name)) {
      return (cl.getDescription());
    } else if ("name".equals(name)) {
      return (cl.getName());
    } else if ("type".equals(name)) {
      return (cl.getType());
    } else {
      value = (String) cl.getProperty(name);
      if (value == null) {
        throw new AttributeNotFoundException("Cannot find attribute " + name);
      }
    }

    return value;
  }