code: private String getComponentLocation(UIComponent component)
      {
          Location location = (Location) component.getAttributes()
                  .get(UIComponent.VIEW_LOCATION_KEY);
          if (location != null)
          {
              return location.toString();
          }
          return null;
      }
docs: /*
  private void isIdValid(String string)
  {
  
  is there any component identifier ?
  if (string == null)
  {
  return;
  }
  
  Component identifiers must obey the following syntax restrictions:
  1. Must not be a zero-length String.
  if (string.length() == 0)
  {
  throw new IllegalArgumentException("component identifier must not be a zero-length String");
  }
  
  If new id is the same as old it must be valid
  if (string.equals(_id))
  {
  return;
  }
  
  2. First character must be a letter or an underscore ('_').
  if (!Character.isLetter(string.charAt(0)) && string.charAt(0) != '_')
  {
  throw new IllegalArgumentException("component identifier's first character must be a letter "
  + "or an underscore ('_')! But it is \""
  + string.charAt(0) + "\"");
  }
  for (int i = 1; i < string.length(); i++)
  {
  char c = string.charAt(i);
  3. Subsequent characters must be a letter, a digit, an underscore ('_'), or a dash ('-').
  if (!Character.isLetterOrDigit(c) && c != '-' && c != '_')
  {
  throw new IllegalArgumentException("Subsequent characters of component identifier must be a letter, "
  + "a digit, an underscore ('_'), or a dash ('-')! "
  + "But component identifier contains \""
  + c + "\"");
  }
  }
  }