diff options
author | Eike Stepper | 2016-11-11 05:52:21 +0000 |
---|---|---|
committer | Eike Stepper | 2016-11-11 05:52:21 +0000 |
commit | 7b509f423332eb4199e3a07b3e13f0ece39d50a9 (patch) | |
tree | 69b443740452c836a2c68abeaa8504c248d25047 /plugins | |
parent | 7659226151059d8e487f462ea63dbb879b99260b (diff) | |
download | cdo-7b509f423332eb4199e3a07b3e13f0ece39d50a9.tar.gz cdo-7b509f423332eb4199e3a07b3e13f0ece39d50a9.tar.xz cdo-7b509f423332eb4199e3a07b3e13f0ece39d50a9.zip |
[507387] [Security] Provide getChoiceOfValues() for PackageFilters and ClassFilters
https://bugs.eclipse.org/bugs/show_bug.cgi?id=507387
Diffstat (limited to 'plugins')
6 files changed, 118 insertions, 69 deletions
diff --git a/plugins/org.eclipse.emf.cdo.security.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.security.edit/META-INF/MANIFEST.MF index 9f4d3cfc5f..5e23abf652 100644 --- a/plugins/org.eclipse.emf.cdo.security.edit/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.security.edit/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.emf.cdo.security.edit;singleton:=true -Bundle-Version: 4.3.200.qualifier +Bundle-Version: 4.4.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.emf.cdo.security.provider.SecurityEditPlugin$Implementation Bundle-Vendor: %providerName diff --git a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassFilterItemProvider.java b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassFilterItemProvider.java index bd3e30a822..2fafade08f 100644 --- a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassFilterItemProvider.java +++ b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassFilterItemProvider.java @@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.security.provider; import org.eclipse.emf.cdo.security.ClassFilter; import org.eclipse.emf.cdo.security.PermissionFilter; import org.eclipse.emf.cdo.security.SecurityPackage; +import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; @@ -67,15 +68,30 @@ public class ClassFilterItemProvider extends PermissionFilterItemProvider * This adds a property descriptor for the Applicable Class feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @generated + * @generated NOT */ protected void addApplicableClassPropertyDescriptor(Object object) { - itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), - getString("_UI_ClassFilter_applicableClass_feature"), //$NON-NLS-1$ - getString("_UI_PropertyDescriptor_description", "_UI_ClassFilter_applicableClass_feature", //$NON-NLS-1$//$NON-NLS-2$ - "_UI_ClassFilter_type"), //$NON-NLS-1$ - SecurityPackage.Literals.CLASS_FILTER__APPLICABLE_CLASS, true, false, true, null, null, null)); + itemPropertyDescriptors.add(new ItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ClassFilter_applicableClass_feature"), getString("_UI_PropertyDescriptor_description", "_UI_ClassFilter_applicableClass_feature", //$NON-NLS-2$//$NON-NLS-3$ + "_UI_ClassFilter_type"), + SecurityPackage.Literals.CLASS_FILTER__APPLICABLE_CLASS, true, false, true, null, null, null) + { + @Override + public Collection<?> getChoiceOfValues(Object object) + { + if (object instanceof ClassFilter) + { + CDOView view = ((ClassFilter)object).cdoView(); + if (view != null) + { + return SecurityEditPlugin.getSortedClasses(view); + } + } + + return super.getChoiceOfValues(object); + } + }); } /** diff --git a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassPermissionItemProvider.java b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassPermissionItemProvider.java index 16d9bf00e1..a68ba0bd4d 100644 --- a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassPermissionItemProvider.java +++ b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/ClassPermissionItemProvider.java @@ -10,7 +10,6 @@ */ package org.eclipse.emf.cdo.security.provider; -import org.eclipse.emf.cdo.common.model.CDOPackageInfo; import org.eclipse.emf.cdo.security.Access; import org.eclipse.emf.cdo.security.ClassPermission; import org.eclipse.emf.cdo.security.SecurityPackage; @@ -19,15 +18,11 @@ import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; import java.util.List; /** @@ -86,38 +81,10 @@ public class ClassPermissionItemProvider extends PermissionItemProvider { if (object instanceof ClassPermission) { - ClassPermission classPermission = (ClassPermission)object; - CDOView view = classPermission.cdoView(); + CDOView view = ((ClassPermission)object).cdoView(); if (view != null) { - List<EClass> result = new ArrayList<EClass>(); - for (CDOPackageInfo packageInfo : view.getSession().getPackageRegistry().getPackageInfos()) - { - for (EClassifier classifier : packageInfo.getEPackage().getEClassifiers()) - { - if (classifier instanceof EClass) - { - result.add((EClass)classifier); - - } - } - } - - Collections.sort(result, new Comparator<EClass>() - { - public int compare(EClass c1, EClass c2) - { - int comparison = c1.getName().compareTo(c2.getName()); - if (comparison == 0) - { - comparison = c1.getEPackage().getNsURI().compareTo(c2.getEPackage().getNsURI()); - } - - return comparison; - } - }); - - return result; + return SecurityEditPlugin.getSortedClasses(view); } } diff --git a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackageFilterItemProvider.java b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackageFilterItemProvider.java index a9153cf0dd..f060419109 100644 --- a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackageFilterItemProvider.java +++ b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackageFilterItemProvider.java @@ -10,13 +10,16 @@ */ package org.eclipse.emf.cdo.security.provider; +import org.eclipse.emf.cdo.security.PackageFilter; import org.eclipse.emf.cdo.security.PermissionFilter; import org.eclipse.emf.cdo.security.SecurityPackage; +import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; import java.util.Collection; import java.util.List; @@ -63,15 +66,30 @@ public class PackageFilterItemProvider extends PermissionFilterItemProvider * This adds a property descriptor for the Applicable Package feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @generated + * @generated NOT */ protected void addApplicablePackagePropertyDescriptor(Object object) { - itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), - getString("_UI_PackageFilter_applicablePackage_feature"), //$NON-NLS-1$ - getString("_UI_PropertyDescriptor_description", "_UI_PackageFilter_applicablePackage_feature", //$NON-NLS-1$//$NON-NLS-2$ - "_UI_PackageFilter_type"), //$NON-NLS-1$ - SecurityPackage.Literals.PACKAGE_FILTER__APPLICABLE_PACKAGE, true, false, true, null, null, null)); + itemPropertyDescriptors.add(new ItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PackageFilter_applicablePackage_feature"), getString("_UI_PropertyDescriptor_description", "_UI_PackageFilter_applicablePackage_feature", //$NON-NLS-2$//$NON-NLS-3$ + "_UI_PackageFilter_type"), + SecurityPackage.Literals.PACKAGE_FILTER__APPLICABLE_PACKAGE, true, false, true, null, null, null) + { + @Override + public Collection<?> getChoiceOfValues(Object object) + { + if (object instanceof PackageFilter) + { + CDOView view = ((PackageFilter)object).cdoView(); + if (view != null) + { + return SecurityEditPlugin.getSortedPackages(view); + } + } + + return super.getChoiceOfValues(object); + } + }); } /** diff --git a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackagePermissionItemProvider.java b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackagePermissionItemProvider.java index a9953010f2..b60b7f9258 100644 --- a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackagePermissionItemProvider.java +++ b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/PackagePermissionItemProvider.java @@ -10,7 +10,6 @@ */ package org.eclipse.emf.cdo.security.provider; -import org.eclipse.emf.cdo.common.model.CDOPackageInfo; import org.eclipse.emf.cdo.security.Access; import org.eclipse.emf.cdo.security.PackagePermission; import org.eclipse.emf.cdo.security.SecurityPackage; @@ -23,10 +22,7 @@ import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; import java.util.List; /** @@ -85,25 +81,10 @@ public class PackagePermissionItemProvider extends PermissionItemProvider { if (object instanceof PackagePermission) { - PackagePermission packagePermission = (PackagePermission)object; - CDOView view = packagePermission.cdoView(); + CDOView view = ((PackagePermission)object).cdoView(); if (view != null) { - List<EPackage> result = new ArrayList<EPackage>(); - for (CDOPackageInfo packageInfo : view.getSession().getPackageRegistry().getPackageInfos()) - { - result.add(packageInfo.getEPackage()); - } - - Collections.sort(result, new Comparator<EPackage>() - { - public int compare(EPackage p1, EPackage p2) - { - return p1.getNsURI().compareTo(p2.getNsURI()); - } - }); - - return result; + return SecurityEditPlugin.getSortedPackages(view); } } diff --git a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/SecurityEditPlugin.java b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/SecurityEditPlugin.java index 80a8d70d0a..623be4f5dc 100644 --- a/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/SecurityEditPlugin.java +++ b/plugins/org.eclipse.emf.cdo.security.edit/src/org/eclipse/emf/cdo/security/provider/SecurityEditPlugin.java @@ -10,13 +10,23 @@ */ package org.eclipse.emf.cdo.security.provider; +import org.eclipse.emf.cdo.common.model.CDOPackageInfo; import org.eclipse.emf.cdo.edit.CDOEditPlugin; import org.eclipse.emf.cdo.expressions.provider.ExpressionsEditPlugin; +import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.emf.common.EMFPlugin; import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.provider.EcoreEditPlugin; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + /** * This is the central singleton for the Security edit plugin. * <!-- begin-user-doc --> @@ -78,6 +88,63 @@ public final class SecurityEditPlugin extends EMFPlugin } /** + * @since 4.4 + */ + public static List<EPackage> getSortedPackages(CDOView view) + { + List<EPackage> result = new ArrayList<EPackage>(); + for (CDOPackageInfo packageInfo : view.getSession().getPackageRegistry().getPackageInfos()) + { + result.add(packageInfo.getEPackage()); + } + + Collections.sort(result, new Comparator<EPackage>() + { + public int compare(EPackage p1, EPackage p2) + { + return p1.getNsURI().compareTo(p2.getNsURI()); + } + }); + + return result; + } + + /** + * @since 4.4 + */ + public static List<EClass> getSortedClasses(CDOView view) + { + List<EClass> result = new ArrayList<EClass>(); + for (CDOPackageInfo packageInfo : view.getSession().getPackageRegistry().getPackageInfos()) + { + for (EClassifier classifier : packageInfo.getEPackage().getEClassifiers()) + { + if (classifier instanceof EClass) + { + result.add((EClass)classifier); + + } + } + } + + Collections.sort(result, new Comparator<EClass>() + { + public int compare(EClass c1, EClass c2) + { + int comparison = c1.getName().compareTo(c2.getName()); + if (comparison == 0) + { + comparison = c1.getEPackage().getNsURI().compareTo(c2.getEPackage().getNsURI()); + } + + return comparison; + } + }); + + return result; + } + + /** * The actual implementation of the Eclipse <b>Plugin</b>. * <!-- begin-user-doc --> * <!-- end-user-doc --> |