kirby zhou created RANGER-3645:
----------------------------------
Summary: Should not create ServiceDef with invalid implClass
Key: RANGER-3645
URL: https://issues.apache.org/jira/browse/RANGER-3645
Project: Ranger
Issue Type: Improvement
Components: admin
Affects Versions: 3.0.0, 2.3.0
Reporter: kirby zhou
ServiceDBStore::createServiceDef does not check whether the implClass of the
service is valid now. People can create an invalid ServiceDef, then encounter
ClassNotFound error when click TestConnection.
I suggest to check implClass at ServiceDBStore::createServiceDef to make bad
things happen early.
Codelet like:
{code:java}
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -436,6 +436,9 @@ public RangerServiceDef createServiceDef(RangerServiceDef
serviceDef)
MessageEnums.ERROR_DUPLICATE_OBJECT);
}
+ // try to load implClass, it will throw an Exception when
failure
+ this.serviceMgr.getClassForServiceType(serviceDef);
+
List<RangerServiceConfigDef> configs = serviceDef.getConfigs();
List<RangerResourceDef> resources = serviceDef.getResources();
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
@@ -348,6 +348,6 @@ public Class<RangerBaseService> getClassForServiceType(...)
@SuppressWarnings("unchecked")
- private Class<RangerBaseService>
getClassForServiceType(RangerServiceDef serviceDef) throws Exception {
+ Class<RangerBaseService> getClassForServiceType(RangerServiceDef
serviceDef) throws Exception {
if(LOG.isDebugEnabled()) {
LOG.debug("==> ServiceMgr.getClassForServiceType(" +
serviceDef + ")");
{code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)