code: public static Set<String> splitFilter(String filter) {
  
          if (filter == null) {
              return null;
          }
  
          if (filter.trim().length() == 0) {
              return null;
          }
  
          Set<String> result = new LinkedHashSet<String>();
          for (String s : filter.split(",")) {
              s = s.trim();
              if (s.equals("*")) {
                  return null;
              } else if (s.length() > 0) {
                  result.add(s);
              }
          }
  
          // set a few base properties
          // query name == id (for base type properties)
          result.add(PropertyIds.OBJECT_ID);
          result.add(PropertyIds.OBJECT_TYPE_ID);
          result.add(PropertyIds.BASE_TYPE_ID);
  
          return result;
      }
docs: Splits a filter statement into a collection of properties. If
  <code>filter</code> is <code>null</code>, empty or one of the properties
  is '*' , an empty collection will be returned.
  
  @param filter the filter string
  @return the set of components of the filter