You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by ka...@apache.org on 2017/08/02 18:12:26 UTC
sentry git commit: SENTRY-1843: Fork sentry-binding-hive-follower
package to support Hive 2.x,
(kalyan kumar kalvagadda reviewed by Colm O hEigeartaigh)
Repository: sentry
Updated Branches:
refs/heads/master b19cb01b4 -> a68386e3a
SENTRY-1843: Fork sentry-binding-hive-follower package to support Hive 2.x, (kalyan kumar kalvagadda reviewed by Colm O hEigeartaigh)
Project: http://git-wip-us.apache.org/repos/asf/sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/a68386e3
Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/a68386e3
Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/a68386e3
Branch: refs/heads/master
Commit: a68386e3a2af834b7679129c76a168c5402727af
Parents: b19cb01
Author: Kalyan Kumar Kalvagadda <kk...@cloudera.com>
Authored: Wed Aug 2 13:11:38 2017 -0500
Committer: Kalyan Kumar Kalvagadda <kk...@cloudera.com>
Committed: Wed Aug 2 13:11:38 2017 -0500
----------------------------------------------------------------------
sentry-binding/pom.xml | 3 +-
.../sentry-binding-hive-follower-v2/pom.xml | 71 ++++++
.../json/SentryJSONAddPartitionMessage.java | 48 ++++
.../json/SentryJSONAlterPartitionMessage.java | 66 +++++
.../json/SentryJSONAlterTableMessage.java | 54 ++++
.../json/SentryJSONCreateDatabaseMessage.java | 44 ++++
.../json/SentryJSONCreateTableMessage.java | 44 ++++
.../json/SentryJSONDropDatabaseMessage.java | 44 ++++
.../json/SentryJSONDropPartitionMessage.java | 51 ++++
.../json/SentryJSONDropTableMessage.java | 45 ++++
.../json/SentryJSONMessageDeserializer.java | 138 ++++++++++
.../json/SentryJSONMessageFactory.java | 161 ++++++++++++
.../json/SentryJSONAddPartitionMessage.java | 43 ++--
.../json/SentryJSONAlterPartitionMessage.java | 66 ++---
.../json/SentryJSONAlterTableMessage.java | 59 ++---
.../json/SentryJSONCreateDatabaseMessage.java | 32 +--
.../json/SentryJSONCreateTableMessage.java | 33 ++-
.../json/SentryJSONDropDatabaseMessage.java | 34 +--
.../json/SentryJSONDropPartitionMessage.java | 47 ++--
.../json/SentryJSONDropTableMessage.java | 32 +--
.../json/SentryJSONMessageDeserializer.java | 187 +++++++-------
.../json/SentryJSONMessageFactory.java | 251 ++++++++++---------
sentry-provider/sentry-provider-db/pom.xml | 33 ++-
23 files changed, 1187 insertions(+), 399 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/pom.xml
----------------------------------------------------------------------
diff --git a/sentry-binding/pom.xml b/sentry-binding/pom.xml
index 71fe47c..505ae98 100644
--- a/sentry-binding/pom.xml
+++ b/sentry-binding/pom.xml
@@ -34,7 +34,6 @@ limitations under the License.
<module>sentry-binding-hive-common</module>
<module>sentry-binding-solr</module>
<module>sentry-binding-sqoop</module>
- <module>sentry-binding-hive-follower</module>
<module>sentry-binding-hive-conf</module>
</modules>
@@ -47,6 +46,7 @@ limitations under the License.
</activation>
<modules>
<module>sentry-binding-hive</module>
+ <module>sentry-binding-hive-follower</module>
</modules>
</profile>
<profile>
@@ -56,6 +56,7 @@ limitations under the License.
</activation>
<modules>
<module>sentry-binding-hive-v2</module>
+ <module>sentry-binding-hive-follower-v2</module>
</modules>
</profile>
</profiles>
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/pom.xml
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/pom.xml b/sentry-binding/sentry-binding-hive-follower-v2/pom.xml
new file mode 100644
index 0000000..fa7e928
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!--
+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.
+-->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.sentry</groupId>
+ <artifactId>sentry-binding</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>sentry-binding-hive-follower-v2</artifactId>
+ <name>Hive follower v2 for Sentry</name>
+
+ <properties>
+ <datanucleus-api-jdo.version>4.2.1</datanucleus-api-jdo.version>
+ <datanucleus-core.version>4.1.6</datanucleus-core.version>
+ <datanucleus-rdbms.version>4.1.7</datanucleus-rdbms.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-core</artifactId>
+ <version>${datanucleus-core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-api-jdo</artifactId>
+ <version>${datanucleus-api-jdo.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-rdbms</artifactId>
+ <version>${datanucleus-rdbms.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-exec</artifactId>
+ <version>${hive.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hive.hcatalog</groupId>
+ <artifactId>hive-hcatalog-server-extensions</artifactId>
+ <version>${hive.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java
new file mode 100644
index 0000000..10d7a93
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java
@@ -0,0 +1,48 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.json.JSONAddPartitionMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+import java.util.List;
+import java.util.Map;
+
+public class SentryJSONAddPartitionMessage extends JSONAddPartitionMessage {
+ @JsonProperty
+ private List<String> locations;
+
+ public SentryJSONAddPartitionMessage() {
+ }
+
+ public SentryJSONAddPartitionMessage(String server, String servicePrincipal, String db, String table,
+ List<Map<String, String>> partitions, Long timestamp, List<String> locations) {
+ super(server, servicePrincipal, db, table, partitions, timestamp);
+ this.locations = locations;
+ }
+
+ public List<String> getLocations() {
+ return locations;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
new file mode 100644
index 0000000..b29d727
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
@@ -0,0 +1,66 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.hive.hcatalog.messaging.json.JSONAlterPartitionMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+import java.util.List;
+
+public class SentryJSONAlterPartitionMessage extends JSONAlterPartitionMessage {
+ @JsonProperty
+ private String newLocation;
+ @JsonProperty
+ private String oldLocation;
+ @JsonProperty
+ private List<String> newValues;
+
+ public SentryJSONAlterPartitionMessage() {
+ super("", "", "", "", ImmutableList.<String>of(), null);
+ }
+
+ public SentryJSONAlterPartitionMessage(String server, String servicePrincipal,
+ String db, String table,
+ List<String> values, List<String> newValues,
+ Long timestamp, String oldlocation,
+ String newLocation) {
+ super(server, servicePrincipal, db, table, values, timestamp);
+ this.newLocation = newLocation;
+ this.oldLocation = oldlocation;
+ this.newValues = newValues;
+ }
+
+ public String getNewLocation() {
+ return newLocation;
+ }
+
+ public String getOldLocation() {
+ return oldLocation;
+ }
+
+ public List<String> getNewValues() {
+ return newValues;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java
new file mode 100644
index 0000000..4670494
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java
@@ -0,0 +1,54 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.json.JSONAlterTableMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+public class SentryJSONAlterTableMessage extends JSONAlterTableMessage {
+ @JsonProperty
+ private String newLocation;
+ @JsonProperty
+ private String oldLocation;
+
+ public SentryJSONAlterTableMessage() {
+ super("", "", "", "", null);
+ }
+
+ public SentryJSONAlterTableMessage(String server, String servicePrincipal,
+ String db, String table, Long timestamp,
+ String oldLocation, String newLocation) {
+ super(server, servicePrincipal, db, table, timestamp);
+ this.newLocation = newLocation;
+ this.oldLocation = oldLocation;
+ }
+
+ public String getNewLocation() {
+ return newLocation;
+ }
+
+ public String getOldLocation() {
+ return oldLocation;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java
new file mode 100644
index 0000000..8c62758
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java
@@ -0,0 +1,44 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.json.JSONCreateDatabaseMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+public class SentryJSONCreateDatabaseMessage extends JSONCreateDatabaseMessage {
+ @JsonProperty
+ private String location;
+
+ public SentryJSONCreateDatabaseMessage() {
+ }
+
+ public SentryJSONCreateDatabaseMessage(String server, String servicePrincipal, String db, Long timestamp, String location) {
+ super(server, servicePrincipal, db, timestamp);
+ this.location = location;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java
new file mode 100644
index 0000000..d15bc48
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java
@@ -0,0 +1,44 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.json.JSONCreateTableMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+public class SentryJSONCreateTableMessage extends JSONCreateTableMessage {
+ @JsonProperty
+ private String location;
+
+ public SentryJSONCreateTableMessage() {
+ }
+
+ public SentryJSONCreateTableMessage(String server, String servicePrincipal, String db, String table, Long timestamp, String location) {
+ super(server, servicePrincipal, db, table, timestamp);
+ this.location = location;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java
new file mode 100644
index 0000000..c8e7c75
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java
@@ -0,0 +1,44 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.json.JSONDropDatabaseMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+public class SentryJSONDropDatabaseMessage extends JSONDropDatabaseMessage {
+ @JsonProperty
+ private String location;
+
+ public SentryJSONDropDatabaseMessage() {
+ }
+
+ public SentryJSONDropDatabaseMessage(String server, String servicePrincipal, String db, Long timestamp, String location) {
+ super(server, servicePrincipal, db, timestamp);
+ this.location = location;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
new file mode 100644
index 0000000..d5f899c
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
@@ -0,0 +1,51 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.json.JSONDropPartitionMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+import java.util.List;
+import java.util.Map;
+
+public class SentryJSONDropPartitionMessage extends JSONDropPartitionMessage {
+ @JsonProperty
+ private List<String> locations;
+
+ public SentryJSONDropPartitionMessage() {
+ }
+
+ public SentryJSONDropPartitionMessage(String server, String servicePrincipal,
+ String db, String table,
+ List<Map<String, String>> partitions,
+ Long timestamp, List<String> locations) {
+ super(server, servicePrincipal, db, table, partitions, timestamp);
+ this.locations = locations;
+ }
+
+ public List<String> getLocations() {
+ return locations;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java
new file mode 100644
index 0000000..e67f562
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java
@@ -0,0 +1,45 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.json.JSONDropTableMessage;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+
+public class SentryJSONDropTableMessage extends JSONDropTableMessage {
+ @JsonProperty
+ private String location;
+
+ public SentryJSONDropTableMessage() {
+ }
+
+ public SentryJSONDropTableMessage(String server, String servicePrincipal, String db, String table, Long timestamp, String location) {
+ super(server, servicePrincipal, db, table, timestamp);
+ this.location = location;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
new file mode 100644
index 0000000..cc0bbec
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
@@ -0,0 +1,138 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import org.apache.hive.hcatalog.messaging.*;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+
+public class SentryJSONMessageDeserializer extends MessageDeserializer {
+ private static ObjectMapper mapper = new ObjectMapper();
+
+ static {
+ mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ }
+
+ public SentryJSONMessageDeserializer() {
+ }
+
+ /**
+ * Method to de-serialize CreateDatabaseMessage instance.
+ */
+ @Override
+ public SentryJSONCreateDatabaseMessage getCreateDatabaseMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONCreateDatabaseMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONCreateDatabaseMessage: ", e);
+ }
+ }
+
+ /**
+ * Method to de-serialize DropDatabaseMessage instance.
+ */
+ @Override
+ public SentryJSONDropDatabaseMessage getDropDatabaseMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONDropDatabaseMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONDropDatabaseMessage: ", e);
+ }
+ }
+
+ /**
+ * Method to de-serialize CreateTableMessage instance.
+ */
+ @Override
+ public SentryJSONCreateTableMessage getCreateTableMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONCreateTableMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONCreateTableMessage: ", e);
+ }
+ }
+
+ /**
+ * Method to de-serialize AlterTableMessage instance.
+ */
+ @Override
+ public SentryJSONAlterTableMessage getAlterTableMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONAlterTableMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONAlterTableMessage: ", e);
+ }
+ }
+
+ /**
+ * Method to de-serialize DropTableMessage instance.
+ */
+ @Override
+ public SentryJSONDropTableMessage getDropTableMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONDropTableMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONDropTableMessage: ", e);
+ }
+ }
+
+ /**
+ * Method to de-serialize AddPartitionMessage instance.
+ */
+ @Override
+ public SentryJSONAddPartitionMessage getAddPartitionMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONAddPartitionMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONAddPartitionMessage: ", e);
+ }
+ }
+
+ /**
+ * Method to de-serialize AlterPartitionMessage instance.
+ */
+ @Override
+ public SentryJSONAlterPartitionMessage getAlterPartitionMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONAlterPartitionMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONAlterPartitionMessage: ", e);
+ }
+ }
+
+ /**
+ * Method to de-serialize DropPartitionMessage instance.
+ */
+ @Override
+ public SentryJSONDropPartitionMessage getDropPartitionMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONDropPartitionMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONDropPartitionMessage: ", e);
+ }
+ }
+
+ public static String serialize(Object object) {
+ try {
+ return mapper.writeValueAsString(object);
+ } catch (Exception exception) {
+ throw new IllegalArgumentException("Could not serialize: ", exception);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
new file mode 100644
index 0000000..f173243
--- /dev/null
+++ b/sentry-binding/sentry-binding-hive-follower-v2/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
@@ -0,0 +1,161 @@
+/**
+ * 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.sentry.binding.metastore.messaging.json;
+
+import com.google.common.collect.Lists;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.common.classification.InterfaceAudience;
+import org.apache.hadoop.hive.common.classification.InterfaceStability;
+import org.apache.hadoop.hive.metastore.api.Database;
+import org.apache.hadoop.hive.metastore.api.Partition;
+import org.apache.hadoop.hive.metastore.api.Table;
+import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy;
+import org.apache.hive.hcatalog.messaging.*;
+
+import java.util.*;
+
+public class SentryJSONMessageFactory extends MessageFactory {
+ private static final Log LOG = LogFactory.getLog(SentryJSONMessageFactory.class.getName());
+ private static SentryJSONMessageDeserializer deserializer = new SentryJSONMessageDeserializer();
+
+ public SentryJSONMessageFactory() {
+ LOG.info("Using SentryJSONMessageFactory for building Notification log messages ");
+ }
+
+ public MessageDeserializer getDeserializer() {
+ return deserializer;
+ }
+
+ public String getVersion() {
+ return "0.1";
+ }
+
+ public String getMessageFormat() {
+ return "json";
+ }
+
+ public SentryJSONCreateDatabaseMessage buildCreateDatabaseMessage(Database db) {
+ return new SentryJSONCreateDatabaseMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, db.getName(),
+ now(), db.getLocationUri());
+ }
+
+ public SentryJSONDropDatabaseMessage buildDropDatabaseMessage(Database db) {
+ return new SentryJSONDropDatabaseMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, db.getName(),
+ now(), db.getLocationUri());
+ }
+
+ public SentryJSONCreateTableMessage buildCreateTableMessage(Table table) {
+ return new SentryJSONCreateTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), now(), table.getSd().getLocation());
+ }
+
+ public SentryJSONAlterTableMessage buildAlterTableMessage(Table before, Table after) {
+ return new SentryJSONAlterTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, before.getDbName(),
+ before.getTableName(), now(), before.getSd().getLocation(), after.getSd().getLocation());
+ }
+
+ public SentryJSONDropTableMessage buildDropTableMessage(Table table) {
+ return new SentryJSONDropTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), now(), table.getSd().getLocation());
+ }
+
+ public SentryJSONAddPartitionMessage buildAddPartitionMessage(Table table, List<Partition> partitions) {
+ return new SentryJSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), getPartitionKeyValues(table, partitions), now(),
+ getPartitionLocations(partitions));
+ }
+
+ private List<String> getPartitionLocations(List<Partition> partitions) {
+ List<String> paths = Lists.newLinkedList();
+ for (Partition partition : partitions) {
+ paths.add(partition.getSd().getLocation());
+ }
+ return paths;
+ }
+
+ private List<String> getPartitionLocations(PartitionSpecProxy partitionSpec) {
+ Iterator<Partition> iterator = partitionSpec.getPartitionIterator();
+ List<String> locations = Lists.newLinkedList();
+ while (iterator.hasNext()) {
+ locations.add(iterator.next().getSd().getLocation());
+ }
+ return locations;
+ }
+
+ @InterfaceAudience.LimitedPrivate( {"Hive"})
+ @InterfaceStability.Evolving
+ public SentryJSONAddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecProxy partitionSpec) {
+ return new SentryJSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), getPartitionKeyValues(table, partitionSpec), now(),
+ getPartitionLocations(partitionSpec));
+ }
+
+ @Override
+ public SentryJSONAlterPartitionMessage buildAlterPartitionMessage(Partition before, Partition after) {
+ return new SentryJSONAlterPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, before.getDbName(),
+ before.getTableName(), before.getValues(), after.getValues(), now(), before.getSd().getLocation(),
+ after.getSd().getLocation());
+ }
+
+ public SentryJSONDropPartitionMessage buildDropPartitionMessage(Table table, Partition partition) {
+ return new SentryJSONDropPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, partition.getDbName(),
+ partition.getTableName(), Arrays.asList(getPartitionKeyValues(table, partition)),
+ now(), Arrays.asList(partition.getSd().getLocation()));
+ }
+
+ private static Map<String, String> getPartitionKeyValues(Table table, Partition partition) {
+ LinkedHashMap partitionKeys = new LinkedHashMap();
+
+ for (int i = 0; i < table.getPartitionKeysSize(); ++i) {
+ partitionKeys.put((table.getPartitionKeys().get(i)).getName(), partition.getValues().get(i));
+ }
+
+ return partitionKeys;
+ }
+
+ private static List<Map<String, String>> getPartitionKeyValues(Table table, List<Partition> partitions) {
+ List<Map<String, String>> partitionList = Lists.newLinkedList();
+
+ for (Partition partition : partitions) {
+ partitionList.add(getPartitionKeyValues(table, partition));
+ }
+
+ return partitionList;
+ }
+
+ @InterfaceAudience.LimitedPrivate( {"Hive"})
+ @InterfaceStability.Evolving
+ private static List<Map<String, String>> getPartitionKeyValues(Table table, PartitionSpecProxy partitionSpec) {
+ ArrayList partitionList = new ArrayList();
+ PartitionSpecProxy.PartitionIterator iterator = partitionSpec.getPartitionIterator();
+
+ while (iterator.hasNext()) {
+ Partition partition = iterator.next();
+ partitionList.add(getPartitionKeyValues(table, partition));
+ }
+
+ return partitionList;
+ }
+
+ //This is private in parent class
+ private long now() {
+ return System.currentTimeMillis() / 1000L;
+ }
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java
index 5c656eb..10d7a93 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAddPartitionMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -25,25 +25,24 @@ import java.util.List;
import java.util.Map;
public class SentryJSONAddPartitionMessage extends JSONAddPartitionMessage {
- @JsonProperty
- private List<String> locations;
-
- public SentryJSONAddPartitionMessage() {
- }
-
- public SentryJSONAddPartitionMessage(String server, String servicePrincipal, String db, String table,
- List<Map<String, String>> partitions, Long timestamp, List<String> locations) {
- super(server, servicePrincipal, db, table, partitions, timestamp);
- this.locations = locations;
- }
-
- public List<String> getLocations() {
- return locations;
- }
-
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
-
+ @JsonProperty
+ private List<String> locations;
+
+ public SentryJSONAddPartitionMessage() {
+ }
+
+ public SentryJSONAddPartitionMessage(String server, String servicePrincipal, String db, String table,
+ List<Map<String, String>> partitions, Long timestamp, List<String> locations) {
+ super(server, servicePrincipal, db, table, partitions, timestamp);
+ this.locations = locations;
+ }
+
+ public List<String> getLocations() {
+ return locations;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
index 161bf4d..b29d727 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterPartitionMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -25,42 +25,42 @@ import org.codehaus.jackson.annotate.JsonProperty;
import java.util.List;
public class SentryJSONAlterPartitionMessage extends JSONAlterPartitionMessage {
- @JsonProperty
- private String newLocation;
- @JsonProperty
- private String oldLocation;
- @JsonProperty
- private List<String> newValues;
+ @JsonProperty
+ private String newLocation;
+ @JsonProperty
+ private String oldLocation;
+ @JsonProperty
+ private List<String> newValues;
- public SentryJSONAlterPartitionMessage() {
- super("", "", "", "", ImmutableList.<String>of(), null);
- }
+ public SentryJSONAlterPartitionMessage() {
+ super("", "", "", "", ImmutableList.<String>of(), null);
+ }
- public SentryJSONAlterPartitionMessage(String server, String servicePrincipal,
- String db, String table,
- List<String> values, List<String> newValues,
- Long timestamp, String oldlocation,
- String newLocation) {
- super(server, servicePrincipal, db, table, values, timestamp);
- this.newLocation = newLocation;
- this.oldLocation = oldlocation;
- this.newValues = newValues;
- }
+ public SentryJSONAlterPartitionMessage(String server, String servicePrincipal,
+ String db, String table,
+ List<String> values, List<String> newValues,
+ Long timestamp, String oldlocation,
+ String newLocation) {
+ super(server, servicePrincipal, db, table, values, timestamp);
+ this.newLocation = newLocation;
+ this.oldLocation = oldlocation;
+ this.newValues = newValues;
+ }
- public String getNewLocation() {
- return newLocation;
- }
+ public String getNewLocation() {
+ return newLocation;
+ }
- public String getOldLocation() {
- return oldLocation;
- }
+ public String getOldLocation() {
+ return oldLocation;
+ }
- public List<String> getNewValues() {
- return newValues;
- }
+ public List<String> getNewValues() {
+ return newValues;
+ }
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java
index b590fe8..4670494 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONAlterTableMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -22,32 +22,33 @@ import org.apache.hive.hcatalog.messaging.json.JSONAlterTableMessage;
import org.codehaus.jackson.annotate.JsonProperty;
public class SentryJSONAlterTableMessage extends JSONAlterTableMessage {
- @JsonProperty
- private String newLocation;
- @JsonProperty
- private String oldLocation;
-
- public SentryJSONAlterTableMessage() {
- super("", "", "", "", null);
- }
-
- public SentryJSONAlterTableMessage(String server, String servicePrincipal,
- String db, String table, Long timestamp,
- String oldLocation, String newLocation) {
- super(server, servicePrincipal, db, table, timestamp);
- this.newLocation = newLocation;
- this.oldLocation = oldLocation;
- }
-
- public String getNewLocation() {
- return newLocation;
- }
- public String getOldLocation() {
- return oldLocation;
- }
-
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
+ @JsonProperty
+ private String newLocation;
+ @JsonProperty
+ private String oldLocation;
+
+ public SentryJSONAlterTableMessage() {
+ super("", "", "", "", null);
+ }
+
+ public SentryJSONAlterTableMessage(String server, String servicePrincipal,
+ String db, String table, Long timestamp,
+ String oldLocation, String newLocation) {
+ super(server, servicePrincipal, db, table, timestamp);
+ this.newLocation = newLocation;
+ this.oldLocation = oldLocation;
+ }
+
+ public String getNewLocation() {
+ return newLocation;
+ }
+
+ public String getOldLocation() {
+ return oldLocation;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java
index 1118cac..8c62758 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateDatabaseMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -22,23 +22,23 @@ import org.apache.hive.hcatalog.messaging.json.JSONCreateDatabaseMessage;
import org.codehaus.jackson.annotate.JsonProperty;
public class SentryJSONCreateDatabaseMessage extends JSONCreateDatabaseMessage {
- @JsonProperty
- private String location;
+ @JsonProperty
+ private String location;
- public SentryJSONCreateDatabaseMessage() {
- }
+ public SentryJSONCreateDatabaseMessage() {
+ }
- public SentryJSONCreateDatabaseMessage(String server, String servicePrincipal, String db, Long timestamp, String location) {
- super(server, servicePrincipal, db, timestamp);
- this.location = location;
- }
+ public SentryJSONCreateDatabaseMessage(String server, String servicePrincipal, String db, Long timestamp, String location) {
+ super(server, servicePrincipal, db, timestamp);
+ this.location = location;
+ }
- public String getLocation() {
- return location;
- }
+ public String getLocation() {
+ return location;
+ }
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java
index 8716316..d15bc48 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONCreateTableMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -22,24 +22,23 @@ import org.apache.hive.hcatalog.messaging.json.JSONCreateTableMessage;
import org.codehaus.jackson.annotate.JsonProperty;
public class SentryJSONCreateTableMessage extends JSONCreateTableMessage {
- @JsonProperty
- private String location;
+ @JsonProperty
+ private String location;
- public SentryJSONCreateTableMessage() {
- }
+ public SentryJSONCreateTableMessage() {
+ }
- public SentryJSONCreateTableMessage(String server, String servicePrincipal, String db, String table, Long timestamp, String location) {
- super(server, servicePrincipal, db, table, timestamp);
- this.location = location;
- }
+ public SentryJSONCreateTableMessage(String server, String servicePrincipal, String db, String table, Long timestamp, String location) {
+ super(server, servicePrincipal, db, table, timestamp);
+ this.location = location;
+ }
- public String getLocation() {
- return location;
- }
-
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
+ public String getLocation() {
+ return location;
+ }
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java
index f38f69b..c8e7c75 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropDatabaseMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -21,24 +21,24 @@ package org.apache.sentry.binding.metastore.messaging.json;
import org.apache.hive.hcatalog.messaging.json.JSONDropDatabaseMessage;
import org.codehaus.jackson.annotate.JsonProperty;
-public class SentryJSONDropDatabaseMessage extends JSONDropDatabaseMessage{
- @JsonProperty
- private String location;
+public class SentryJSONDropDatabaseMessage extends JSONDropDatabaseMessage {
+ @JsonProperty
+ private String location;
- public SentryJSONDropDatabaseMessage() {
- }
+ public SentryJSONDropDatabaseMessage() {
+ }
- public SentryJSONDropDatabaseMessage(String server, String servicePrincipal, String db, Long timestamp, String location) {
- super(server, servicePrincipal, db, timestamp);
- this.location = location;
- }
+ public SentryJSONDropDatabaseMessage(String server, String servicePrincipal, String db, Long timestamp, String location) {
+ super(server, servicePrincipal, db, timestamp);
+ this.location = location;
+ }
- public String getLocation() {
- return location;
- }
+ public String getLocation() {
+ return location;
+ }
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
index e2c1135..d3ebf60 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropPartitionMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -25,27 +25,26 @@ import java.util.List;
import java.util.Map;
public class SentryJSONDropPartitionMessage extends JSONDropPartitionMessage {
- @JsonProperty
- private List<String> locations;
-
- public SentryJSONDropPartitionMessage() {
- }
-
- public SentryJSONDropPartitionMessage(String server, String servicePrincipal,
- String db, String table,
- List<Map<String, String>> partitions,
- Long timestamp, List<String> locations) {
- super(server, servicePrincipal, db, table, partitions, timestamp);
- this.locations = locations;
- }
-
- public List<String> getLocations() {
- return locations;
- }
-
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
-
+ @JsonProperty
+ private List<String> locations;
+
+ public SentryJSONDropPartitionMessage() {
+ }
+
+ public SentryJSONDropPartitionMessage(String server, String servicePrincipal,
+ String db, String table,
+ List<Map<String, String>> partitions,
+ Long timestamp, List<String> locations) {
+ super(server, servicePrincipal, db, table, partitions, timestamp);
+ this.locations = locations;
+ }
+
+ public List<String> getLocations() {
+ return locations;
+ }
+
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java
index 40bf2b9..e67f562 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONDropTableMessage.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -23,23 +23,23 @@ import org.codehaus.jackson.annotate.JsonProperty;
public class SentryJSONDropTableMessage extends JSONDropTableMessage {
- @JsonProperty
- private String location;
+ @JsonProperty
+ private String location;
- public SentryJSONDropTableMessage() {
- }
+ public SentryJSONDropTableMessage() {
+ }
- public SentryJSONDropTableMessage(String server, String servicePrincipal, String db, String table, Long timestamp, String location) {
- super(server, servicePrincipal, db, table, timestamp);
- this.location = location;
- }
+ public SentryJSONDropTableMessage(String server, String servicePrincipal, String db, String table, Long timestamp, String location) {
+ super(server, servicePrincipal, db, table, timestamp);
+ this.location = location;
+ }
- public String getLocation() {
- return location;
- }
+ public String getLocation() {
+ return location;
+ }
- @Override
- public String toString() {
- return SentryJSONMessageDeserializer.serialize(this);
- }
+ @Override
+ public String toString() {
+ return SentryJSONMessageDeserializer.serialize(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
index 5f2287e..cc0bbec 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageDeserializer.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -23,117 +23,116 @@ import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
public class SentryJSONMessageDeserializer extends MessageDeserializer {
- private static ObjectMapper mapper = new ObjectMapper();
+ private static ObjectMapper mapper = new ObjectMapper();
- static {
- mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- }
+ static {
+ mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ }
- public SentryJSONMessageDeserializer() {
- }
+ public SentryJSONMessageDeserializer() {
+ }
- /**
- * Method to de-serialize CreateDatabaseMessage instance.
- */
- @Override
- public SentryJSONCreateDatabaseMessage getCreateDatabaseMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONCreateDatabaseMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONCreateDatabaseMessage: ", e);
- }
+ /**
+ * Method to de-serialize CreateDatabaseMessage instance.
+ */
+ @Override
+ public SentryJSONCreateDatabaseMessage getCreateDatabaseMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONCreateDatabaseMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONCreateDatabaseMessage: ", e);
}
+ }
- /**
- * Method to de-serialize DropDatabaseMessage instance.
- */
- @Override
- public SentryJSONDropDatabaseMessage getDropDatabaseMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONDropDatabaseMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONDropDatabaseMessage: ", e);
- }
+ /**
+ * Method to de-serialize DropDatabaseMessage instance.
+ */
+ @Override
+ public SentryJSONDropDatabaseMessage getDropDatabaseMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONDropDatabaseMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONDropDatabaseMessage: ", e);
}
+ }
- /**
- * Method to de-serialize CreateTableMessage instance.
- */
- @Override
- public SentryJSONCreateTableMessage getCreateTableMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONCreateTableMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONCreateTableMessage: ", e);
- }
+ /**
+ * Method to de-serialize CreateTableMessage instance.
+ */
+ @Override
+ public SentryJSONCreateTableMessage getCreateTableMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONCreateTableMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONCreateTableMessage: ", e);
}
+ }
- /**
- * Method to de-serialize AlterTableMessage instance.
- */
- @Override
- public SentryJSONAlterTableMessage getAlterTableMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONAlterTableMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONAlterTableMessage: ", e);
- }
+ /**
+ * Method to de-serialize AlterTableMessage instance.
+ */
+ @Override
+ public SentryJSONAlterTableMessage getAlterTableMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONAlterTableMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONAlterTableMessage: ", e);
}
+ }
- /**
- * Method to de-serialize DropTableMessage instance.
- */
- @Override
- public SentryJSONDropTableMessage getDropTableMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONDropTableMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONDropTableMessage: ", e);
- }
+ /**
+ * Method to de-serialize DropTableMessage instance.
+ */
+ @Override
+ public SentryJSONDropTableMessage getDropTableMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONDropTableMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONDropTableMessage: ", e);
}
+ }
- /**
- * Method to de-serialize AddPartitionMessage instance.
- */
- @Override
- public SentryJSONAddPartitionMessage getAddPartitionMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONAddPartitionMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONAddPartitionMessage: ", e);
- }
+ /**
+ * Method to de-serialize AddPartitionMessage instance.
+ */
+ @Override
+ public SentryJSONAddPartitionMessage getAddPartitionMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONAddPartitionMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONAddPartitionMessage: ", e);
}
+ }
- /**
- * Method to de-serialize AlterPartitionMessage instance.
- */
- @Override
- public SentryJSONAlterPartitionMessage getAlterPartitionMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONAlterPartitionMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONAlterPartitionMessage: ", e);
- }
+ /**
+ * Method to de-serialize AlterPartitionMessage instance.
+ */
+ @Override
+ public SentryJSONAlterPartitionMessage getAlterPartitionMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONAlterPartitionMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONAlterPartitionMessage: ", e);
}
+ }
- /**
- * Method to de-serialize DropPartitionMessage instance.
- */
- @Override
- public SentryJSONDropPartitionMessage getDropPartitionMessage(String messageBody) {
- try {
- return mapper.readValue(messageBody, SentryJSONDropPartitionMessage.class);
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not construct SentryJSONDropPartitionMessage: ", e);
- }
+ /**
+ * Method to de-serialize DropPartitionMessage instance.
+ */
+ @Override
+ public SentryJSONDropPartitionMessage getDropPartitionMessage(String messageBody) {
+ try {
+ return mapper.readValue(messageBody, SentryJSONDropPartitionMessage.class);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Could not construct SentryJSONDropPartitionMessage: ", e);
}
+ }
- public static String serialize(Object object) {
- try {
- return mapper.writeValueAsString(object);
- }
- catch (Exception exception) {
- throw new IllegalArgumentException("Could not serialize: ", exception);
- }
+ public static String serialize(Object object) {
+ try {
+ return mapper.writeValueAsString(object);
+ } catch (Exception exception) {
+ throw new IllegalArgumentException("Could not serialize: ", exception);
}
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
index b949ee5..f173243 100644
--- a/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
+++ b/sentry-binding/sentry-binding-hive-follower/src/main/java/org/apache/sentry/binding/metastore/messaging/json/SentryJSONMessageFactory.java
@@ -7,7 +7,7 @@
* "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
+ * 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,
@@ -15,6 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.sentry.binding.metastore.messaging.json;
import com.google.common.collect.Lists;
@@ -31,128 +32,130 @@ import org.apache.hive.hcatalog.messaging.*;
import java.util.*;
public class SentryJSONMessageFactory extends MessageFactory {
- private static final Log LOG = LogFactory.getLog(SentryJSONMessageFactory.class.getName());
- private static SentryJSONMessageDeserializer deserializer = new SentryJSONMessageDeserializer();
- public SentryJSONMessageFactory() {
- LOG.info("Using SentryJSONMessageFactory for building Notification log messages ");
- }
-
- public MessageDeserializer getDeserializer() {
- return deserializer;
- }
-
- public String getVersion() {
- return "0.1";
- }
-
- public String getMessageFormat() {
- return "json";
- }
-
- public SentryJSONCreateDatabaseMessage buildCreateDatabaseMessage(Database db) {
- return new SentryJSONCreateDatabaseMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, db.getName(),
- now(), db.getLocationUri());
- }
- public SentryJSONDropDatabaseMessage buildDropDatabaseMessage(Database db) {
- return new SentryJSONDropDatabaseMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, db.getName(),
- now(), db.getLocationUri());
- }
-
- public SentryJSONCreateTableMessage buildCreateTableMessage(Table table) {
- return new SentryJSONCreateTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
- table.getTableName(), now(), table.getSd().getLocation());
- }
-
- public SentryJSONAlterTableMessage buildAlterTableMessage(Table before, Table after) {
- return new SentryJSONAlterTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, before.getDbName(),
- before.getTableName(), now(), before.getSd().getLocation(), after.getSd().getLocation());
- }
-
- public SentryJSONDropTableMessage buildDropTableMessage(Table table) {
- return new SentryJSONDropTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
- table.getTableName(), now(), table.getSd().getLocation());
- }
-
- public SentryJSONAddPartitionMessage buildAddPartitionMessage(Table table, List<Partition> partitions) {
- return new SentryJSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
- table.getTableName(), getPartitionKeyValues(table, partitions), now(),
- getPartitionLocations(partitions));
- }
-
- private List<String> getPartitionLocations(List<Partition> partitions) {
- List<String> paths = Lists.newLinkedList();
- for(Partition partition : partitions) {
- paths.add(partition.getSd().getLocation());
- }
- return paths;
- }
+ private static final Log LOG = LogFactory.getLog(SentryJSONMessageFactory.class.getName());
+ private static SentryJSONMessageDeserializer deserializer = new SentryJSONMessageDeserializer();
+
+ public SentryJSONMessageFactory() {
+ LOG.info("Using SentryJSONMessageFactory for building Notification log messages ");
+ }
+
+ public MessageDeserializer getDeserializer() {
+ return deserializer;
+ }
+
+ public String getVersion() {
+ return "0.1";
+ }
+
+ public String getMessageFormat() {
+ return "json";
+ }
- private List<String> getPartitionLocations(PartitionSpecProxy partitionSpec) {
- Iterator<Partition> iterator = partitionSpec.getPartitionIterator();
- List<String> locations = Lists.newLinkedList();
- while(iterator.hasNext()) {
- locations.add(iterator.next().getSd().getLocation());
- }
- return locations;
- }
-
- @InterfaceAudience.LimitedPrivate({"Hive"})
- @InterfaceStability.Evolving
- public SentryJSONAddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecProxy partitionSpec) {
- return new SentryJSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
- table.getTableName(), getPartitionKeyValues(table, partitionSpec), now(),
- getPartitionLocations(partitionSpec));
- }
-
- @Override
- public SentryJSONAlterPartitionMessage buildAlterPartitionMessage(Partition before, Partition after) {
- return new SentryJSONAlterPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, before.getDbName(),
- before.getTableName(), before.getValues(), after.getValues(), now(), before.getSd().getLocation(),
- after.getSd().getLocation());
- }
-
- public SentryJSONDropPartitionMessage buildDropPartitionMessage(Table table, Partition partition) {
- return new SentryJSONDropPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, partition.getDbName(),
- partition.getTableName(), Arrays.asList(getPartitionKeyValues(table, partition)),
- now(), Arrays.asList(partition.getSd().getLocation()));
- }
-
- private static Map<String, String> getPartitionKeyValues(Table table, Partition partition) {
- LinkedHashMap partitionKeys = new LinkedHashMap();
-
- for(int i = 0; i < table.getPartitionKeysSize(); ++i) {
- partitionKeys.put((table.getPartitionKeys().get(i)).getName(), partition.getValues().get(i));
- }
-
- return partitionKeys;
- }
-
- private static List<Map<String, String>> getPartitionKeyValues(Table table, List<Partition> partitions) {
- List<Map<String, String>> partitionList = Lists.newLinkedList();
-
- for (Partition partition : partitions) {
- partitionList.add(getPartitionKeyValues(table, partition));
- }
-
- return partitionList;
- }
-
- @InterfaceAudience.LimitedPrivate({"Hive"})
- @InterfaceStability.Evolving
- private static List<Map<String, String>> getPartitionKeyValues(Table table, PartitionSpecProxy partitionSpec) {
- ArrayList partitionList = new ArrayList();
- PartitionSpecProxy.PartitionIterator iterator = partitionSpec.getPartitionIterator();
-
- while(iterator.hasNext()) {
- Partition partition = iterator.next();
- partitionList.add(getPartitionKeyValues(table, partition));
- }
-
- return partitionList;
- }
-
- //This is private in parent class
- private long now() {
- return System.currentTimeMillis() / 1000L;
- }
+ public SentryJSONCreateDatabaseMessage buildCreateDatabaseMessage(Database db) {
+ return new SentryJSONCreateDatabaseMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, db.getName(),
+ now(), db.getLocationUri());
+ }
+
+ public SentryJSONDropDatabaseMessage buildDropDatabaseMessage(Database db) {
+ return new SentryJSONDropDatabaseMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, db.getName(),
+ now(), db.getLocationUri());
+ }
+
+ public SentryJSONCreateTableMessage buildCreateTableMessage(Table table) {
+ return new SentryJSONCreateTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), now(), table.getSd().getLocation());
+ }
+
+ public SentryJSONAlterTableMessage buildAlterTableMessage(Table before, Table after) {
+ return new SentryJSONAlterTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, before.getDbName(),
+ before.getTableName(), now(), before.getSd().getLocation(), after.getSd().getLocation());
+ }
+
+ public SentryJSONDropTableMessage buildDropTableMessage(Table table) {
+ return new SentryJSONDropTableMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), now(), table.getSd().getLocation());
+ }
+
+ public SentryJSONAddPartitionMessage buildAddPartitionMessage(Table table, List<Partition> partitions) {
+ return new SentryJSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), getPartitionKeyValues(table, partitions), now(),
+ getPartitionLocations(partitions));
+ }
+
+ private List<String> getPartitionLocations(List<Partition> partitions) {
+ List<String> paths = Lists.newLinkedList();
+ for (Partition partition : partitions) {
+ paths.add(partition.getSd().getLocation());
+ }
+ return paths;
+ }
+
+ private List<String> getPartitionLocations(PartitionSpecProxy partitionSpec) {
+ Iterator<Partition> iterator = partitionSpec.getPartitionIterator();
+ List<String> locations = Lists.newLinkedList();
+ while (iterator.hasNext()) {
+ locations.add(iterator.next().getSd().getLocation());
+ }
+ return locations;
+ }
+
+ @InterfaceAudience.LimitedPrivate( {"Hive"})
+ @InterfaceStability.Evolving
+ public SentryJSONAddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecProxy partitionSpec) {
+ return new SentryJSONAddPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, table.getDbName(),
+ table.getTableName(), getPartitionKeyValues(table, partitionSpec), now(),
+ getPartitionLocations(partitionSpec));
+ }
+
+ @Override
+ public SentryJSONAlterPartitionMessage buildAlterPartitionMessage(Partition before, Partition after) {
+ return new SentryJSONAlterPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, before.getDbName(),
+ before.getTableName(), before.getValues(), after.getValues(), now(), before.getSd().getLocation(),
+ after.getSd().getLocation());
+ }
+
+ public SentryJSONDropPartitionMessage buildDropPartitionMessage(Table table, Partition partition) {
+ return new SentryJSONDropPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, partition.getDbName(),
+ partition.getTableName(), Arrays.asList(getPartitionKeyValues(table, partition)),
+ now(), Arrays.asList(partition.getSd().getLocation()));
+ }
+
+ private static Map<String, String> getPartitionKeyValues(Table table, Partition partition) {
+ LinkedHashMap partitionKeys = new LinkedHashMap();
+
+ for (int i = 0; i < table.getPartitionKeysSize(); ++i) {
+ partitionKeys.put((table.getPartitionKeys().get(i)).getName(), partition.getValues().get(i));
+ }
+
+ return partitionKeys;
+ }
+
+ private static List<Map<String, String>> getPartitionKeyValues(Table table, List<Partition> partitions) {
+ List<Map<String, String>> partitionList = Lists.newLinkedList();
+
+ for (Partition partition : partitions) {
+ partitionList.add(getPartitionKeyValues(table, partition));
+ }
+
+ return partitionList;
+ }
+
+ @InterfaceAudience.LimitedPrivate( {"Hive"})
+ @InterfaceStability.Evolving
+ private static List<Map<String, String>> getPartitionKeyValues(Table table, PartitionSpecProxy partitionSpec) {
+ ArrayList partitionList = new ArrayList();
+ PartitionSpecProxy.PartitionIterator iterator = partitionSpec.getPartitionIterator();
+
+ while (iterator.hasNext()) {
+ Partition partition = iterator.next();
+ partitionList.add(getPartitionKeyValues(table, partition));
+ }
+
+ return partitionList;
+ }
+
+ //This is private in parent class
+ private long now() {
+ return System.currentTimeMillis() / 1000L;
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/a68386e3/sentry-provider/sentry-provider-db/pom.xml
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/pom.xml b/sentry-provider/sentry-provider-db/pom.xml
index 7b13cea..6b7d3c0 100644
--- a/sentry-provider/sentry-provider-db/pom.xml
+++ b/sentry-provider/sentry-provider-db/pom.xml
@@ -113,12 +113,7 @@ limitations under the License.
<dependency>
<groupId>org.apache.sentry</groupId>
<artifactId>sentry-binding-hive-conf</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.sentry</groupId>
- <artifactId>sentry-binding-hive-follower</artifactId>
- <version>2.0.0-SNAPSHOT</version>
+ <version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.sentry</groupId>
@@ -325,6 +320,32 @@ limitations under the License.
</build>
<profiles>
<profile>
+ <id>hive-authz1</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sentry</groupId>
+ <artifactId>sentry-binding-hive-follower</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>hive-authz2</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sentry</groupId>
+ <artifactId>sentry-binding-hive-follower-v2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
<id>datanucleus3</id>
<activation>
<activeByDefault>true</activeByDefault>