Repository: knox
Updated Branches:
  refs/heads/master 8cb451daf -> ff8c1e250


http://git-wip-us.apache.org/repos/asf/knox/blob/ff8c1e25/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/post-data-wrong-type.json
----------------------------------------------------------------------
diff --git 
a/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/post-data-wrong-type.json
 
b/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/post-data-wrong-type.json
new file mode 100644
index 0000000..bc17305
--- /dev/null
+++ 
b/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/post-data-wrong-type.json
@@ -0,0 +1,421 @@
+{
+  "recommend": "configurations",
+  "hosts": [
+    "c6401.ambari.apache.org"
+  ],
+  "services": [
+    "HBASE",
+    "HDFS",
+    "HIVE",
+    "KNOX",
+    "MAPREDUCE2",
+    "PIG",
+    "RANGER",
+    "SPARK",
+    "TEZ",
+    "YARN",
+    "ZOOKEEPER"
+  ],
+  "recommendations": {
+    "blueprint": {
+      "host_groups": [
+        {
+          "name": "host-group-1",
+          "components": [
+            {
+              "name": "HBASE_CLIENT"
+            },
+            {
+              "name": "HDFS_CLIENT"
+            },
+            {
+              "name": "HCAT"
+            },
+            {
+              "name": "HIVE_CLIENT"
+            },
+            {
+              "name": "MAPREDUCE2_CLIENT"
+            },
+            {
+              "name": "PIG"
+            },
+            {
+              "name": "SPARK_CLIENT"
+            },
+            {
+              "name": "TEZ_CLIENT"
+            },
+            {
+              "name": "YARN_CLIENT"
+            },
+            {
+              "name": "ZOOKEEPER_CLIENT"
+            },
+            {
+              "name": "HBASE_REGIONSERVER"
+            },
+            {
+              "name": "DATANODE"
+            },
+            {
+              "name": "NODEMANAGER"
+            },
+            {
+              "name": "HBASE_MASTER"
+            },
+            {
+              "name": "NAMENODE"
+            },
+            {
+              "name": "SECONDARY_NAMENODE"
+            },
+            {
+              "name": "HIVE_METASTORE"
+            },
+            {
+              "name": "HIVE_SERVER"
+            },
+            {
+              "name": "MYSQL_SERVER"
+            },
+            {
+              "name": "WEBHCAT_SERVER"
+            },
+            {
+              "name": "KNOX_GATEWAY"
+            },
+            {
+              "name": "HISTORYSERVER"
+            },
+            {
+              "name": "RANGER_ADMIN"
+            },
+            {
+              "name": "RANGER_USERSYNC"
+            },
+            {
+              "name": "SPARK_JOBHISTORYSERVER"
+            },
+            {
+              "name": "APP_TIMELINE_SERVER"
+            },
+            {
+              "name": "RESOURCEMANAGER"
+            },
+            {
+              "name": "ZOOKEEPER_SERVER"
+            }
+          ]
+        }
+      ],
+      "configurations": {
+        "hbase-env": {
+          "properties": {
+            "hbase_regionserver_heapsize": "1024",
+            "hbase_master_heapsize": "1024",
+            "hbase_user": "hbase",
+            "hbase_regionserver_xmn_max": "512",
+            "hbase_regionserver_xmn_ratio": "0.2",
+            "hbase_log_dir": "/var/log/hbase",
+            "hbase_user_nofile_limit": "32000",
+            "hbase_user_nproc_limit": "16000",
+            "phoenix_sql_enabled": "false",
+            "content": "\n# Set environment variables here.\n\n# The java 
implementation to use. Java 1.6 required.\nexport 
JAVA_HOME={{java64_home}}\n\n# HBase Configuration directory\nexport 
HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}}\n\n# Extra Java CLASSPATH 
elements. Optional.\nexport HBASE_CLASSPATH=${HBASE_CLASSPATH}\n\n\n# The 
maximum amount of heap to use, in MB. Default is 1000.\n# export 
HBASE_HEAPSIZE=1000\n\n# Extra Java runtime options.\n# Below are what we set 
by default. May only work with SUN JVM.\n# For more on why as well as other 
possible settings,\n# see 
http://wiki.apache.org/hadoop/PerformanceTuning\nexport 
SERVER_GC_OPTS=\"-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps 
-Xloggc:{{log_dir}}/gc.log-`date +'%Y%m%d%H%M'`\"\n# Uncomment below to enable 
java garbage collection logging.\n# export HBASE_OPTS=\"$HBASE_OPTS -verbose:gc 
-XX:+PrintGCDetails -XX:+PrintGCDateStamps 
-Xloggc:$HBASE_HOME/logs/gc-hbase.log\"\n\n# Uncomment and adjust to enable 
 JMX exporting\n# See jmxremote.password and jmxremote.access in 
$JRE_HOME/lib/management to configure remote password access.\n# More details 
at: 
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html\n#\n# 
export HBASE_JMX_BASE=\"-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false\"\n# If you want to configure 
BucketCache, specify '-XX: MaxDirectMemorySize=' with proper direct memory 
size\n# export HBASE_THRIFT_OPTS=\"$HBASE_JMX_BASE 
-Dcom.sun.management.jmxremote.port=10103\"\n# export 
HBASE_ZOOKEEPER_OPTS=\"$HBASE_JMX_BASE 
-Dcom.sun.management.jmxremote.port=10104\"\n\n# File naming hosts on which 
HRegionServers will run. $HBASE_HOME/conf/regionservers by default.\nexport 
HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers\n\n# Extra ssh options. 
Empty by default.\n# export HBASE_SSH_OPTS=\"-o ConnectTimeout=1 -o 
SendEnv=HBASE_CONF_DIR\"\n\n# Where log files are stored. $HBASE_HOME/logs by 
default.\nexport HBASE_LOG_DIR={{l
 og_dir}}\n\n# A string representing this instance of hbase. $USER by 
default.\n# export HBASE_IDENT_STRING=$USER\n\n# The scheduling priority for 
daemon processes. See 'man nice'.\n# export HBASE_NICENESS=10\n\n# The 
directory where pid files are stored. /tmp by default.\nexport 
HBASE_PID_DIR={{pid_dir}}\n\n# Seconds to sleep between slave commands. Unset 
by default. This\n# can be useful in large clusters, where, e.g., slave rsyncs 
can\n# otherwise arrive faster than the master can service them.\n# export 
HBASE_SLAVE_SLEEP=0.1\n\n# Tell HBase whether it should manage it's own 
instance of Zookeeper or not.\nexport HBASE_MANAGES_ZK=false\n\n{% if 
java_version < 8 %}\nJDK_DEPENDED_OPTS=\"-XX:PermSize=128m 
-XX:MaxPermSize=128m\"\n{% endif %}\n      \n{% if security_enabled %}\nexport 
HBASE_OPTS=\"$HBASE_OPTS -XX:+UseConcMarkSweepGC 
-XX:ErrorFile={{log_dir}}/hs_err_pid%p.log 
-Djava.security.auth.login.config={{client_jaas_config_file}} 
-Djava.io.tmpdir={{java_io_tmpdir}}\"\nexport HBASE
 _MASTER_OPTS=\"$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} 
-Djava.security.auth.login.config={{master_jaas_config_file}} 
$JDK_DEPENDED_OPTS\"\nexport HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS 
-Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  
-Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} 
-Djava.security.auth.login.config={{regionserver_jaas_config_file}} 
$JDK_DEPENDED_OPTS\"\nexport 
PHOENIX_QUERYSERVER_OPTS=\"$PHOENIX_QUERYSERVER_OPTS 
-Djava.security.auth.login.config={{queryserver_jaas_config_file}}\"\n{% else 
%}\nexport HBASE_OPTS=\"$HBASE_OPTS -XX:+UseConcMarkSweepGC 
-XX:ErrorFile={{log_dir}}/hs_err_pid%p.log 
-Djava.io.tmpdir={{java_io_tmpdir}}\"\nexport 
HBASE_MASTER_OPTS=\"$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} 
$JDK_DEPENDED_OPTS\"\nexport HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS 
-Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  
-Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} $JDK_DEPENDED_OPTS\
 "\n{% endif %}\n\n# HBase off-heap MaxDirectMemorySize\nexport 
HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS {% if 
hbase_max_direct_memory_size %} 
-XX:MaxDirectMemorySize={{hbase_max_direct_memory_size}}m {% endif %}\"",
+            "hbase_pid_dir": "/var/run/hbase",
+            "hbase_java_io_tmpdir": "/tmp"
+          }
+        },
+        "hbase-log4j": {
+          "properties": {
+            "content": "\n# Licensed to the Apache Software Foundation (ASF) 
under one\n# or more contributor license agreements.  See the NOTICE file\n# 
distributed with this work for additional information\n# regarding copyright 
ownership.  The ASF licenses this file\n# to you under the Apache License, 
Version 2.0 (the\n# \"License\"); you may not use this file except in 
compliance\n# with the License.  You may obtain a copy of the License at\n#\n#  
   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by 
applicable law or agreed to in writing, software\n# distributed under the 
License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR 
CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the 
specific language governing permissions and\n# limitations under the 
License.\n\n\n# Define some default values that can be overridden by system 
properties\nhbase.root.logger=INFO,console\nhbase.security.logger=INFO,console\nhbase.log.dir=.\nhbase
 .log.file=hbase.log\n\n# Define the root logger to the system property 
\"hbase.root.logger\".\nlog4j.rootLogger=${hbase.root.logger}\n\n# Logging 
Threshold\nlog4j.threshold=ALL\n\n#\n# Daily Rolling File 
Appender\n#\nlog4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}\n\n#
 Rollver at midnight\nlog4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n\n# 30-day 
backup\n#log4j.appender.DRFA.MaxBackupIndex=30\nlog4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n\n#
 Pattern format: Date LogLevel LoggerName 
LogMessage\nlog4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] 
%c{2}: %m%n\n\n# Rolling File Appender 
properties\nhbase.log.maxfilesize=256MB\nhbase.log.maxbackupindex=20\n\n# 
Rolling File 
Appender\nlog4j.appender.RFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}\n\nlog4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}\nlog4j.appender.RFA.MaxBackupInde
 
x=${hbase.log.maxbackupindex}\n\nlog4j.appender.RFA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFA.layout.ConversionPattern=%d{ISO8601}
 %-5p [%t] %c{2}: %m%n\n\n#\n# Security audit 
appender\n#\nhbase.security.log.file=SecurityAuth.audit\nhbase.security.log.maxfilesize=256MB\nhbase.security.log.maxbackupindex=20\nlog4j.appender.RFAS=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\nlog4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\nlog4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}\nlog4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601}
 %p %c: 
%m%n\nlog4j.category.SecurityLogger=${hbase.security.logger}\nlog4j.additivity.SecurityLogger=false\n#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE\n\n#\n#
 Null 
Appender\n#\nlog4j.appender.NullAppender=org.apache.log4j.varia.NullAppende
 r\n\n#\n# console\n# Add \"console\" to rootlogger above if you want to use 
this\n#\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{ISO8601}
 %-5p [%t] %c{2}: %m%n\n\n# Custom Logging 
levels\n\nlog4j.logger.org.apache.zookeeper=INFO\n#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\nlog4j.logger.org.apache.hadoop.hbase=INFO\n#
 Make these two classes INFO-level. Make them DEBUG to see more zk 
debug.\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO\n#log4j.logger.org.apache.hadoop.dfs=DEBUG\n#
 Set this class to log INFO only otherwise its OTT\n# Enable this to get 
detailed connection error/retry logging.\n# 
log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE\n\n\n#
 Uncomment this line to enable tr
 acing on _every_ RPC call (this can be a lot of 
output)\n#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG\n\n# 
Uncomment the below if you want to remove logging of client region caching'\n# 
and scan of .META. messages\n# 
log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n#
 log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO"
+          }
+        },
+        "hbase-policy": {
+          "properties": {
+            "security.admin.protocol.acl": "*",
+            "security.client.protocol.acl": "*",
+            "security.masterregion.protocol.acl": "*"
+          }
+        },
+        "hbase-site": {
+          "properties": {
+            "hbase.hstore.compactionThreshold": "3",
+            "hfile.block.cache.size": "0.4",
+            "hbase.hregion.max.filesize": "10737418240",
+            "hbase.regionserver.handler.count": "30",
+            "hbase.hregion.majorcompaction": "604800000",
+            "hbase.client.scanner.caching": "100",
+            "hbase.hregion.memstore.block.multiplier": "4",
+            "zookeeper.session.timeout": "90000",
+            "hbase.client.keyvalue.maxsize": "1048576",
+            "hbase.hregion.memstore.flush.size": "134217728",
+            "hbase.coprocessor.master.classes": "",
+            "hbase.coprocessor.region.classes": 
"org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint",
+            "hbase.defaults.for.version.skip": "true",
+            "hbase.hregion.majorcompaction.jitter": "0.50",
+            "hbase.hregion.memstore.mslab.enabled": "true",
+            "hbase.hstore.blockingStoreFiles": "10",
+            "hbase.hstore.compaction.max": "10",
+            "hbase.local.dir": "${hbase.tmp.dir}/local",
+            "hbase.master.info.bindAddress": "0.0.0.0",
+            "hbase.master.info.port": "16010",
+            "hbase.master.port": "16000",
+            "hbase.regionserver.global.memstore.size": "0.4",
+            "hbase.regionserver.info.port": "16030",
+            "hbase.regionserver.port": "16020",
+            "hbase.regionserver.wal.codec": 
"org.apache.hadoop.hbase.regionserver.wal.WALCellCodec",
+            "hbase.rootdir": 
"hdfs://c6401.ambari.apache.org:8020/apps/hbase/data",
+            "hbase.rpc.protection": "authentication",
+            "hbase.rpc.timeout": "90000",
+            "hbase.security.authentication": "simple",
+            "hbase.security.authorization": "false",
+            "hbase.superuser": "hbase",
+            "hbase.tmp.dir": "/tmp/hbase-${user.name}",
+            "hbase.zookeeper.property.clientPort": "2181",
+            "hbase.zookeeper.quorum": "c6401.ambari.apache.org",
+            "hbase.zookeeper.useMulti": "true",
+            "phoenix.query.timeoutMs": "60000",
+            "zookeeper.znode.parent": "/hbase-unsecure",
+            "dfs.domain.socket.path": "/var/lib/hadoop-hdfs/dn_socket",
+            "hbase.bulkload.staging.dir": "/apps/hbase/staging",
+            "hbase.client.retries.number": "35",
+            "hbase.cluster.distributed": "true",
+            "hbase_master_hosts": [
+              "c6401.ambari.apache.org"
+            ],
+            "hbase_regionserver_hosts": [
+              "c6401.ambari.apache.org"
+            ]
+          }
+        },
+        "ranger-hbase-audit": {
+          "properties": {
+            "xasecure.audit.credential.provider.file": 
"jceks://file{{credential_file}}",
+            "xasecure.audit.destination.db": "false",
+            "xasecure.audit.destination.db.batch.filespool.dir": 
"/var/log/hbase/audit/db/spool",
+            "xasecure.audit.destination.db.jdbc.driver": "{{jdbc_driver}}",
+            "xasecure.audit.destination.db.jdbc.url": "{{audit_jdbc_url}}",
+            "xasecure.audit.destination.db.password": 
"SECRET:ranger-hbase-audit:2:xasecure.audit.destination.db.password",
+            "xasecure.audit.destination.db.user": "{{xa_audit_db_user}}",
+            "xasecure.audit.destination.hdfs": "true",
+            "xasecure.audit.destination.hdfs.batch.filespool.dir": 
"/var/log/hbase/audit/hdfs/spool",
+            "xasecure.audit.destination.hdfs.dir": 
"hdfs://c6401.ambari.apache.org:8020/ranger/audit",
+            "xasecure.audit.destination.solr": "false",
+            "xasecure.audit.destination.solr.batch.filespool.dir": 
"/var/log/hbase/audit/solr/spool",
+            "xasecure.audit.destination.solr.urls": "",
+            "xasecure.audit.destination.solr.zookeepers": "NONE",
+            "xasecure.audit.is.enabled": "true",
+            "xasecure.audit.provider.summary.enabled": "true"
+          }
+        },
+        "ranger-hbase-plugin-properties": {
+          "properties": {
+            "ranger-hbase-plugin-enabled": "No",
+            "REPOSITORY_CONFIG_PASSWORD": 
"SECRET:ranger-hbase-plugin-properties:2:REPOSITORY_CONFIG_PASSWORD",
+            "REPOSITORY_CONFIG_USERNAME": "hbase",
+            "common.name.for.certificate": "",
+            "policy_user": "ambari-qa"
+          }
+        },
+        "ranger-hbase-policymgr-ssl": {
+          "properties": {
+            "xasecure.policymgr.clientssl.keystore": 
"/usr/hdp/current/hbase-client/conf/ranger-plugin-keystore.jks",
+            "xasecure.policymgr.clientssl.keystore.credential.file": 
"jceks://file{{credential_file}}",
+            "xasecure.policymgr.clientssl.keystore.password": 
"SECRET:ranger-hbase-policymgr-ssl:2:xasecure.policymgr.clientssl.keystore.password",
+            "xasecure.policymgr.clientssl.truststore": 
"/usr/hdp/current/hbase-client/conf/ranger-plugin-truststore.jks",
+            "xasecure.policymgr.clientssl.truststore.credential.file": 
"jceks://file{{credential_file}}",
+            "xasecure.policymgr.clientssl.truststore.password": 
"SECRET:ranger-hbase-policymgr-ssl:2:xasecure.policymgr.clientssl.truststore.password"
+          }
+        },
+        "ranger-hbase-security": {
+          "properties": {
+            "ranger.plugin.hbase.policy.cache.dir": 
"/etc/ranger/{{repo_name}}/policycache",
+            "ranger.plugin.hbase.policy.pollIntervalMs": "30000",
+            "ranger.plugin.hbase.policy.rest.ssl.config.file": 
"/etc/hbase/conf/ranger-policymgr-ssl.xml",
+            "ranger.plugin.hbase.policy.rest.url": "{{policymgr_mgr_url}}",
+            "ranger.plugin.hbase.policy.source.impl": 
"org.apache.ranger.admin.client.RangerAdminRESTClient",
+            "ranger.plugin.hbase.service.name": "{{repo_name}}",
+            "xasecure.hbase.update.xapolicies.on.grant.revoke": "true"
+          }
+        },
+        "admin-properties": {
+          "properties": {
+            "SQL_CONNECTOR_JAR": "/usr/share/java/mysql-connector-java.jar",
+            "DB_FLAVOR": "MYSQL",
+            "audit_db_name": "ranger_audit",
+            "audit_db_password": "SECRET:admin-properties:1:audit_db_password",
+            "audit_db_user": "rangerlogger",
+            "db_host": "c6401.ambari.apache.org",
+            "db_name": "ranger",
+            "db_password": "SECRET:admin-properties:1:db_password",
+            "db_root_password": "SECRET:admin-properties:1:db_root_password",
+            "db_root_user": "root",
+            "db_user": "rangeradmin",
+            "policymgr_external_url": "http://c6401.ambari.apache.org:6080";
+          }
+        },
+        "ranger-admin-site": {
+          "properties": {
+            "ranger.audit.solr.password": 
"SECRET:ranger-admin-site:1:ranger.audit.solr.password",
+            "ranger.audit.solr.urls": "",
+            "ranger.audit.solr.username": "ranger_solr",
+            "ranger.audit.solr.zookeepers": "NONE",
+            "ranger.audit.source.type": "solr",
+            "ranger.authentication.method": "UNIX",
+            "ranger.credential.provider.path": 
"/etc/ranger/admin/rangeradmin.jceks",
+            "ranger.externalurl": "{{ranger_external_url}}",
+            "ranger.https.attrib.keystore.file": 
"/etc/ranger/admin/conf/ranger-admin-keystore.jks",
+            "ranger.jpa.audit.jdbc.credential.alias": "rangeraudit",
+            "ranger.jpa.audit.jdbc.dialect": "{{jdbc_dialect}}",
+            "ranger.jpa.audit.jdbc.driver": "{{ranger_jdbc_driver}}",
+            "ranger.jpa.audit.jdbc.password": 
"SECRET:ranger-admin-site:1:ranger.jpa.audit.jdbc.password",
+            "ranger.jpa.audit.jdbc.url": "{{audit_jdbc_url}}",
+            "ranger.jpa.audit.jdbc.user": "{{ranger_audit_db_user}}",
+            "ranger.jpa.jdbc.credential.alias": "rangeradmin",
+            "ranger.jpa.jdbc.dialect": "{{jdbc_dialect}}",
+            "ranger.jpa.jdbc.driver": "com.mysql.jdbc.Driver",
+            "ranger.jpa.jdbc.password": 
"SECRET:ranger-admin-site:1:ranger.jpa.jdbc.password",
+            "ranger.jpa.jdbc.url": 
"jdbc:mysql://c6401.ambari.apache.org/ranger",
+            "ranger.jpa.jdbc.user": "{{ranger_db_user}}",
+            "ranger.ldap.ad.base.dn": "dc=example,dc=com",
+            "ranger.ldap.ad.bind.dn": "{{ranger_ug_ldap_bind_dn}}",
+            "ranger.ldap.ad.bind.password": 
"SECRET:ranger-admin-site:1:ranger.ldap.ad.bind.password",
+            "ranger.ldap.ad.domain": "",
+            "ranger.ldap.ad.referral": "ignore",
+            "ranger.ldap.ad.url": "{{ranger_ug_ldap_url}}",
+            "ranger.ldap.ad.user.searchfilter": 
"{{ranger_ug_ldap_user_searchfilter}}",
+            "ranger.ldap.base.dn": "dc=example,dc=com",
+            "ranger.ldap.bind.dn": "{{ranger_ug_ldap_bind_dn}}",
+            "ranger.ldap.bind.password": 
"SECRET:ranger-admin-site:1:ranger.ldap.bind.password",
+            "ranger.ldap.group.roleattribute": "cn",
+            "ranger.ldap.group.searchbase": 
"{{ranger_ug_ldap_group_searchbase}}",
+            "ranger.ldap.group.searchfilter": 
"{{ranger_ug_ldap_group_searchfilter}}",
+            "ranger.ldap.referral": "ignore",
+            "ranger.ldap.url": "{{ranger_ug_ldap_url}}",
+            "ranger.ldap.user.dnpattern": 
"uid={0},ou=users,dc=xasecure,dc=net",
+            "ranger.ldap.user.searchfilter": 
"{{ranger_ug_ldap_user_searchfilter}}",
+            "ranger.service.host": "{{ranger_host}}",
+            "ranger.service.http.enabled": "true",
+            "ranger.service.http.port": "6080",
+            "ranger.service.https.attrib.clientAuth": "want",
+            "ranger.service.https.attrib.keystore.keyalias": "rangeradmin",
+            "ranger.service.https.attrib.keystore.pass": 
"SECRET:ranger-admin-site:1:ranger.service.https.attrib.keystore.pass",
+            "ranger.service.https.attrib.ssl.enabled": "false",
+            "ranger.service.https.port": "6182",
+            "ranger.sso.browser.useragent": "Mozilla,chrome",
+            "ranger.sso.cookiename": "hadoop-jwt",
+            "ranger.sso.enabled": "false",
+            "ranger.sso.providerurl": "",
+            "ranger.sso.publicKey": "",
+            "ranger.sso.query.param.originalurl": "originalUrl",
+            "ranger.unixauth.remote.login.enabled": "true",
+            "ranger.unixauth.service.hostname": "{{ugsync_host}}",
+            "ranger.unixauth.service.port": "5151"
+          }
+        },
+        "ranger-env": {
+          "properties": {
+            "ranger_admin_username": "amb_ranger_admin",
+            "ranger_admin_password": 
"SECRET:ranger-env:1:ranger_admin_password",
+            "ranger_group": "ranger",
+            "ranger_user": "ranger",
+            "xasecure.audit.destination.solr": "false",
+            "admin_password": "SECRET:ranger-env:1:admin_password",
+            "admin_username": "admin",
+            "bind_anonymous": "false",
+            "create_db_dbuser": "true",
+            "is_solrCloud_enabled": "false",
+            "ranger-hbase-plugin-enabled": "No",
+            "ranger-hdfs-plugin-enabled": "No",
+            "ranger-hive-plugin-enabled": "No",
+            "ranger-kafka-plugin-enabled": "No",
+            "ranger-knox-plugin-enabled": "No",
+            "ranger-storm-plugin-enabled": "No",
+            "ranger-yarn-plugin-enabled": "No",
+            "ranger_admin_log_dir": "/var/log/ranger/admin",
+            "ranger_pid_dir": "/var/run/ranger",
+            "ranger_privelege_user_jdbc_url": 
"jdbc:mysql://c6401.ambari.apache.org",
+            "ranger_usersync_log_dir": "/var/log/ranger/usersync",
+            "xasecure.audit.destination.db": "false",
+            "xasecure.audit.destination.hdfs": "true",
+            "xasecure.audit.destination.hdfs.dir": 
"hdfs://c6401.ambari.apache.org:8020/ranger/audit",
+            "xml_configurations_supported": "true"
+          }
+        },
+        "ranger-site": {
+          "properties": {
+            "ranger_admin_hosts": [
+              "c6401.ambari.apache.org"
+            ]
+          }
+        },
+        "ranger-ugsync-site": {
+          "properties": {
+            "ranger.usersync.credstore.filename": 
"/usr/hdp/current/ranger-usersync/conf/ugsync.jceks",
+            "ranger.usersync.enabled": "true",
+            "ranger.usersync.filesource.file": "/tmp/usergroup.txt",
+            "ranger.usersync.filesource.text.delimiter": ",",
+            "ranger.usersync.group.memberattributename": "",
+            "ranger.usersync.group.nameattribute": "",
+            "ranger.usersync.group.objectclass": "",
+            "ranger.usersync.group.searchbase": "",
+            "ranger.usersync.group.searchenabled": "false",
+            "ranger.usersync.group.searchfilter": "",
+            "ranger.usersync.group.searchscope": "",
+            "ranger.usersync.group.usermapsyncenabled": "true",
+            "ranger.usersync.keystore.file": 
"/usr/hdp/current/ranger-usersync/conf/unixauthservice.jks",
+            "ranger.usersync.keystore.password": 
"SECRET:ranger-ugsync-site:1:ranger.usersync.keystore.password",
+            "ranger.usersync.ldap.bindalias": "testldapalias",
+            "ranger.usersync.ldap.binddn": "",
+            "ranger.usersync.ldap.bindkeystore": "",
+            "ranger.usersync.ldap.groupname.caseconversion": "lower",
+            "ranger.usersync.ldap.ldapbindpassword": "",
+            "ranger.usersync.ldap.referral": "ignore",
+            "ranger.usersync.ldap.searchBase": "dc=hadoop,dc=apache,dc=org",
+            "ranger.usersync.ldap.url": "",
+            "ranger.usersync.ldap.user.groupnameattribute": "memberof, 
ismemberof",
+            "ranger.usersync.ldap.user.nameattribute": "",
+            "ranger.usersync.ldap.user.objectclass": "person",
+            "ranger.usersync.ldap.user.searchbase": "",
+            "ranger.usersync.ldap.user.searchfilter": "",
+            "ranger.usersync.ldap.user.searchscope": "sub",
+            "ranger.usersync.ldap.username.caseconversion": "lower",
+            "ranger.usersync.logdir": "/var/log/ranger/usersync",
+            "ranger.usersync.pagedresultsenabled": "true",
+            "ranger.usersync.pagedresultssize": "500",
+            "ranger.usersync.passwordvalidator.path": 
"./native/credValidator.uexe",
+            "ranger.usersync.policymanager.baseURL": "{{ranger_external_url}}",
+            "ranger.usersync.policymanager.maxrecordsperapicall": "1000",
+            "ranger.usersync.policymanager.mockrun": "false",
+            "ranger.usersync.port": "5151",
+            "ranger.usersync.sink.impl.class": 
"org.apache.ranger.unixusersync.process.PolicyMgrUserGroupBuilder",
+            "ranger.usersync.sleeptimeinmillisbetweensynccycle": "60000",
+            "ranger.usersync.source.impl.class": 
"org.apache.ranger.unixusersync.process.UnixUserGroupBuilder",
+            "ranger.usersync.ssl": "true",
+            "ranger.usersync.truststore.file": 
"/usr/hdp/current/ranger-usersync/conf/mytruststore.jks",
+            "ranger.usersync.truststore.password": 
"SECRET:ranger-ugsync-site:1:ranger.usersync.truststore.password",
+            "ranger.usersync.unix.group.file": "/etc/group",
+            "ranger.usersync.unix.minUserId": "500",
+            "ranger.usersync.unix.password.file": "/etc/passwd"
+          }
+        },
+        "usersync-properties": {
+          "properties": {}
+        }
+      }
+    },
+    "blueprint_cluster_binding": {
+      "host_groups": [
+        {
+          "name": "host-group-1",
+          "hosts": [
+            {
+              "fqdn": "c6401.ambari.apache.org"
+            }
+          ]
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/ff8c1e25/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/unwise-character-response.json
----------------------------------------------------------------------
diff --git 
a/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/unwise-character-response.json
 
b/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/unwise-character-response.json
new file mode 100644
index 0000000..e216f8d
--- /dev/null
+++ 
b/gateway-test/src/test/resources/org/apache/hadoop/gateway/AmbariServiceDefinitionTest/unwise-character-response.json
@@ -0,0 +1,410 @@
+{
+  "items": [
+    {
+      "ServiceComponentInfo": {
+        "component_name": "HBASE_MASTER",
+        "service_name": "HBASE"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "HBASE_MASTER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "INSTALLED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "NAMENODE",
+        "service_name": "HDFS"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "NAMENODE",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          },
+          "metrics": {
+            "dfs": {
+              "FSNamesystem": {
+                "BlockCapacity": 2097152,
+                "BlocksTotal": 54,
+                "CapacityNonDFSUsed": 35660591104,
+                "CapacityRemaining": 488078696448,
+                "CapacityRemainingGB": 455.0,
+                "CapacityTotal": 524208947200,
+                "CapacityTotalGB": 488.0,
+                "CapacityUsed": 469659648,
+                "CapacityUsedGB": 0.0,
+                "CorruptBlocks": 0,
+                "ExcessBlocks": 0,
+                "ExpiredHeartbeats": 0,
+                "FilesTotal": 163,
+                "HAState": "active",
+                "LastCheckpointTime": 1458249036957,
+                "LastWrittenTransactionId": 8188,
+                "MillisSinceLastLoadedEdits": 0,
+                "MissingBlocks": 0,
+                "MissingReplOneBlocks": 0,
+                "PendingDataNodeMessageCount": 0,
+                "PendingDeletionBlocks": 0,
+                "PendingReplicationBlocks": 0,
+                "PostponedMisreplicatedBlocks": 0,
+                "ScheduledReplicationBlocks": 0,
+                "Snapshots": 0,
+                "SnapshottableDirectories": 0,
+                "StaleDataNodes": 0,
+                "TotalFiles": 163,
+                "TotalLoad": 2,
+                "TransactionsSinceLastCheckpoint": 593,
+                "TransactionsSinceLastLogRoll": 593,
+                "UnderReplicatedBlocks": 54
+              },
+              "namenode": {
+                "DeadNodes": "{}",
+                "DecomNodes": "{}",
+                "LiveNodes": 
"{\"c6401.ambari.apache.org:50010\":{\"infoAddr\":\"192.168.64.101:50075\",\"infoSecureAddr\":\"192.168.64.101:0\",\"xferaddr\":\"192.168.64.101:50010\",\"lastContact\":1,\"usedSpace\":469659648,\"adminState\":\"In
 
Service\",\"nonDfsUsedSpace\":35660591104,\"capacity\":524208947200,\"numBlocks\":54,\"version\":\"2.7.1.2.3.4.0-3485\",\"used\":469659648,\"remaining\":488078696448,\"blockScheduled\":0,\"blockPoolUsed\":469659648,\"blockPoolUsedPercent\":0.08959398,\"volfails\":0}}",
+                "Safemode": "",
+                "TotalFiles": 163,
+                "UpgradeFinalized": true,
+                "Version": "2.7.1.2.3.4.0-3485, 
ref0582ca14b8177a3cbb6376807545272677d730"
+              }
+            },
+            "jvm": {
+              "HeapMemoryMax": 1060372480,
+              "HeapMemoryUsed": 76247256,
+              "memHeapCommittedM": 1011.25,
+              "memHeapUsedM": 72.30267
+            },
+            "rpc": {
+              "RpcQueueTime_avg_time": 0.0
+            },
+            "runtime": {
+              "StartTime": 1458141632197
+            }
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "SECONDARY_NAMENODE",
+        "service_name": "HDFS"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "SECONDARY_NAMENODE",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "HIVE_METASTORE",
+        "service_name": "HIVE"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "HIVE_METASTORE",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "HIVE_SERVER",
+        "service_name": "HIVE"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "HIVE_SERVER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "MYSQL_SERVER",
+        "service_name": "HIVE"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "MYSQL_SERVER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "WEBHCAT_SERVER",
+        "service_name": "HIVE"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "WEBHCAT_SERVER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "KNOX_GATEWAY",
+        "service_name": "KNOX"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "KNOX_GATEWAY",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "HISTORYSERVER",
+        "service_name": "MAPREDUCE2"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "HISTORYSERVER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "RANGER_ADMIN",
+        "service_name": "RANGER"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "RANGER_ADMIN",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "RANGER_USERSYNC",
+        "service_name": "RANGER"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "RANGER_USERSYNC",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "SPARK_JOBHISTORYSERVER",
+        "service_name": "SPARK"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "SPARK_JOBHISTORYSERVER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "APP_TIMELINE_SERVER",
+        "service_name": "YARN"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "APP_TIMELINE_SERVER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "RESOURCEMANAGER",
+        "service_name": "YARN"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "RESOURCEMANAGER",
+            "ha_state": "ACTIVE",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          },
+          "metrics": {
+            "jvm": {
+              "HeapMemoryMax": 1037959168,
+              "HeapMemoryUsed": 35935488,
+              "memHeapCommittedM": 44.6875,
+              "memHeapUsedM": 33.870148
+            },
+            "rpc": {
+              "RpcQueueTime_avg_time": 0.14285714285714285
+            },
+            "runtime": {
+              "StartTime": 1458074932210
+            },
+            "yarn": {
+              "ClusterMetrics": {
+                "NumActiveNMs": 1,
+                "NumDecommissionedNMs": 0,
+                "NumLostNMs": 0,
+                "NumRebootedNMs": 0,
+                "NumUnhealthyNMs": 0
+              },
+              "Queue": {
+                "root": {
+                  "AMResourceLimitMB": 0,
+                  "AMResourceLimitVCores": 0,
+                  "ActiveApplications": 0,
+                  "ActiveUsers": 0,
+                  "AggregateContainersAllocated": 19,
+                  "AggregateContainersReleased": 19,
+                  "AllocatedContainers": 0,
+                  "AllocatedMB": 0,
+                  "AllocatedVCores": 0,
+                  "AppAttemptFirstContainerAllocationDelayAvgTime": 0.0,
+                  "AppAttemptFirstContainerAllocationDelayNumOps": 0,
+                  "AppsCompleted": 6,
+                  "AppsFailed": 0,
+                  "AppsKilled": 0,
+                  "AppsPending": 0,
+                  "AppsRunning": 0,
+                  "AppsSubmitted": 6,
+                  "AvailableMB": 512,
+                  "AvailableVCores": 1,
+                  "PendingContainers": 0,
+                  "PendingMB": 0,
+                  "PendingVCores": 0,
+                  "ReservedContainers": 0,
+                  "ReservedMB": 0,
+                  "ReservedVCores": 0,
+                  "UsedAMResourceMB": 0,
+                  "UsedAMResourceVCores": 0,
+                  "running_0": 0,
+                  "running_1440": 0,
+                  "running_300": 0,
+                  "running_60": 0,
+                  "default": {
+                    "AMResourceLimitMB": 170,
+                    "AMResourceLimitVCores": 1,
+                    "ActiveApplications": 0,
+                    "ActiveUsers": 0,
+                    "AggregateContainersAllocated": 19,
+                    "AggregateContainersReleased": 19,
+                    "AllocatedContainers": 0,
+                    "AllocatedMB": 0,
+                    "AllocatedVCores": 0,
+                    "AppAttemptFirstContainerAllocationDelayAvgTime": 0.0,
+                    "AppAttemptFirstContainerAllocationDelayNumOps": 0,
+                    "AppsCompleted": 6,
+                    "AppsFailed": 0,
+                    "AppsKilled": 0,
+                    "AppsPending": 0,
+                    "AppsRunning": 0,
+                    "AppsSubmitted": 6,
+                    "AvailableMB": 512,
+                    "AvailableVCores": 1,
+                    "PendingContainers": 0,
+                    "PendingMB": 0,
+                    "PendingVCores": 0,
+                    "ReservedContainers": 0,
+                    "ReservedMB": 0,
+                    "ReservedVCores": 0,
+                    "UsedAMResourceMB": 0,
+                    "UsedAMResourceVCores": 0,
+                    "running_0": 0,
+                    "running_1440": 0,
+                    "running_300": 0,
+                    "running_60": 0
+                  }
+                }
+              }
+            }
+          }
+        }
+      ]
+    },
+    {
+      "ServiceComponentInfo": {
+        "component_name": "ZOOKEEPER_SERVER",
+        "service_name": "ZOOKEEPER"
+      },
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": "ZOOKEEPER_SERVER",
+            "host_name": "c6401.ambari.apache.org",
+            "maintenance_state": "OFF",
+            "stale_configs": false,
+            "state": "STARTED"
+          }
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/ff8c1e25/gateway-util-urltemplate/src/main/java/org/apache/hadoop/gateway/util/urltemplate/Expander.java
----------------------------------------------------------------------
diff --git 
a/gateway-util-urltemplate/src/main/java/org/apache/hadoop/gateway/util/urltemplate/Expander.java
 
b/gateway-util-urltemplate/src/main/java/org/apache/hadoop/gateway/util/urltemplate/Expander.java
index 7ec2e91..e37c780 100644
--- 
a/gateway-util-urltemplate/src/main/java/org/apache/hadoop/gateway/util/urltemplate/Expander.java
+++ 
b/gateway-util-urltemplate/src/main/java/org/apache/hadoop/gateway/util/urltemplate/Expander.java
@@ -17,8 +17,10 @@
  */
 package org.apache.hadoop.gateway.util.urltemplate;
 
+import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.net.URLEncoder;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -218,10 +220,10 @@ public class Expander {
             } else {
               builder.append( "&" );
             }
-            builder.append( name );
+            appendQueryPart(name, builder);
             if( value != null ) {
               builder.append( "=" );
-              builder.append( value );
+              appendQueryPart(value, builder);
             }
           }
         }
@@ -240,24 +242,32 @@ public class Expander {
           if( i > 0 ) {
             builder.append( "&" );
           }
-          builder.append( queryName );
+          appendQueryPart(queryName, builder);
           value = values.get( i );
           if( value != null ) {
             builder.append( "=" );
-            builder.append( value );
+            appendQueryPart(value, builder);
           }
         }
       } else {
-        builder.append( queryName );
+        appendQueryPart(queryName, builder);
         value = values.get( 0 );
         if( value != null ) {
           builder.append( "=" );
-          builder.append( value );
+          appendQueryPart(value, builder);
         }
       }
     }
   }
 
+  private static void appendQueryPart(String part, StringBuilder builder) {
+    try {
+      builder.append(URLEncoder.encode(part, "UTF-8"));
+    } catch ( UnsupportedEncodingException e ) {
+      builder.append(part);
+    }
+  }
+
   private static void expandFragment( Template template, Set<String> names, 
Params params, Evaluator evaluator, StringBuilder builder ) {
     if( template.hasFragment() ) {
       builder.append( "#" );

http://git-wip-us.apache.org/repos/asf/knox/blob/ff8c1e25/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java
----------------------------------------------------------------------
diff --git 
a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java
 
b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java
index 7c91e6e..7fd3383 100644
--- 
a/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java
+++ 
b/gateway-util-urltemplate/src/test/java/org/apache/hadoop/gateway/util/urltemplate/ExpanderTest.java
@@ -19,7 +19,6 @@ package org.apache.hadoop.gateway.util.urltemplate;
 
 import org.apache.hadoop.test.category.FastTests;
 import org.apache.hadoop.test.category.UnitTests;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -29,9 +28,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import static junit.framework.TestCase.assertNotNull;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.*;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.equalToIgnoringCase;
 import static org.junit.Assert.assertThat;
@@ -429,7 +426,7 @@ public class ExpanderTest {
     outputUri = Expander.expand( template, match.getParams(), evaluator );
     assertThat(
         outputUri.toString(),
-        equalToIgnoringCase( 
"https://webhcatTestHost.com:50111/templeton/v1/?version/hive"; ) );
+        equalToIgnoringCase( 
"https://webhcatTestHost.com:50111/templeton/v1/?version%2Fhive"; ) );
 
   }
 

Reply via email to