diff --git a/c12e-ci.yml b/c12e-ci.yml new file mode 100644 index 0000000..6e24d69 --- /dev/null +++ b/c12e-ci.yml @@ -0,0 +1,3 @@ +builder: + image: maven:3.6.3-jdk-8 + command: "mvn clean install -f pom-gocd.xml" diff --git a/common-parent-19.pom b/common-parent-19.pom new file mode 100644 index 0000000..a9a3808 --- /dev/null +++ b/common-parent-19.pom @@ -0,0 +1,314 @@ + + 4.0.0 + + com.indeed + common-parent + 19 + + pom + Parent POM for projects from Indeed.com Engineering + Shared Maven configuration for Indeed.com + https://github.com/indeedeng + + + + IndeedEng + Indeed Engineering + https://github.com/indeedeng + + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + https://github.com/indeedeng/common-parent-pom + scm:git:https://github.com/indeedeng/common-parent-pom.git + scm:git:git@github.com:indeedeng/common-parent-pom.git + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + + jar-no-fork + + + + + + + + + + + + + + + + + + + + + + com.indeed + proctor-maven-plugin + ${proctor.version} + + + proctor-generate + + generate + + + + proctor-generate-test + + generate-test + + + + + + + + + + + + signing-plugin + + + indeed.enableSigning + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.4 + + + sign-artifacts + verify + + sign + + + + + + + + + oss-plugins + + + indeed.enableOssStaging + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + true + + sonatype-nexus-staging + https://oss.sonatype.org/ + + + + + + + + + + + + + com.google.code.findbugs + jsr305 + ${jsr-305.version} + + + com.google.guava + guava + ${google-guava.version} + + + commons-cli + commons-cli + ${commons-cli.version} + + + commons-io + commons-io + ${commons-io.version} + + + commons-lang + commons-lang + ${commons-lang.version} + + + jstl + jstl + ${jstl.version} + + + junit + junit + ${junit.version} + + + junit + junit-dep + ${junit-dep.version} + + + org.apache.ant + ant + ${ant.version} + + + org.apache.tomcat + tomcat-el-api + ${tomcat-api7.version} + + + org.apache.tomcat + tomcat-jasper-el + ${tomcat-api7.version} + + + org.easymock + easymock + ${easymock.version} + + + org.easymock + easymockclassextension + ${easymock.version} + + + org.codehaus.jackson + jackson-core-asl + ${jackson.version} + + + org.codehaus.jackson + jackson-mapper-asl + ${jackson.version} + + + org.hamcrest + hamcrest-core + ${hamcrest.version} + + + org.hamcrest + hamcrest-library + ${hamcrest.version} + + + org.springframework + spring-beans + ${spring.version} + + + org.springframework + spring-core + ${spring.version} + + + org.springframework + spring-web + ${spring.version} + + + org.springframework + spring-test + ${spring.version} + + + org.tmatesoft.svnkit + svnkit + ${svnkit.version} + + + log4j + log4j + ${log4j.version} + + + org.freemarker + freemarker + ${freemarker.version} + + + org.apache.tomcat + tomcat-jsp-api + ${tomcat-api7.version} + + + org.apache.tomcat + tomcat-servlet-api + ${tomcat-api7.version} + + + + + + UTF-8 + UTF-8 + true + + + 1.7 + 1.7 + + + + 1.1.38 + + 1.8.2 + 1.1 + 1.4 + 2.4 + 2.4 + 2.3.16 + 16.0.1 + 1.3 + 1.8.0 + 1.3.9 + 1.2 + 4.10 + 4.11.20120805.1225 + 1.2.17 + 4.3.8.RELEASE + 1.8.5 + 7.0.8 + + diff --git a/pom-gocd.xml b/pom-gocd.xml new file mode 100644 index 0000000..b676477 --- /dev/null +++ b/pom-gocd.xml @@ -0,0 +1,93 @@ + + 4.0.0 + + + com.indeed + common-parent + 19 + common-parent-19.pom + + + + vw-wrapper + 5.1.7-RELEASE + jar + + Vowpal Wabbit Wrapper + + Vowpal wabbit is a very effective machine learning library (https://github.com/JohnLangford/vowpal_wabbit/wiki). + It implements several state of art algorithms in a very efficient way. + + This java library provides a JNI OOP interface to vowpal wabbit. + + It depends only on log4j and guava. You don't need vowpal wabbit to be installed if you use this wrapper. + + + http://github.com/indeedeng + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + https://github.com/indeedeng/vowpal-wabbit-java + scm:git:https://github.com/indeedeng/vowpal-wabbit-java.git + scm:git:git@github.com:indeedeng/vowpal-wabbit-java.git + + + + + + + + + + + + + + + + + + com.google.guava + guava + + + log4j + log4j + + + org.slf4j + slf4j-api + 1.7.28 + + + ch.qos.logback + logback-classic + 1.2.3 + provided + + + + com.google.code.findbugs + jsr305 + provided + + + + junit + junit-dep + test + + + commons-io + commons-io + test + + + diff --git a/pom.xml b/pom.xml index 112efc8..14bc5df 100644 --- a/pom.xml +++ b/pom.xml @@ -9,16 +9,16 @@ vw-wrapper - 5.1.4-SNAPSHOT + 5.1.7-RELEASE jar Vowpal Wabbit Wrapper Vowpal wabbit is a very effective machine learning library (https://github.com/JohnLangford/vowpal_wabbit/wiki). It implements several state of art algorithms in a very efficient way. - + This java library provides a JNI OOP interface to vowpal wabbit. - + It depends only on log4j and guava. You don't need vowpal wabbit to be installed if you use this wrapper. @@ -43,6 +43,7 @@ maven-javadoc-plugin + 3.1.1 com.indeed.vw.wrapper.learner:com.indeed.vw.wrapper.jni package @@ -54,10 +55,21 @@ com.google.guava guava + + + log4j + log4j + + + org.slf4j + slf4j-api + 1.7.28 - log4j - log4j + ch.qos.logback + logback-classic + 1.2.3 + provided diff --git a/src/main/java/com/indeed/vw/wrapper/api/VowpalWabbit.java b/src/main/java/com/indeed/vw/wrapper/api/VowpalWabbit.java index 44f7012..c6fed10 100644 --- a/src/main/java/com/indeed/vw/wrapper/api/VowpalWabbit.java +++ b/src/main/java/com/indeed/vw/wrapper/api/VowpalWabbit.java @@ -10,7 +10,8 @@ import com.indeed.vw.wrapper.learner.VWIntLearner; import com.indeed.vw.wrapper.learner.VWLearner; import com.indeed.vw.wrapper.learner.VWLearners; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.nio.file.Path; import java.util.ArrayList; @@ -27,7 +28,7 @@ public class VowpalWabbit { * Pass this constant as namespace parameter if you want to set some feature engineering for all namespaces.

*/ public static final String ANY_NAMESPACE = ":"; - private static final Logger logger = Logger.getLogger(VowpalWabbit.class); + private static final Logger logger = LoggerFactory.getLogger(VowpalWabbit.class); private VowpalWabbit() { } diff --git a/src/main/java/com/indeed/vw/wrapper/jni/NativeUtils.java b/src/main/java/com/indeed/vw/wrapper/jni/NativeUtils.java index ee4b9ee..b509615 100644 --- a/src/main/java/com/indeed/vw/wrapper/jni/NativeUtils.java +++ b/src/main/java/com/indeed/vw/wrapper/jni/NativeUtils.java @@ -1,6 +1,7 @@ package com.indeed.vw.wrapper.jni; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileFilter; @@ -21,7 +22,7 @@ * @author artem@indeed.com */ public class NativeUtils { - private static final Logger logger = Logger.getLogger(NativeUtils.class); + private static final Logger logger = LoggerFactory.getLogger(NativeUtils.class); /** * Private constructor - this class will never be instanced diff --git a/src/main/java/com/indeed/vw/wrapper/progvalidation/Metrics.java b/src/main/java/com/indeed/vw/wrapper/progvalidation/Metrics.java index 396abcf..f587cc8 100644 --- a/src/main/java/com/indeed/vw/wrapper/progvalidation/Metrics.java +++ b/src/main/java/com/indeed/vw/wrapper/progvalidation/Metrics.java @@ -1,7 +1,8 @@ package com.indeed.vw.wrapper.progvalidation; import com.google.common.base.Joiner; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.HashMap; @@ -54,7 +55,7 @@ public static Metrics probabilityClassificationMetrics(final int printEveryN) { } private final List validationMetrics; - private static final Logger logger = Logger.getLogger(ProgressiveValidation.class); + private static final Logger logger = LoggerFactory.getLogger(ProgressiveValidation.class); protected int examplesCount = 0; private final int printScoreEveryNExamples; diff --git a/src/main/java/com/indeed/vw/wrapper/progvalidation/ProgressiveValidation.java b/src/main/java/com/indeed/vw/wrapper/progvalidation/ProgressiveValidation.java index bebf68a..94177ae 100644 --- a/src/main/java/com/indeed/vw/wrapper/progvalidation/ProgressiveValidation.java +++ b/src/main/java/com/indeed/vw/wrapper/progvalidation/ProgressiveValidation.java @@ -1,7 +1,5 @@ package com.indeed.vw.wrapper.progvalidation; -import org.apache.log4j.Logger; - import java.text.DecimalFormat; /** diff --git a/src/main/resources/lib/vw_jni.Darwin.lib b/src/main/resources/lib/vw_jni.Darwin.lib index 00307ce..013a1f4 100755 Binary files a/src/main/resources/lib/vw_jni.Darwin.lib and b/src/main/resources/lib/vw_jni.Darwin.lib differ diff --git a/src/main/resources/lib/vw_jni.Linux.lib b/src/main/resources/lib/vw_jni.Linux.lib index e578963..5c1fb31 100755 Binary files a/src/main/resources/lib/vw_jni.Linux.lib and b/src/main/resources/lib/vw_jni.Linux.lib differ diff --git a/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.cc b/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.cc index 6e661df..f20544f 100644 --- a/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.cc +++ b/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.cc @@ -3,7 +3,7 @@ #include "jni_base_learner.h" jobject action_probs_prediction(example* vec, JNIEnv *env) -{ jclass action_prob_class = env->FindClass("vowpalWabbit/responses/ActionProb"); +{ jclass action_prob_class = env->FindClass("com/indeed/vw/wrapper/learner/ActionProb"); jmethodID action_prob_constructor = env->GetMethodID(action_prob_class, "", "(IF)V"); // The action_probs prediction_type_t is just a placeholder identifying when the aciton_scores @@ -13,13 +13,13 @@ jobject action_probs_prediction(example* vec, JNIEnv *env) size_t num_values = a_s.size(); jobjectArray j_action_probs = env->NewObjectArray(num_values, action_prob_class, 0); - jclass action_probs_class = env->FindClass("vowpalWabbit/responses/ActionProbs"); + jclass action_probs_class = env->FindClass("com/indeed/vw/wrapper/learner/ActionProbs"); for (uint32_t i=0; iNewObject(action_prob_class, action_prob_constructor, a.action, a.score); env->SetObjectArrayElement(j_action_probs, i, j_action_prob); } - jmethodID action_probs_constructor = env->GetMethodID(action_probs_class, "", "([LvowpalWabbit/responses/ActionProb;)V"); + jmethodID action_probs_constructor = env->GetMethodID(action_probs_class, "", "([Lcom/indeed/vw/wrapper/learner/ActionProb;)V"); return env->NewObject(action_probs_class, action_probs_constructor, j_action_probs); } diff --git a/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.h b/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.h index ce8665e..5b53438 100644 --- a/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.h +++ b/vw_jni/com_indeed_vw_wrapper_learner_VWActionProbsLearner.h @@ -11,7 +11,7 @@ extern "C" /* * Class: com_indeed_vw_wrapper_learner_VWActionProbsLearner * Method: predict - * Signature: (Ljava/lang/String;ZJ)LvowpalWabbit/responses/ActionProbs; + * Signature: (Ljava/lang/String;ZJ)Lcom/indeed/vw/wrapper/learners/ActionProbs; */ JNIEXPORT jobject JNICALL Java_com_indeed_vw_wrapper_learner_VWActionProbsLearner_predict (JNIEnv *, jobject, jstring, jboolean, jlong); @@ -19,7 +19,7 @@ JNIEXPORT jobject JNICALL Java_com_indeed_vw_wrapper_learner_VWActionProbsLearne /* * Class: com_indeed_vw_wrapper_learner_VWActionProbsLearner * Method: predictMultiline - * Signature: ([Ljava/lang/String;ZJ)LvowpalWabbit/responses/ActionProbs; + * Signature: ([Ljava/lang/String;ZJ)Lcom/indeed/vw/wrapper/learner/ActionProbs; */ JNIEXPORT jobject JNICALL Java_com_indeed_vw_wrapper_learner_VWActionProbsLearner_predictMultiline (JNIEnv *, jobject, jobjectArray, jboolean, jlong); diff --git a/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.cc b/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.cc index 58d7d84..c365d0d 100644 --- a/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.cc +++ b/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.cc @@ -3,20 +3,20 @@ #include "jni_base_learner.h" jobject action_scores_prediction(example* vec, JNIEnv *env) -{ jclass action_score_class = env->FindClass("vowpalWabbit/responses/ActionScore"); +{ jclass action_score_class = env->FindClass("com/indeed/vw/wrapper/learner/ActionScore"); jmethodID action_score_constructor = env->GetMethodID(action_score_class, "", "(IF)V"); ACTION_SCORE::action_scores a_s = vec->pred.a_s; size_t num_values = a_s.size(); jobjectArray j_action_scores = env->NewObjectArray(num_values, action_score_class, 0); - jclass action_scores_class = env->FindClass("vowpalWabbit/responses/ActionScores"); + jclass action_scores_class = env->FindClass("com/indeed/vw/wrapper/learner/ActionScores"); for (uint32_t i=0; iNewObject(action_score_class, action_score_constructor, a.action, a.score); env->SetObjectArrayElement(j_action_scores, i, j_action_score); } - jmethodID action_scores_constructor = env->GetMethodID(action_scores_class, "", "([LvowpalWabbit/responses/ActionScore;)V"); + jmethodID action_scores_constructor = env->GetMethodID(action_scores_class, "", "([Lcom/indeed/vw/wrapper/learner/ActionScore;)V"); return env->NewObject(action_scores_class, action_scores_constructor, j_action_scores); } diff --git a/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.h b/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.h index 54a042a..8cca2b5 100644 --- a/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.h +++ b/vw_jni/com_indeed_vw_wrapper_learner_VWActionScoresLearner.h @@ -11,7 +11,7 @@ extern "C" /* * Class: com_indeed_vw_wrapper_learner_VWActionScoresLearner * Method: predict - * Signature: (Ljava/lang/String;ZJ)LvowpalWabbit/responses/ActionScores; + * Signature: (Ljava/lang/String;ZJ)Lcom/indeed/vw/wrapper/learner/ActionScores; */ JNIEXPORT jobject JNICALL Java_com_indeed_vw_wrapper_learner_VWActionScoresLearner_predict (JNIEnv *, jobject, jstring, jboolean, jlong); @@ -19,7 +19,7 @@ JNIEXPORT jobject JNICALL Java_com_indeed_vw_wrapper_learner_VWActionScoresLearn /* * Class: com_indeed_vw_wrapper_learner_VWActionScoresLearner * Method: predictMultiline - * Signature: ([Ljava/lang/String;ZJ)LvowpalWabbit/responses/ActionScores; + * Signature: ([Ljava/lang/String;ZJ)Lcom/indeed/vw/wrapper/learner/ActionScores; */ JNIEXPORT jobject JNICALL Java_com_indeed_vw_wrapper_learner_VWActionScoresLearner_predictMultiline (JNIEnv *, jobject, jobjectArray, jboolean, jlong);