code: public String[] get_attribute_list(final DeviceProxy deviceProxy) throws DevFailed {
          build_connection(deviceProxy);
  
          final int retries = deviceProxy.transparent_reconnection ? 2 : 1;
          for (int oneTry=1 ; oneTry<=retries ; oneTry++) {
              try {
                  if (deviceProxy.url.protocol == TANGO) {
                      // Read All attribute config
                      final String[] wildcard = new String[1];
  
                      if (deviceProxy.device_3 != null) {
                          wildcard[0] = TangoConst.Tango_AllAttr_3;
                      } else {
                         wildcard[0] = TangoConst.Tango_AllAttr;
                      }
                      final AttributeInfo[] ac = get_attribute_info(deviceProxy, wildcard);
                      final String[] result = new String[ac.length];
                      for (int i = 0; i < ac.length; i++) {
                          result[i] = ac[i].name;
                      }
                      return result;
                  } else {
                      return deviceProxy.taco_device.get_attribute_list();
                  }
              }
              catch (DevFailed e) {
                  if (oneTry>=retries)
                      throw e;
                  //  else retry
              }
          }
          return null;    //  cannot occur
      }
docs: ==========================================================================