You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@griffin.apache.org by gu...@apache.org on 2017/05/04 03:04:11 UTC
[03/51] [partial] incubator-griffin git commit: refactor arch
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 65ed683..6d37e96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,879 +1,62 @@
-<?xml version="1.0" encoding="UTF-8"?>
- <!--
- Copyright (c) 2016 eBay Software Foundation.
- Licensed 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
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- http://www.apache.org/licenses/LICENSE-2.0
+ <modelVersion>4.0.0</modelVersion>
- 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.
- -->
+ <parent>
+ <groupId>org.apache</groupId>
+ <artifactId>apache</artifactId>
+ <version>17</version>
+ </parent>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.ebay.oss</groupId>
- <artifactId>griffin-parent</artifactId>
+ <groupId>com.apache.griffin</groupId>
+ <artifactId>griffin</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <name>eBay Griffin Parent</name>
- <modules>
- <module>griffin-ui</module>
- <module>griffin-core</module>
- <module>griffin-models</module>
- </modules>
- <inceptionYear>2016</inceptionYear>
- <description>
- Griffin - Data Quality Service
- </description>
- <organization>
- <name>Apache Software Foundation</name>
- <url>http://apache.org</url>
- </organization>
- <licenses>
- <license>
- <name>Apache 2.0 License</name>
- <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
- <distribution>repo</distribution>
- </license>
- </licenses>
-
- <distributionManagement>
- <snapshotRepository>
- <id>ossrh</id>
- <url>https://oss.sonatype.org/content/repositories/snapshots</url>
- </snapshotRepository>
- <repository>
- <id>ossrh</id>
- <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
- </repository>
- </distributionManagement>
-
- <repositories>
- <repository>
- <id>oss-sonatype</id>
- <name>oss-sonatype</name>
- <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <prerequisites>
- <maven>${maven.version}</maven>
- </prerequisites>
- <mailingLists>
- </mailingLists>
- <developers>
-
- </developers>
<properties>
- <griffin.version>0.1.0-SNAPSHOT</griffin.version>
- <!-- General Properties -->
- <java.version>1.7</java.version>
- <scala.version>2.10</scala.version>
- <scala.compat.version>2.10</scala.compat.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-
- <!-- Maven Plugins Versions -->
- <maven.version>3.3.3</maven.version>
- <maven-model.version>4.0.0</maven-model.version>
- <maven-release.version>2.5.1</maven-release.version>
- <maven-assembly.version>2.5.5</maven-assembly.version>
- <maven-source.version>2.2</maven-source.version>
- <maven-compiler.version>2.0.2</maven-compiler.version>
- <maven-dependency.version>2.1</maven-dependency.version>
- <maven-license.version>2.6</maven-license.version>
- <maven-surefire.version>2.6</maven-surefire.version>
- <maven-jar.version>2.6</maven-jar.version>
- <maven-scala.version>2.15.0</maven-scala.version>
- <maven-scalatest.version>1.0</maven-scalatest.version>
- <maven-tomcat7.version>2.2</maven-tomcat7.version>
- <maven-apache-rat.version>0.11</maven-apache-rat.version>
- <maven-failsafe.version>2.6</maven-failsafe.version>
-
- <!-- Environment Versions -->
- <hadoop.version>2.2.0</hadoop.version>
- <!--
- <hbase.version>0.98.4.2.2.5.1-3-hadoop2</hbase.version>
- <hive.version>1.2.1</hive.version>
- <spark.core.version>1.4.0</spark.core.version>
- -->
- <!-- Common Versions
- <commons-cli.version>1.2</commons-cli.version>
- <commons-lang.version>2.6</commons-lang.version>
- <commons-lang3.version>3.3.2</commons-lang3.version>
- <commons-math3.version>3.5</commons-math3.version>
- <commons-configuration.version>1.6</commons-configuration.version>
- <commons-logging.version>1.1.1</commons-logging.version>
- <commons-httpclient.version>3.1</commons-httpclient.version>
- <commons-beanutils.version>1.8.0</commons-beanutils.version>
- <commons-collections4.version>4.0</commons-collections4.version>
- -->
- <!-- Configuration
- <archaius.version>0.6.1</archaius.version>
- <typesafe.config.version>1.2.1</typesafe.config.version>
- -->
- <!-- Serialization -->
- <gson.version>2.2.2</gson.version>
- <!--
- <guava.version>14.0.1</guava.version>
- <fasterxml-jackson.version>2.2.3</fasterxml-jackson.version>
- <codehaus-jackson.version>1.9.13</codehaus-jackson.version>
- <jsoup.version>1.7.3</jsoup.version>
- <io.netty.version>3.6.7.Final</io.netty.version>
- <org.json.version>20131018</org.json.version>
- <protobuf-java.version>2.5.0</protobuf-java.version>
- -->
-
- <!-- Utility -->
- <slf4j.version>1.7.5</slf4j.version>
-<!-- <joda-time.version>2.7</joda-time.version>
- <joda-convert.version>1.7</joda-convert.version>
- <log4j.version>1.2.17</log4j.version>
- <log4j-over-slf4j.version>1.7.2</log4j-over-slf4j.version>
- <quartz.version>2.2.1</quartz.version>
- <scopt.version>3.3.0</scopt.version> -->
-
- <!-- Streaming
- <kafka.version>0.8.1.2.2.0.0-2041</kafka.version>
- <kafka-clients.version>0.8.2.0</kafka-clients.version>
- <jgrapht.version>0.9.0</jgrapht.version>
- <storm-kafka.version>0.9.3.2.2.0.0-2041</storm-kafka.version>
- <storm.version>0.9.3</storm.version>
- <curator.version>2.8.0</curator.version>
- -->
- <!-- Query
- <tomcat.version>7.0.42</tomcat.version>
- <protobuf-java.version>2.6.1</protobuf-java.version>
- <antlr4.version>4.5</antlr4.version>
- <goovy.version>2.3.4</goovy.version>
- <parsii.version>1.3</parsii.version>
--->
- <!-- JDBC
- <commons-dbcp.version>1.4</commons-dbcp.version>
- <javax.persistence.version>2.0.0</javax.persistence.version>
- <mysql-connector-java.version>5.1.34</mysql-connector-java.version>
- <ddlutils.version>1.0</ddlutils.version>
- <torque.version>4.0</torque.version>
- -->
- <mongo.version>2.11.3</mongo.version>
-
- <!-- REST Service-->
- <jersey.version>1.18</jersey.version>
- <jaxb-api.version>2.1</jaxb-api.version>
- <jaxb-impl.version>2.2.6</jaxb-impl.version>
- <stax-api.version>1.0.1</stax-api.version>
- <org.mortbay.jetty.version>6.1.26</org.mortbay.jetty.version>
-
- <!-- Alert Framework
- <velocity.version>1.7</velocity.version>
- <javax.mail.version>1.4</javax.mail.version>
- <extcos4.version>0.4b</extcos4.version>
- <extcos3.version>0.3b</extcos3.version>
- <siddhi.version>3.0.2</siddhi.version>
--->
- <!-- Testing -->
- <unit.test.version>4.10</unit.test.version>
- <guice.version>3.0</guice.version>
-<!-- <junit-benchmarks.version>0.7.0</junit-benchmarks.version>
- <h2.version>1.3.172</h2.version>
- <scalatest.version>2.2.4</scalatest.version>
- <scala-reflect.version>2.10.0</scala-reflect.version>
- <mockito.version>1.8.1-rc1</mockito.version>
- <tomcat.embed.version>7.0.55</tomcat.embed.version> -->
-
- <!-- Machine Learning
- <ejml.version>0.25</ejml.version>
- -->
- <!-- spring security -->
- <spring.framework.version>3.2.8.RELEASE</spring.framework.version>
-
- <mockito.version>1.10.19</mockito.version>
-
+ <java.version>1.8</java.version>
</properties>
- <dependencyManagement>
- <dependencies>
- <!-- Commons Dependencies
- <dependency>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- <version>${commons-cli.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>${commons-lang.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>${commons-lang3.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-math3</artifactId>
- <version>${commons-math3.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-configuration</groupId>
- <artifactId>commons-configuration</artifactId>
- <version>${commons-configuration.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>${commons-logging.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>${commons-beanutils.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>${commons-httpclient.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-collections4</artifactId>
- <version>${commons-collections4.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- <version>${commons-dbcp.version}</version>
- </dependency>
- <dependency>
- <groupId>org.scala-lang</groupId>
- <artifactId>scala-reflect</artifactId>
- <version>${scala-reflect.version}</version>
- </dependency>
- -->
- <!-- Configuration
- <dependency>
- <groupId>com.typesafe</groupId>
- <artifactId>config</artifactId>
- <version>${typesafe.config.version}</version>
- </dependency>
- <dependency>
- <groupId>com.netflix.archaius</groupId>
- <artifactId>archaius-core</artifactId>
- <version>${archaius.version}</version>
- </dependency>
--->
- <!-- Utility -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4j.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4j.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>log4j-over-slf4j</artifactId>
- <version>${slf4j.version}</version>
- <scope>compile</scope>
- </dependency>
- <!-- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>${log4j.version}</version>
- </dependency>
- <dependency>
- <groupId>joda-time</groupId>
- <artifactId>joda-time</artifactId>
- <version>${joda-time.version}</version>
- </dependency>
- <dependency>
- <groupId>org.joda</groupId>
- <artifactId>joda-convert</artifactId>
- <version>${joda-convert.version}</version>
- </dependency>
- <dependency>
- <groupId>org.quartz-scheduler</groupId>
- <artifactId>quartz</artifactId>
- <version>${quartz.version}</version>
- </dependency>
- <dependency>
- <groupId>com.github.scopt</groupId>
- <artifactId>scopt_${scala.version}</artifactId>
- <version>${scopt.version}</version>
- </dependency> -->
-
- <!-- Serialization-->
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>${gson.version}</version>
- <scope>compile</scope>
- </dependency>
- <!--
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>${fasterxml-jackson.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-annotations</artifactId>
- <version>${fasterxml-jackson.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>${fasterxml-jackson.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.module</groupId>
- <artifactId>jackson-module-scala_${scala.version}</artifactId>
- <version>${fasterxml-jackson.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-mapper-asl</artifactId>
- <version>${codehaus-jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-core-asl</artifactId>
- <version>${codehaus-jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>com.google.protobuf</groupId>
- <artifactId>protobuf-java</artifactId>
- <version>${protobuf-java.version}</version>
- </dependency>
- <dependency>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>${org.json.version}</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-jaxrs</artifactId>
- <version>${codehaus-jackson.version}</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-xc</artifactId>
- <version>${codehaus-jackson.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>${guava.version}</version>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty</artifactId>
- <scope>compile</scope>
- <version>${io.netty.version}</version>
- </dependency>
- -->
- <!-- Streaming Dependencies
- <dependency>
- <groupId>org.jgrapht</groupId>
- <artifactId>jgrapht-core</artifactId>
- <version>${jgrapht.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.kafka</groupId>
- <artifactId>kafka_${scala.version}</artifactId>
- <version>${kafka.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.kafka</groupId>
- <artifactId>kafka-clients</artifactId>
- <version>${kafka-clients.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.storm</groupId>
- <artifactId>storm-core</artifactId>
- <version>${storm.version}</version>
- <exclusions>
- <exclusion>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- </exclusion>
- <exclusion>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>log4j-over-slf4j</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.storm</groupId>
- <artifactId>storm-kafka</artifactId>
- <version>${storm-kafka.version}</version>
- <exclusions>
- <exclusion>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- </exclusion>
- <exclusion>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>log4j-over-slf4j</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.spark</groupId>
- <artifactId>spark-core_${scala.version}</artifactId>
- <version>${spark.core.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-framework</artifactId>
- <version>${curator.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-recipes</artifactId>
- <version>${curator.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-client</artifactId>
- <version>${curator.version}</version>
- </dependency>
- -->
-
-
- <!--Griffin REST Service Dependencies -->
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-core</artifactId>
- <version>${jersey.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
- <version>${jersey.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-server</artifactId>
- <version>${jersey.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-bundle</artifactId>
- <version>${jersey.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
- <version>${jersey.version}</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>${jaxb-impl.version}</version>
- </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty</artifactId>
- <version>${org.mortbay.jetty.version}</version>
- </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>${org.mortbay.jetty.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-catalina</artifactId>
- <version>${tomcat.version}</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>${jaxb-api.version}</version>
- <exclusions>
- <exclusion>
- <groupId>javax.xml.stream</groupId>
- <artifactId>stax-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>stax</groupId>
- <artifactId>stax-api</artifactId>
- <version>${stax-api.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jsoup</groupId>
- <artifactId>jsoup</artifactId>
- <version>${jsoup.version}</version>
- </dependency>
-
- <!-- Alerting Framework
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>${javax.mail.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity</artifactId>
- <version>${velocity.version}</version>
- </dependency>
- <dependency>
- <groupId>org.wso2.siddhi</groupId>
- <artifactId>siddhi-core</artifactId>
- <version>${siddhi.version}</version>
- </dependency>
- <dependency>
- <groupId>org.wso2.siddhi</groupId>
- <artifactId>siddhi-extension-string</artifactId>
- <version>${siddhi.version}</version>
- </dependency>
- -->
- <!-- Testing Dependencies -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${unit.test.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>${mockito.version}</version>
- </dependency>
-
- <!-- <dependency>
- <groupId>com.carrotsearch</groupId>
- <artifactId>junit-benchmarks</artifactId>
- <version>${junit-benchmarks.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>${h2.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.scalatest</groupId>
- <artifactId>scalatest_${scala.version}</artifactId>
- <version>${scalatest.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>${mockito.version}</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql-connector-java.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.ddlutils</groupId>
- <artifactId>ddlutils</artifactId>
- <version>${ddlutils.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.torque</groupId>
- <artifactId>torque-runtime</artifactId>
- <version>${torque.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-core</artifactId>
- <version>${tomcat.embed.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-el</artifactId>
- <version>${tomcat.embed.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-jasper</artifactId>
- <version>${tomcat.embed.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-logging-juli</artifactId>
- <version>${tomcat.embed.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-logging-log4j</artifactId>
- <version>${tomcat.embed.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-websocket</artifactId>
- <version>${tomcat.embed.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-test</artifactId>
- <version>${curator.version}</version>
- </dependency>
- -->
- <!-- Machine Learning
- <dependency>
- <groupId>com.googlecode.efficient-java-matrix-library</groupId>
- <artifactId>ejml</artifactId>
- <version>${ejml.version}</version>
- </dependency>
- -->
- <!-- hadoop-2 -->
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-common</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
+ <name>Apache Griffin</name>
+ <modules>
+ <module>service</module>
+ <module>measure</module>
+ <module>ui</module>
+ </modules>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-hdfs</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-client</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-auth</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
- <!--
- <dependency>
- <groupId>org.apache.hbase</groupId>
- <artifactId>hbase-server</artifactId>
- <version>${hbase.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hbase</groupId>
- <artifactId>hbase-client</artifactId>
- <version>${hbase.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hbase</groupId>
- <artifactId>hbase-testing-util</artifactId>
- <version>${hbase.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hive</groupId>
- <artifactId>hive-exec</artifactId>
- <version>${hive.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hive</groupId>
- <artifactId>hive-jdbc</artifactId>
- <version>${hive.version}</version>
- </dependency>
- -->
- </dependencies>
- </dependencyManagement>
<profiles>
<profile>
- <id>hadoop-2</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-common</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.hbase</groupId>
- <artifactId>hbase-client</artifactId>
- <version>${hbase.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-hdfs</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-client</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-auth</artifactId>
- <version>${hadoop.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hbase</groupId>
- <artifactId>hbase-server</artifactId>
- <version>${hbase.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hbase</groupId>
- <artifactId>hbase-testing-util</artifactId>
- <version>${hbase.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hive</groupId>
- <artifactId>hive-exec</artifactId>
- <version>${hive.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.hive</groupId>
- <artifactId>hive-jdbc</artifactId>
- <version>${hive.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
+ <id>prod</id>
+ <modules>
+ <module>service</module>
+ <module>measure</module>
+ <module>ui</module>
+ </modules>
+ </profile>
+ <profile>
+ <id>dev</id>
+ <modules>
+ <module>service</module>
+ <module>measure</module>
+ </modules>
</profile>
</profiles>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <version>${maven-apache-rat.version}</version>
- <configuration>
- <useDefaultExcludes>true</useDefaultExcludes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <version>${maven-failsafe.version}</version>
- <executions>
- <execution>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <version>${maven-tomcat7.version}</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <version>${maven-source.version}</version>
- </plugin>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>${maven-compiler.version}</version>
- <configuration>
- <source>${java.version}</source>
- <target>${java.version}</target>
- <encoding>UTF-8</encoding>
- <maxmem>2048m</maxmem>
- <fork>true</fork>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>${maven-surefire.version}</version>
- <configuration>
- <argLine>-XX:-UseGCOverheadLimit</argLine>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>${maven-jar.version}</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>${maven-assembly.version}</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>${maven-dependency.version}</version>
- </plugin>
- <plugin>
- <groupId>org.scala-tools</groupId>
- <artifactId>maven-scala-plugin</artifactId>
- <version>${maven-scala.version}</version>
- </plugin>
- <plugin>
- <groupId>org.scalatest</groupId>
- <artifactId>scalatest-maven-plugin</artifactId>
- <version>${maven-scalatest.version}</version>
- </plugin>
- <!-- deploy to sonatype.org
- http://central.sonatype.org/pages/apache-maven.html
- -->
- <plugin>
- <groupId>org.sonatype.plugins</groupId>
- <artifactId>nexus-staging-maven-plugin</artifactId>
- <version>1.6.7</version>
- <extensions>true</extensions>
- <configuration>
- <serverId>ossrh</serverId>
- <nexusUrl>https://oss.sonatype.org/</nexusUrl>
- <autoReleaseAfterClose>true</autoReleaseAfterClose>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-gpg-plugin</artifactId>
- <version>1.5</version>
- <executions>
- <execution>
- <id>sign-artifacts</id>
- <phase>verify</phase>
- <goals>
- <goal>sign</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </pluginManagement>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.6.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ </plugins>
</build>
-</project>
+
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/pom.xml
----------------------------------------------------------------------
diff --git a/service/pom.xml b/service/pom.xml
new file mode 100644
index 0000000..88d7a00
--- /dev/null
+++ b/service/pom.xml
@@ -0,0 +1,155 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.griffin</groupId>
+ <artifactId>service</artifactId>
+ <packaging>jar</packaging>
+ <version>0.1.0-SNAPSHOT</version>
+
+ <name>Apache Griffin :: Web Service</name>
+
+ <properties>
+ <java.version>1.8</java.version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <hadoop.version>2.6.0</hadoop.version>
+ <hive.version>1.2.1</hive.version>
+ <scala.version>2.10</scala.version>
+ <spring.boot.version>1.5.1.RELEASE</spring.boot.version>
+ <spring.version>4.3.2.RELEASE</spring.version>
+ <confluent.version>3.2.0</confluent.version>
+ <quartz.version>2.2.1</quartz.version>
+ <start-class>org.apache.griffin.core.GriffinWebApplication</start-class>
+ </properties>
+
+ <repositories>
+ <repository>
+ <id>confluent</id>
+ <url>http://packages.confluent.io/maven/</url>
+ </repository>
+ </repositories>
+
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring.boot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
+ </dependency>
+
+ <!--dev db-->
+
+ <!--<dependency>-->
+ <!--<groupId>com.h2database</groupId>-->
+ <!--<artifactId>h2</artifactId>-->
+ <!--</dependency>-->
+
+
+ <!--prod db-->
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.6.3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.0</version>
+ </dependency>
+ <!-- to access metastore from hive-->
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-client</artifactId>
+ <version>${hadoop.version}</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>servlet-api</artifactId>
+ <groupId>javax.servlet</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-metastore</artifactId>
+ <version>${hive.version}</version>
+ </dependency>
+
+ <!-- to access confluent schema registry -->
+ <dependency>
+ <groupId>io.confluent</groupId>
+ <artifactId>kafka-schema-registry-client</artifactId>
+ <version>${confluent.version}</version>
+ </dependency>
+
+ <!--schedule-->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.quartz-scheduler</groupId>
+ <artifactId>quartz</artifactId>
+ <version>2.2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.quartz-scheduler</groupId>
+ <artifactId>quartz-jobs</artifactId>
+ <version>2.2.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <profiles>
+ </profiles>
+ <build>
+ <finalName>service</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.6.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/GriffinWebApplication.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/GriffinWebApplication.java b/service/src/main/java/org/apache/griffin/core/GriffinWebApplication.java
new file mode 100644
index 0000000..7efbcf9
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/GriffinWebApplication.java
@@ -0,0 +1,68 @@
+package org.apache.griffin.core;
+
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.griffin.core.common.SimpleCORSFilter;
+import org.apache.griffin.core.measure.DataConnector;
+import org.apache.griffin.core.measure.DataConnector.ConnectorType;
+import org.apache.griffin.core.measure.EvaluateRule;
+import org.apache.griffin.core.measure.Measure;
+import org.apache.griffin.core.measure.repo.DataConnectorRepo;
+import org.apache.griffin.core.measure.repo.EvaluateRuleRepo;
+import org.apache.griffin.core.measure.repo.MeasureRepo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+import java.util.HashMap;
+
+//import org.apache.griffin.core.measure.repo.ConnectorConfigRepo;
+
+@SpringBootApplication
+public class GriffinWebApplication implements CommandLineRunner{
+ private static final Logger log = LoggerFactory.getLogger(GriffinWebApplication.class);
+ public static void main(String[] args) {
+ log.info("application start");
+ SpringApplication.run(GriffinWebApplication.class, args);
+ }
+
+ @Autowired
+ MeasureRepo measureRepo;
+ @Autowired
+ EvaluateRuleRepo evaluateRuleRepo;
+ @Autowired
+ DataConnectorRepo connectorRepo;
+
+
+
+ public void run(String... strings) throws Exception {
+ HashMap<String,String> configMap1=new HashMap<>();
+ configMap1.put("database","default");
+ configMap1.put("table.name","test_data_src");
+ HashMap<String,String> configMap2=new HashMap<>();
+ configMap2.put("database","default");
+ configMap2.put("table.name","test_data_tgt");
+ String configJson1 = new ObjectMapper().writeValueAsString(configMap1);
+ String configJson2 = new ObjectMapper().writeValueAsString(configMap2);
+
+ DataConnector source = new DataConnector(ConnectorType.HIVE, "1.2", configJson1);
+ DataConnector target = new DataConnector(ConnectorType.HIVE, "1.2", configJson2);
+
+ String rules = "$source.uage > 100 AND $source.uid = $target.uid AND $source.uage + 12 = $target.uage + 10 + 2 AND $source.udes + 11 = $target.udes + 1 + 1";
+
+ EvaluateRule eRule = new EvaluateRule(1,rules);
+
+ Measure measure = new Measure("accu1","accu1 description", Measure.MearuseType.accuracy, "bullyeye", source, target, eRule,"test1");
+ measureRepo.save(measure);
+ }
+
+ @Bean
+ public SimpleCORSFilter simpleFilter() {
+ return new SimpleCORSFilter();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/common/SimpleCORSFilter.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/common/SimpleCORSFilter.java b/service/src/main/java/org/apache/griffin/core/common/SimpleCORSFilter.java
new file mode 100644
index 0000000..64da4fb
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/common/SimpleCORSFilter.java
@@ -0,0 +1,46 @@
+/*
+ Copyright (c) 2016 eBay Software Foundation.
+ Licensed 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.griffin.core.common;
+import javax.servlet.*;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+//@Component
+public class SimpleCORSFilter implements Filter {
+
+// private final Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);
+//
+// public SimpleCORSFilter() {
+// log.info("SimpleCORSFilter init");
+// }
+
+ @Override
+ public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
+ HttpServletResponse response = (HttpServletResponse) res;
+ response.setHeader("Access-Control-Allow-Origin", "*");
+ response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");
+ response.setHeader("Access-Control-Max-Age", "3600");
+ response.setHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept");
+ chain.doFilter(req, res);
+ }
+
+ @Override
+ public void init(FilterConfig filterConfig) {}
+
+ @Override
+ public void destroy() {}
+
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/AuditableEntity.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/AuditableEntity.java b/service/src/main/java/org/apache/griffin/core/measure/AuditableEntity.java
new file mode 100644
index 0000000..47283c1
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/AuditableEntity.java
@@ -0,0 +1,67 @@
+package org.apache.griffin.core.measure;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.Date;
+
+@MappedSuperclass
+public abstract class AuditableEntity implements Serializable {
+
+// private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ private Long id;
+
+ @JsonIgnore
+ Timestamp createdDate = new Timestamp(new Date().getTime());
+
+ @JsonIgnore
+ Timestamp modifiedDate;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Timestamp getCreatedDate() { return createdDate; }
+ public void setCreatedDate(Timestamp createdDate) { this.createdDate = createdDate; }
+
+ public Timestamp getModifiedDate() { return modifiedDate; }
+ public void setModifiedDate(Timestamp modifiedDate) { this.modifiedDate = modifiedDate; }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ AuditableEntity other = (AuditableEntity) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/DataConnector.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/DataConnector.java b/service/src/main/java/org/apache/griffin/core/measure/DataConnector.java
new file mode 100644
index 0000000..7eb5b44
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/DataConnector.java
@@ -0,0 +1,66 @@
+package org.apache.griffin.core.measure;
+
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import java.util.HashMap;
+import java.util.Map;
+
+@Entity
+public class DataConnector extends AuditableEntity {
+
+ private static final long serialVersionUID = -4748881017029815794L;
+
+ public enum ConnectorType {
+ HIVE
+ }
+
+ @Enumerated(EnumType.STRING)
+ public ConnectorType type;
+
+ public String version;
+
+ private String config;
+
+ public Map<String,String> getConfig() {
+ Map<String, String> map = new HashMap<String, String>();
+ ObjectMapper mapper = new ObjectMapper();
+
+ try {
+ //convert JSON string to Map
+ map = mapper.readValue(config, new TypeReference<HashMap<String, String>>() {});
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return map;
+ }
+
+ public void setConfig(Map<String,String> config) throws JsonProcessingException {
+ String configJson = new ObjectMapper().writeValueAsString(config);
+ this.config = configJson;
+ }
+
+ public DataConnector() {
+ }
+
+ public DataConnector(ConnectorType type, String version, String config) {
+ super();
+ this.type = type;
+ this.version = version;
+ this.config = config;
+ }
+
+ @Override
+ public String toString() {
+ return "DataConnector{" +
+ "type=" + type +
+ ", version='" + version + '\'' +
+ ", config=" + config +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/EvaluateRule.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/EvaluateRule.java b/service/src/main/java/org/apache/griffin/core/measure/EvaluateRule.java
new file mode 100644
index 0000000..773e0b8
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/EvaluateRule.java
@@ -0,0 +1,20 @@
+
+package org.apache.griffin.core.measure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class EvaluateRule extends AuditableEntity {
+
+ private static final long serialVersionUID = -3589222812544556642L;
+ public int sampleRatio;
+ public String rules;
+
+ public EvaluateRule() {
+ }
+
+ public EvaluateRule(int sampleRatio, String rules) {
+ this.sampleRatio = sampleRatio;
+ this.rules = rules;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/Measure.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/Measure.java b/service/src/main/java/org/apache/griffin/core/measure/Measure.java
new file mode 100644
index 0000000..db50c6c
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/Measure.java
@@ -0,0 +1,117 @@
+package org.apache.griffin.core.measure;
+
+import javax.persistence.*;
+
+
+@Entity
+public class Measure extends AuditableEntity {
+
+ private static final long serialVersionUID = -4748881017029815794L;
+
+ @Column(unique=true)
+ public String name;
+
+ public String description;
+
+ public static enum MearuseType {
+ accuracy,
+ }
+
+ public String organization;
+ @Enumerated(EnumType.STRING)
+ public MearuseType type;
+
+ @ManyToOne(fetch = FetchType.EAGER,cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
+ @JoinColumn(name = "source_id")
+ public DataConnector source;
+
+ @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
+ @JoinColumn(name = "target_id")
+ public DataConnector target;
+
+ @OneToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
+ @JoinColumn(name = "evaluateRule_id")
+ public EvaluateRule evaluateRule;
+
+ public String owner;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getOrganization() {
+ return organization;
+ }
+
+ public void setOrganization(String organization) {
+ this.organization = organization;
+ }
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public void setOwner(String owner) {
+ this.owner = owner;
+ }
+
+ public MearuseType getType() {
+ return type;
+ }
+
+ public void setType(MearuseType type) {
+ this.type = type;
+ }
+
+ public DataConnector getSource() {
+ return source;
+ }
+
+ public void setSource(DataConnector source) {
+ this.source = source;
+ }
+
+ public DataConnector getTarget() {
+ return target;
+ }
+
+ public void setTarget(DataConnector target) {
+ this.target = target;
+ }
+
+ public EvaluateRule getEvaluateRule() {
+ return evaluateRule;
+ }
+
+ public void setEvaluateRule(EvaluateRule evaluateRule) {
+ this.evaluateRule = evaluateRule;
+ }
+
+ public Measure() {
+ }
+
+ public Measure(String name, String description, MearuseType type, String organization, DataConnector source, DataConnector target, EvaluateRule evaluateRule, String owner) {
+ this.name = name;
+ this.description=description;
+ this.organization = organization;
+ this.type = type;
+ this.source = source;
+ this.target = target;
+ this.evaluateRule = evaluateRule;
+ this.owner = owner;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java b/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
new file mode 100644
index 0000000..21c0b93
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/MeasureController.java
@@ -0,0 +1,89 @@
+package org.apache.griffin.core.measure;
+
+import org.apache.griffin.core.measure.repo.MeasureRepo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+public class MeasureController {
+ private static final Logger log = LoggerFactory.getLogger(MeasureController.class);
+ public enum Message {
+ success,
+ fail,
+ notFound
+ }
+
+ @Autowired
+ MeasureRepo measureRepo;
+ @RequestMapping("/measures")
+ public Iterable<Measure> getMeasures() {
+ return measureRepo.findAll();
+ }
+
+ @RequestMapping("/measures/{id}")
+ public Measure getMeasuresById(@PathVariable("id") long id) {
+ return measureRepo.findOne(id);
+ }
+
+ @RequestMapping("/measures/findByName/{measureName}")
+ public Measure getMeasuresByName(@PathVariable("measureName") String measureName) {
+ return measureRepo.findByName(measureName);
+ }
+
+ @RequestMapping(value = "/measures/deleteById/{MeasureId}",method = RequestMethod.DELETE)
+ public void deleteMeasuresById(@PathVariable("MeasureId") Long MeasureId) { measureRepo.delete(MeasureId);}
+
+ @RequestMapping(value = "/measures/deleteByName/{measureName}",method = RequestMethod.DELETE)
+ public Message deleteMeasuresByName(@PathVariable("measureName") String measureName) {
+ Message msg;
+ Measure temp_mesaure=measureRepo.findByName(measureName);
+ if(temp_mesaure==null){
+ msg=Message.notFound;
+ }
+ else{
+ measureRepo.delete(temp_mesaure.getId());
+ msg=Message.success;
+ }
+ return msg;
+ }
+
+ @RequestMapping(value = "/measures/update",method = RequestMethod.POST)
+ @ResponseBody
+ public MeasureController.Message updateMeasure(@RequestBody Measure measure) {
+ MeasureController.Message msg;
+ String name=measure.getName();
+ Measure temp_mesaure=measureRepo.findByName(name);
+ if (temp_mesaure==null){
+ msg=Message.notFound;
+ }else{
+ //in this way, id will changed
+ measureRepo.delete(temp_mesaure.getId());
+ measureRepo.save(measure);
+ msg=Message.success;
+ }
+ return msg;
+ }
+
+
+ @RequestMapping(value = "/measures/add", method = RequestMethod.POST)
+ @ResponseBody
+ public Message createNewMeasure(@RequestBody Measure measure) {
+ Message msg;
+ System.out.println(measure);
+ String name=measure.getName();
+ Measure temp_mesaure=measureRepo.findByName(name);
+ if (temp_mesaure==null){
+ if (measureRepo.save(measure)!=null)
+ msg=Message.success;
+ else{
+ msg = Message.fail;
+ }
+ } else{
+ log.info("Failed to create new measure "+name+", it already exists");
+ return Message.fail;
+ }
+ return msg;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/repo/ConnectorConfigRepo.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/repo/ConnectorConfigRepo.java b/service/src/main/java/org/apache/griffin/core/measure/repo/ConnectorConfigRepo.java
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/repo/DataConnectorRepo.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/repo/DataConnectorRepo.java b/service/src/main/java/org/apache/griffin/core/measure/repo/DataConnectorRepo.java
new file mode 100644
index 0000000..3631a86
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/repo/DataConnectorRepo.java
@@ -0,0 +1,10 @@
+package org.apache.griffin.core.measure.repo;
+
+
+import org.apache.griffin.core.measure.DataConnector;
+import org.springframework.data.repository.CrudRepository;
+
+public interface DataConnectorRepo extends CrudRepository<DataConnector, Long> {
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/repo/EvaluateRuleRepo.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/repo/EvaluateRuleRepo.java b/service/src/main/java/org/apache/griffin/core/measure/repo/EvaluateRuleRepo.java
new file mode 100644
index 0000000..fd659ce
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/repo/EvaluateRuleRepo.java
@@ -0,0 +1,10 @@
+package org.apache.griffin.core.measure.repo;
+
+
+import org.apache.griffin.core.measure.EvaluateRule;
+import org.springframework.data.repository.CrudRepository;
+
+public interface EvaluateRuleRepo extends CrudRepository<EvaluateRule, Long> {
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java b/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java
new file mode 100644
index 0000000..0eec264
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/measure/repo/MeasureRepo.java
@@ -0,0 +1,9 @@
+package org.apache.griffin.core.measure.repo;
+
+
+import org.apache.griffin.core.measure.Measure;
+import org.springframework.data.repository.CrudRepository;
+
+public interface MeasureRepo extends CrudRepository<Measure, Long> {
+ Measure findByName(String name);
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreController.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreController.java b/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreController.java
new file mode 100644
index 0000000..3b035e9
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreController.java
@@ -0,0 +1,56 @@
+package org.apache.griffin.core.metastore;
+
+
+import org.apache.hadoop.hive.metastore.api.Table;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/metadata/hive")
+public class HiveMetastoreController {
+
+ @Autowired
+ HiveMetastoreService hiveMetastoreService;
+
+ @RequestMapping("/db")
+ public Iterable<String> getAllDatabases() {
+ return hiveMetastoreService.getAllDatabases();
+ }
+
+ @RequestMapping("/table")
+ public Iterable<String> getDefAllTables() {
+ return hiveMetastoreService.getAllTableNames("");
+ }
+
+ @RequestMapping("/{db}/table")
+ public Iterable<String> getAllTableNamess(@PathVariable("db") String dbName) {
+ return hiveMetastoreService.getAllTableNames(dbName);
+ }
+
+ @RequestMapping("/{db}/alltables")
+ public List<Table> getAllTables(@PathVariable("db") String dbName) {
+ return hiveMetastoreService.getAllTable(dbName);
+ }
+
+ @RequestMapping("/alltables")
+ public Map<String,List<Table>> getAllTables() {
+ return hiveMetastoreService.getAllTable();
+ }
+
+ @RequestMapping("/table/{table}")
+ public Table getDefTable(@PathVariable("table") String tableName) {
+ return hiveMetastoreService.getTable("", tableName);
+ }
+
+ @RequestMapping("/{db}/table/{table}")
+ public Table getTable(@PathVariable("db") String dbName, @PathVariable("table") String tableName) {
+ return hiveMetastoreService.getTable(dbName, tableName);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreProxy.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreProxy.java b/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreProxy.java
new file mode 100644
index 0000000..5939d0e
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreProxy.java
@@ -0,0 +1,42 @@
+package org.apache.griffin.core.metastore;
+
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
+import org.apache.hadoop.hive.metastore.api.MetaException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+@Component
+public class HiveMetastoreProxy
+{
+ private static final Logger log = LoggerFactory.getLogger(HiveMetastoreProxy.class);
+
+ @Value("${hive.metastore.uris}")
+ private String uris;
+
+
+ private HiveMetaStoreClient client = null;
+
+ @Bean
+ public HiveMetaStoreClient initHiveMetastoreClient(){
+ HiveConf hiveConf = new HiveConf();
+ hiveConf.set("hive.metastore.local", "false");
+ hiveConf.setIntVar(HiveConf.ConfVars.METASTORETHRIFTCONNECTIONRETRIES, 3);
+ hiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, uris);
+ try {
+ client= new HiveMetaStoreClient(hiveConf);
+ } catch (MetaException e) {
+ log.error("Failed to connect hive metastore",e.getMessage());
+ client = null;
+ }
+
+ return client;
+ }
+
+ public void destroy() throws Exception {
+ if(null!=client) client.close();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreService.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreService.java b/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreService.java
new file mode 100644
index 0000000..ba7ade4
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/metastore/HiveMetastoreService.java
@@ -0,0 +1,105 @@
+package org.apache.griffin.core.metastore;
+
+
+import org.apache.avro.generic.GenericData;
+import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
+import org.apache.hadoop.hive.metastore.api.MetaException;
+import org.apache.hadoop.hive.metastore.api.Table;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+@Service
+public class HiveMetastoreService {
+
+ private static final Logger log = LoggerFactory.getLogger(HiveMetastoreService.class);
+
+ @Autowired
+ HiveMetaStoreClient client;
+
+ @Value("${hive.metastore.dbname}")
+ private String defaultDbName;
+
+ private String getUseDbName(String dbName) {
+ if (!StringUtils.hasText(dbName)) return defaultDbName;
+ else return dbName;
+ }
+
+ public Iterable<String> getAllDatabases() {
+ Iterable<String> results = null;
+ try {
+ results = client.getAllDatabases();
+ } catch (MetaException e) {
+ log.error("Can not get databases : ",e.getMessage());
+ }
+ return results;
+ }
+
+ public Iterable<String> getAllTableNames(String dbName) {
+ Iterable<String> results = null;
+ String useDbName = getUseDbName(dbName);
+ try {
+ results = client.getAllTables(useDbName);
+ } catch (Exception e) {
+ log.warn("Exception fetching tables info" + e.getMessage());
+ }
+ return results;
+ }
+
+ public List<Table> getAllTable(String db){
+ List<Table> results = new ArrayList<Table>();
+ String useDbName = getUseDbName(db);
+ try {
+ Iterable<String> tables = client.getAllTables(useDbName);
+ for (String table: tables) {
+ Table tmp = client.getTable(db,table);
+ results.add(tmp);
+ }
+ } catch (Exception e) {
+ log.warn("Exception fetching tables info" + e.getMessage());
+ }
+ return results;
+ }
+
+ public Map<String,List<Table>> getAllTable(){
+ Map<String,List<Table>> results = new HashMap<String, List<Table>>();
+ Iterable<String> dbs = getAllDatabases();
+ for(String db: dbs){
+ List<Table> alltables = new ArrayList<Table>();
+ String useDbName = getUseDbName(db);
+ try {
+ Iterable<String> tables = client.getAllTables(useDbName);
+ for (String table: tables) {
+ Table tmp = client.getTable(db,table);
+ alltables.add(tmp);
+ }
+ } catch (Exception e) {
+ log.warn("Exception fetching tables info" + e.getMessage());
+ }
+ results.put(db,alltables);
+ }
+ return results;
+ }
+
+ public Table getTable(String dbName, String tableName) {
+ Table result = null;
+ String useDbName = getUseDbName(dbName);
+ try {
+ result = client.getTable(useDbName, tableName);
+ } catch (Exception e) {
+ log.warn("Exception fetching table info : " +tableName + " : " + e.getMessage());
+ }
+ return result;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaController.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaController.java b/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaController.java
new file mode 100644
index 0000000..1491518
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaController.java
@@ -0,0 +1,48 @@
+package org.apache.griffin.core.metastore;
+
+import io.confluent.kafka.schemaregistry.client.rest.entities.Config;
+import io.confluent.kafka.schemaregistry.client.rest.entities.Schema;
+import io.confluent.kafka.schemaregistry.client.rest.entities.SchemaString;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/metadata/kafka")
+public class KafkaSchemaController {
+
+ @Autowired
+ KafkaSchemaService kafkaSchemaService;
+
+ @RequestMapping("/schema/{id}")
+ public SchemaString getSchemaString(@PathVariable("id") Integer id) {
+ return kafkaSchemaService.getSchemaString(id);
+ }
+
+ @RequestMapping("/subject")
+ public Iterable<String> getSubjects() {
+ return kafkaSchemaService.getSubjects();
+ }
+
+ @RequestMapping("/subject/{subject}/version")
+ public Iterable<Integer> getSubjectVersions(@PathVariable("subject") String subject) {
+ return kafkaSchemaService.getSubjectVersions(subject);
+ }
+
+ @RequestMapping("/subject/{subject}/version/{version}")
+ public Schema getSubjectSchema(@PathVariable("subject") String subject, @PathVariable("version") String version) {
+ return kafkaSchemaService.getSubjectSchema(subject, version);
+ }
+
+ @RequestMapping("/config")
+ public Config getTopLevelConfig() {
+ return kafkaSchemaService.getTopLevelConfig();
+ }
+
+ @RequestMapping("/config/{subject}")
+ public Config getSubjectLevelConfig(@PathVariable("subject") String subject) {
+ return kafkaSchemaService.getSubjectLevelConfig(subject);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaService.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaService.java b/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaService.java
new file mode 100644
index 0000000..2113312
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/metastore/KafkaSchemaService.java
@@ -0,0 +1,118 @@
+package org.apache.griffin.core.metastore;
+
+import io.confluent.kafka.schemaregistry.client.rest.entities.Config;
+import io.confluent.kafka.schemaregistry.client.rest.entities.Schema;
+import io.confluent.kafka.schemaregistry.client.rest.entities.SchemaString;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Arrays;
+
+@Service
+public class KafkaSchemaService {
+
+ private static final Logger log = LoggerFactory.getLogger(KafkaSchemaService.class);
+
+ @Value("${kafka.schema.registry.url}")
+ private String url;
+
+
+ private String registryUrl(final String path) {
+ if (StringUtils.hasText(path)) {
+ String usePath = path;
+ if (!path.startsWith("/")) usePath = "/" + path;
+ return this.url + usePath;
+ }
+ return "";
+ }
+
+ public SchemaString getSchemaString(Integer id) {
+ String path = "/schemas/ids/" + id;
+ String regUrl = registryUrl(path);
+ SchemaString result = null;
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity<SchemaString> res = restTemplate.getForEntity(regUrl, SchemaString.class);
+ result = res.getBody();
+ } catch (Exception e) {
+ log.error("Exception getting schema of id " + id + " : ", e.getMessage());
+ }
+ return result;
+ }
+
+ public Iterable<String> getSubjects() {
+ String path = "/subjects";
+ String regUrl = registryUrl(path);
+ Iterable<String> result = null;
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity<String[]> res = restTemplate.getForEntity(regUrl, String[].class);
+ result = Arrays.asList(res.getBody());
+ } catch (Exception e) {
+ log.error("Exception getting subjects : ", e.getMessage());
+ }
+ return result;
+ }
+
+ public Iterable<Integer> getSubjectVersions(String subject) {
+ String path = "/subjects/" + subject + "/versions";
+ String regUrl = registryUrl(path);
+ Iterable<Integer> result = null;
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity<Integer[]> res = restTemplate.getForEntity(regUrl, Integer[].class);
+ result = Arrays.asList(res.getBody());
+ } catch (Exception e) {
+ log.error("Exception getting subject " + subject + " versions : ", e.getMessage());
+ }
+ return result;
+ }
+
+ public Schema getSubjectSchema(String subject, String version) {
+ String path = "/subjects/" + subject + "/versions/" + version;
+ String regUrl = registryUrl(path);
+ Schema result = null;
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity<Schema> res = restTemplate.getForEntity(regUrl, Schema.class);
+ result = res.getBody();
+ } catch (Exception e) {
+ log.error("Exception getting subject " + subject + " with version " + version + " : ", e.getMessage());
+ }
+ return result;
+ }
+
+ public Config getTopLevelConfig() {
+ String path = "/config";
+ String regUrl = registryUrl(path);
+ Config result = null;
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity<Config> res = restTemplate.getForEntity(regUrl, Config.class);
+ result = res.getBody();
+ } catch (Exception e) {
+ log.error("Exception getting top level config : ", e.getMessage());
+ }
+ return result;
+ }
+
+ public Config getSubjectLevelConfig(String subject) {
+ String path = "/config/" + subject;
+ String regUrl = registryUrl(path);
+ Config result = null;
+ try {
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity<Config> res = restTemplate.getForEntity(regUrl, Config.class);
+ result = res.getBody();
+ } catch (Exception e) {
+ log.error("Exception getting subject " + subject + " level config : ", e.getMessage());
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/schedule/AutowiringSpringBeanJobFactory.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/schedule/AutowiringSpringBeanJobFactory.java b/service/src/main/java/org/apache/griffin/core/schedule/AutowiringSpringBeanJobFactory.java
new file mode 100644
index 0000000..8e10384
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/schedule/AutowiringSpringBeanJobFactory.java
@@ -0,0 +1,26 @@
+package org.apache.griffin.core.schedule;
+
+import org.quartz.spi.TriggerFiredBundle;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.scheduling.quartz.SpringBeanJobFactory;
+
+public final class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory
+ implements ApplicationContextAware {
+
+ private transient AutowireCapableBeanFactory beanFactory;
+
+ @Override
+ public void setApplicationContext(final ApplicationContext context) {
+ beanFactory = context.getAutowireCapableBeanFactory();
+ }
+
+ @Override
+ protected Object createJobInstance(final TriggerFiredBundle bundle)
+ throws Exception {
+ final Object job = super.createJobInstance(bundle);
+ beanFactory.autowireBean(job);
+ return job;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/schedule/Conf.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/schedule/Conf.java b/service/src/main/java/org/apache/griffin/core/schedule/Conf.java
new file mode 100644
index 0000000..4ccd6fd
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/schedule/Conf.java
@@ -0,0 +1,16 @@
+package org.apache.griffin.core.schedule;
+
+/**
+ * Created by xiangrchen on 4/26/17.
+ */
+public class Conf {
+ String spark_jars_packages;
+
+ public String getSpark_jars_packages() {
+ return spark_jars_packages;
+ }
+
+ public void setSpark_jars_packages(String spark_jars_packages) {
+ this.spark_jars_packages = spark_jars_packages;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/f629d0f4/service/src/main/java/org/apache/griffin/core/schedule/SchedulerConfig.java
----------------------------------------------------------------------
diff --git a/service/src/main/java/org/apache/griffin/core/schedule/SchedulerConfig.java b/service/src/main/java/org/apache/griffin/core/schedule/SchedulerConfig.java
new file mode 100644
index 0000000..916b104
--- /dev/null
+++ b/service/src/main/java/org/apache/griffin/core/schedule/SchedulerConfig.java
@@ -0,0 +1,44 @@
+package org.apache.griffin.core.schedule;
+
+import org.quartz.spi.JobFactory;
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.util.Properties;
+
+@Configuration
+public class SchedulerConfig {
+
+ @Bean
+ public JobFactory jobFactory(ApplicationContext applicationContext) {
+ AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
+ jobFactory.setApplicationContext(applicationContext);
+ return jobFactory;
+ }
+
+ @Bean
+ public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory) throws IOException {
+ SchedulerFactoryBean factory = new SchedulerFactoryBean();
+ factory.setOverwriteExistingJobs(true);
+ factory.setDataSource(dataSource);
+ factory.setJobFactory(jobFactory);
+
+ factory.setQuartzProperties(quartzProperties());
+
+ return factory;
+ }
+
+ @Bean
+ public Properties quartzProperties() throws IOException {
+ PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
+ propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
+ propertiesFactoryBean.afterPropertiesSet();
+ return propertiesFactoryBean.getObject();
+ }
+}