PropertyHelper { public static boolean containsArguments(String propertyId) { if (!propertyId.contains("$")) { return false; } Matcher matcher = CHECK_FOR_METRIC_ARGUMENTS_REGEX.matcher(propertyId); return matcher.find(); }  static String getPropertyId(String category, String name); static Set<String> getPropertyIds(Resource.Type resourceType); static Set<String> getPropertyIds(Map<String, Map<String, PropertyInfo>> componentPropertyInfoMap ); static Map<String, Map<String, PropertyInfo>> getMetricPropertyIds(Resource.Type resourceType); static Map<String, Map<String, PropertyInfo>> getSQLServerPropertyIds(Resource.Type resourceType); static Map<String, Map<String, PropertyInfo>> getJMXPropertyIds(Resource.Type resourceType); static Map<Resource.Type, String> getKeyPropertyIds(Resource.Type resourceType); static String getPropertyName(String absProperty); static String getPropertyCategory(String property); static Set<String> getCategories(Set<String> propertyIds); static boolean containsProperty(Set<String> propertyIds, String propertyId); static boolean containsArguments(String propertyId); static Set<String> getAssociatedPropertyIds(Request request); static Map<String, Object> getProperties(Resource resource); static Request getCreateRequest(Set<Map<String, Object>> properties,
                                         Map<String, String> requestInfoProperties); static Request getReadRequest(Set<String> propertyIds); static Request getReadRequest(Set<String> propertyIds, Map<String,
      TemporalInfo> mapTemporalInfo); static Request getReadRequest(Set<String> propertyIds,
      Map<String, String> requestInfoProperties,
      Map<String, TemporalInfo> mapTemporalInfo, PageRequest pageRequest,
      SortRequest sortRequest); static Request getReadRequest(String ... propertyIds); static Request getUpdateRequest(Map<String, Object> properties,
                                         Map<String, String> requestInfoProperties); static void updateMetricsWithAggregateFunctionSupport(Map<String, Map<String, PropertyInfo>> metrics); static boolean hasAggregateFunctionSuffix(String propertyId); static Map<String, org.apache.ambari.server.state.stack.Metric> processRpcMetricDefinition(String metricType,
      String componentName, String propertyId, org.apache.ambari.server.state.stack.Metric metric); static final List<String> AGGREGATE_FUNCTION_IDENTIFIERS; }
@Test public void testContainsArguments() { Assert.assertFalse(PropertyHelper.containsArguments("foo")); Assert.assertFalse(PropertyHelper.containsArguments("foo/bar")); Assert.assertFalse(PropertyHelper.containsArguments("foo/bar/baz")); Assert.assertTrue(PropertyHelper.containsArguments("foo/bar/$1/baz")); Assert.assertTrue(PropertyHelper.containsArguments("foo/bar/$1/baz/$2")); Assert.assertTrue(PropertyHelper.containsArguments("$1/foo/bar/$2/baz")); Assert.assertTrue(PropertyHelper.containsArguments("$1/foo/bar/$2/baz/$3")); Assert.assertTrue(PropertyHelper.containsArguments("metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)")); Assert.assertFalse(PropertyHelper.containsArguments("$X/foo/bar/$Y/baz/$Z")); }