Repository: asterixdb
Updated Branches:
  refs/heads/master 1aeb8b6ce -> 511e1c83d


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/511e1c83/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddMentionedUsersFactory.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddMentionedUsersFactory.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddMentionedUsersFactory.java
new file mode 100644
index 0000000..92e8ade
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddMentionedUsersFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.asterix.external.library;
+
+import org.apache.asterix.external.api.IExternalScalarFunction;
+import org.apache.asterix.external.api.IFunctionFactory;
+
+public class AddMentionedUsersFactory implements IFunctionFactory {
+
+    @Override
+    public IExternalScalarFunction getExternalFunction() {
+        return new addMentionedUsersFunction();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/511e1c83/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/addMentionedUsersFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/addMentionedUsersFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/addMentionedUsersFunction.java
new file mode 100644
index 0000000..981aa2b
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/addMentionedUsersFunction.java
@@ -0,0 +1,63 @@
+/*  1
+ * 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.asterix.external.library;
+
+import org.apache.asterix.external.library.java.JBuiltinType;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.base.JString;
+import org.apache.asterix.external.library.java.base.JUnorderedList;
+import org.apache.asterix.external.api.IExternalScalarFunction;
+import org.apache.asterix.external.api.IFunctionHelper;
+import org.apache.asterix.external.library.java.JTypeTag;
+import org.apache.asterix.external.util.Datatypes;
+
+public class addMentionedUsersFunction implements IExternalScalarFunction {
+
+    private JUnorderedList list = null;
+    private String textFieldName;
+
+    @Override
+    public void initialize(IFunctionHelper functionHelper) {
+        list = new JUnorderedList(JBuiltinType.JSTRING);
+        textFieldName = functionHelper.getParameters().get(0);
+    }
+
+    @Override
+    public void deinitialize() {
+    }
+
+    @Override
+    public void evaluate(IFunctionHelper functionHelper) throws Exception {
+        list.clear();
+        JRecord inputRecord = (JRecord) functionHelper.getArgument(0);
+        JString text = (JString) inputRecord.getValueByName(textFieldName);
+
+        String[] tokens = text.getValue().split(" ");
+        for (String tk : tokens) {
+            if (tk.startsWith("@")) {
+                JString newField = (JString) 
functionHelper.getObject(JTypeTag.STRING);
+                newField.setValue(tk);
+                list.add(newField);
+            }
+        }
+        inputRecord.addField("mentionedUsers", list);
+        functionHelper.setResult(inputRecord);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/511e1c83/asterixdb/asterix-external-data/src/test/resources/library_descriptor.xml
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/resources/library_descriptor.xml 
b/asterixdb/asterix-external-data/src/test/resources/library_descriptor.xml
index 6b59041..de6a67f 100644
--- a/asterixdb/asterix-external-data/src/test/resources/library_descriptor.xml
+++ b/asterixdb/asterix-external-data/src/test/resources/library_descriptor.xml
@@ -42,16 +42,15 @@
       <function_type>SCALAR</function_type>
       <argument_type>TweetInputType</argument_type>
       <return_type>TweetOutputType</return_type>
-      <definition>org.apache.asterix.external.library.ParseTweetFactory
-      </definition>
+      
<definition>org.apache.asterix.external.library.ParseTweetFactory</definition>
     </libraryFunction>
     <libraryFunction>
-      <name>addHashTags</name>
+      <name>addMentionedUsers</name>
       <function_type>SCALAR</function_type>
-      <argument_type>Tweet</argument_type>
-      <return_type>ProcessedTweet</return_type>
-      <definition>org.apache.asterix.external.library.AddHashTagsFactory
-      </definition>
+      <argument_type>TweetType</argument_type>
+      <return_type>TweetType</return_type>
+      
<definition>org.apache.asterix.external.library.AddMentionedUsersFactory</definition>
+      <parameters>text</parameters>
     </libraryFunction>
     <libraryFunction>
       <name>addHashTagsInPlace</name>

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/511e1c83/asterixdb/asterix-server/src/test/resources/integrationts/library/results/library-metadata/functionDataset/functionDataset.1.adm
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-server/src/test/resources/integrationts/library/results/library-metadata/functionDataset/functionDataset.1.adm
 
b/asterixdb/asterix-server/src/test/resources/integrationts/library/results/library-metadata/functionDataset/functionDataset.1.adm
index 20dc8c8..b1fa1d1 100644
--- 
a/asterixdb/asterix-server/src/test/resources/integrationts/library/results/library-metadata/functionDataset/functionDataset.1.adm
+++ 
b/asterixdb/asterix-server/src/test/resources/integrationts/library/results/library-metadata/functionDataset/functionDataset.1.adm
@@ -1,4 +1,4 @@
-{ "DataverseName": "externallibtest", "Name": "testlib#addHashTags", "Arity": 
"1", "Params": [ "Tweet" ], "ReturnType": "ProcessedTweet", "Definition": 
"org.apache.asterix.external.library.AddHashTagsFactory", "Language": "JAVA", 
"Kind": "SCALAR" }
+{ "DataverseName": "externallibtest", "Name": "testlib#addMentionedUsers", 
"Arity": "1", "Params": [ "TweetType" ], "ReturnType": "TweetType", 
"Definition": "org.apache.asterix.external.library.AddMentionedUsersFactory", 
"Language": "JAVA", "Kind": "SCALAR" }
 { "DataverseName": "externallibtest", "Name": "testlib#addHashTagsInPlace", 
"Arity": "1", "Params": [ "Tweet" ], "ReturnType": "ProcessedTweet", 
"Definition": "org.apache.asterix.external.library.AddHashTagsInPlaceFactory", 
"Language": "JAVA", "Kind": "SCALAR" }
 { "DataverseName": "externallibtest", "Name": "testlib#allTypes", "Arity": 
"1", "Params": [ "AllType" ], "ReturnType": "AllType", "Definition": 
"org.apache.asterix.external.library.AllTypesFactory", "Language": "JAVA", 
"Kind": "SCALAR" }
 { "DataverseName": "externallibtest", "Name": "testlib#echoDelay", "Arity": 
"1", "Params": [ "TweetMessageType" ], "ReturnType": "TweetMessageType", 
"Definition": "org.apache.asterix.external.library.EchoDelayFactory", 
"Language": "JAVA", "Kind": "SCALAR" }

Reply via email to