blob: efd7d02588842a56d45c82b0c13cf8c2c0b6fdf9 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>MetricFiltering (Apache Beam 2.47.0)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MetricFiltering (Apache Beam 2.47.0)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/metrics/Metric.html" title="interface in org.apache.beam.sdk.metrics"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/metrics/MetricKey.html" title="class in org.apache.beam.sdk.metrics"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/metrics/MetricFiltering.html" target="_top">Frames</a></li>
<li><a href="MetricFiltering.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.metrics</div>
<h2 title="Class MetricFiltering" class="title">Class MetricFiltering</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.metrics.MetricFiltering</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">MetricFiltering</span>
extends java.lang.Object</pre>
<div class="block">Implements matching for metrics filters. Specifically, matching for metric name, namespace, and
step name.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/metrics/MetricFiltering.html#matches-org.apache.beam.sdk.metrics.MetricsFilter-org.apache.beam.sdk.metrics.MetricKey-">matches</a></span>(<a href="../../../../../org/apache/beam/sdk/metrics/MetricsFilter.html" title="class in org.apache.beam.sdk.metrics">MetricsFilter</a>&nbsp;filter,
<a href="../../../../../org/apache/beam/sdk/metrics/MetricKey.html" title="class in org.apache.beam.sdk.metrics">MetricKey</a>&nbsp;key)</code>
<div class="block">Matching logic is implemented here rather than in MetricsFilter because we would like
MetricsFilter to act as a "dumb" value-object, with the possibility of replacing it with a
Proto/JSON/etc.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/metrics/MetricFiltering.html#matchesScope-java.lang.String-java.util.Set-">matchesScope</a></span>(java.lang.String&nbsp;actualScope,
java.util.Set&lt;java.lang.String&gt;&nbsp;scopes)</code>
<div class="block"><code>matchesScope(actualScope, scopes)</code> returns true if the scope of a metric is matched by
any of the filters in <code>scopes</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/metrics/MetricFiltering.html#subPathMatches-java.lang.String-java.lang.String-">subPathMatches</a></span>(java.lang.String&nbsp;haystack,
java.lang.String&nbsp;needle)</code>
<div class="block"><code>subPathMatches(haystack, needle)</code> returns true if <code>needle</code> represents a path
within <code>haystack</code>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="matches-org.apache.beam.sdk.metrics.MetricsFilter-org.apache.beam.sdk.metrics.MetricKey-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matches</h4>
<pre>public static&nbsp;boolean&nbsp;matches(<a href="../../../../../org/apache/beam/sdk/metrics/MetricsFilter.html" title="class in org.apache.beam.sdk.metrics">MetricsFilter</a>&nbsp;filter,
<a href="../../../../../org/apache/beam/sdk/metrics/MetricKey.html" title="class in org.apache.beam.sdk.metrics">MetricKey</a>&nbsp;key)</pre>
<div class="block">Matching logic is implemented here rather than in MetricsFilter because we would like
MetricsFilter to act as a "dumb" value-object, with the possibility of replacing it with a
Proto/JSON/etc. schema object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>filter</code> - <a href="../../../../../org/apache/beam/sdk/metrics/MetricsFilter.html" title="class in org.apache.beam.sdk.metrics"><code>MetricsFilter</code></a> with the matching information of an actual metric</dd>
<dd><code>key</code> - <a href="../../../../../org/apache/beam/sdk/metrics/MetricKey.html" title="class in org.apache.beam.sdk.metrics"><code>MetricKey</code></a> with the information of a metric</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the filter matches the key or not</dd>
</dl>
</li>
</ul>
<a name="subPathMatches-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subPathMatches</h4>
<pre>public static&nbsp;boolean&nbsp;subPathMatches(java.lang.String&nbsp;haystack,
java.lang.String&nbsp;needle)</pre>
<div class="block"><code>subPathMatches(haystack, needle)</code> returns true if <code>needle</code> represents a path
within <code>haystack</code>. For example, "foo/bar" is in "a/foo/bar/b", but not "a/fool/bar/b" or
"a/foo/bart/b".</div>
</li>
</ul>
<a name="matchesScope-java.lang.String-java.util.Set-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>matchesScope</h4>
<pre>public static&nbsp;boolean&nbsp;matchesScope(java.lang.String&nbsp;actualScope,
java.util.Set&lt;java.lang.String&gt;&nbsp;scopes)</pre>
<div class="block"><code>matchesScope(actualScope, scopes)</code> returns true if the scope of a metric is matched by
any of the filters in <code>scopes</code>. A metric scope is a path of type "A/B/D". A path is
matched by a filter if the filter is equal to the path (e.g. "A/B/D", or if it represents a
subpath within it (e.g. "A/B" or "B/D", but not "A/D").
<p>Per https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Set.html "sets
contain ... at most one null element" / "Some set implementations have restrictions on the
elements that they may contain. For example, some implementations prohibit null elements".
Since sets cannot in general contain null it is not safe to check for membership of null, so
the caller must determine what to do with a null <code>actualScope</code>.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/metrics/Metric.html" title="interface in org.apache.beam.sdk.metrics"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/metrics/MetricKey.html" title="class in org.apache.beam.sdk.metrics"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/metrics/MetricFiltering.html" target="_top">Frames</a></li>
<li><a href="MetricFiltering.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>