1+ /*
2+ * Licensed to the Apache Software Foundation (ASF) under one or more
3+ * contributor license agreements. See the NOTICE file distributed with
4+ * this work for additional information regarding copyright ownership.
5+ * The ASF licenses this file to You under the Apache License, Version 2.0
6+ * (the "License"); you may not use this file except in compliance with
7+ * the License. You may obtain a copy of the License at
8+ *
9+ * http://www.apache.org/licenses/LICENSE-2.0
10+ *
11+ * Unless required by applicable law or agreed to in writing, software
12+ * distributed under the License is distributed on an "AS IS" BASIS,
13+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+ * See the License for the specific language governing permissions and
15+ * limitations under the License.
16+ *
17+ */
18+
19+ package org .apache .skywalking .apm .plugin .mongodb .v4 .define .readOperation ;
20+
21+ import net .bytebuddy .description .method .MethodDescription ;
22+ import net .bytebuddy .matcher .ElementMatcher ;
23+ import org .apache .skywalking .apm .agent .core .plugin .interceptor .ConstructorInterceptPoint ;
24+ import org .apache .skywalking .apm .agent .core .plugin .interceptor .InstanceMethodsInterceptPoint ;
25+ import org .apache .skywalking .apm .agent .core .plugin .interceptor .enhance .ClassInstanceMethodsEnhancePluginDefine ;
26+ import org .apache .skywalking .apm .agent .core .plugin .match .ClassMatch ;
27+ import org .apache .skywalking .apm .agent .core .plugin .match .NameMatch ;
28+
29+ import static net .bytebuddy .matcher .ElementMatchers .takesArguments ;
30+
31+ public class ChangeStreamOperationInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
32+
33+ private static final String WITNESS_CLASS = "com.mongodb.internal.connection.Cluster" ;
34+
35+ private static final String ENHANCE_CLASS = "com.mongodb.internal.operation.ChangeStreamOperation" ;
36+
37+ private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.mongodb.v4.interceptor.operation.OperationNamespaceConstructInterceptor" ;
38+
39+ @ Override
40+ protected String [] witnessClasses () {
41+ return new String [] {WITNESS_CLASS };
42+ }
43+
44+ @ Override
45+ protected ClassMatch enhanceClass () {
46+ return NameMatch .byName (ENHANCE_CLASS );
47+ }
48+
49+ @ Override
50+ public ConstructorInterceptPoint [] getConstructorsInterceptPoints () {
51+ return new ConstructorInterceptPoint [] {
52+ new ConstructorInterceptPoint () {
53+
54+ @ Override
55+ public ElementMatcher <MethodDescription > getConstructorMatcher () {
56+ return takesArguments (5 );
57+ }
58+
59+ @ Override
60+ public String getConstructorInterceptor () {
61+ return INTERCEPTOR_CLASS ;
62+ }
63+ }
64+ };
65+ }
66+
67+ @ Override
68+ public InstanceMethodsInterceptPoint [] getInstanceMethodsInterceptPoints () {
69+ return new InstanceMethodsInterceptPoint [0 ];
70+ }
71+
72+ }
0 commit comments