/** @throws FacebookException if the GraphObject doesn't have an ID. */
 String getIdOfGraphObject(T graphObject) {
   if (graphObject.asMap().containsKey(ID)) {
     Object obj = graphObject.getProperty(ID);
     if (obj instanceof String) {
       return (String) obj;
     }
   }
   throw new FacebookException("Received an object without an ID.");
 }
  protected String getSectionKeyOfGraphObject(T graphObject) {
    String result = null;

    if (groupByField != null) {
      result = (String) graphObject.getProperty(groupByField);
      if (result != null && result.length() > 0) {
        result = result.substring(0, 1).toUpperCase();
      }
    }

    return (result != null) ? result : "";
  }
  /**
   * Create a mock CmisObject using Mockito that will contain the provided properties
   *
   * @param properties Array of arrays in the form of {{propertyId, displayName, propertyValue}}
   * @param clazz Class object in the CmisObject hierarchy that has to be created
   * @return The mocked CmisObject
   */
  protected <T extends CmisObject> T createMockedCmisObject(Object[][] properties, Class<T> clazz) {
    T object = mock(clazz);
    List<Property<?>> documentProperties = new ArrayList<Property<?>>();
    for (Object[] mockProp : properties) {
      Property prop = createMockedProperty(mockProp[0], mockProp[1], mockProp[2]);
      documentProperties.add(prop);
      when(object.getProperty(mockProp[0].toString())).thenReturn(prop);

      if (PropertyIds.NAME.equals(mockProp[0])) {
        when(object.getName()).thenReturn(mockProp[2].toString());
      }
    }
    when(object.getProperties()).thenReturn(documentProperties);

    return object;
  }
  protected URI getPictureUriOfGraphObject(T graphObject) {
    String uri = null;
    Object o = graphObject.getProperty(PICTURE);
    if (o instanceof String) {
      uri = (String) o;
    } else if (o instanceof JSONObject) {
      ItemPicture itemPicture = GraphObject.Factory.create((JSONObject) o).cast(ItemPicture.class);
      ItemPictureData data = itemPicture.getData();
      if (data != null) {
        uri = data.getUrl();
      }
    }

    if (uri != null) {
      try {
        return new URI(uri);
      } catch (URISyntaxException e) {
      }
    }
    return null;
  }
 protected CharSequence getTitleOfGraphObject(T graphObject) {
   return (String) graphObject.getProperty(NAME);
 }