diff --git a/cave/com.raytheon.uf.viz.datadelivery/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.datadelivery/META-INF/MANIFEST.MF index cef244a6b4..dcd0f070e4 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/META-INF/MANIFEST.MF +++ b/cave/com.raytheon.uf.viz.datadelivery/META-INF/MANIFEST.MF @@ -31,7 +31,8 @@ Require-Bundle: org.eclipse.ui, com.raytheon.uf.common.datadelivery.service;bundle-version="1.0.0", com.raytheon.uf.common.units;bundle-version="1.0.0", com.raytheon.uf.common.site;bundle-version="1.12.1174", - com.raytheon.uf.common.event;bundle-version="1.0.0" + com.raytheon.uf.common.event;bundle-version="1.0.0", + com.raytheon.uf.common.plugin.nwsauth;bundle-version="1.12.1174" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy Export-Package: com.raytheon.uf.viz.datadelivery;uses:="org.eclipse.ui.plugin,org.osgi.framework", diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/DataBrowserAction.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/DataBrowserAction.java index be9377ae1d..fb6d6a0f82 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/DataBrowserAction.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/DataBrowserAction.java @@ -25,13 +25,13 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.browser.DataBrowserDlg; import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; @@ -47,6 +47,7 @@ import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; * ------------ ---------- ----------- -------------------------- * Feb 12, 2012 lvenable Initial creation * Oct 03, 2012 1241 djohnson Use {@link DataDeliveryPermission}. + * Jul 26, 2013 2236 mpduff Refactored Data Delivery Permissions. * * * @@ -61,7 +62,8 @@ public class DataBrowserAction extends AbstractHandler { /** Instance of the dialog */ private DataBrowserDlg dlg = null; - private final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_DATASET_BROWSER; + private final String permission = DataDeliveryPermission.SUBSCRIPTION_DATASET_BROWSER + .toString(); @Override public Object execute(ExecutionEvent arg0) throws ExecutionException { @@ -73,8 +75,7 @@ public class DataBrowserAction extends AbstractHandler { + permission; if (DataDeliveryServices.getPermissionsService() - .checkPermission(user, msg, permission) - .isAuthorized()) { + .checkPermission(user, msg, permission).isAuthorized()) { if ((dlg == null) || (dlg.isDisposed() == true)) { Shell shell = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getShell(); @@ -84,7 +85,7 @@ public class DataBrowserAction extends AbstractHandler { dlg.bringToTop(); } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/NotificationAction.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/NotificationAction.java index 0a8c13c33e..114b4dadfa 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/NotificationAction.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/NotificationAction.java @@ -25,13 +25,13 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.notification.NotificationDlg; import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; @@ -46,6 +46,7 @@ import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; * ------------ ---------- ----------- -------------------------- * Jan 30, 2012 mpduff Initial creation * Oct 03, 2012 1241 djohnson Use {@link DataDeliveryPermission}. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -62,7 +63,8 @@ public class NotificationAction extends AbstractHandler { private NotificationDlg dlg = null; /** Permission string */ - private final DataDeliveryPermission permission = DataDeliveryPermission.NOTIFICATION_VIEW; + private final String permission = DataDeliveryPermission.NOTIFICATION_VIEW + .toString(); @Override public Object execute(ExecutionEvent arg0) throws ExecutionException { @@ -84,7 +86,7 @@ public class NotificationAction extends AbstractHandler { dlg.bringToTop(); } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubscriptionManagerAction.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubscriptionManagerAction.java index c0eefec0dd..85caaf528f 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubscriptionManagerAction.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubscriptionManagerAction.java @@ -24,13 +24,13 @@ import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionManagerFilter; import com.raytheon.uf.viz.datadelivery.subscription.SubscriptionManagerDlg; @@ -48,6 +48,7 @@ import com.raytheon.uf.viz.datadelivery.subscription.SubscriptionManagerFilters; * Jan 10, 2012 mpduff Initial creation * Oct 03, 2012 1241 djohnson Use {@link DataDeliveryPermission}. * May 28, 2013 1650 djohnson Allow using filters for the Subscription Manager Dialog. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -65,7 +66,8 @@ public class SubscriptionManagerAction extends AbstractHandler { private SubscriptionManagerDlg dlg = null; /** Permission String */ - private final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_VIEW; + private final String permission = DataDeliveryPermission.SUBSCRIPTION_VIEW + .toString(); /** * Constructor. @@ -103,7 +105,7 @@ public class SubscriptionManagerAction extends AbstractHandler { dlg.bringToTop(); } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubsetAction.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubsetAction.java index 78c31cb395..f75cdad0b6 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubsetAction.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SubsetAction.java @@ -27,6 +27,7 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.registry.DataSet; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; @@ -35,7 +36,6 @@ import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.common.ui.LoadSaveConfigDlg; import com.raytheon.uf.viz.datadelivery.common.ui.LoadSaveConfigDlg.DialogType; import com.raytheon.uf.viz.datadelivery.filter.MetaDataManager; @@ -58,6 +58,7 @@ import com.raytheon.uf.viz.datadelivery.subscription.subset.xml.SubsetXML; * Aug 10, 2012 1022 djohnson Store provider name in {@link SubsetXml}, use GriddedDataSet. * Aug 21, 2012 0743 djohnson Change getMetaData to getDataSet. * Oct 03, 2012 1241 djohnson Use {@link DataDeliveryPermission}. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -80,7 +81,8 @@ public class SubsetAction extends AbstractHandler { /** Dialog instance */ private LoadSaveConfigDlg loadDlg = null; - private final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_EDIT; + private final String permission = DataDeliveryPermission.SUBSCRIPTION_EDIT + .toString(); @Override public Object execute(ExecutionEvent arg0) throws ExecutionException { @@ -120,7 +122,7 @@ public class SubsetAction extends AbstractHandler { dlg.bringToTop(); } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SystemManagementAction.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SystemManagementAction.java index f5f48be962..6e498c6a3e 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SystemManagementAction.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/actions/SystemManagementAction.java @@ -25,13 +25,13 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; import com.raytheon.uf.viz.datadelivery.system.SystemManagementDlg; @@ -46,6 +46,7 @@ import com.raytheon.uf.viz.datadelivery.system.SystemManagementDlg; * ------------ ---------- ----------- -------------------------- * Aug 15, 2012 729 jpiatt Initial creation. * Oct 03, 2012 1241 djohnson Use {@link DataDeliveryPermission}. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -64,7 +65,8 @@ public class SystemManagementAction extends AbstractHandler { @Override public Object execute(ExecutionEvent arg0) throws ExecutionException { - final DataDeliveryPermission permission = DataDeliveryPermission.SYSTEM_MANAGEMENT_VIEW; + final String permission = DataDeliveryPermission.SYSTEM_MANAGEMENT_VIEW + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() + " is not authorized to view Data Delivery System Management\nPermission: " @@ -84,7 +86,7 @@ public class SystemManagementAction extends AbstractHandler { } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/browser/DataBrowserDlg.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/browser/DataBrowserDlg.java index 5009e8c063..082243a0fe 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/browser/DataBrowserDlg.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/browser/DataBrowserDlg.java @@ -54,6 +54,7 @@ import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.geotools.geometry.jts.ReferencedEnvelope; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.registry.DataSet; import com.raytheon.uf.common.datadelivery.registry.EnvelopeUtils; @@ -66,7 +67,6 @@ import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.util.FileUtil; import com.raytheon.uf.viz.core.VizApp; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.common.ui.IDataLoad; import com.raytheon.uf.viz.datadelivery.common.ui.LoadSaveConfigDlg; import com.raytheon.uf.viz.datadelivery.common.ui.LoadSaveConfigDlg.DialogType; @@ -117,6 +117,7 @@ import com.vividsolutions.jts.geom.Coordinate; * Jun 05, 2013 1800 mpduff Move the area filter below the data type selection. * Jun 06, 2013 2030 mpduff Updates to help. * Jul 05, 2013 2137 mpduff Changed data type to a single select list, changed layout. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -656,7 +657,8 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate, * Handle retrieving of subscription subset. */ private void handleRetrieveSubscribeAction() { - final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_CREATE; + final String permission = DataDeliveryPermission.SUBSCRIPTION_CREATE + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() + " is not authorized to Create Subscriptions/Queries\nPermission: " @@ -681,7 +683,7 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate, shell, data); dlg.open(); } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/comm/DataDeliveryNotAuthHandler.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/comm/DataDeliveryNotAuthHandler.java deleted file mode 100644 index bd77ed669f..0000000000 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/comm/DataDeliveryNotAuthHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.uf.viz.datadelivery.comm; - -import com.raytheon.uf.common.auth.req.AbstractPrivilegedRequest; -import com.raytheon.uf.common.auth.resp.UserNotAuthenticated; -import com.raytheon.uf.common.auth.resp.UserNotAuthorized; -import com.raytheon.uf.common.auth.user.IUser; -import com.raytheon.uf.common.status.UFStatus; -import com.raytheon.uf.common.status.UFStatus.Priority; -import com.raytheon.uf.viz.core.exception.VizException; -import com.raytheon.uf.viz.core.requests.INotAuthHandler; - -/** - * TODO Add Description - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Apr 13, 2012            mpduff     Initial creation
- * 
- * 
- * - * @author mpduff - * @version 1.0 - */ - -public class DataDeliveryNotAuthHandler implements INotAuthHandler { - - /* - * (non-Javadoc) - * - * @see - * com.raytheon.uf.viz.core.requests.INotAuthHandler#notAuthenticated(com - * .raytheon.uf.common.auth.resp.UserNotAuthenticated) - */ - @Override - public Object notAuthenticated(UserNotAuthenticated response) throws VizException { - AbstractPrivilegedRequest request = response.getRequest(); - IUser user = request.getUser(); - String message = - "User: <" + user.uniqueId() + "> is not authenticated to perform request:" + request.getClass(); - UFStatus.getHandler(DataDeliveryNotAuthHandler.class).handle(Priority.PROBLEM, message); - return null; - } - - /* - * (non-Javadoc) - * - * @see - * com.raytheon.uf.viz.core.requests.INotAuthHandler#notAuthorized(com.raytheon - * .uf.common.auth.resp.UserNotAuthorized) - */ - @Override - public Object notAuthorized(UserNotAuthorized response) throws VizException { - String message = response.getMessage(); - if (message == null) { - message = "Error sending request for user: " + response.getRequest().getUser().uniqueId().toString(); - } - UFStatus.getHandler(DataDeliveryNotAuthHandler.class).handle(Priority.PROBLEM, message); - return null; - } -} diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/services/DataDeliveryServices.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/services/DataDeliveryServices.java index 6160b4c1ce..ee2feeea68 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/services/DataDeliveryServices.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/services/DataDeliveryServices.java @@ -19,11 +19,11 @@ **/ package com.raytheon.uf.viz.datadelivery.services; +import com.raytheon.uf.common.auth.req.IPermissionsService; import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthService; import com.raytheon.uf.common.datadelivery.service.IGroupDefinitionService; import com.raytheon.uf.common.datadelivery.service.ISubscriptionNotificationService; import com.raytheon.uf.common.datadelivery.service.subscription.ISubscriptionOverlapService; -import com.raytheon.uf.viz.datadelivery.subscription.IPermissionsService; import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService; /** @@ -39,6 +39,7 @@ import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService; * ------------ ---------- ----------- -------------------------- * Nov 09, 2012 1286 djohnson Initial creation * May 20, 2013 2000 djohnson Add subscription overlap service. + * Jul 26, 2031 2232 mpduff Moved IPermissionsService to common. * * * diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/CreateSubscriptionDlg.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/CreateSubscriptionDlg.java index a40ae28bbf..f323d4b760 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/CreateSubscriptionDlg.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/CreateSubscriptionDlg.java @@ -43,6 +43,7 @@ import org.eclipse.swt.widgets.Layout; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.registry.DataType; import com.raytheon.uf.common.datadelivery.registry.PointTime; @@ -55,7 +56,6 @@ import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.util.StringUtil; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.common.ui.ActivePeriodComp; import com.raytheon.uf.viz.datadelivery.common.ui.DurationComp; import com.raytheon.uf.viz.datadelivery.common.ui.GroupSelectComp; @@ -101,6 +101,7 @@ import com.raytheon.viz.ui.presenter.components.CheckBoxConf; * May 15, 2013 1040 mpduff Add Shared sites. * Jun 04, 2013 223 mpduff Modify for point data. * Jun 12, 2013 2038 djohnson No longer modal. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -185,8 +186,8 @@ public class CreateSubscriptionDlg extends CaveSWTDialog implements * true for new subscription, false for edit */ public CreateSubscriptionDlg(Shell parent, boolean create) { - super(parent, SWT.DIALOG_TRIM, - CAVE.INDEPENDENT_SHELL | CAVE.PERSPECTIVE_INDEPENDENT); + super(parent, SWT.DIALOG_TRIM, CAVE.INDEPENDENT_SHELL + | CAVE.PERSPECTIVE_INDEPENDENT); this.create = create; if (create) { @@ -338,7 +339,8 @@ public class CreateSubscriptionDlg extends CaveSWTDialog implements btn.setToolTipText("Select sites for sharing"); btn.setEnabled(false); - final DataDeliveryPermission permission = DataDeliveryPermission.SHARED_SUBSCRIPTION_CREATE; + final String permission = DataDeliveryPermission.SHARED_SUBSCRIPTION_CREATE + .toString(); final IUser user = UserController.getUserObject(); final String msg = user.uniqueId() + " is not authorized to create shared subscriptions. " @@ -366,7 +368,7 @@ public class CreateSubscriptionDlg extends CaveSWTDialog implements } }); } - } catch (VizException e1) { + } catch (AuthException e1) { statusHandler .handle(Priority.PROBLEM, e1.getLocalizedMessage(), e1); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/RequestFromServerPermissionsService.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/RequestFromServerPermissionsService.java index f4912c7e50..a8e761e7ab 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/RequestFromServerPermissionsService.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/RequestFromServerPermissionsService.java @@ -21,13 +21,15 @@ package com.raytheon.uf.viz.datadelivery.subscription; import java.rmi.RemoteException; +import com.raytheon.uf.common.auth.AuthException; +import com.raytheon.uf.common.auth.req.IPermissionsService; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.registry.SharedSubscription; import com.raytheon.uf.common.datadelivery.registry.SiteSubscription; import com.raytheon.uf.common.datadelivery.registry.Subscription; -import com.raytheon.uf.common.datadelivery.request.DataDeliveryAuthRequest; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; import com.raytheon.uf.common.datadelivery.service.BasePrivilegedDataDeliveryService; +import com.raytheon.uf.common.plugin.nwsauth.NwsAuthRequest; import com.raytheon.uf.viz.core.exception.VizException; /** @@ -45,6 +47,7 @@ import com.raytheon.uf.viz.core.exception.VizException; * Feb 26, 2013 1643 djohnson Extends base class. * Mar 29, 2013 1841 djohnson Subscription is now UserSubscription. * May 21, 2013 2020 mpduff Rename UserSubscription to SiteSubscription. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions, removed DataDeliveryAuthRequest. * * * @@ -53,24 +56,24 @@ import com.raytheon.uf.viz.core.exception.VizException; */ public class RequestFromServerPermissionsService extends - BasePrivilegedDataDeliveryService implements + BasePrivilegedDataDeliveryService implements IPermissionsService { /** - * Adapts the {@link DataDeliveryAuthRequestAdapter} to match the + * Adapts the {@link NwsAuthRequestAdapter} to match the * {@link IAuthorizedPermissionResponse} interface. */ - private class DataDeliveryAuthRequestAdapter implements + private class NwsAuthRequestAdapter implements IAuthorizedPermissionResponse { - private final DataDeliveryAuthRequest response; + private final NwsAuthRequest response; /** * The response to adapt. * * @param response */ - private DataDeliveryAuthRequestAdapter(DataDeliveryAuthRequest response) { + private NwsAuthRequestAdapter(NwsAuthRequest response) { this.response = response; } @@ -86,18 +89,22 @@ public class RequestFromServerPermissionsService extends * {@inheritDoc} */ @Override - public boolean hasPermission(DataDeliveryPermission permission) { + public boolean hasPermission(String permission) { return (isAuthorized()) ? response.isAuthorized(permission) : false; } } - + /** - * {@inheritDoc} + * + * @param user + * @param notAuthorizedMessage + * @param subscription + * @return + * @throws VizException */ - @Override public IAuthorizedPermissionResponse checkPermissionToChangeSubscription( final IUser user, String notAuthorizedMessage, - final Subscription subscription) throws VizException { + final Subscription subscription) throws AuthException { // TODO: Can this be done better? if (subscription instanceof SiteSubscription) { @@ -112,20 +119,23 @@ public class RequestFromServerPermissionsService extends private IAuthorizedPermissionResponse checkPermissionToChangeSubscription( final IUser user, String notAuthorizedMessage, - final SiteSubscription subscription) throws VizException { + final SiteSubscription subscription) throws AuthException { + String approveSitePermission = DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE + .toString(); + String approveUserPermission = DataDeliveryPermission.SUBSCRIPTION_APPROVE_USER + .toString(); final IAuthorizedPermissionResponse r = checkPermissions(user, - notAuthorizedMessage, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_USER); + notAuthorizedMessage, approveSitePermission, + approveUserPermission); // If they have site permissions, then yes they can approve the // subscription - if (r.hasPermission(DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE)) { + if (r.hasPermission(approveSitePermission)) { return r; } else { // Otherwise they must have user approval permission and be the - // owner + // ownerBaseServerService return new IAuthorizedPermissionResponse() { @Override public boolean isAuthorized() { @@ -135,7 +145,7 @@ public class RequestFromServerPermissionsService extends } @Override - public boolean hasPermission(DataDeliveryPermission permission) { + public boolean hasPermission(String permission) { return r.hasPermission(permission); } }; @@ -144,12 +154,12 @@ public class RequestFromServerPermissionsService extends private IAuthorizedPermissionResponse checkPermissionToChangeSubscription( final IUser user, String notAuthorizedMessage, - final SharedSubscription subscription) throws VizException { + final SharedSubscription subscription) throws AuthException { // TODO: New permission to approve/change shared subscriptions? final IAuthorizedPermissionResponse r = checkPermissions(user, notAuthorizedMessage, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE); + DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE.toString()); return r; } @@ -159,10 +169,10 @@ public class RequestFromServerPermissionsService extends */ @Override public IAuthorizedPermissionResponse checkPermission(IUser user, - String notAuthorizedMessage, DataDeliveryPermission permission) - throws VizException { + String notAuthorizedMessage, String permission) + throws AuthException { return checkPermissions(user, notAuthorizedMessage, - new DataDeliveryPermission[] { permission }); + new String[] { permission }); } /** @@ -170,20 +180,19 @@ public class RequestFromServerPermissionsService extends */ @Override public IAuthorizedPermissionResponse checkPermissions(IUser user, - String notAuthorizedMessage, DataDeliveryPermission... permissions) - throws VizException { + String notAuthorizedMessage, String... permissions) + throws AuthException { - DataDeliveryAuthRequest request = new DataDeliveryAuthRequest(); + NwsAuthRequest request = new NwsAuthRequest(); request.setUser(user); request.addRequestedPermissions(permissions); request.setNotAuthorizedMessage(notAuthorizedMessage); try { - DataDeliveryAuthRequest r = sendRequest(request, - DataDeliveryAuthRequest.class); - return new DataDeliveryAuthRequestAdapter(r); + NwsAuthRequest r = sendRequest(request, NwsAuthRequest.class); + return new NwsAuthRequestAdapter(r); } catch (RemoteException e) { - throw new VizException(e); + throw new AuthException(e); } } } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionManagerDlg.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionManagerDlg.java index f297657e9f..2212213bf7 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionManagerDlg.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionManagerDlg.java @@ -51,6 +51,7 @@ import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TableColumn; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.registry.Subscription; import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler; @@ -62,7 +63,6 @@ import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.localization.LocalizationManager; import com.raytheon.uf.viz.datadelivery.actions.DataBrowserAction; import com.raytheon.uf.viz.datadelivery.common.ui.IGroupAction; @@ -126,6 +126,7 @@ import com.raytheon.viz.ui.presenter.IDisplay; * Jun 05, 2013 2064 mpduff Fix for filtering combo boxes. * Jun 06, 2013 2030 mpduff Refactored help. * Jun 14, 2013 2064 mpduff Check for null/disposed sort column. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @author mpduff @@ -598,7 +599,8 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements */ private void createSubscription() { // check to see if authorized - final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_CREATE; + final String permission = DataDeliveryPermission.SUBSCRIPTION_CREATE + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() + " is not authorized to create subscriptions"; @@ -614,7 +616,7 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements statusHandler.handle( com.raytheon.uf.common.status.UFStatus.Priority.ERROR, e.getLocalizedMessage(), e); - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } } @@ -627,7 +629,8 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements */ private void handleGroupCreate(boolean create) { - final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_CREATE; + final String permission = DataDeliveryPermission.SUBSCRIPTION_CREATE + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() + " is not authorized to access the Dataset Discovery Browser\nPermission: " @@ -660,7 +663,7 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements } } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, "Error occurred in authorization request", e); } @@ -720,7 +723,8 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements return; } - final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_DELETE; + final String permission = DataDeliveryPermission.SUBSCRIPTION_DELETE + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() @@ -778,7 +782,7 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements job.schedule(); } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } } @@ -833,7 +837,8 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements getShell().setCursor(getDisplay().getSystemCursor(SWT.CURSOR_WAIT)); // Check for activate premissions - final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_ACTIVATE; + final String permission = DataDeliveryPermission.SUBSCRIPTION_ACTIVATE + .toString(); final IUser user = UserController.getUserObject(); final String username = user.uniqueId().toString(); @@ -896,7 +901,7 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements } } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } @@ -1051,7 +1056,7 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements } } } - + // If null get the first one if (sortedTableColumn == null) { sortedTableColumn = tableComp.getTable().getColumn(0); @@ -1087,12 +1092,16 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements return DataDeliveryServices .getPermissionsService() - .checkPermissions(user, msg, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_USER, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_VIEW) - .isAuthorized(); - } catch (VizException e) { + .checkPermissions( + user, + msg, + DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE + .toString(), + DataDeliveryPermission.SUBSCRIPTION_APPROVE_USER + .toString(), + DataDeliveryPermission.SUBSCRIPTION_APPROVE_VIEW + .toString()).isAuthorized(); + } catch (Exception e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionService.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionService.java index 3bc3d0f50d..f1d517bd90 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionService.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionService.java @@ -37,6 +37,8 @@ import org.eclipse.swt.widgets.Shell; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import com.raytheon.uf.common.auth.AuthException; +import com.raytheon.uf.common.auth.req.IPermissionsService; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthService; import com.raytheon.uf.common.datadelivery.bandwidth.IProposeScheduleResponse; @@ -58,7 +60,6 @@ import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.util.StringUtil; import com.raytheon.uf.viz.core.VizApp; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.actions.SubscriptionManagerAction; import com.raytheon.uf.viz.datadelivery.system.SystemRuleManager; import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils; @@ -86,6 +87,7 @@ import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils; * May 23, 2013 1650 djohnson Move out some presentation logic to DisplayForceApplyPromptDialog. * Jun 12, 2013 2038 djohnson Launch subscription manager on the UI thread. * Jul 18, 2013 1653 mpduff Add SubscriptionStatusSummary. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -488,7 +490,13 @@ public class SubscriptionService implements ISubscriptionService { final String username = user.uniqueId().toString(); try { - boolean authorized = permissionsService + if (!(permissionsService instanceof RequestFromServerPermissionsService)) { + throw new RegistryHandlerException( + "Invalid Handler " + + permissionsService.getClass() + .toString()); + } + boolean authorized = ((RequestFromServerPermissionsService) permissionsService) .checkPermissionToChangeSubscription(user, PENDING_SUBSCRIPTION_AWAITING_APPROVAL, subscription).isAuthorized(); @@ -514,7 +522,7 @@ public class SubscriptionService implements ISubscriptionService { continue; } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.INFO, e.getLocalizedMessage(), e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionTableComp.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionTableComp.java index b1c073e3f1..698d2b72de 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionTableComp.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionTableComp.java @@ -43,6 +43,7 @@ import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.registry.PendingSubscription; import com.raytheon.uf.common.datadelivery.registry.Subscription; @@ -56,7 +57,6 @@ import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.VizApp; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.notification.NotificationMessage; import com.raytheon.uf.viz.core.notification.NotificationMessageContainsType; import com.raytheon.uf.viz.datadelivery.common.ui.IGroupAction; @@ -104,10 +104,7 @@ import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils.TABLE_TYPE; * May 28, 2013 1650 djohnson More information when failing to schedule subscriptions. * Jun 14, 2013 2064 mpduff Null check for sorted column. * Jul 29, 2013 2232 mpduff IndexOutOfBoundsException check. - * - * - * - * @author lvenable + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * @version 1.0 */ @@ -220,10 +217,11 @@ public class SubscriptionTableComp extends TableComp implements IGroupAction { * the subscription */ public void editSubscription(Subscription subscription) { - final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_CREATE; + final String permission = DataDeliveryPermission.SUBSCRIPTION_EDIT + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() - + " is not authorized to access the Dataset Discovery Browser\nPermission: " + + " is not authorized to edit existing subscriptions.\nPermission: " + permission; try { @@ -234,7 +232,7 @@ public class SubscriptionTableComp extends TableComp implements IGroupAction { dlg.open(); } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, "Error occurred in authorization request", e); } @@ -274,7 +272,8 @@ public class SubscriptionTableComp extends TableComp implements IGroupAction { } // Check permissions - final DataDeliveryPermission permission = DataDeliveryPermission.SUBSCRIPTION_EDIT; + final String permission = DataDeliveryPermission.SUBSCRIPTION_EDIT + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() + " is not authorized to access Group Add\nPermission: " @@ -288,7 +287,7 @@ public class SubscriptionTableComp extends TableComp implements IGroupAction { getSelectedSubscription(), this); groupAdd.open(); } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, "Error occurred in authorization request", e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/approve/SubscriptionApprovalDlg.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/approve/SubscriptionApprovalDlg.java index 6bfea221e7..e46fd35723 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/approve/SubscriptionApprovalDlg.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/approve/SubscriptionApprovalDlg.java @@ -34,6 +34,9 @@ import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; +import com.raytheon.uf.common.auth.AuthException; +import com.raytheon.uf.common.auth.req.IPermissionsService; +import com.raytheon.uf.common.auth.req.IPermissionsService.IAuthorizedPermissionResponse; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.registry.InitialPendingSubscription; import com.raytheon.uf.common.datadelivery.registry.PendingSubscription; @@ -48,7 +51,6 @@ import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.VizApp; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.notification.INotificationObserver; import com.raytheon.uf.viz.core.notification.NotificationException; import com.raytheon.uf.viz.core.notification.NotificationMessage; @@ -57,8 +59,6 @@ import com.raytheon.uf.viz.datadelivery.common.ui.TableDataManager; import com.raytheon.uf.viz.datadelivery.help.HelpManager; import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; import com.raytheon.uf.viz.datadelivery.subscription.CancelForceApplyAndIncreaseLatencyDisplayText; -import com.raytheon.uf.viz.datadelivery.subscription.IPermissionsService; -import com.raytheon.uf.viz.datadelivery.subscription.IPermissionsService.IAuthorizedPermissionResponse; import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService; import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService.ISubscriptionServiceResult; import com.raytheon.uf.viz.datadelivery.subscription.SubscriptionService.ForceApplyPromptResponse; @@ -92,6 +92,7 @@ import com.raytheon.viz.ui.presenter.IDisplay; * Mar 29, 2013 1841 djohnson Subscription is now UserSubscription. * Apr 05, 2013 1841 djohnson Add support for shared subscriptions. * Jun 06, 2013 2030 mpduff Refactored help. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -352,7 +353,8 @@ public class SubscriptionApprovalDlg extends CaveSWTDialog implements boolean site = false; if (response - .hasPermission(DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE)) { + .hasPermission(DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE + .toString())) { site = true; } @@ -402,10 +404,13 @@ public class SubscriptionApprovalDlg extends CaveSWTDialog implements String msg = user.uniqueId() + " is not authorized to Approve/Deny subscriptions."; - return permissionsService.checkPermissions(user, msg, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE, - DataDeliveryPermission.SUBSCRIPTION_APPROVE_USER); - } catch (VizException e) { + return permissionsService + .checkPermissions(user, msg, + DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE + .toString(), + DataDeliveryPermission.SUBSCRIPTION_APPROVE_USER + .toString()); + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, "Unable to check user permissions.", e); return new IAuthorizedPermissionResponse() { @@ -415,7 +420,7 @@ public class SubscriptionApprovalDlg extends CaveSWTDialog implements } @Override - public boolean hasPermission(DataDeliveryPermission permission) { + public boolean hasPermission(String permission) { return false; } }; @@ -441,7 +446,8 @@ public class SubscriptionApprovalDlg extends CaveSWTDialog implements boolean site = false; if (response - .hasPermission(DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE)) { + .hasPermission(DataDeliveryPermission.SUBSCRIPTION_APPROVE_SITE + .toString())) { site = true; } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/presenter/CreateSubscriptionDlgPresenter.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/presenter/CreateSubscriptionDlgPresenter.java index 51a346b9db..39ad407057 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/presenter/CreateSubscriptionDlgPresenter.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/presenter/CreateSubscriptionDlgPresenter.java @@ -39,6 +39,8 @@ import org.eclipse.swt.widgets.Shell; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; import com.google.common.collect.Sets; +import com.raytheon.uf.common.auth.AuthException; +import com.raytheon.uf.common.auth.req.IPermissionsService; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary; import com.raytheon.uf.common.datadelivery.registry.DataSet; @@ -66,13 +68,13 @@ import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.time.util.TimeUtil; import com.raytheon.uf.viz.core.IGuiThreadTaskExecutor; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.localization.LocalizationManager; import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; import com.raytheon.uf.viz.datadelivery.subscription.CancelForceApplyAndIncreaseLatencyDisplayText; import com.raytheon.uf.viz.datadelivery.subscription.GroupDefinitionManager; import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService; import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService.ISubscriptionServiceResult; +import com.raytheon.uf.viz.datadelivery.subscription.RequestFromServerPermissionsService; import com.raytheon.uf.viz.datadelivery.subscription.SubscriptionStatusDlg; import com.raytheon.uf.viz.datadelivery.subscription.view.ICreateSubscriptionDlgView; import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryGUIUtils; @@ -117,6 +119,7 @@ import com.raytheon.viz.ui.presenter.components.ComboBoxConf; * May 15, 2013 1040 mpduff Add shared sites. * Jun 04, 2013 223 mpduff Add point data. * Jul 18, 2013 1653 mpduff Add SubscriptionStatusSummary and the display dialog. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @author mpduff @@ -545,126 +548,127 @@ public class CreateSubscriptionDlgPresenter { String currentUser = LocalizationManager.getInstance().getCurrentUser(); final String username = user.uniqueId().toString(); - if (this.create) { + // Check for permission + IPermissionsService permissionsService = DataDeliveryServices + .getPermissionsService(); + boolean autoApprove = false; + if (permissionsService instanceof RequestFromServerPermissionsService) { try { - boolean autoApprove = DataDeliveryServices - .getPermissionsService() + // check to see if user is authorized to approve. If so then + // auto-approve + autoApprove = ((RequestFromServerPermissionsService) permissionsService) .checkPermissionToChangeSubscription(user, PENDING_APPROVAL_MESSAGE, subscription) .isAuthorized(); - - setSubscriptionId(subscription); - - if (autoApprove) { - final BlockingQueue exchanger = new ArrayBlockingQueue( - 1); - - final Shell jobShell = view.getShell(); - Job job = new Job("Creating Subscription...") { - @Override - protected IStatus run(IProgressMonitor monitor) { - DataDeliveryGUIUtils.markBusyInUIThread(jobShell); - ISubscriptionServiceResult result = storeSubscription( - subscription, username); - if (result != null) { - if (result.isAllowFurtherEditing()) { - return new Status( - Status.CANCEL, - CreateSubscriptionDlgPresenter.class - .getName(), result - .getMessageToDisplay()); - } else { - SubscriptionStatusSummary sum = result - .getSubscriptionStatusSummary(); - - exchanger.add(sum); - return new Status( - Status.OK, - CreateSubscriptionDlgPresenter.class - .getName(), result - .getMessageToDisplay()); - } - } else { - return new Status(Status.ERROR, - CreateSubscriptionDlgPresenter.class - .getName(), - "Error Storing Subscription"); - } - } - }; - job.addJobChangeListener(new JobChangeAdapter() { - @Override - public void done(final IJobChangeEvent event) { - try { - final IStatus status = event.getResult(); - - final boolean subscriptionCreated = status - .isOK(); - if (subscriptionCreated) { - sendSubscriptionNotification(subscription, - username); - } - - if (!Strings.isNullOrEmpty(status.getMessage())) { - guiThreadTaskExecutor - .runAsync(new Runnable() { - @Override - public void run() { - if (!view.isDisposed()) { - if (subscriptionCreated) { - try { - displaySummary( - exchanger - .take(), - status.getMessage()); - - } catch (InterruptedException e) { - statusHandler - .handle(Priority.PROBLEM, - e.getLocalizedMessage(), - e); - } - view.setStatus(Status.OK); - view.closeDlg(); - } else { - view.setStatus(Status.CANCEL); - view.displayPopup( - "Unable to Create Subscription", - status.getMessage()); - } - } - } - }); - } - } finally { - DataDeliveryGUIUtils - .markNotBusyInUIThread(jobShell); - } - } - }); - job.schedule(); - return false; - } else { - InitialPendingSubscription pendingSub = subscription - .initialPending(currentUser); - - try { - handler.store(pendingSub); - - this.subscription = pendingSub; - - subscriptionNotificationService - .sendCreatedPendingSubscriptionNotification( - pendingSub, username); - } catch (RegistryHandlerException e) { - statusHandler.handle(Priority.PROBLEM, - "Unable to create pending subscription.", e); - } - } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); } + } + + if (this.create) { + setSubscriptionId(subscription); + if (autoApprove) { + final BlockingQueue exchanger = new ArrayBlockingQueue( + 1); + + final Shell jobShell = view.getShell(); + Job job = new Job("Creating Subscription...") { + @Override + protected IStatus run(IProgressMonitor monitor) { + DataDeliveryGUIUtils.markBusyInUIThread(jobShell); + ISubscriptionServiceResult result = storeSubscription( + subscription, username); + if (result != null) { + if (result.isAllowFurtherEditing()) { + return new Status(Status.CANCEL, + CreateSubscriptionDlgPresenter.class + .getName(), + result.getMessageToDisplay()); + } else { + SubscriptionStatusSummary sum = result + .getSubscriptionStatusSummary(); + + exchanger.add(sum); + return new Status(Status.OK, + CreateSubscriptionDlgPresenter.class + .getName(), + result.getMessageToDisplay()); + } + } else { + return new Status(Status.ERROR, + CreateSubscriptionDlgPresenter.class + .getName(), + "Error Storing Subscription"); + } + } + }; + job.addJobChangeListener(new JobChangeAdapter() { + @Override + public void done(final IJobChangeEvent event) { + try { + final IStatus status = event.getResult(); + + final boolean subscriptionCreated = status.isOK(); + if (subscriptionCreated) { + sendSubscriptionNotification(subscription, + username); + } + + if (!Strings.isNullOrEmpty(status.getMessage())) { + guiThreadTaskExecutor.runAsync(new Runnable() { + @Override + public void run() { + if (!view.isDisposed()) { + if (subscriptionCreated) { + try { + displaySummary( + exchanger.take(), + status.getMessage()); + + } catch (InterruptedException e) { + statusHandler.handle( + Priority.PROBLEM, + e.getLocalizedMessage(), + e); + } + view.setStatus(Status.OK); + view.closeDlg(); + } else { + view.setStatus(Status.CANCEL); + view.displayPopup( + "Unable to Create Subscription", + status.getMessage()); + } + } + } + }); + } + } finally { + DataDeliveryGUIUtils + .markNotBusyInUIThread(jobShell); + } + } + }); + job.schedule(); + return false; + } else { + InitialPendingSubscription pendingSub = subscription + .initialPending(currentUser); + + try { + handler.store(pendingSub); + + this.subscription = pendingSub; + + subscriptionNotificationService + .sendCreatedPendingSubscriptionNotification( + pendingSub, username); + } catch (RegistryHandlerException e) { + statusHandler.handle(Priority.PROBLEM, + "Unable to create pending subscription.", e); + } + } } else { // Check for pending subscription, can only have one pending change PendingSubscription pendingSub = subscription @@ -692,61 +696,47 @@ public class CreateSubscriptionDlgPresenter { return false; } - // check to see if user is authorized to approve. If so then - // auto-approve - try { - boolean autoApprove = DataDeliveryServices - .getPermissionsService() - .checkPermissionToChangeSubscription(user, - PENDING_APPROVAL_MESSAGE, subscription) - .isAuthorized(); - - if (autoApprove) { - try { - final ISubscriptionServiceResult response = subscriptionService - .update(subscription, - new CancelForceApplyAndIncreaseLatencyDisplayText( - "update", view.getShell())); - if (response.hasMessageToDisplay()) { - view.displayPopup(UPDATED_TITLE, - response.getMessageToDisplay()); - } - - // If there was a force apply prompt, and the user - // selects no, then we want to allow them to - // continue editing the subscription - if (response.isAllowFurtherEditing()) { - return false; - } - - subscriptionNotificationService - .sendUpdatedSubscriptionNotification( - subscription, username); - - } catch (RegistryHandlerException e) { - statusHandler.handle(Priority.PROBLEM, - "Unable to update subscription.", e); + if (autoApprove) { + try { + final ISubscriptionServiceResult response = subscriptionService + .update(subscription, + new CancelForceApplyAndIncreaseLatencyDisplayText( + "update", view.getShell())); + if (response.hasMessageToDisplay()) { + view.displayPopup(UPDATED_TITLE, + response.getMessageToDisplay()); } - } else { - setSubscriptionId(subscription); - try { - pendingSubHandler.update(pendingSub); - subscriptionNotificationService - .sendCreatedPendingSubscriptionForSubscriptionNotification( - pendingSub, username); - - final String msg = PENDING_APPROVAL_MESSAGE; - view.displayPopup("Subscription Pending", msg); - } catch (RegistryHandlerException e) { - statusHandler.handle(Priority.PROBLEM, - "Unable to create pending subscription.", e); + // If there was a force apply prompt, and the user + // selects no, then we want to allow them to + // continue editing the subscription + if (response.isAllowFurtherEditing()) { + return false; } + + subscriptionNotificationService + .sendUpdatedSubscriptionNotification(subscription, + username); + + } catch (RegistryHandlerException e) { + statusHandler.handle(Priority.PROBLEM, + "Unable to update subscription.", e); } + } else { + setSubscriptionId(subscription); + try { + pendingSubHandler.update(pendingSub); - } catch (VizException e) { - statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), - e); + subscriptionNotificationService + .sendCreatedPendingSubscriptionForSubscriptionNotification( + pendingSub, username); + + final String msg = PENDING_APPROVAL_MESSAGE; + view.displayPopup("Subscription Pending", msg); + } catch (RegistryHandlerException e) { + statusHandler.handle(Priority.PROBLEM, + "Unable to create pending subscription.", e); + } } } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/system/SystemRulesTab.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/system/SystemRulesTab.java index adaf2fa5e7..b6282e426d 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/system/SystemRulesTab.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/system/SystemRulesTab.java @@ -30,13 +30,13 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.List; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.auth.UserController; -import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.datadelivery.services.DataDeliveryServices; import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils; @@ -50,6 +50,7 @@ import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * May 17, 2013 2000 djohnson Consolidate duplicate code from latency and priority versions. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -129,8 +130,8 @@ public abstract class SystemRulesTab extends SystemTab { gd.widthHint = 375; gd.heightHint = 200; - rulesList = new List(listComp, SWT.BORDER | SWT.MULTI - | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE); + rulesList = new List(listComp, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL + | SWT.H_SCROLL | SWT.SINGLE); rulesList.setLayoutData(gd); rulesList.addSelectionListener(new SelectionAdapter() { @Override @@ -237,7 +238,8 @@ public abstract class SystemRulesTab extends SystemTab { * New/Edit rule action handler. */ private void handleRule() { - final DataDeliveryPermission permission = DataDeliveryPermission.SYSTEM_MANAGEMENT_CREATE; + final String permission = DataDeliveryPermission.SYSTEM_MANAGEMENT_CREATE + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() + notAuthorizedMsg + permission; @@ -278,7 +280,7 @@ public abstract class SystemRulesTab extends SystemTab { } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, "Error occurred in authorization request", e); } @@ -288,7 +290,8 @@ public abstract class SystemRulesTab extends SystemTab { * Delete rule action handler. */ private void handleDeleteRule() { - final DataDeliveryPermission permission = DataDeliveryPermission.SYSTEM_MANAGEMENT_CREATE; + final String permission = DataDeliveryPermission.SYSTEM_MANAGEMENT_CREATE + .toString(); IUser user = UserController.getUserObject(); String msg = user.uniqueId() + notAuthorizedMsg + permission; @@ -317,7 +320,7 @@ public abstract class SystemRulesTab extends SystemTab { return; } } - } catch (VizException e) { + } catch (AuthException e) { statusHandler.handle(Priority.PROBLEM, "Error occurred in authorization request", e); } diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/utils/DataDeliveryUtils.java b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/utils/DataDeliveryUtils.java index e941aaac03..4cec2634c8 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/utils/DataDeliveryUtils.java +++ b/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/utils/DataDeliveryUtils.java @@ -40,13 +40,10 @@ import com.raytheon.uf.common.datadelivery.registry.GriddedDataSet; import com.raytheon.uf.common.datadelivery.registry.Parameter; import com.raytheon.uf.common.datadelivery.registry.Subscription; import com.raytheon.uf.common.datadelivery.registry.Time; -import com.raytheon.uf.common.datadelivery.request.DataDeliveryAuthRequest; import com.raytheon.uf.common.time.util.TimeUtil; import com.raytheon.uf.common.util.CollectionUtil; import com.raytheon.uf.common.util.SizeUtil; import com.raytheon.uf.common.util.StringUtil; -import com.raytheon.uf.viz.core.exception.VizException; -import com.raytheon.uf.viz.core.requests.ThriftClient; import com.raytheon.uf.viz.datadelivery.subscription.SubscriptionManagerRowData; import com.raytheon.uf.viz.datadelivery.subscription.approve.SubscriptionApprovalRowData; import com.vividsolutions.jts.geom.Coordinate; @@ -79,6 +76,7 @@ import com.vividsolutions.jts.geom.Coordinate; * Jun 04, 2013 223 mpduff Add point data stuff. * Jun 11, 2013 2064 mpduff Don't output Parameter header if none exist. * Jun 12, 2013 2064 mpduff Use SizeUtil to format data size output. + * Jul 26, 2031 2232 mpduff Removed sendAuthorizationRequest method. * * * @author mpduff @@ -742,20 +740,6 @@ public class DataDeliveryUtils { return StringUtil.getIndentedList(list, " "); } - /** - * Send an authorization request - * - * @param request - * The request object - * @return DataDeliveryAuthReqeust object - * @throws VizException - */ - public static DataDeliveryAuthRequest sendAuthorizationRequest( - DataDeliveryAuthRequest request) throws VizException { - return (DataDeliveryAuthRequest) ThriftClient - .sendPrivilegedRequest(request); - } - /** * Get the maximum latency for the provided subscription. Calculated as the * maximum cyclic difference. diff --git a/cave/com.raytheon.uf.viz.useradmin/src/com/raytheon/uf/viz/useradmin/ui/ManageUserDlg.java b/cave/com.raytheon.uf.viz.useradmin/src/com/raytheon/uf/viz/useradmin/ui/ManageUserDlg.java index f0a44cbd90..38c1da034e 100644 --- a/cave/com.raytheon.uf.viz.useradmin/src/com/raytheon/uf/viz/useradmin/ui/ManageUserDlg.java +++ b/cave/com.raytheon.uf.viz.useradmin/src/com/raytheon/uf/viz/useradmin/ui/ManageUserDlg.java @@ -53,6 +53,7 @@ import com.raytheon.viz.ui.widgets.duallist.IUpdate; * ------------ ---------- ----------- -------------------------- * May 23, 2012 mpduff Initial creation * Aug 08, 2012 863 jpiatt Added new interface method. + * Jul 28, 2013 2236 mpduff Made resizable. * * * @@ -61,7 +62,7 @@ import com.raytheon.viz.ui.widgets.duallist.IUpdate; */ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { - + /** The Stack Layout. */ private final StackLayout stackLayout = new StackLayout(); @@ -79,26 +80,31 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { /** Permissions dual list */ private DualList permDualList; - + /** User role dual list */ private DualList userRoleDualList; - + /** Stack composite */ private Composite stackComp; - /** The application currently selected.*/ + /** The application currently selected. */ private final String application; /** * Constructor. * - * @param parent parent shell - * @param type type of data being edited - * @param selection selection being passed in - * @param application application working on + * @param parent + * parent shell + * @param type + * type of data being edited + * @param selection + * selection being passed in + * @param application + * application working on */ - public ManageUserDlg(Shell parent, String type, String selection, String application) { - super(parent, SWT.DIALOG_TRIM); + public ManageUserDlg(Shell parent, String type, String selection, + String application) { + super(parent, SWT.DIALOG_TRIM | SWT.RESIZE); this.selection = selection; this.type = type; this.application = application; @@ -137,33 +143,39 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { String[] entries; if (type.equalsIgnoreCase("Role")) { - entries = new String[] { "Assigned Roles", "Assigned Permissions", "Assign Role to Users" }; + entries = new String[] { "Assigned Roles", "Assigned Permissions", + "Assign Role to Users" }; } else { entries = new String[] { "Assigned Roles", "Assigned Permissions" }; } gd = new GridData(SWT.CENTER, SWT.DEFAULT, true, false); editCbo = new Combo(labelComp, SWT.DROP_DOWN | SWT.READ_ONLY); editCbo.setLayoutData(gd); - + editCbo.setItems(entries); editCbo.select(0); editCbo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - if (editCbo.getItem(editCbo.getSelectionIndex()).equals("Assigned Roles")) { + if (editCbo.getItem(editCbo.getSelectionIndex()).equals( + "Assigned Roles")) { stackLayout.topControl = roleDualList; - } else if (editCbo.getItem(editCbo.getSelectionIndex()).equals("Assigned Permissions")) { + } else if (editCbo.getItem(editCbo.getSelectionIndex()).equals( + "Assigned Permissions")) { stackLayout.topControl = permDualList; - } else if (editCbo.getItem(editCbo.getSelectionIndex()).equals("Assign Role to Users")) { + } else if (editCbo.getItem(editCbo.getSelectionIndex()).equals( + "Assign Role to Users")) { stackLayout.topControl = userRoleDualList; } - + stackComp.layout(); } }); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); stackComp = new Composite(shell, SWT.NONE); stackComp.setLayout(stackLayout); + stackComp.setLayoutData(gd); NwsRoleDataManager manager = NwsRoleDataManager.getInstance(); ArrayList selectedList = new ArrayList(); @@ -172,7 +184,8 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { String selectedLabel = "Selected Roles:"; // build roles widgets - String[] userRoles = manager.getRoleData(application).getUserRoles(this.selection); + String[] userRoles = manager.getRoleData(application).getUserRoles( + this.selection); for (String role : userRoles) { selectedList.add(role); } @@ -181,7 +194,7 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { for (String role : roles) { fullList.add(role); } - + DualListMenuData menuData = new DualListMenuData(); menuData.setApplication(this.application); menuData.setMenuText("Details..."); @@ -201,7 +214,8 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { // Build permissions widgets ArrayList selectedPermList = new ArrayList(); ArrayList fullPermList = new ArrayList(); - String[] userPerms = manager.getRoleData(application).getUserPermissions(this.selection); + String[] userPerms = manager.getRoleData(application) + .getUserPermissions(this.selection); for (String perm : userPerms) { selectedPermList.add(perm); } @@ -245,9 +259,10 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { userRoleConfig.setListHeight(90); userRoleConfig.setListWidth(175); userRoleConfig.setFullList(fullUserList); - - userRoleDualList = new DualList(stackComp, SWT.NONE, userRoleConfig, this); - + + userRoleDualList = new DualList(stackComp, SWT.NONE, userRoleConfig, + this); + int buttonWidth = 75; GridData btnData = new GridData(buttonWidth, SWT.DEFAULT); gd = new GridData(SWT.CENTER, SWT.DEFAULT, false, false); @@ -290,54 +305,56 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { String[] selectedUsers = userRoleDualList.getSelectedListItems(); String[] permissions = permDualList.getSelectedListItems(); String[] roles = roleDualList.getSelectedListItems(); - + NwsRoleDataManager man = NwsRoleDataManager.getInstance(); NwsRoleData roleData = man.getRoleData(application); - + if (type.equalsIgnoreCase("User")) { - ArrayList userList = (ArrayList) roleData.getUserList(); - for (UserXML user: userList) { + ArrayList userList = (ArrayList) roleData + .getUserList(); + for (UserXML user : userList) { if (user.getUserId().equals(selection)) { // Update permissions ArrayList permissionList = new ArrayList(); - for (String perm: permissions) { + for (String perm : permissions) { permissionList.add(perm); } user.setPermissionList(permissionList); - + // Update roles ArrayList roleList = new ArrayList(); - for (String role: roles) { + for (String role : roles) { roleList.add(role); } user.setRoleList(roleList); break; - } - } + } + } } else { // type is role - ArrayList roleList = (ArrayList) roleData.getRoleList(); - for (RoleXML role: roleList) { + ArrayList roleList = (ArrayList) roleData + .getRoleList(); + for (RoleXML role : roleList) { if (role.getRoleId().equals(selection)) { // Update permissions, start by clearing the list role.getPermissionList().clear(); - for (String perm: permissions) { + for (String perm : permissions) { if (!role.getPermissionList().contains(perm)) { role.addPermission(perm); } } - + // Add roles - for (String r: roles) { + for (String r : roles) { if (!role.getPermissionList().contains(r)) { role.addPermission(r); } } } } - + // Add role to selected users - for (String selectedUser: selectedUsers) { - for (UserXML user: roleData.getUserList()) { + for (String selectedUser : selectedUsers) { + for (UserXML user : roleData.getUserList()) { if (selectedUser.equals(user.getUserId())) { if (!user.getRoleList().contains(selection)) { user.addRole(selection); @@ -347,10 +364,10 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { } } } - + close(); } - + @Override public void hasEntries(boolean entries) { this.setReturnValue(true); @@ -359,6 +376,6 @@ public class ManageUserDlg extends CaveSWTDialog implements IUpdate { @Override public void selectionChanged() { // unused - + } } diff --git a/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/req/BasePrivilegedServerService.java b/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/req/BasePrivilegedServerService.java index 6ef6d6c9d9..b09d117042 100644 --- a/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/req/BasePrivilegedServerService.java +++ b/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/req/BasePrivilegedServerService.java @@ -28,6 +28,7 @@ import com.raytheon.uf.common.serialization.ExceptionWrapper; import com.raytheon.uf.common.serialization.comm.response.ServerErrorResponse; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; +import com.raytheon.uf.common.status.UFStatus.Priority; /** * Send requests to a privileged service on the server. @@ -40,6 +41,7 @@ import com.raytheon.uf.common.status.UFStatus; * ------------ ---------- ----------- -------------------------- * Jan 23, 2013 1643 djohnson Initial creation. * May 20, 2013 1040 mpduff Add check for UserNotAuthorized. + * Jul 26, 2031 2232 mpduff Improve handling of UserNotAuthorized. * * * @@ -73,7 +75,13 @@ public class BasePrivilegedServerService .unwrapThrowable(((ServerErrorResponse) object) .getException())); } else if (object instanceof UserNotAuthorized) { - return null; + UserNotAuthorized na = (UserNotAuthorized) object; + + // Display the not authorized message here, NwsNotAuthHandler cannot + // be accessed from here + UFStatus.getHandler(UserNotAuthorized.class).handle( + Priority.PROBLEM, na.getMessage()); + return super.unwrapResponse(responseType, na.getRequest()); } else { statusHandler .warn(String diff --git a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/IPermissionsService.java b/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/req/IPermissionsService.java similarity index 69% rename from cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/IPermissionsService.java rename to edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/req/IPermissionsService.java index b9ee68b631..07e2e9c327 100644 --- a/cave/com.raytheon.uf.viz.datadelivery/src/com/raytheon/uf/viz/datadelivery/subscription/IPermissionsService.java +++ b/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/req/IPermissionsService.java @@ -17,12 +17,10 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.uf.viz.datadelivery.subscription; +package com.raytheon.uf.common.auth.req; +import com.raytheon.uf.common.auth.AuthException; import com.raytheon.uf.common.auth.user.IUser; -import com.raytheon.uf.common.datadelivery.registry.Subscription; -import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; -import com.raytheon.uf.viz.core.exception.VizException; /** * Interface that defines the service to work with permissions. @@ -34,6 +32,7 @@ import com.raytheon.uf.viz.core.exception.VizException; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Jan 04, 2013 1441 djohnson Initial creation + * Jul 26, 2031 2232 mpduff Moved to common.auth.req. * * * @@ -60,26 +59,9 @@ public interface IPermissionsService { * the permission * @return true if the user had the specific permission */ - boolean hasPermission(DataDeliveryPermission permission); + boolean hasPermission(String permission); } - /** - * Check whether a user has the permissions to change a subscription. - * - * @param user - * the user requesting to change the subscription - * @param notAuthorizedMessage - * the message that should be displayed if they are not - * authorized - * @param subscription - * the subscription they are attempting to change - * @return the response - * @throws VizException - */ - public IAuthorizedPermissionResponse checkPermissionToChangeSubscription( - final IUser user, String notAuthorizedMessage, - final Subscription subscription) throws VizException; - /** * Check whether a user has the specified permissions. * @@ -91,12 +73,12 @@ public interface IPermissionsService { * @param permission * the permission to check * @return IAuthorizedPermissionResponse the response - * @throws VizException + * @throws AuthException * on error checking permissions */ public IAuthorizedPermissionResponse checkPermission(IUser user, - String notAuthorizedMessage, DataDeliveryPermission permission) - throws VizException; + String notAuthorizedMessage, String permission) + throws AuthException; /** * Check whether a user has one of the specified permissions. @@ -109,10 +91,10 @@ public interface IPermissionsService { * @param permissions * the permissions to check * @return IAuthorizedPermissionResponse the response - * @throws VizException + * @throws AuthException * on error checking permissions */ public IAuthorizedPermissionResponse checkPermissions(IUser user, - String notAuthorizedMessage, DataDeliveryPermission... permissions) - throws VizException; + String notAuthorizedMessage, String... permissions) + throws AuthException; } diff --git a/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/user/IPermission.java b/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/user/IPermission.java index f0eb6c8509..f536958b86 100644 --- a/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/user/IPermission.java +++ b/edexOsgi/com.raytheon.uf.common.auth/src/com/raytheon/uf/common/auth/user/IPermission.java @@ -19,6 +19,8 @@ **/ package com.raytheon.uf.common.auth.user; +import com.raytheon.uf.common.serialization.ISerializableObject; + /** * A permission. * @@ -28,7 +30,8 @@ package com.raytheon.uf.common.auth.user; * * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- - * Nov 5, 2012 1302 djohnson Initial creation + * Nov 05, 2012 1302 djohnson Initial creation + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -36,7 +39,7 @@ package com.raytheon.uf.common.auth.user; * @version 1.0 */ -public interface IPermission { +public interface IPermission extends ISerializableObject { /** * Get the description. @@ -46,10 +49,9 @@ public interface IPermission { String getDescription(); /** - * The display name of the permission. + * Get the name. * * @return the name */ - @Override - String toString(); + String getName(); } diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.request/src/com/raytheon/uf/common/datadelivery/request/DataDeliveryPermissionsContainer.java b/edexOsgi/com.raytheon.uf.common.datadelivery.request/src/com/raytheon/uf/common/datadelivery/request/DataDeliveryPermissionsContainer.java deleted file mode 100644 index c330017f39..0000000000 --- a/edexOsgi/com.raytheon.uf.common.datadelivery.request/src/com/raytheon/uf/common/datadelivery/request/DataDeliveryPermissionsContainer.java +++ /dev/null @@ -1,128 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.uf.common.datadelivery.request; - -import java.util.ArrayList; -import java.util.List; - -import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermissionsContainer.DataDeliveryPermissionsContainerTypeAdapter; -import com.raytheon.uf.common.serialization.IDeserializationContext; -import com.raytheon.uf.common.serialization.ISerializationContext; -import com.raytheon.uf.common.serialization.ISerializationTypeAdapter; -import com.raytheon.uf.common.serialization.SerializationException; -import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; -import com.raytheon.uf.common.serialization.annotations.DynamicSerializeTypeAdapter; - -/** - * Used to hide direct access to permission collections in - * {@link DataDeliveryAuthRequest} from client-code. - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Oct 3, 2012  1241      djohnson     Initial creation
- * 
- * 
- * - * @author djohnson - * @version 1.0 - */ -@DynamicSerializeTypeAdapter(factory = DataDeliveryPermissionsContainerTypeAdapter.class) -public class DataDeliveryPermissionsContainer { - - public static class DataDeliveryPermissionsContainerTypeAdapter implements - ISerializationTypeAdapter { - - /** - * {@inheritDoc} - */ - @Override - public void serialize(ISerializationContext serializer, - DataDeliveryPermissionsContainer object) - throws SerializationException { - serializer.writeObject(object.authorizedList); - serializer.writeObject(object.requestList); - } - - /** - * {@inheritDoc} - */ - @Override - @SuppressWarnings("unchecked") - public DataDeliveryPermissionsContainer deserialize( - IDeserializationContext deserializer) - throws SerializationException { - DataDeliveryPermissionsContainer container = new DataDeliveryPermissionsContainer(); - container.authorizedList - .addAll((List) deserializer - .readObject()); - container.requestList - .addAll((List) deserializer - .readObject()); - - return container; - } - - } - - /** - * List of permissions to check. - */ - @DynamicSerializeElement - private final List requestList = new ArrayList(); - - /** - * List of permissions that were authorized. - */ - @DynamicSerializeElement - private final List authorizedList = new ArrayList(); - - /** - * @param permission - */ - public void addRequestedPermission(DataDeliveryPermission permission) { - requestList.add(permission); - } - - /** - * @param permission - * @return - */ - public boolean contains(DataDeliveryPermission permission) { - return authorizedList.contains(permission); - } - - /** - * @param permission - */ - public void addAuthorized(DataDeliveryPermission permission) { - this.authorizedList.add(permission); - } - - /** - * @return - */ - public List getRequestedPermissions() { - return requestList; - } -} diff --git a/edexOsgi/com.raytheon.uf.common.datadelivery.request/src/com/raytheon/uf/common/datadelivery/request/DataDeliveryAuthRequest.java b/edexOsgi/com.raytheon.uf.common.plugin.nwsauth/src/com/raytheon/uf/common/plugin/nwsauth/NwsAuthRequest.java similarity index 57% rename from edexOsgi/com.raytheon.uf.common.datadelivery.request/src/com/raytheon/uf/common/datadelivery/request/DataDeliveryAuthRequest.java rename to edexOsgi/com.raytheon.uf.common.plugin.nwsauth/src/com/raytheon/uf/common/plugin/nwsauth/NwsAuthRequest.java index e4f70ed5a8..25c77a0e9d 100644 --- a/edexOsgi/com.raytheon.uf.common.datadelivery.request/src/com/raytheon/uf/common/datadelivery/request/DataDeliveryAuthRequest.java +++ b/edexOsgi/com.raytheon.uf.common.plugin.nwsauth/src/com/raytheon/uf/common/plugin/nwsauth/NwsAuthRequest.java @@ -17,17 +17,22 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.uf.common.datadelivery.request; +package com.raytheon.uf.common.plugin.nwsauth; +import java.util.ArrayList; import java.util.List; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; + import com.raytheon.uf.common.auth.req.AbstractPrivilegedRequest; +import com.raytheon.uf.common.auth.req.IPermissionsService.IAuthorizedPermissionResponse; import com.raytheon.uf.common.serialization.ISerializableObject; import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; /** - * Authorization request for data delivery. + * Nws Authorization Request object. * *
  * 
@@ -35,8 +40,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
  * 
  * Date         Ticket#    Engineer    Description
  * ------------ ---------- ----------- --------------------------
- * Apr 12, 2012            mpduff       Initial creation
- * Oct 03, 2012 1241       djohnson     Use {@link DataDeliveryPermission}.
+ * Jul 26, 2013   2232     mpduff      Initial creation
  * 
  * 
* @@ -44,7 +48,8 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; * @version 1.0 */ @DynamicSerialize -public class DataDeliveryAuthRequest extends AbstractPrivilegedRequest implements ISerializableObject { +public class NwsAuthRequest extends AbstractPrivilegedRequest implements + ISerializableObject, IAuthorizedPermissionResponse { /** * Authorized flag, true if authorized. @@ -58,20 +63,31 @@ public class DataDeliveryAuthRequest extends AbstractPrivilegedRequest implement @DynamicSerializeElement private String notAuthorizedMessage = "Not Authorized"; + /** + * List of requested permissions. + */ @DynamicSerializeElement - private DataDeliveryPermissionsContainer permissionsContainer = new DataDeliveryPermissionsContainer(); + @XmlElements({ @XmlElement(type = String.class) }) + private List requestList = new ArrayList(); + + /** + * List of permissions that were authorized. + */ + @DynamicSerializeElement + @XmlElements({ @XmlElement(type = String.class) }) + private List authorizedList = new ArrayList(); /** * Constructor */ - public DataDeliveryAuthRequest() { + public NwsAuthRequest() { } - /** * @return the authorized */ + @Override public boolean isAuthorized() { return authorized; } @@ -103,8 +119,8 @@ public class DataDeliveryAuthRequest extends AbstractPrivilegedRequest implement * @param permission * Authorized permission */ - public void addAuthorized(DataDeliveryPermission permission) { - this.permissionsContainer.addAuthorized(permission); + public void addAuthorized(String permission) { + this.authorizedList.add(permission); } /** @@ -113,8 +129,8 @@ public class DataDeliveryAuthRequest extends AbstractPrivilegedRequest implement * * @param permission */ - public void addRequestedPermissions(DataDeliveryPermission permission) { - addRequestedPermissions(new DataDeliveryPermission[] { permission }); + public void addRequestedPermissions(String permission) { + this.addRequestedPermissions(permission); } /** @@ -122,11 +138,11 @@ public class DataDeliveryAuthRequest extends AbstractPrivilegedRequest implement * * @param permissions */ - public void addRequestedPermissions(DataDeliveryPermission... permissions) { - for (DataDeliveryPermission permission : permissions) { - permissionsContainer.addRequestedPermission(permission); + public void addRequestedPermissions(String... permissions) { + for (String permission : permissions) { + this.requestList.add(permission); } - } + } /** * Check whether the authorizations allowed for this user contain a @@ -136,38 +152,52 @@ public class DataDeliveryAuthRequest extends AbstractPrivilegedRequest implement * the permission to check for * @return true if the authorized list contains the permission */ - public boolean isAuthorized(DataDeliveryPermission permission) { - return permissionsContainer.contains(permission); + public boolean isAuthorized(String permission) { + return this.authorizedList.contains(permission); } /** - * @return + * @return the requestList */ - public List getRequestedPermissions() { - return permissionsContainer.getRequestedPermissions(); + public List getRequestedPermissions() { + return this.requestList; } /** - * Added only to comply with dynamic serialization. DO NOT USE. - * - * @return the permissionsContainer - * @deprecated added only to comply with dynamic serialization + * @return the requestList */ - @Deprecated - public DataDeliveryPermissionsContainer getPermissionsContainer() { - return permissionsContainer; + public List getRequestList() { + return requestList; } /** - * Added only to comply with dynamic serialization. DO NOT USE. - * - * @param permissionsContainer - * the permissionsContainer to set - * @deprecated added only to comply with dynamic serialization + * @return the authorizedList */ - @Deprecated - public void setPermissionsContainer( - DataDeliveryPermissionsContainer permissionsContainer) { - this.permissionsContainer = permissionsContainer; + public List getAuthorizedList() { + return authorizedList; + } + + /** + * @param requestList + * the requestList to set + */ + public void setRequestList(List requestList) { + this.requestList = requestList; + } + + /** + * @param authorizedList + * the authorizedList to set + */ + public void setAuthorizedList(List authorizedList) { + this.authorizedList = authorizedList; + } + + /** + * {@inheritDoc} + */ + @Override + public boolean hasPermission(String permission) { + return isAuthorized(); } } diff --git a/edexOsgi/com.raytheon.uf.common.plugin.nwsauth/src/com/raytheon/uf/common/plugin/nwsauth/NwsPermission.java b/edexOsgi/com.raytheon.uf.common.plugin.nwsauth/src/com/raytheon/uf/common/plugin/nwsauth/NwsPermission.java index 0fc804f04e..0755cbbd51 100644 --- a/edexOsgi/com.raytheon.uf.common.plugin.nwsauth/src/com/raytheon/uf/common/plugin/nwsauth/NwsPermission.java +++ b/edexOsgi/com.raytheon.uf.common.plugin.nwsauth/src/com/raytheon/uf/common/plugin/nwsauth/NwsPermission.java @@ -30,7 +30,8 @@ import com.raytheon.uf.common.auth.user.IPermission; * * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- - * Nov 5, 2012 1302 djohnson Initial creation + * Nov 05, 2012 1302 djohnson Initial creation + * Jul 26, 2031 2232 mpduff Renamed toString to getName. * * * @@ -40,8 +41,10 @@ import com.raytheon.uf.common.auth.user.IPermission; public class NwsPermission implements IPermission { + /** Permission description */ private final String description; + /** Permission name */ private final String name; /** @@ -61,9 +64,11 @@ public class NwsPermission implements IPermission { return description; } + /** + * {@inheritDoc} + */ @Override - public String toString() { + public String getName() { return name; } - } diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.service/META-INF/MANIFEST.MF b/edexOsgi/com.raytheon.uf.edex.datadelivery.service/META-INF/MANIFEST.MF index 7a8e06f93d..ee2cfeba93 100644 --- a/edexOsgi/com.raytheon.uf.edex.datadelivery.service/META-INF/MANIFEST.MF +++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.service/META-INF/MANIFEST.MF @@ -24,4 +24,6 @@ Require-Bundle: com.raytheon.uf.common.auth;bundle-version="1.12.1174", com.raytheon.uf.common.datadelivery.event;bundle-version="1.0.0", com.raytheon.uf.common.datadelivery.service;bundle-version="1.0.0", org.springframework;bundle-version="2.5.6", - com.raytheon.uf.edex.datadelivery.retrieval;bundle-version="1.0.0" + com.raytheon.uf.edex.datadelivery.retrieval;bundle-version="1.0.0", + com.raytheon.uf.edex.plugin.nwsauth;bundle-version="1.12.1174", + com.raytheon.uf.common.plugin.nwsauth;bundle-version="1.12.1174" diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.service/res/spring/datadelivery-service-handlers.xml b/edexOsgi/com.raytheon.uf.edex.datadelivery.service/res/spring/datadelivery-service-handlers.xml index fec53fa949..256b205f33 100644 --- a/edexOsgi/com.raytheon.uf.edex.datadelivery.service/res/spring/datadelivery-service-handlers.xml +++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.service/res/spring/datadelivery-service-handlers.xml @@ -6,7 +6,7 @@ class="com.raytheon.uf.edex.datadelivery.service.services.DataDeliveryPrivilegedRequestHandler" /> + value="com.raytheon.uf.common.plugin.nwsauth.NwsAuthRequest" /> diff --git a/edexOsgi/com.raytheon.uf.edex.datadelivery.service/src/com/raytheon/uf/edex/datadelivery/service/services/DataDeliveryPrivilegedRequestHandler.java b/edexOsgi/com.raytheon.uf.edex.datadelivery.service/src/com/raytheon/uf/edex/datadelivery/service/services/DataDeliveryPrivilegedRequestHandler.java index 607ab857aa..2ab07f4772 100644 --- a/edexOsgi/com.raytheon.uf.edex.datadelivery.service/src/com/raytheon/uf/edex/datadelivery/service/services/DataDeliveryPrivilegedRequestHandler.java +++ b/edexOsgi/com.raytheon.uf.edex.datadelivery.service/src/com/raytheon/uf/edex/datadelivery/service/services/DataDeliveryPrivilegedRequestHandler.java @@ -22,8 +22,8 @@ package com.raytheon.uf.edex.datadelivery.service.services; import com.raytheon.uf.common.auth.exception.AuthorizationException; import com.raytheon.uf.common.auth.req.AbstractPrivilegedRequest; import com.raytheon.uf.common.auth.user.IUser; -import com.raytheon.uf.common.datadelivery.request.DataDeliveryAuthRequest; import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; +import com.raytheon.uf.common.plugin.nwsauth.NwsAuthRequest; import com.raytheon.uf.edex.auth.AuthManager; import com.raytheon.uf.edex.auth.AuthManagerFactory; import com.raytheon.uf.edex.auth.req.AbstractPrivilegedRequestHandler; @@ -39,8 +39,9 @@ import com.raytheon.uf.edex.auth.roles.IRoleStorage; * * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- - * Apr 12, 2012 224 mpduff Initial creation - * Oct 03, 2012 1241 djohnson Use {@link DataDeliveryPermission}. + * Apr 12, 2012 224 mpduff Initial creation + * Oct 03, 2012 1241 djohnson Use {@link DataDeliveryPermission}. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -48,8 +49,8 @@ import com.raytheon.uf.edex.auth.roles.IRoleStorage; * @version 1.0 */ -public class DataDeliveryPrivilegedRequestHandler extends - AbstractPrivilegedRequestHandler { +public class DataDeliveryPrivilegedRequestHandler + extends AbstractPrivilegedRequestHandler { /* * (non-Javadoc) @@ -62,33 +63,32 @@ public class DataDeliveryPrivilegedRequestHandler * * @author bphillip @@ -48,11 +50,6 @@ public class RegistryRemoteRequestWrapper extends RemoteRequestRouteWrapper @Override public byte[] request(byte[] data) { - return executeThrift(data); + return executeThrift(new ByteArrayInputStream(data)); } - - public byte[] executeThrift(byte[] data) { - return super.executeThrift(new ByteArrayInputStream(data)); - } - } diff --git a/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/AbstractSubscriptionServiceTest.java b/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/AbstractSubscriptionServiceTest.java index 8120bde00d..299c3f7347 100644 --- a/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/AbstractSubscriptionServiceTest.java +++ b/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/AbstractSubscriptionServiceTest.java @@ -43,6 +43,7 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; +import com.raytheon.uf.common.auth.req.IPermissionsService; import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthService; import com.raytheon.uf.common.datadelivery.bandwidth.IProposeScheduleResponse; import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription; @@ -77,6 +78,7 @@ import com.raytheon.uf.viz.datadelivery.subscription.SubscriptionService.IForceA * Nov 20, 2012 1286 djohnson Rewrite to support proposing subscription stores/updates and force applying. * Jan 02, 2012 1345 djohnson Fix broken tests from using VizApp to move work off the UI thread. * May 08, 2000 2013 djohnson Allow checks for duplicate subscriptions. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -112,7 +114,7 @@ public abstract class AbstractSubscriptionServiceTest { final IBandwidthService mockBandwidthService = mock(IBandwidthService.class); - final IPermissionsService permissionsService = mock(IPermissionsService.class); + final IPermissionsService permissionsService = mock(RequestFromServerPermissionsService.class); final ISubscriptionOverlapService subscriptionOverlapService = mock(ISubscriptionOverlapService.class); @@ -351,6 +353,7 @@ public abstract class AbstractSubscriptionServiceTest { throws RegistryHandlerException { // Not valid for adhocs } + /** * Verifies that the only interactions with the subscription handler are to * check for duplicate/overlapping subscriptions. @@ -506,4 +509,3 @@ public abstract class AbstractSubscriptionServiceTest { */ abstract ForceApplyPromptConfiguration getExpectedForceApplyPromptConfiguration(); } - diff --git a/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionServiceMassUpdateTest.java b/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionServiceMassUpdateTest.java index 465e2ecefe..9ee9619227 100644 --- a/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionServiceMassUpdateTest.java +++ b/tests/unit/com/raytheon/uf/viz/datadelivery/subscription/SubscriptionServiceMassUpdateTest.java @@ -35,18 +35,18 @@ import java.util.Collections; import org.junit.Before; import org.junit.Test; +import com.raytheon.uf.common.auth.AuthException; +import com.raytheon.uf.common.auth.req.IPermissionsService.IAuthorizedPermissionResponse; import com.raytheon.uf.common.auth.user.IUser; import com.raytheon.uf.common.datadelivery.bandwidth.IProposeScheduleResponse; import com.raytheon.uf.common.datadelivery.registry.InitialPendingSiteSubscription; import com.raytheon.uf.common.datadelivery.registry.Subscription; import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers; import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler; -import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission; import com.raytheon.uf.common.registry.handler.RegistryHandlerException; import com.raytheon.uf.common.registry.handler.RegistryObjectHandlersUtil; import com.raytheon.uf.common.util.CollectionUtil; import com.raytheon.uf.viz.core.exception.VizException; -import com.raytheon.uf.viz.datadelivery.subscription.IPermissionsService.IAuthorizedPermissionResponse; import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService.ISubscriptionServiceResult; /** @@ -61,6 +61,7 @@ import com.raytheon.uf.viz.datadelivery.subscription.ISubscriptionService.ISubsc * ------------ ---------- ----------- -------------------------- * Nov 21, 2012 1286 djohnson Initial creation * May 08, 2000 2013 djohnson Allow checks for duplicate subscriptions. + * Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions. * * * @@ -73,7 +74,7 @@ public class SubscriptionServiceMassUpdateTest extends private final IAuthorizedPermissionResponse authorizedPermissionsResponse = mock(IAuthorizedPermissionResponse.class); @Before - public void setUpPermissionsResponse() throws VizException { + public void setUpPermissionsResponse() throws VizException, AuthException { userHasAllPermissions(); } @@ -145,7 +146,7 @@ public class SubscriptionServiceMassUpdateTest extends @Test public void testUpdateWithPendingCheckNotifiesOfPendingSubscriptionsCreated() - throws RegistryHandlerException, VizException { + throws RegistryHandlerException, VizException, AuthException { RegistryObjectHandlersUtil.initMocks(); returnZeroSubscriptionNamesWhenProposeScheduleCalled(); @@ -182,12 +183,13 @@ public class SubscriptionServiceMassUpdateTest extends * @param subscription * the subscription * @throws VizException + * @throws AuthException */ private void subscriptionCantBeChangedByUser(Subscription subscription) - throws VizException { + throws VizException, AuthException { IAuthorizedPermissionResponse noPermission = mock(IAuthorizedPermissionResponse.class); when( - permissionsService + ((RequestFromServerPermissionsService) permissionsService) .checkPermissionToChangeSubscription(any(IUser.class), any(String.class), same(subscription))) .thenReturn(noPermission); @@ -313,18 +315,19 @@ public class SubscriptionServiceMassUpdateTest extends return null; } - private void userHasAllPermissions() throws VizException { + private void userHasAllPermissions() throws VizException, AuthException { when( permissionsService.checkPermission(any(IUser.class), - anyString(), any(DataDeliveryPermission.class))) - .thenReturn(authorizedPermissionsResponse); + anyString(), any(String.class))).thenReturn( + authorizedPermissionsResponse); when( permissionsService.checkPermissions(any(IUser.class), - anyString(), any(DataDeliveryPermission.class))) - .thenReturn(authorizedPermissionsResponse); + anyString(), any(String.class))).thenReturn( + authorizedPermissionsResponse); when( - permissionsService.checkPermissionToChangeSubscription( - any(IUser.class), anyString(), any(Subscription.class))) + ((RequestFromServerPermissionsService) permissionsService) + .checkPermissionToChangeSubscription(any(IUser.class), + anyString(), any(Subscription.class))) .thenReturn(authorizedPermissionsResponse); when(authorizedPermissionsResponse.isAuthorized()).thenReturn(true); } @@ -352,8 +355,7 @@ public class SubscriptionServiceMassUpdateTest extends getExpectedForceApplyMessage(), IProposeScheduleResponse.VALUE_NOT_SET, IProposeScheduleResponse.VALUE_NOT_SET, - IProposeScheduleResponse.VALUE_NOT_SET, - mockPromptDisplayText, + IProposeScheduleResponse.VALUE_NOT_SET, mockPromptDisplayText, getExpectedDisplayForceApplyPromptSubscription(), subNameResults); }