arina-ielchiieva commented on a change in pull request #2044: DRILL-7678: 
Update Yauaa Dependency
URL: https://github.com/apache/drill/pull/2044#discussion_r401675033
 
 

 ##########
 File path: 
contrib/udfs/src/main/java/org/apache/drill/exec/udfs/UserAgentUtils.java
 ##########
 @@ -0,0 +1,40 @@
+/*
+ * 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.drill.exec.udfs;
+
+import nl.basjes.parse.useragent.UserAgentAnalyzer;
+
+public class UserAgentUtils {
+
+  private UserAgentUtils(){}
+
+  private static UserAgentAnalyzer instance = null;
+
+  public static synchronized UserAgentAnalyzer getInstance() {
 
 Review comment:
   Yes, it would be really good to use holder on demand implementation because 
initialization-on-demand holder is always best practice for implementing 
singleton pattern.
   
   Regarding how to implement it, example how to implement it was present in 
the link I have posted previously: `3.2. Initialization on Demand`.
   
   To make things quicker, I have already adopted it to your use case, please 
replace your class `UserAgentUtils` with new class `UserAgentAnalyzerProvider` 
and call `UserAgentAnalyzerProvider.getInstance()` in your UDFs code.
   ```
   public class UserAgentAnalyzerProvider {
   
     public static UserAgentAnalyzer getInstance() {
       return UserAgentAnalyzerHolder.INSTANCE;
     }
   
     private static class UserAgentAnalyzerHolder {
       private static final UserAgentAnalyzer INSTANCE = 
UserAgentAnalyzer.newBuilder()
         .dropTests()
         .hideMatcherLoadStats()
         .immediateInitialization()
         .build();
     }
   }
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to