From 1bac710427879c6c39a43dbc73796b66621296d5 Mon Sep 17 00:00:00 2001
From: Simon Barner <barner@fortiss.org>
Date: Wed, 8 May 2019 11:13:39 +0200
Subject: [PATCH] setTableItemHeight(): Avoid using deprecated method
 isAccessible()

* AccessibleObject::isAccessible() is deprecated for Java 9 and above
* Use AccessibleObject::canAccess(Object) instead
* Log a warning when the security manager denies to enable access to
  Table::setItemHeight()
* Log an error when an error occurs when trying to set the table height

Issue-Ref: 3696
Issue-Url: https://af3-developer.fortiss.org/issues/3696

Signed-off-by: Simon Barner <barner@fortiss.org>
---
 .../base/ui/annotation/view/generic/.ratings    |  2 +-
 .../view/generic/GenericAnnotationView.java     | 17 ++++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings
index 220632fe4..6b54f907a 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings
@@ -1,2 +1,2 @@
 ColumnHandle.java 8fc5f04cbb0127e5df8c7a9e3b2620502bf93716 GREEN
-GenericAnnotationView.java 494cbcade7fd5d66b9629b86549eb25d4d4c93dd YELLOW
+GenericAnnotationView.java 6d5569d9a346d5fd60d28a1c60baa9963b5a4010 YELLOW
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java
index 494cbcade..6d5569d9a 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java
@@ -17,6 +17,8 @@ package org.fortiss.tooling.base.ui.annotation.view.generic;
 
 import static org.fortiss.tooling.base.ui.annotation.editingsupport.EditingSupportFactory.createEditingSupport;
 import static org.fortiss.tooling.base.ui.annotation.labelprovider.LabelProviderFactory.createLabelProvider;
+import static org.fortiss.tooling.kernel.utils.LoggingUtils.error;
+import static org.fortiss.tooling.kernel.utils.LoggingUtils.warning;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
@@ -70,6 +72,7 @@ import org.fortiss.tooling.base.annotation.valueprovider.IAnnotationValueProvide
 import org.fortiss.tooling.base.annotation.valueprovider.IAnnotationValueProvider.AnnotationActionParameters;
 import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
 import org.fortiss.tooling.base.model.element.IModelElement;
+import org.fortiss.tooling.base.ui.ToolingBaseUIActivator;
 import org.fortiss.tooling.base.ui.annotation.editingsupport.EditingSupportFactory;
 import org.fortiss.tooling.base.ui.annotation.editingsupport.ElementCommentEditingSupport;
 import org.fortiss.tooling.base.ui.annotation.editingsupport.ElementNameEditingSupport;
@@ -297,13 +300,17 @@ public class GenericAnnotationView extends AnnotationViewPartBase {
 		try {
 			Method method = table.getClass().getDeclaredMethod("setItemHeight", int.class);
 			if(method != null) {
-				boolean accessible = method.isAccessible();
-				method.setAccessible(true);
-				method.invoke(table, height);
-				method.setAccessible(accessible);
+				boolean accessible = method.canAccess(table);
+				if(method.trySetAccessible()) {
+					method.invoke(table, height);
+					method.setAccessible(accessible);
+				} else {
+					warning(ToolingBaseUIActivator.getDefault(),
+							"Could not set annotation table height.");
+				}
 			}
 		} catch(Exception e) {
-			return;
+			error(ToolingBaseUIActivator.getDefault(), "Failed to set annotation table height.", e);
 		}
 	}
 
-- 
GitLab