From notifications-return-3675-archive-asf-public=cust-asf.ponee.io@ignite.apache.org Thu Jun 6 20:05:28 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 1AF92180785 for ; Thu, 6 Jun 2019 22:05:27 +0200 (CEST) Received: (qmail 3864 invoked by uid 500); 6 Jun 2019 20:05:26 -0000 Mailing-List: contact notifications-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list notifications@ignite.apache.org Received: (qmail 3847 invoked by uid 99); 6 Jun 2019 20:05:26 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Jun 2019 20:05:26 +0000 From: GitBox To: notifications@ignite.apache.org Subject: [GitHub] [ignite] daradurvs commented on a change in pull request #6546: IGNITE-11848: New Monitoring. Phase1 Message-ID: <155985152647.25767.1103731218825840494.gitbox@gitbox.apache.org> Date: Thu, 06 Jun 2019 20:05:26 -0000 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit daradurvs commented on a change in pull request #6546: IGNITE-11848: New Monitoring. Phase1 URL: https://github.com/apache/ignite/pull/6546#discussion_r291343529 ########## File path: modules/core/src/main/java/org/apache/ignite/internal/processors/metric/MetricNameUtils.java ########## @@ -0,0 +1,140 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.processors.metric; + +/** + * Utility class to build or parse metric name in dot notation. + * + * @see GridMetricManager + * @see MetricRegistry + */ +public class MetricNameUtils { + /** Metric name part separator. */ + public static final String SEPARATOR = "."; + + /** + * Example - metric name - "io.statistics.PRIMARY_KEY_IDX.pagesCount". + * root = io - JMX tree root. + * subName = statistics.PRIMARY_KEY_IDX - bean name. + * msetName = io.statistics.PRIMARY_KEY_IDX - prefix to search metrics for a bean. + * mname = pagesCount - metric name. + * + * @param name Metric name. + * @return Parsed names parts. + */ + public static MetricName parse(String name) { + int firstDot = name.indexOf('.'); + int lastDot = name.lastIndexOf('.'); + + String grp = name.substring(0, firstDot); + String beanName = name.substring(firstDot + 1, lastDot); + String msetName = name.substring(0, lastDot); + String mname = name.substring(lastDot + 1); + + return new MetricName(grp, beanName, msetName, mname); + } + + /** + * Builds metric name. Each parameter will separated by '.' char. + * + * @param names Metric name parts. + * @return Metric name. + */ + public static String metricName(String... names) { + assert names != null; + assert ensureAllNamesNotEmpty(names); + + if (names.length == 1) + return names[0]; + + return String.join(SEPARATOR, names); + + } + + /** + * Asserts all arguments are not empty. + * + * @param names Names. + * @return True. + */ + private static boolean ensureAllNamesNotEmpty(String... names) { + for (int i=0; i