Repository: incubator-sentry Updated Branches: refs/heads/db_policy_store 62b22be9c -> bd511cdb2
SENTRY-130: Integrate sentry script (Brock via Shreepadma) Project: http://git-wip-us.apache.org/repos/asf/incubator-sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-sentry/commit/bd511cdb Tree: http://git-wip-us.apache.org/repos/asf/incubator-sentry/tree/bd511cdb Diff: http://git-wip-us.apache.org/repos/asf/incubator-sentry/diff/bd511cdb Branch: refs/heads/db_policy_store Commit: bd511cdb284d8e8048bc85a5ea171c09535fe485 Parents: 62b22be Author: Shreepadma Venugopalan <shreepa...@apache.org> Authored: Fri Mar 7 12:04:12 2014 -0800 Committer: Shreepadma Venugopalan <shreepa...@apache.org> Committed: Fri Mar 7 12:04:12 2014 -0800 ---------------------------------------------------------------------- bin/config-tool.sh | 25 ----- bin/sentry | 60 +++++----- bin/sentry.sh | 112 +++++++++++++++++++ .../binding/hive/authz/SentryConfigTool.java | 55 ++++----- sentry-core/sentry-core-common/pom.xml | 4 + .../main/java/org/apache/sentry/Command.java | 23 ++++ .../main/java/org/apache/sentry/SentryMain.java | 73 ++++++++++++ .../org/apache/sentry/SentryUserException.java | 28 +++++ .../main/java/org/apache/sentry/Command.java | 23 ---- .../main/java/org/apache/sentry/SentryMain.java | 59 ---------- .../org/apache/sentry/SentryUserException.java | 28 ----- 11 files changed, 299 insertions(+), 191 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/bin/config-tool.sh ---------------------------------------------------------------------- diff --git a/bin/config-tool.sh b/bin/config-tool.sh deleted file mode 100755 index b286421..0000000 --- a/bin/config-tool.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - -# 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. - -_CMD_JAR=sentry-binding-hive-*.jar -_HIVE_CMD=${HIVE_HOME}/bin/hive -for f in ${SENTRY_HOME}/lib/*.jar; do - HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${f} -done - -${_HIVE_CMD} --service jar ${SENTRY_HOME}/lib/${_CMD_JAR} org.apache.sentry.binding.hive.authz.SentryConfigTool "$@" - http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/bin/sentry ---------------------------------------------------------------------- diff --git a/bin/sentry b/bin/sentry index 6c40f68..81b4382 100755 --- a/bin/sentry +++ b/bin/sentry @@ -25,40 +25,40 @@ fi _HIVE_CMD=hive #check to see if the hive conf dir is given as an optional argument +args=() while [ $# -gt 0 ]; do # Until you run out of parameters . . . case "$1" in --hive-config) - shift - confdir=$1 - shift - export HIVE_CONF_DIR=$confdir - echo Using hive-conf-dir $HIVE_CONF_DIR - ;; + shift + confdir=$1 + shift + export HIVE_CONF_DIR=$confdir + echo Using hive-conf-dir $HIVE_CONF_DIR + ;; --hive-home) - shift - homedir=$1 - shift - export HIVE_HOME=$homedir - echo Using hive-home $HIVE_HOME - ;; - --command) - shift - case "$1" in - config-tool) - shift - $SENTRY_HOME/bin/config-tool.sh "$@" - ;; - *) - echo Unknown option $1 - echo "Usage sentry --command <config-tool [config-tool-options]>" - break - ;; - esac - break - ;; + shift + homedir=$1 + shift + export HIVE_HOME=$homedir + echo Using hive-home $HIVE_HOME + ;; *) - echo "Usage sentry --command <config-tool [config-tool-options]>" - break - ;; + args+=($1) + shift + ;; esac done + +if [[ -z "$HIVE_HOME" ]] +then + echo "HIVE_HOME must be defined either as an env variable or by the --hive-home argument" + exit 1 +fi + +_CMD_JAR=sentry-core-common-*.jar +_HIVE_CMD=${HIVE_HOME}/bin/hive +for f in ${SENTRY_HOME}/lib/*.jar; do + HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${f} +done +export HADOOP_CLASSPATH +${_HIVE_CMD} --service jar ${SENTRY_HOME}/lib/${_CMD_JAR} org.apache.sentry.SentryMain "${args[@]}" http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/bin/sentry.sh ---------------------------------------------------------------------- diff --git a/bin/sentry.sh b/bin/sentry.sh new file mode 100644 index 0000000..76d550b --- /dev/null +++ b/bin/sentry.sh @@ -0,0 +1,112 @@ +#!/bin/bash +# +# +# 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. +# + +################################ +# functions +################################ + +info() { + local msg=$1 + echo "Info: $msg" >&2 +} + +warn() { + local msg=$1 + echo "Warning: $msg" >&2 +} + +error() { + local msg=$1 + local exit_code=$2 + + echo "Error: $msg" >&2 + + if [ -n "$exit_code" ] ; then + exit $exit_code + fi +} + +################################ +# main +################################ + +# set default params +SENTRY_CLASSPATH="" + +if [ -z "${SENTRY_HOME}" ]; then + SENTRY_HOME=$(cd $(dirname $0)/..; pwd) +fi + +if [ -f ${SENTRY_HOME}/etc/sentry-env.sh ] +then + . ${SENTRY_HOME}/etc/sentry-env.sh +fi + +# prepend $SENTRY_HOME/lib jars to the specified classpath (if any) +if [ -n "${SENTRY_CLASSPATH}" ] ; then + SENTRY_CLASSPATH="${SENTRY_HOME}/lib/*:$SENTRY_CLASSPATH" +else + SENTRY_CLASSPATH="${SENTRY_HOME}/lib/*" +fi + +# find java +if [ -z "${JAVA_HOME}" ] ; then + warn "JAVA_HOME is not set!" + # Try to use Bigtop to autodetect JAVA_HOME if it's available + if [ -e /usr/libexec/bigtop-detect-javahome ] ; then + . /usr/libexec/bigtop-detect-javahome + elif [ -e /usr/lib/bigtop-utils/bigtop-detect-javahome ] ; then + . /usr/lib/bigtop-utils/bigtop-detect-javahome + fi + + # Using java from path if bigtop is not installed or couldn't find it + if [ -z "${JAVA_HOME}" ] ; then + JAVA_DEFAULT=$(type -p java) + [ -n "$JAVA_DEFAULT" ] || error "Unable to find java executable. Is it in your PATH?" 1 + JAVA_HOME=$(cd $(dirname $JAVA_DEFAULT)/..; pwd) + fi +fi + +# look for hadoop libs +HADOOP_IN_PATH=$(PATH="${HADOOP_HOME:-${HADOOP_PREFIX}}/bin:$PATH" \ + which hadoop 2>/dev/null) +if [ ! -f "${HADOOP_IN_PATH}" ]; then + error "Cannot find Hadoop command in path" +fi + +info "Including Hadoop libraries found via ($HADOOP_IN_PATH)" + +# determine hadoop classpath +HADOOP_CLASSPATH=$($HADOOP_IN_PATH classpath) + +# hack up and filter hadoop classpath +ELEMENTS=$(sed -e 's/:/ /g' <<<${HADOOP_CLASSPATH}) +for ELEMENT in $ELEMENTS; do + for PIECE in $(echo $ELEMENT); do + if [[ $PIECE =~ slf4j-(api|log4j12).*\.jar ]]; then + info "Excluding $PIECE from classpath" + continue + else + SENTRY_CLASSPATH="$SENTRY_CLASSPATH:$PIECE" + fi + done +done +exec $JAVA_HOME/bin/java $SENTRY_OPTS -cp "$SENTRY_CLASSPATH" org.apache.sentry.SentryMain "$@" http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/SentryConfigTool.java ---------------------------------------------------------------------- diff --git a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/SentryConfigTool.java b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/SentryConfigTool.java index e59b747..bc739ad 100644 --- a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/SentryConfigTool.java +++ b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/SentryConfigTool.java @@ -41,6 +41,7 @@ import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.log4j.Level; import org.apache.log4j.LogManager; +import org.apache.sentry.Command; import org.apache.sentry.binding.hive.HiveAuthzBindingHook; import org.apache.sentry.binding.hive.HiveAuthzBindingSessionHook; import org.apache.sentry.binding.hive.conf.HiveAuthzConf; @@ -478,39 +479,41 @@ public class SentryConfigTool { } } - public static void main(String args[]) throws Exception { - SentryConfigTool sentryTool = new SentryConfigTool(); + public static class CommandImpl implements Command { + @Override + public void run(String[] args) throws Exception { + SentryConfigTool sentryTool = new SentryConfigTool(); - try { - // parse arguments - sentryTool.parseArgs(args); + try { + // parse arguments + sentryTool.parseArgs(args); - // load configuration - sentryTool.setupConfig(); + // load configuration + sentryTool.setupConfig(); - // validate configuration - if (sentryTool.isValidate()) { - sentryTool.validatePolicy(); - } + // validate configuration + if (sentryTool.isValidate()) { + sentryTool.validatePolicy(); + } - // list permissions for give user - if (sentryTool.isListPrivs()) { - sentryTool.listPrivs(); - } + // list permissions for give user + if (sentryTool.isListPrivs()) { + sentryTool.listPrivs(); + } - // verify given query - if (sentryTool.getQuery() != null) { - if (sentryTool.getJdbcURL() != null) { - sentryTool.verifyRemoteQuery(sentryTool.getQuery()); - } else { - sentryTool.verifyLocalQuery(sentryTool.getQuery()); + // verify given query + if (sentryTool.getQuery() != null) { + if (sentryTool.getJdbcURL() != null) { + sentryTool.verifyRemoteQuery(sentryTool.getQuery()); + } else { + sentryTool.verifyLocalQuery(sentryTool.getQuery()); + } } + } catch (Exception e) { + System.out.println("Sentry tool reported Errors: " + e.getMessage()); + e.printStackTrace(System.out); + System.exit(1); } - } catch (Exception e) { - System.out.println("Sentry tool reported Errors: " + e.getMessage()); - e.printStackTrace(System.out); - System.exit(1); } - } } http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-core/sentry-core-common/pom.xml ---------------------------------------------------------------------- diff --git a/sentry-core/sentry-core-common/pom.xml b/sentry-core/sentry-core-common/pom.xml index d50963e..84ab359 100644 --- a/sentry-core/sentry-core-common/pom.xml +++ b/sentry-core/sentry-core-common/pom.xml @@ -29,6 +29,10 @@ limitations under the License. <dependencies> <dependency> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + </dependency> + <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/Command.java ---------------------------------------------------------------------- diff --git a/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/Command.java b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/Command.java new file mode 100644 index 0000000..528f7d7 --- /dev/null +++ b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/Command.java @@ -0,0 +1,23 @@ +/** + * 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; + + +public interface Command { + public void run(String[] args) throws Exception; +} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryMain.java ---------------------------------------------------------------------- diff --git a/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryMain.java b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryMain.java new file mode 100644 index 0000000..eb3482b --- /dev/null +++ b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryMain.java @@ -0,0 +1,73 @@ +/** + * 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; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.GnuParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; + +import com.google.common.collect.ImmutableMap; + +public class SentryMain { + private static final String HELP_SHORT = "h"; + private static final String HELP_LONG = "help"; + private static final String COMMAND = "command"; + private static final ImmutableMap<String, String> COMMANDS = ImmutableMap + .<String, String>builder() + .put("service", "org.apache.sentry.service.thrift.SentryService$CommandImpl") + .put("config-tool", "org.apache.sentry.binding.hive.authz.SentryConfigTool$CommandImpl") + .build(); + public static void main(String[] args) + throws Exception { + CommandLineParser parser = new GnuParser(); + Options options = new Options(); + options.addOption(HELP_SHORT, HELP_LONG, false, "Print this help text"); + options.addOption(null, COMMAND, true, "Command to run. Options: " + COMMANDS.keySet()); + CommandLine commandLine = parser.parse(options, args); + String commandName = commandLine.getOptionValue(COMMAND); + if (commandName == null || commandLine.hasOption(HELP_SHORT) || + commandLine.hasOption(HELP_LONG)) { + printHelp(options); + } + String commandClazz = COMMANDS.get(commandName); + if (commandClazz == null) { + String msg = "Unknown command '" + commandName + "', options are: " + COMMANDS.keySet(); + throw new IllegalArgumentException(msg); + } + Object command; + try { + command = Class.forName(commandClazz.trim()).newInstance(); + } catch (Exception e) { + String msg = "Could not create instance of " + commandClazz + " for command " + commandName; + throw new IllegalStateException(msg, e); + } + if (!(command instanceof Command)) { + String msg = "Command " + command.getClass().getName() + " is not an instance of " + + Command.class.getName(); + throw new IllegalStateException(msg); + } + ((Command)command).run(commandLine.getArgs()); + } + private static void printHelp(Options options) { + (new HelpFormatter()).printHelp("sentry --" + COMMAND + "=" + COMMANDS.keySet(), + options); + System.exit(1); + } +} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java ---------------------------------------------------------------------- diff --git a/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java new file mode 100644 index 0000000..2b24703 --- /dev/null +++ b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java @@ -0,0 +1,28 @@ +/** + * 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; + +public class SentryUserException extends Exception{ + private static final long serialVersionUID = 2329620558380655835L; + public SentryUserException(String msg) { + super(msg); + } + public SentryUserException(String msg, Throwable t) { + super(msg, t); + } +} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/Command.java ---------------------------------------------------------------------- diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/Command.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/Command.java deleted file mode 100644 index 528f7d7..0000000 --- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/Command.java +++ /dev/null @@ -1,23 +0,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. - */ -package org.apache.sentry; - - -public interface Command { - public void run(String[] args) throws Exception; -} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryMain.java ---------------------------------------------------------------------- diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryMain.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryMain.java deleted file mode 100644 index 3cb5e54..0000000 --- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryMain.java +++ /dev/null @@ -1,59 +0,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. - */ -package org.apache.sentry; - -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.GnuParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Options; -import org.apache.sentry.service.thrift.SentryService; - -import com.google.common.collect.ImmutableMap; - -public class SentryMain { - private static final String HELP_SHORT = "h"; - private static final String HELP_LONG = "help"; - private static final String COMMAND = "command"; - private static final ImmutableMap<String, Command> COMMANDS = ImmutableMap - .<String, Command>builder() - .put("service", new SentryService.CommandImpl()) - .build(); - public static void main(String[] args) - throws Exception { - CommandLineParser parser = new GnuParser(); - Options options = new Options(); - options.addOption(HELP_SHORT, HELP_LONG, false, "Print this help text"); - options.addOption(null, COMMAND, true, "Command to run. Options: " + COMMANDS.keySet()); - CommandLine commandLine = parser.parse(options, args); - String commandName = commandLine.getOptionValue(COMMAND); - if (commandName == null || options.hasOption(HELP_SHORT) || options.hasOption(HELP_LONG)) { - printHelp(options); - } - Command command = COMMANDS.get(commandName); - if (command == null) { - printHelp(options); - } - command.run(commandLine.getArgs()); - } - private static void printHelp(Options options) { - (new HelpFormatter()).printHelp("sentry.sh --" + COMMAND + "=" + COMMANDS.keySet(), - options); - System.exit(1); - } -} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/bd511cdb/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryUserException.java ---------------------------------------------------------------------- diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryUserException.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryUserException.java deleted file mode 100644 index 2b24703..0000000 --- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/SentryUserException.java +++ /dev/null @@ -1,28 +0,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. - */ -package org.apache.sentry; - -public class SentryUserException extends Exception{ - private static final long serialVersionUID = 2329620558380655835L; - public SentryUserException(String msg) { - super(msg); - } - public SentryUserException(String msg, Throwable t) { - super(msg, t); - } -}