https://bugs.eclipse.org/bugs/show_bug.cgi?id=361818: "Add NLS SDK support for Text Provider Services"
Fix for non float ranking annotations
diff --git a/org.eclipse.scout.nls.sdk.services/src/org/eclipse/scout/nls/sdk/services/model/ws/project/ServiceNlsProjectProvider.java b/org.eclipse.scout.nls.sdk.services/src/org/eclipse/scout/nls/sdk/services/model/ws/project/ServiceNlsProjectProvider.java
index 00248b0..5e43ccb 100644
--- a/org.eclipse.scout.nls.sdk.services/src/org/eclipse/scout/nls/sdk/services/model/ws/project/ServiceNlsProjectProvider.java
+++ b/org.eclipse.scout.nls.sdk.services/src/org/eclipse/scout/nls/sdk/services/model/ws/project/ServiceNlsProjectProvider.java
@@ -12,7 +12,6 @@
import org.eclipse.core.runtime.IExtension;
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IMemberValuePair;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.pde.internal.core.PDECore;
@@ -24,6 +23,7 @@
import org.eclipse.scout.sdk.RuntimeClasses;
import org.eclipse.scout.sdk.ScoutSdkCore;
import org.eclipse.scout.sdk.internal.workspace.IScoutBundleConstantes;
+import org.eclipse.scout.sdk.util.jdt.JdtUtility;
import org.eclipse.scout.sdk.util.log.ScoutStatus;
import org.eclipse.scout.sdk.util.type.TypeUtility;
import org.eclipse.scout.sdk.util.typecache.TypeCacheAccessor;
@@ -46,7 +46,7 @@
/**
* Gets the registered (in plugin.xml) text provider service types ordered by priority.
- *
+ *
* @param returnDocServices
* If true, only Docs text provider services (implementing marker interface
* <code>IDocumentationTextProviderService</code>) are returned. Otherwise only non-docs text provider
@@ -185,14 +185,11 @@
// second check class annotation
try {
- IAnnotation a = registration.getAnnotation("org.eclipse.scout.commons.annotations.Priority");
- if (a != null) {
- for (IMemberValuePair mvp : a.getMemberValuePairs()) {
- if ("value".equals(mvp.getMemberName()) && mvp.getValue() instanceof Float) {
- return ((Float) mvp.getValue()).floatValue();
- }
+ IAnnotation a = JdtUtility.getAnnotation(registration, RuntimeClasses.Ranking);
+ Double val = JdtUtility.getNumericAnnotationValue(a, "value");
+ if (val != null) {
+ return val.floatValue();
}
- }
}
catch (Exception e) {
//nop
diff --git a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java
index ac8e5b7..0ca2821 100644
--- a/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java
+++ b/org.eclipse.scout.sdk.util/src/org/eclipse/scout/sdk/util/jdt/JdtUtility.java
@@ -15,6 +15,7 @@
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IMemberValuePair;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
@@ -38,6 +39,26 @@
return TypeUtility.exists(getAnnotation(element, fullyQuallifiedAnnotation));
}
+ public static Double getNumericAnnotationValue(IAnnotation annotation, String name) throws JavaModelException {
+ if (TypeUtility.exists(annotation)) {
+ IMemberValuePair[] memberValues = annotation.getMemberValuePairs();
+ for (IMemberValuePair p : memberValues) {
+ if (name.equals(p.getMemberName())) {
+ switch (p.getValueKind()) {
+ case IMemberValuePair.K_DOUBLE:
+ return ((Double) p.getValue()).doubleValue();
+ case IMemberValuePair.K_FLOAT:
+ return ((Float) p.getValue()).doubleValue();
+ case IMemberValuePair.K_INT:
+ return ((Integer) p.getValue()).doubleValue();
+ }
+ break;
+ }
+ }
+ }
+ return null;
+ }
+
public static IAnnotation getAnnotation(IAnnotatable element, String fullyQuallifiedAnnotation) {
try {
IAnnotation annotation = element.getAnnotation(fullyQuallifiedAnnotation);
@@ -61,7 +82,7 @@
/**
* Escape the given string in java style.
- *
+ *
* @param s
* The string to escape.
* @return A new string with backslashes and double-quotes escaped in java style.
@@ -74,7 +95,7 @@
/**
* converts the given string into a string literal with leading and ending double-quotes including escaping of the
* given value.
- *
+ *
* @param s
* the string to convert.
* @return the literal string.
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/RuntimeClasses.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/RuntimeClasses.java
index 1dd785f..f79f3c5 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/RuntimeClasses.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/RuntimeClasses.java
@@ -12,7 +12,7 @@
/**
* <h3>{@link RuntimeClasses}</h3> ...
- *
+ *
* @author Andreas Hoegger
* @since 1.0.8 24.01.2009
*/
@@ -221,6 +221,7 @@
public static final String LookupCall = "org.eclipse.scout.rt.shared.services.lookup.LookupCall"; // NO_UCD
public static final String LookupRow = "org.eclipse.scout.rt.shared.services.lookup.LookupRow"; // NO_UCD
public static final String Order = "org.eclipse.scout.commons.annotations.Order"; // NO_UCD
+ public static final String Ranking = "org.eclipse.scout.commons.annotations.Priority"; // NO_UCD
public static final String ScoutTexts = "org.eclipse.scout.rt.shared.ScoutTexts"; // NO_UCD
public static final String SearchFilter = "org.eclipse.scout.rt.shared.services.common.jdbc.SearchFilter"; // NO_UCD
public static final String ServerServiceFactory = "org.eclipse.scout.rt.server.services.ServerServiceFactory"; // NO_UCD
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java
index 3778066..d34c0dd 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/workspace/type/ScoutTypeUtility.java
@@ -99,7 +99,7 @@
* }
* // execCreateChildPages.getAllNewTypeOccurrences() returns BCType[]{A,B}
* </xmp>
- *
+ *
* @return
* @throws JavaModelException
*/
@@ -545,31 +545,8 @@
}
public static Double getOrderAnnotationValue(IAnnotatable a) throws JavaModelException {
- Double sortNo = null;
- IAnnotation annotation = JdtUtility.getAnnotation(a, RuntimeClasses.Order);
- if (TypeUtility.exists(annotation)) {
- IMemberValuePair[] memberValues = annotation.getMemberValuePairs();
- for (IMemberValuePair p : memberValues) {
- if ("value".equals(p.getMemberName())) {
- switch (p.getValueKind()) {
- case IMemberValuePair.K_DOUBLE:
- sortNo = ((Double) p.getValue()).doubleValue();
- break;
- case IMemberValuePair.K_FLOAT:
- sortNo = ((Float) p.getValue()).doubleValue();
- break;
- case IMemberValuePair.K_INT:
- sortNo = ((Integer) p.getValue()).doubleValue();
- break;
- default:
- sortNo = null;
- break;
- }
- break;
- }
- }
- }
- return sortNo;
+ IAnnotation annotation = JdtUtility.getAnnotation(a, RuntimeClasses.Order);
+ return JdtUtility.getNumericAnnotationValue(annotation, "value");
}
public static IType[] getFormFieldsWithoutButtons(IType declaringType) {
@@ -1123,7 +1100,7 @@
/**
* don not hang on this object.
- *
+ *
* @param type
* @return
*/