mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Fixed NPE occurred due to scope mapping
This commit is contained in:
parent
f25e82f4ec
commit
21c50c9a55
@ -73,6 +73,9 @@ public class AnnotationProcessor {
|
|||||||
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_CONTEXT = "context";
|
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_CONTEXT = "context";
|
||||||
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_VALUE = "value";
|
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_VALUE = "value";
|
||||||
private static final String ANNOTATIONS_SCOPES = "scopes";
|
private static final String ANNOTATIONS_SCOPES = "scopes";
|
||||||
|
private static final String ANNOTATIONS_SCOPE = "scope";
|
||||||
|
private static final String DEFAULT_SCOPE_KEY = "perm:admin";
|
||||||
|
private static final String DEFAULT_SCOPE_PERMISSION = "/permision/device-mgt";
|
||||||
|
|
||||||
private static final String PERMISSION_PREFIX = "/permission/admin";
|
private static final String PERMISSION_PREFIX = "/permission/admin";
|
||||||
|
|
||||||
@ -273,7 +276,16 @@ public class AnnotationProcessor {
|
|||||||
resource.setProduces(invokeMethod(producesClassMethods[0], producesAnno, STRING_ARR));
|
resource.setProduces(invokeMethod(producesClassMethods[0], producesAnno, STRING_ARR));
|
||||||
}
|
}
|
||||||
if (annotations[i].annotationType().getName().equals(ApiOperation.class.getName())) {
|
if (annotations[i].annotationType().getName().equals(ApiOperation.class.getName())) {
|
||||||
resource.setScope(this.getScope(annotations[i]));
|
Scope scope = this.getScope(annotations[i]);
|
||||||
|
if (scope != null) {
|
||||||
|
resource.setScope(scope);
|
||||||
|
} else {
|
||||||
|
log.error("Scope is not defined for '" + makeContextURLReady(resourceRootContext) +
|
||||||
|
makeContextURLReady(subCtx) + "' endpoint, hence assigning the default scope");
|
||||||
|
scope.setKey(DEFAULT_SCOPE_KEY);
|
||||||
|
scope.setRoles(DEFAULT_SCOPE_PERMISSION);
|
||||||
|
resource.setScope(scope);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
resourceList.add(resource);
|
resourceList.add(resource);
|
||||||
@ -444,19 +456,26 @@ public class AnnotationProcessor {
|
|||||||
InvocationHandler methodHandler = Proxy.getInvocationHandler(currentMethod);
|
InvocationHandler methodHandler = Proxy.getInvocationHandler(currentMethod);
|
||||||
Annotation[] extensions = (Annotation[]) methodHandler.invoke(currentMethod,
|
Annotation[] extensions = (Annotation[]) methodHandler.invoke(currentMethod,
|
||||||
apiOperation.getMethod(SWAGGER_ANNOTATIONS_EXTENSIONS, null), null);
|
apiOperation.getMethod(SWAGGER_ANNOTATIONS_EXTENSIONS, null), null);
|
||||||
|
if (extensions != null) {
|
||||||
methodHandler = Proxy.getInvocationHandler(extensions[0]);
|
methodHandler = Proxy.getInvocationHandler(extensions[0]);
|
||||||
Annotation[] properties = (Annotation[]) methodHandler.invoke(extensions[0], extensionClass
|
Annotation[] properties = (Annotation[]) methodHandler.invoke(extensions[0], extensionClass
|
||||||
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES, null), null);
|
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES, null), null);
|
||||||
|
String scopeKey;
|
||||||
|
String propertyName;
|
||||||
for (Annotation property : properties) {
|
for (Annotation property : properties) {
|
||||||
methodHandler = Proxy.getInvocationHandler(property);
|
methodHandler = Proxy.getInvocationHandler(property);
|
||||||
String scopeKey = (String) methodHandler.invoke(property, extensionPropertyClass
|
propertyName = (String) methodHandler.invoke(property, extensionPropertyClass
|
||||||
|
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES_NAME, null), null);
|
||||||
|
if (ANNOTATIONS_SCOPE.equals(propertyName)) {
|
||||||
|
scopeKey = (String) methodHandler.invoke(property, extensionPropertyClass
|
||||||
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES_VALUE, null), null);
|
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES_VALUE, null), null);
|
||||||
if (scopeKey.isEmpty()) {
|
if (scopeKey.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return apiScopes.get(scopeKey);
|
return apiScopes.get(scopeKey);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,6 +70,7 @@ public class AnnotationProcessor {
|
|||||||
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_KEY = "key";
|
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_KEY = "key";
|
||||||
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_PERMISSIONS = "permissions";
|
private static final String SWAGGER_ANNOTATIONS_PROPERTIES_PERMISSIONS = "permissions";
|
||||||
private static final String ANNOTATIONS_SCOPES = "scopes";
|
private static final String ANNOTATIONS_SCOPES = "scopes";
|
||||||
|
private static final String ANNOTATIONS_SCOPE = "scope";
|
||||||
|
|
||||||
private static final String PERMISSION_PREFIX = "/permission/admin";
|
private static final String PERMISSION_PREFIX = "/permission/admin";
|
||||||
|
|
||||||
@ -375,13 +376,19 @@ public class AnnotationProcessor {
|
|||||||
InvocationHandler methodHandler = Proxy.getInvocationHandler(currentMethod);
|
InvocationHandler methodHandler = Proxy.getInvocationHandler(currentMethod);
|
||||||
Annotation[] extensions = (Annotation[]) methodHandler.invoke(currentMethod,
|
Annotation[] extensions = (Annotation[]) methodHandler.invoke(currentMethod,
|
||||||
apiOperation.getMethod(SWAGGER_ANNOTATIONS_EXTENSIONS, null), null);
|
apiOperation.getMethod(SWAGGER_ANNOTATIONS_EXTENSIONS, null), null);
|
||||||
|
if (extensions != null) {
|
||||||
methodHandler = Proxy.getInvocationHandler(extensions[0]);
|
methodHandler = Proxy.getInvocationHandler(extensions[0]);
|
||||||
Annotation[] properties = (Annotation[]) methodHandler.invoke(extensions[0], extensionClass
|
Annotation[] properties = (Annotation[]) methodHandler.invoke(extensions[0], extensionClass
|
||||||
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES, null), null);
|
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES, null), null);
|
||||||
Scope scope;
|
Scope scope;
|
||||||
|
String scopeKey;
|
||||||
|
String propertyName;
|
||||||
for (Annotation property : properties) {
|
for (Annotation property : properties) {
|
||||||
methodHandler = Proxy.getInvocationHandler(property);
|
methodHandler = Proxy.getInvocationHandler(property);
|
||||||
String scopeKey = (String) methodHandler.invoke(property, extensionPropertyClass
|
propertyName = (String) methodHandler.invoke(property, extensionPropertyClass
|
||||||
|
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES_NAME, null), null);
|
||||||
|
if (ANNOTATIONS_SCOPE.equals(propertyName)) {
|
||||||
|
scopeKey = (String) methodHandler.invoke(property, extensionPropertyClass
|
||||||
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES_VALUE, null), null);
|
.getMethod(SWAGGER_ANNOTATIONS_PROPERTIES_VALUE, null), null);
|
||||||
if (!scopeKey.isEmpty()) {
|
if (!scopeKey.isEmpty()) {
|
||||||
scope = apiScopes.get(scopeKey);
|
scope = apiScopes.get(scopeKey);
|
||||||
@ -391,6 +398,8 @@ public class AnnotationProcessor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String,Scope> processAPIScopes(Annotation annotation) throws Throwable {
|
private Map<String,Scope> processAPIScopes(Annotation annotation) throws Throwable {
|
||||||
Map<String, Scope> scopes = new HashMap<>();
|
Map<String, Scope> scopes = new HashMap<>();
|
||||||
|
|||||||
@ -139,7 +139,8 @@
|
|||||||
"perm:admin:certificates:delete",
|
"perm:admin:certificates:delete",
|
||||||
"perm:admin:certificates:details",
|
"perm:admin:certificates:details",
|
||||||
"perm:admin:certificates:view",
|
"perm:admin:certificates:view",
|
||||||
"perm:admin:certificates:add"
|
"perm:admin:certificates:add",
|
||||||
|
"perm:admin"
|
||||||
],
|
],
|
||||||
"isOAuthEnabled" : true,
|
"isOAuthEnabled" : true,
|
||||||
"backendRestEndpoints" : {
|
"backendRestEndpoints" : {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user