You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2014/11/11 21:35:21 UTC

[11/27] directory-fortress-commander git commit: change package structure and names, pom improvements, license

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/547b9ccd/src/main/java/org/openldap/commander/panel/ObjectListPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/openldap/commander/panel/ObjectListPanel.java b/src/main/java/org/openldap/commander/panel/ObjectListPanel.java
deleted file mode 100644
index d516d49..0000000
--- a/src/main/java/org/openldap/commander/panel/ObjectListPanel.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- * This work is part of OpenLDAP Software <http://www.openldap.org/>.
- *
- * Copyright 1998-2014 The OpenLDAP Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted only as authorized by the OpenLDAP
- * Public License.
- *
- * A copy of this license is available in the file LICENSE in the
- * top-level directory of the distribution or, alternatively, at
- * <http://www.OpenLDAP.org/license.html>.
- */
-
-package org.openldap.commander.panel;
-
-import com.inmethod.grid.IGridColumn;
-import com.inmethod.grid.SizeUnit;
-import com.inmethod.grid.column.PropertyColumn;
-import com.inmethod.grid.treegrid.TreeGrid;
-import org.apache.log4j.Logger;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.form.FormComponentPanel;
-import org.apache.wicket.markup.html.form.Radio;
-import org.apache.wicket.markup.html.form.RadioGroup;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-import org.openldap.commander.GlobalIds;
-import org.openldap.commander.GlobalUtils;
-import org.openldap.commander.ObjectListModel;
-import org.openldap.commander.SaveModelEvent;
-import org.openldap.commander.SecureIndicatingAjaxButton;
-import org.openldap.commander.SecureIndicatingAjaxLink;
-import org.openldap.commander.SelectModelEvent;
-import org.openldap.fortress.rbac.FortEntity;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.Model;
-import org.openldap.fortress.rbac.OrgUnit;
-import org.openldap.fortress.rbac.PermObj;
-import org.openldap.fortress.util.attr.VUtil;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeNode;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- *
- * @author Shawn McKinney
- * @version $Rev$
- */
-public class ObjectListPanel extends FormComponentPanel
-{
-    private static final Logger log = Logger.getLogger(ObjectListPanel.class.getName());
-    private Form listForm;
-    private DefaultTreeModel treeModel;
-    private DefaultMutableTreeNode node;
-    private TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String> grid;
-    private DefaultMutableTreeNode rootNode;
-    private TextField searchValFld;
-    private RadioGroup radioGroup;
-    private String searchVal;
-    private char selectedRadioButton;
-    private static final char NAMES = 'N';
-    private static final char OUS = 'O';
-    private boolean isAdmin;
-
-    public ObjectListPanel(String id, final boolean isAdmin)
-    {
-        super( id );
-        this.isAdmin = isAdmin;
-        ObjectListModel objectListModel = new ObjectListModel( new PermObj( "" ), isAdmin, GlobalUtils.getRbacSession( this ) );
-        setDefaultModel(objectListModel);
-        addGrid();
-        radioGroup = new RadioGroup("searchOptions",  new PropertyModel(this, "selectedRadioButton"));
-        add( radioGroup );
-        Radio objectRb = new Radio("objectRb", new Model(new Character(NAMES)));
-        radioGroup.add(objectRb);
-        Radio ouRb = new Radio("ouRb", new Model(new Character(OUS)));
-        radioGroup.add(ouRb);
-        addOUSearchModal(ouRb);
-        radioGroup.setOutputMarkupId( true );
-        radioGroup.setRenderBodyOnly( false );
-        searchValFld = new TextField(GlobalIds.SEARCH_VAL, new PropertyModel<String>(this, GlobalIds.SEARCH_VAL));
-        searchValFld.setOutputMarkupId( true );
-        AjaxFormComponentUpdatingBehavior ajaxUpdater = new AjaxFormComponentUpdatingBehavior(GlobalIds.ONBLUR)
-        {
-          @Override
-          protected void onUpdate(final AjaxRequestTarget target)
-          {
-              target.add( searchValFld );
-          }
-        };
-        searchValFld.add(ajaxUpdater);
-        radioGroup.add( searchValFld );
-
-        this.listForm.add(radioGroup);
-        selectedRadioButton = NAMES;
-
-        this.listForm.add( new SecureIndicatingAjaxButton( GlobalIds.SEARCH, GlobalIds.REVIEW_MGR, "findPermObjs" )
-        {
-            @Override
-            protected void onSubmit( AjaxRequestTarget target, Form form )
-            {
-                log.debug( ".search.onSubmit selected radio button: " + selectedRadioButton );
-                info( "Searching Permission Objects..." );
-                if ( !VUtil.isNotNullOrEmpty( searchVal ) )
-                {
-                    searchVal = "";
-                }
-                PermObj srchObject = new PermObj();
-                switch ( selectedRadioButton )
-                {
-                    case NAMES:
-                        log.debug( ".onSubmit OBJECT RB selected" );
-                        srchObject.setObjName( searchVal );
-                        break;
-                    case OUS:
-                        log.debug( ".onSubmit OUS RB selected" );
-                        srchObject.setOu( searchVal );
-                        break;
-                }
-                setDefaultModel( new ObjectListModel<PermObj>( srchObject, isAdmin,
-                    GlobalUtils.getRbacSession( this ) ) );
-                treeModel.reload();
-                rootNode.removeAllChildren();
-                List<PermObj> permObjs = ( List<PermObj> ) getDefaultModelObject();
-                if ( VUtil.isNotNullOrEmpty( permObjs ) )
-                {
-                    for ( PermObj permObj : permObjs )
-                        rootNode.add( new DefaultMutableTreeNode( permObj ) );
-                    info( "Search returned " + permObjs.size() + " matching objects" );
-                }
-                else
-                {
-                    info( "No matching objects found" );
-                }
-                target.add( grid );
-            }
-
-            @Override
-            public void onError( AjaxRequestTarget target, Form form )
-            {
-                log.warn( ".search.onError" );
-                target.add();
-            }
-            @Override
-            protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-            {
-                super.updateAjaxAttributes( attributes );
-                AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                {
-                    @Override
-                    public CharSequence getFailureHandler( Component component )
-                    {
-                        return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                    }
-                };
-                attributes.getAjaxCallListeners().add( ajaxCallListener );
-            }
-        } );
-    }
-
-    @Override
-    public void onEvent(IEvent event)
-    {
-        if (event.getPayload() instanceof SaveModelEvent)
-        {
-            SaveModelEvent modelEvent = (SaveModelEvent) event.getPayload();
-            switch (modelEvent.getOperation())
-            {
-                case ADD:
-                    add(modelEvent.getEntity());
-                    break;
-                case UPDATE:
-                    modelChanged();
-                    break;
-                case DELETE:
-                    prune();
-                    break;
-                default:
-                    log.error( "onEvent caught invalid operation" );
-                    break;
-            }
-            AjaxRequestTarget target = ((SaveModelEvent) event.getPayload()).getAjaxRequestTarget();
-            log.debug(".onEvent AJAX - ObjectListPanel - SaveModelEvent: " + target.toString());
-        }
-    }
-
-    private void removeSelectedItems(TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String> grid)
-    {
-        Collection<IModel<DefaultMutableTreeNode>> selected = grid.getSelectedItems();
-        for (IModel<DefaultMutableTreeNode> model : selected)
-        {
-            DefaultMutableTreeNode node = model.getObject();
-            treeModel.removeNodeFromParent(node);
-            PermObj permObj = (PermObj) node.getUserObject();
-            log.debug(".removeSelectedItems user node: " + permObj.getObjName());
-            List<PermObj> permObjs = ((List<PermObj>) getDefaultModel().getObject());
-            permObjs.remove(permObj.getObjName());
-        }
-    }
-
-    private DefaultTreeModel createTreeModel(List<PermObj> permObjs)
-    {
-        DefaultTreeModel model;
-        PermObj rootObject = new PermObj(  );
-        //rootObject.setObjName( "Permission Objects" );
-        rootNode = new DefaultMutableTreeNode(rootObject);
-        model = new DefaultTreeModel(rootNode);
-        if (permObjs == null)
-            log.debug("no Permission Objects found");
-        else
-        {
-            log.debug(".createTreeModel Permission Objects found:" + permObjs.size());
-            for (PermObj permObj : permObjs)
-                rootNode.add(new DefaultMutableTreeNode(permObj));
-        }
-        return model;
-    }
-
-    private void addGrid()
-    {
-        List<IGridColumn<DefaultTreeModel, DefaultMutableTreeNode, String>> columns =
-            new ArrayList<IGridColumn<DefaultTreeModel, DefaultMutableTreeNode, String>>();
-
-
-        PropertyColumn objName = new PropertyColumn<DefaultTreeModel, DefaultMutableTreeNode, String, String>(
-                    Model.of("Object Name"), "userObject.ObjName");
-        objName.setInitialSize( 300 );
-        columns.add(objName);
-
-        PropertyColumn ou = new PropertyColumn<DefaultTreeModel, DefaultMutableTreeNode, String, String>(
-                    Model.of("Perm Organization"), "userObject.Ou");
-        ou.setInitialSize(200);
-        columns.add(ou);
-
-        PropertyColumn description = new PropertyColumn<DefaultTreeModel, DefaultMutableTreeNode, String, String>(
-                    Model.of("Description"), "userObject.Description");
-        description.setInitialSize( 500 );
-        columns.add(description);
-
-        PropertyColumn type = new PropertyColumn(new Model("Type"), "userObject.Type");
-        type.setInitialSize( 200 );
-        columns.add(type);
-
-        List<PermObj> permObjs = (List<PermObj>) getDefaultModel().getObject();
-        treeModel = createTreeModel(permObjs);
-        grid = new TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String>("objecttreegrid", treeModel, columns)
-        {
-            @Override
-            public void selectItem(IModel itemModel, boolean selected)
-            {
-                node = (DefaultMutableTreeNode) itemModel.getObject();
-                if(!node.isRoot())
-                {
-                    PermObj permObj = (PermObj) node.getUserObject();
-                    log.debug("TreeGrid.addGrid.selectItem selected permission object =" + permObj.getObjName());
-                    if (super.isItemSelected(itemModel))
-                    {
-                        log.debug("TreeGrid.addGrid.selectItem item is selected");
-                        super.selectItem(itemModel, false);
-                    }
-                    else
-                    {
-                        super.selectItem(itemModel, true);
-                        SelectModelEvent.send(getPage(), this, permObj);
-                    }
-                }
-            }
-        };
-        grid.setContentHeight(50, SizeUnit.EM);
-        grid.setAllowSelectMultiple(false);
-        grid.setClickRowToSelect(true);
-        grid.setClickRowToDeselect(false);
-        grid.setSelectToEdit(false);
-        // expand the root node
-        grid.getTreeState().expandNode((TreeNode) treeModel.getRoot());
-        this.listForm = new Form("objectlistform");
-        this.listForm.add(grid);
-        add(this.listForm);
-        grid.setOutputMarkupId(true);
-    }
-
-    private void addOUSearchModal(Radio ouRb)
-    {
-        final ModalWindow ousModalWindow;
-        listForm.add( ousModalWindow = new ModalWindow( "ousearchmodal" ) );
-        final OUSearchModalPanel ouSearchModalPanel = new OUSearchModalPanel( ousModalWindow.getContentId(), ousModalWindow, false );
-        ousModalWindow.setContent( ouSearchModalPanel );
-        ousModalWindow.setWindowClosedCallback( new ModalWindow.WindowClosedCallback()
-        {
-            @Override
-            public void onClose( AjaxRequestTarget target )
-            {
-                OrgUnit ou = ouSearchModalPanel.getSelection();
-                if ( ou != null )
-                {
-                    searchVal = ou.getName();
-                    selectedRadioButton = OUS;
-                    target.add( radioGroup );
-                }
-            }
-        } );
-
-        ouRb.add( new SecureIndicatingAjaxLink( "ouAssignLinkLbl", GlobalIds.DEL_REVIEW_MGR, "searchOU" )
-        {
-            public void onClick(AjaxRequestTarget target)
-            {
-                String msg = "clicked on ou search";
-                msg += "ouSelection: " + searchVal;
-                ouSearchModalPanel.setSearchVal( searchVal );
-                log.debug( msg );
-                target.prependJavaScript( GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE );
-                ousModalWindow.show( target );
-            }
-            @Override
-            protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-            {
-                super.updateAjaxAttributes( attributes );
-                AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                {
-                    @Override
-                    public CharSequence getFailureHandler( Component component )
-                    {
-                        return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                    }
-                };
-                attributes.getAjaxCallListeners().add( ajaxCallListener );
-            }
-        });
-
-        ousModalWindow.setTitle( "Permission Object Organizational Unit Search Modal" );
-        ousModalWindow.setInitialWidth( 450 );
-        ousModalWindow.setInitialHeight( 450 );
-        ousModalWindow.setCookieName( "permou-modal" );
-    }
-
-    public void add(FortEntity entity)
-    {
-        if (getDefaultModelObject() != null)
-        {
-            List<PermObj> permObjs = ((List<PermObj>) getDefaultModelObject());
-            permObjs.add( ( PermObj ) entity );
-            treeModel.insertNodeInto(new DefaultMutableTreeNode(entity), rootNode, 0);
-            //treeModel.insertNodeInto(new DefaultMutableTreeNode(entity), rootNode, permObjs.size());
-        }
-    }
-
-    public void prune()
-    {
-        removeSelectedItems(grid);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/547b9ccd/src/main/java/org/openldap/commander/panel/ObjectSearchModalPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/openldap/commander/panel/ObjectSearchModalPanel.java b/src/main/java/org/openldap/commander/panel/ObjectSearchModalPanel.java
deleted file mode 100644
index 7e4670f..0000000
--- a/src/main/java/org/openldap/commander/panel/ObjectSearchModalPanel.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * This work is part of OpenLDAP Software <http://www.openldap.org/>.
- *
- * Copyright 1998-2014 The OpenLDAP Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted only as authorized by the OpenLDAP
- * Public License.
- *
- * A copy of this license is available in the file LICENSE in the
- * top-level directory of the distribution or, alternatively, at
- * <http://www.OpenLDAP.org/license.html>.
- */
-package org.openldap.commander.panel;
-
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.PageableListView;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.openldap.commander.GlobalUtils;
-import org.openldap.fortress.ReviewMgr;
-import org.openldap.fortress.rbac.PermObj;
-
-/**
- *
- * @author Shawn McKinney
- * @version $Rev$
- */
-public class ObjectSearchModalPanel extends Panel
-{
-    @SpringBean
-    private ReviewMgr reviewMgr;
-    private static final Logger LOG = Logger.getLogger(ObjectSearchModalPanel.class.getName());
-    private ModalWindow window;
-    private PermObj objectSelection;
-    private String objectSearchVal;
-    private boolean isAdmin;
-
-    /**
-     * @param id
-     */
-    public ObjectSearchModalPanel( String id, ModalWindow window, final boolean isAdmin )
-    {
-        super( id );
-        this.reviewMgr.setAdmin( GlobalUtils.getRbacSession( this ) );
-        this.window = window;
-        loadPanel();
-    }
-
-    public void loadPanel()
-    {
-        LoadableDetachableModel requests = getListViewModel();
-        PageableListView ouView = createListView( requests );
-        add( ouView );
-        add( new AjaxPagingNavigator( "navigator", ouView ) );
-    }
-
-    private PageableListView createListView( final LoadableDetachableModel requests )
-    {
-        final PageableListView listView = new PageableListView( "dataview", requests, 16 )
-        {
-            @Override
-            protected void populateItem( final ListItem item )
-            {
-                final PermObj modelObject = ( PermObj ) item.getModelObject();
-                item.add( new AjaxLink<Void>( "select" )
-                {
-                    private static final long serialVersionUID = 1L;
-
-                    @Override
-                    public void onClick(AjaxRequestTarget target)
-                    {
-                        objectSelection = modelObject;
-                        window.close( target );
-                    }
-                } );
-                item.add( new Label( "objName", new PropertyModel( item.getModel(), "objName" ) ) );
-                item.add( new Label( "description", new PropertyModel( item.getModel(), "description" ) ) );
-                item.add( new Label( "ou", new PropertyModel( item.getModel(), "ou" ) ) );
-                item.add( new Label( "type", new PropertyModel( item.getModel(), "type" ) ) );
-            }
-        };
-        return listView;
-    }
-
-    private LoadableDetachableModel getListViewModel()
-    {
-        final LoadableDetachableModel ret = new LoadableDetachableModel()
-        {
-            @Override
-            protected Object load()
-            {
-                List<?> objects = null;
-                try
-                {
-                    objectSelection = null;
-                    if(objectSearchVal == null)
-                        objectSearchVal = "";
-
-                    PermObj permObj = new PermObj( objectSearchVal );
-                    permObj.setAdmin( isAdmin );
-                    objects = reviewMgr.findPermObjs( permObj );
-                }
-                catch ( org.openldap.fortress.SecurityException se )
-                {
-                    String error = "loadPanel caught SecurityException=" + se;
-                    LOG.error( error );
-                }
-                return objects;
-            }
-        };
-        return ret;
-    }
-
-    public void setAdmin( boolean admin )
-    {
-        isAdmin = admin;
-    }
-
-    public PermObj getSelection()
-    {
-        return objectSelection;
-    }
-
-    public void setSearchVal( String objectSearchVal )
-    {
-        this.objectSearchVal = objectSearchVal;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/547b9ccd/src/main/java/org/openldap/commander/panel/PermDetailPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/openldap/commander/panel/PermDetailPanel.java b/src/main/java/org/openldap/commander/panel/PermDetailPanel.java
deleted file mode 100644
index 5859dc5..0000000
--- a/src/main/java/org/openldap/commander/panel/PermDetailPanel.java
+++ /dev/null
@@ -1,557 +0,0 @@
-/*
- * This work is part of OpenLDAP Software <http://www.openldap.org/>.
- *
- * Copyright 1998-2014 The OpenLDAP Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted only as authorized by the OpenLDAP
- * Public License.
- *
- * A copy of this license is available in the file LICENSE in the
- * top-level directory of the distribution or, alternatively, at
- * <http://www.OpenLDAP.org/license.html>.
- */
-
-package org.openldap.commander.panel;
-
-import com.googlecode.wicket.kendo.ui.form.button.AjaxButton;
-import com.googlecode.wicket.kendo.ui.form.combobox.ComboBox;
-import org.apache.log4j.Logger;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.FormComponentPanel;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.openldap.commander.GlobalIds;
-import org.openldap.commander.GlobalUtils;
-import org.openldap.commander.SaveModelEvent;
-import org.openldap.commander.SecureIndicatingAjaxButton;
-import org.openldap.commander.SelectModelEvent;
-import org.openldap.fortress.AdminMgr;
-import org.openldap.fortress.DelAdminMgr;
-import org.openldap.fortress.rbac.AdminRole;
-import org.openldap.fortress.rbac.PermObj;
-import org.openldap.fortress.rbac.Permission;
-import org.openldap.fortress.rbac.UserRole;
-import org.openldap.fortress.util.attr.VUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: kpmckinn
- * Date: 2/26/13
- * Time: 9:27 PM
- * To change this template use File | Settings | File Templates.
- */
-public class PermDetailPanel extends FormComponentPanel
-{
-    @SpringBean
-    private AdminMgr adminMgr;
-    private static final String ROLES_SELECTION = "rolesSelection";
-    private static final Logger log = Logger.getLogger(PermDetailPanel.class.getName());
-    private Form editForm;
-    private Displayable display;
-    private boolean isAdmin;
-
-    @SpringBean
-    private DelAdminMgr delAdminMgr;
-
-    public Form getForm()
-    {
-        return this.editForm;
-    }
-
-    public PermDetailPanel(String id, Displayable display, final boolean isAdmin)
-    {
-        super(id);
-        this.isAdmin = isAdmin;
-        this.adminMgr.setAdmin( GlobalUtils.getRbacSession( this ) );
-        this.editForm = new PermDetailForm(GlobalIds.EDIT_FIELDS, new CompoundPropertyModel<Permission>(new Permission()));
-        this.display = display;
-        add(editForm);
-    }
-
-    public class PermDetailForm extends Form
-    {
-        private ComboBox<String> rolesCB;
-        private Component component;
-        private String rolesSelection;
-        private List<String> roles = new ArrayList<String>();
-        private UserRole roleConstraint = new UserRole();
-        private TextField objectTF;
-
-
-        public PermDetailForm(String id, final IModel<Permission> model)
-        {
-            super(id, model);
-            add( new SecureIndicatingAjaxButton( GlobalIds.ADD, GlobalIds.ADMIN_MGR, "addPermission" )
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    log.debug(".onSubmit Add");
-                    Permission perm = (Permission)form.getModel().getObject();
-                    perm.setAdmin( isAdmin );
-                    updateEntityWithComboData(perm);
-                    try
-                    {
-                        adminMgr.addPermission(perm);
-                        roles.add( rolesSelection );
-                        rolesSelection = "";
-                        component = editForm;
-                        SaveModelEvent.send(getPage(), this, perm, target, SaveModelEvent.Operations.ADD);
-                        String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName() + " has been added";
-                        display.setMessage(msg);
-                    }
-                    catch (org.openldap.fortress.SecurityException se)
-                    {
-                        String error = ".onSubmit caught SecurityException=" + se;
-                        log.error(error);
-                        display.setMessage(error);
-                        display.display();
-                    }
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.info("PermDetailPanel.add.onError caught");
-                    target.add();
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-            add( new SecureIndicatingAjaxButton( GlobalIds.COMMIT, GlobalIds.ADMIN_MGR, "updatePermission" )
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    log.debug(".onSubmit Commit");
-                    Permission perm = (Permission)form.getModel().getObject();
-                    perm.setAdmin( isAdmin );
-                    updateEntityWithComboData(perm);
-                    try
-                    {
-                        if(isAdmin )
-                        {
-                            if(VUtil.isNotNullOrEmpty( rolesSelection ) )
-                            {
-                                delAdminMgr.grantPermission( perm, new AdminRole(rolesSelection) );
-                            }
-                            else
-                            {
-                                delAdminMgr.updatePermission(perm);
-                            }
-                        }
-                        else
-                        {
-                            adminMgr.updatePermission(perm);
-                        }
-                        roles.add( rolesSelection );
-                        String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName() + " has been updated";
-                        SaveModelEvent.send(getPage(), this, perm, target, SaveModelEvent.Operations.UPDATE);
-                        rolesSelection = "";
-                        component = editForm;
-                        display.setMessage(msg);
-                    }
-                    catch (org.openldap.fortress.SecurityException se)
-                    {
-                        String error = ".onSubmit caught SecurityException=" + se;
-                        log.error(error);
-                        display.setMessage(error);
-                        display.display();
-                    }
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.warn("PermDetailPanel.commit.onError");
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-            add( new SecureIndicatingAjaxButton( GlobalIds.DELETE, GlobalIds.ADMIN_MGR, "deletePermission" )
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    log.debug(".onSubmit Delete");
-                    Permission perm = (Permission)form.getModel().getObject();
-                    perm.setAdmin( isAdmin );
-                    try
-                    {
-                        adminMgr.deletePermission(perm);
-                        form.setModelObject( new Permission() );
-                        rolesSelection = "";
-                        roles = new ArrayList<String>();
-                        rolesCB = new ComboBox<String>( "roles", new PropertyModel<String>( editForm, ROLES_SELECTION ),roles );
-                        editForm.addOrReplace(rolesCB);
-                        modelChanged();
-                        String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName() + " has been deleted";
-                        SaveModelEvent.send(getPage(), this, perm, target, SaveModelEvent.Operations.DELETE);
-                        component = editForm;
-                        display.setMessage(msg);
-                    }
-                    catch (org.openldap.fortress.SecurityException se)
-                    {
-                        String error = ".onSubmit caught SecurityException=" + se;
-                        log.error(error);
-                        display.setMessage(error);
-                        display.display();
-                    }
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.warn("ControlPanel.delete.onError");
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-            add(new AjaxSubmitLink(GlobalIds.CANCEL)
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    setModelObject(new Permission());
-                    modelChanged();
-                    rolesSelection = "";
-                    roles = new ArrayList<String>();
-                    rolesCB = new ComboBox<String>( "roles", new PropertyModel<String>( editForm, ROLES_SELECTION ),roles );
-                    editForm.addOrReplace(rolesCB);
-                    String msg = "Perm cancelled input form";
-                    component = editForm;
-                    display.setMessage(msg);
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.warn("ControlPanel.cancel.onError");
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-
-            objectTF = new TextField( GlobalIds.OBJ_NAME );
-            // making this required prevents the object modal from opening when field empty:
-            //objectTF.setRequired( true );
-            objectTF.setOutputMarkupId( true );
-            add( objectTF );
-            addObjectSearchModal();
-
-            if(isAdmin)
-            {
-                add( new Label( "permDetailLabel", "Administrative Permission Operation Detail" ) );
-            }
-            else
-            {
-                add( new Label( "permDetailLabel", "RBAC Permission Operation Detail" ) );
-            }
-
-            TextField opName = new TextField(GlobalIds.OP_NAME);
-            add(opName);
-            opName.setRequired(false);
-            TextField objId = new TextField( GlobalIds.OBJECT_ID );
-            add(objId);
-            Label internalId = new Label("internalId");
-            add(internalId);
-            rolesCB = new ComboBox<String>( "roles", new PropertyModel<String>( this, ROLES_SELECTION ), roles );
-            add(rolesCB);
-            setOutputMarkupId(true);
-            addRoleSearchModal();
-            add( new AjaxButton( "roles.delete" )
-            {
-                private static final long serialVersionUID = 1L;
-
-                @Override
-                protected void onSubmit( AjaxRequestTarget target, Form<?> form )
-                {
-                    String msg = "clicked on roles.delete";
-                    if ( VUtil.isNotNullOrEmpty( rolesSelection ) )
-                    {
-                        msg += " selection:" + rolesSelection;
-                        Permission perm = ( Permission ) form.getModel().getObject();
-                        if ( perm.getRoles() != null )
-                        {
-                            perm.getRoles().remove( rolesSelection );
-                            roles.remove(  rolesSelection );
-                            rolesSelection = "";
-                            component = editForm;
-                            msg += ", was removed from local, commit to persist changes on server";
-                        }
-                        else
-                        {
-                            msg += ", no action taken because permission does not have role set";
-                        }
-                    }
-                    else
-                    {
-                        msg += ", no action taken because role selection is empty";
-                    }
-                    display.setMessage( msg );
-                    log.debug( msg );
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            } );
-        }
-
-        private void addObjectSearchModal()
-        {
-            final ModalWindow objectsModalWindow;
-            add( objectsModalWindow = new ModalWindow( "objectsmodal" ) );
-            final ObjectSearchModalPanel objectSearchModalPanel = new ObjectSearchModalPanel( objectsModalWindow.getContentId(), objectsModalWindow, isAdmin );
-            objectsModalWindow.setContent( objectSearchModalPanel );
-            objectsModalWindow.setWindowClosedCallback( new ModalWindow.WindowClosedCallback()
-            {
-                @Override
-                public void onClose( AjaxRequestTarget target )
-                {
-                    PermObj permObj = objectSearchModalPanel.getSelection();
-                    if ( permObj != null )
-                    {
-                        Permission perm = ( Permission ) editForm.getModel().getObject();
-                        perm.setObjName( permObj.getObjName() );
-                        target.add( objectTF );
-                    }
-                }
-            } );
-
-            add( new AjaxButton( "objName.search" )
-            {
-                private static final long serialVersionUID = 1L;
-
-                @Override
-                protected void onSubmit( AjaxRequestTarget target, Form<?> form )
-                {
-                    String msg = "clicked on ObjectNames search";
-                    Permission perm = ( Permission ) editForm.getModel().getObject();
-                    msg += perm.getObjName() != null ? ": " + perm.getObjName() : "";
-                    objectSearchModalPanel.setSearchVal( perm.getObjName() );
-                    objectSearchModalPanel.setAdmin( isAdmin );
-                    display.setMessage( msg );
-                    log.debug( msg );
-                    target.prependJavaScript( GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE );
-                    objectsModalWindow.show( target );
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            } );
-
-            String modalLabel;
-            if(isAdmin)
-            {
-                modalLabel = "Admin Permission Object Selection Modal";
-            }
-            else
-            {
-                modalLabel = "RBAC Permission Object Selection Modal";
-            }
-            objectsModalWindow.setTitle( modalLabel );
-            objectsModalWindow.setInitialWidth( 700 );
-            objectsModalWindow.setInitialHeight( 450 );
-            objectsModalWindow.setCookieName( "objects-modal" );
-        }
-
-        private void addRoleSearchModal()
-        {
-            final ModalWindow rolesModalWindow;
-            add( rolesModalWindow = new ModalWindow( "permrolesmodal" ) );
-            final RoleSearchModalPanel roleSearchModalPanel = new RoleSearchModalPanel( rolesModalWindow.getContentId(), rolesModalWindow, isAdmin );
-            rolesModalWindow.setContent( roleSearchModalPanel );
-            rolesModalWindow.setWindowClosedCallback( new ModalWindow.WindowClosedCallback()
-            {
-                @Override
-                public void onClose( AjaxRequestTarget target )
-                {
-                    roleConstraint = roleSearchModalPanel.getRoleSelection();
-                    if ( roleConstraint != null )
-                    {
-                        rolesSelection = roleConstraint.getName();
-                        component = editForm;
-                    }
-                }
-            } );
-
-            add( new AjaxButton( "permroles.search" )
-            {
-                private static final long serialVersionUID = 1L;
-
-                @Override
-                protected void onSubmit( AjaxRequestTarget target, Form<?> form )
-                {
-                    String msg = "clicked on roles search";
-                    msg += rolesSelection != null ? ": " + rolesSelection : "";
-                    roleSearchModalPanel.setRoleSearchVal( rolesSelection );
-                    display.setMessage( msg );
-                    log.debug( msg );
-                    target.prependJavaScript( GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE );
-                    rolesModalWindow.show( target );
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            } );
-
-            String modalLabel;
-            if(isAdmin)
-            {
-                modalLabel = "Admin Role Selection Modal";
-            }
-            else
-            {
-                modalLabel = "RBAC Role Selection Modal";
-            }
-            rolesModalWindow.setTitle( modalLabel );
-            rolesModalWindow.setInitialWidth( 700 );
-            rolesModalWindow.setInitialHeight( 450 );
-            rolesModalWindow.setCookieName( "role-assign-modal" );
-        }
-
-        private void updateEntityWithComboData(Permission perm)
-        {
-            String szValue = rolesCB.getModelObject();
-            if(VUtil.isNotNullOrEmpty(szValue))
-            {
-                perm.setRole(szValue);
-            }
-        }
-
-        @Override
-        public void onEvent(final IEvent<?> event)
-        {
-            if (event.getPayload() instanceof SelectModelEvent)
-            {
-                SelectModelEvent modelEvent = (SelectModelEvent) event.getPayload();
-                Permission perm = (Permission) modelEvent.getEntity();
-                this.setModelObject(perm);
-                rolesSelection = "";
-                if(VUtil.isNotNullOrEmpty(perm.getRoles()))
-                {
-                    roles = new ArrayList<String>(perm.getRoles());
-                    rolesCB = new ComboBox<String>( "roles", new PropertyModel<String>( this, ROLES_SELECTION ),roles );
-                }
-                else
-                {
-                    roles = new ArrayList<String>();
-                    rolesCB = new ComboBox<String>( "roles", new PropertyModel<String>( this, ROLES_SELECTION ),roles );
-                }
-                editForm.addOrReplace(rolesCB);
-                String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName() + " has been selected";
-                log.debug(msg);
-                component = editForm;
-            }
-            else if (event.getPayload() instanceof AjaxRequestTarget)
-            {
-                if (component != null)
-                {
-                    AjaxRequestTarget target = ((AjaxRequestTarget) event.getPayload());
-                    log.debug(".onEvent AjaxRequestTarget: " + target.toString());
-                    target.add(component);
-                    component = null;
-                }
-
-                display.display((AjaxRequestTarget) event.getPayload());
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/547b9ccd/src/main/java/org/openldap/commander/panel/PermListPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/openldap/commander/panel/PermListPanel.java b/src/main/java/org/openldap/commander/panel/PermListPanel.java
deleted file mode 100644
index 3ea0258..0000000
--- a/src/main/java/org/openldap/commander/panel/PermListPanel.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * This work is part of OpenLDAP Software <http://www.openldap.org/>.
- *
- * Copyright 1998-2014 The OpenLDAP Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted only as authorized by the OpenLDAP
- * Public License.
- *
- * A copy of this license is available in the file LICENSE in the
- * top-level directory of the distribution or, alternatively, at
- * <http://www.OpenLDAP.org/license.html>.
- */
-
-package org.openldap.commander.panel;
-
-import com.inmethod.grid.IGridColumn;
-import com.inmethod.grid.SizeUnit;
-import com.inmethod.grid.column.PropertyColumn;
-import com.inmethod.grid.treegrid.TreeGrid;
-import org.apache.log4j.Logger;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.form.FormComponentPanel;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-import org.openldap.commander.GlobalIds;
-import org.openldap.commander.GlobalUtils;
-import org.openldap.commander.PermListModel;
-import org.openldap.commander.SaveModelEvent;
-import org.openldap.commander.SecureIndicatingAjaxButton;
-import org.openldap.commander.SecureIndicatingAjaxLink;
-import org.openldap.commander.SelectModelEvent;
-import org.openldap.fortress.rbac.FortEntity;
-import org.openldap.fortress.rbac.PermObj;
-import org.openldap.fortress.rbac.Permission;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.Model;
-import org.openldap.fortress.util.attr.VUtil;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeNode;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- *
- * @author Shawn McKinney
- * @version $Rev$
- */
-public class PermListPanel extends FormComponentPanel
-{
-    private static final Logger log = Logger.getLogger(PermListPanel.class.getName());
-    private Form listForm;
-    private DefaultTreeModel treeModel;
-    private DefaultMutableTreeNode node;
-    private TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String> grid;
-    private DefaultMutableTreeNode rootNode;
-    private String permOperation;
-    private String permObject;
-    private TextField permObjectFld;
-    private boolean isAdmin;
-
-    public PermListPanel(String id, final boolean isAdmin)
-    {
-        super(id);
-        this.isAdmin = isAdmin;
-        PermListModel permListModel = new PermListModel(new Permission("", ""), isAdmin, GlobalUtils.getRbacSession(
-                    this ));
-        setDefaultModel(permListModel);
-        List<IGridColumn<DefaultTreeModel, DefaultMutableTreeNode, String>> columns =
-            new ArrayList<IGridColumn<DefaultTreeModel, DefaultMutableTreeNode, String>>();
-        PropertyColumn objName = new PropertyColumn(new Model("Object Name"), "userObject.ObjName");
-        objName.setInitialSize( 250 );
-        columns.add(objName);
-        columns.add(new PropertyColumn(new Model("Object Id"), "userObject.ObjId"));
-        columns.add(new PropertyColumn(new Model("Operation Name"), "userObject.OpName"));
-        String roleAssignLabel;
-        if(isAdmin)
-        {
-            roleAssignLabel = "Admin Role Assignments";
-        }
-        else
-        {
-            roleAssignLabel = "RBAC Role Assignments";
-        }
-
-        PropertyColumn roles = new PropertyColumn(new Model(roleAssignLabel), "userObject.Roles");
-        roles.setInitialSize(500);
-        columns.add(roles);
-        PropertyColumn abstractPermName = new PropertyColumn(new Model("Abstract Perm Name"), "userObject.AbstractName");
-        abstractPermName.setInitialSize( 300 );
-        columns.add(abstractPermName);
-
-        List<Permission> perms = (List<Permission>) getDefaultModel().getObject();
-        treeModel = createTreeModel(perms);
-        grid = new TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String>("permtreegrid", treeModel, columns)
-        {
-            @Override
-            public void selectItem(IModel itemModel, boolean selected)
-            {
-                node = (DefaultMutableTreeNode) itemModel.getObject();
-                if(!node.isRoot())
-                {
-                    Permission perm = (Permission) node.getUserObject();
-                    log.debug("TreeGrid.addGrid.selectItem selected perm objNm: " + perm.getObjName() + " opNm: " + perm.getOpName());
-                    if (super.isItemSelected(itemModel))
-                    {
-                        log.debug("TreeGrid.addGrid.selectItem item is selected");
-                        super.selectItem(itemModel, false);
-                    }
-                    else
-                    {
-                        super.selectItem(itemModel, true);
-                        SelectModelEvent.send(getPage(), this, perm);
-                    }
-                }
-            }
-        };
-        grid.setContentHeight(50, SizeUnit.EM);
-        grid.setAllowSelectMultiple(false);
-        grid.setClickRowToSelect(true);
-        grid.setClickRowToDeselect(false);
-        grid.setSelectToEdit(false);
-        // expand the root node
-        grid.getTreeState().expandNode((TreeNode) treeModel.getRoot());
-        this.listForm = new Form("form");
-        this.listForm.add(grid);
-        grid.setOutputMarkupId(true);
-        add(this.listForm);
-        permObjectFld = new TextField("permObject", new PropertyModel<String>(this, "permObject"));
-        permObjectFld.setOutputMarkupId( true );
-        AjaxFormComponentUpdatingBehavior ajaxUpdater = new AjaxFormComponentUpdatingBehavior(GlobalIds.ONBLUR)
-        {
-          @Override
-          protected void onUpdate(final AjaxRequestTarget target)
-          {
-              target.add( permObjectFld );
-          }
-        };
-        permObjectFld.add( ajaxUpdater );
-        this.listForm.add(permObjectFld);
-        TextField permOperationFld = new TextField("permOperation", new PropertyModel<String>(this, "permOperation"));
-        this.listForm.add(permOperationFld);
-        addObjectSearchModal();
-
-        this.listForm.add( new SecureIndicatingAjaxButton( GlobalIds.SEARCH, GlobalIds.REVIEW_MGR, GlobalIds.FIND_PERMISSIONS )
-        {
-            @Override
-            protected void onSubmit( AjaxRequestTarget target, Form form )
-            {
-                log.debug( ".search onSubmit" );
-                info( "Searching Perms..." );
-                if ( !VUtil.isNotNullOrEmpty( permObject ) )
-                {
-                    permObject = "";
-                }
-                if ( !VUtil.isNotNullOrEmpty( permOperation ) )
-                {
-                    permOperation = "";
-                }
-                Permission srchPerm = new Permission( permObject, permOperation );
-                setDefaultModel( new PermListModel( srchPerm, isAdmin, GlobalUtils.getRbacSession( this ) ) );
-                treeModel.reload();
-                rootNode.removeAllChildren();
-                List<Permission> perms = ( List<Permission> ) getDefaultModelObject();
-                if ( VUtil.isNotNullOrEmpty( perms ) )
-                {
-                    for ( Permission perm : perms )
-                        rootNode.add( new DefaultMutableTreeNode( perm ) );
-                    info( "Search returned " + perms.size() + " matching objects" );
-                }
-                else
-                {
-                    info( "No matching objects found" );
-                }
-                target.add( grid );
-            }
-
-            @Override
-            public void onError( AjaxRequestTarget target, Form form )
-            {
-                log.warn( ".search.onError" );
-                target.add();
-            }
-            @Override
-            protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-            {
-                super.updateAjaxAttributes( attributes );
-                AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                {
-                    @Override
-                    public CharSequence getFailureHandler( Component component )
-                    {
-                        return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                    }
-                };
-                attributes.getAjaxCallListeners().add( ajaxCallListener );
-            }
-        } );
-    }
-
-    private void addObjectSearchModal()
-    {
-        final ModalWindow objectsModalWindow;
-        listForm.add( objectsModalWindow = new ModalWindow( "objectsearchmodal" ) );
-        final ObjectSearchModalPanel objectSearchModalPanel = new ObjectSearchModalPanel( objectsModalWindow.getContentId(), objectsModalWindow, isAdmin );
-        objectsModalWindow.setContent( objectSearchModalPanel );
-        objectsModalWindow.setWindowClosedCallback( new ModalWindow.WindowClosedCallback()
-        {
-            @Override
-            public void onClose( AjaxRequestTarget target )
-            {
-                PermObj permObj = objectSearchModalPanel.getSelection();
-                if ( permObj != null )
-                {
-                    permObject = permObj.getObjName();
-                    target.add( permObjectFld );
-                }
-            }
-        } );
-
-        listForm.add( new SecureIndicatingAjaxLink( "objectAssignLinkLbl", GlobalIds.REVIEW_MGR, "findPermObjs" )
-        {
-            public void onClick( AjaxRequestTarget target )
-            {
-                String msg = "clicked on object search";
-                msg += "objectSelection: " + permObject;
-                objectSearchModalPanel.setSearchVal( permObject );
-                objectSearchModalPanel.setAdmin( isAdmin );
-                log.debug( msg );
-                target.prependJavaScript( GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE );
-                objectsModalWindow.show( target );
-            }
-            @Override
-            protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-            {
-                super.updateAjaxAttributes( attributes );
-                AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                {
-                    @Override
-                    public CharSequence getFailureHandler( Component component )
-                    {
-                        return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                    }
-                };
-                attributes.getAjaxCallListeners().add( ajaxCallListener );
-            }
-        } );
-
-        String modalLabel;
-        if(isAdmin)
-        {
-            modalLabel = "Admin Permission Object Search Modal";
-        }
-        else
-        {
-            modalLabel = "RBAC Permission Object Search Modal";
-        }
-        objectsModalWindow.setTitle( modalLabel );
-        objectsModalWindow.setInitialWidth( 700 );
-        objectsModalWindow.setInitialHeight( 450 );
-        objectsModalWindow.setCookieName( "objects-modal" );
-    }
-
-    @Override
-    public void onEvent(IEvent event)
-    {
-        if (event.getPayload() instanceof SaveModelEvent)
-        {
-            SaveModelEvent modelEvent = (SaveModelEvent) event.getPayload();
-            switch(modelEvent.getOperation())
-            {
-                case ADD:
-                    add(modelEvent.getEntity());
-                    break;
-                case UPDATE:
-                    /*
-                    grid.markItemDirty(itemThatHasChanged);
-                    grid.update();
-                     */
-                    modelChanged();
-                    break;
-                case DELETE:
-                    prune();
-                    break;
-                case SEARCH:
-                    setDefaultModel(new PermListModel((Permission) modelEvent.getEntity(), isAdmin, GlobalUtils.getRbacSession( this )));
-                    treeModel.reload();
-                    rootNode.removeAllChildren();
-                    for (Permission perm : (List<Permission>) getDefaultModelObject())
-                        rootNode.add(new DefaultMutableTreeNode(perm));
-                    break;
-                default:
-                    break;
-            }
-            AjaxRequestTarget target = ((SaveModelEvent) event.getPayload()).getAjaxRequestTarget();
-            target.add(grid);
-            log.debug(".onEvent SaveModelEvent: " + target.toString());
-        }
-    }
-
-    private void removeSelectedItems(TreeGrid<DefaultTreeModel, DefaultMutableTreeNode, String> grid)
-    {
-        Collection<IModel<DefaultMutableTreeNode>> selected = grid.getSelectedItems();
-        for (IModel<DefaultMutableTreeNode> model : selected)
-        {
-            DefaultMutableTreeNode node = model.getObject();
-            treeModel.removeNodeFromParent(node);
-            Permission perm = (Permission) node.getUserObject();
-            log.debug(".removeSelectedItems perm objNm: " + perm.getObjName() + " opNm: " + perm.getOpName());
-            List<Permission> perms = ((List<Permission>) getDefaultModel().getObject());
-            perms.remove(perm);
-        }
-    }
-
-    private DefaultTreeModel createTreeModel(List<Permission> perms)
-    {
-        DefaultTreeModel model;
-        //Permission root = new Permission("Perms");
-        Permission root = new Permission();
-        rootNode = new DefaultMutableTreeNode(root);
-        model = new DefaultTreeModel(rootNode);
-        if (perms == null)
-            log.debug(".createTreeModel no Perms found");
-        else
-        {
-            log.debug(".createTreeModel Perms found:" + perms.size());
-            for (Permission perm : perms)
-                rootNode.add(new DefaultMutableTreeNode(perm));
-        }
-        return model;
-    }
-
-    public void add(FortEntity entity)
-    {
-        if (getDefaultModelObject() != null)
-        {
-             List<Permission> perms = ((List<Permission>) getDefaultModelObject());
-            perms.add((Permission) entity);
-            treeModel.insertNodeInto(new DefaultMutableTreeNode(entity), rootNode, perms.size());
-        }
-    }
-
-    public void prune()
-    {
-        removeSelectedItems(grid);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/547b9ccd/src/main/java/org/openldap/commander/panel/PermSearchModalPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/openldap/commander/panel/PermSearchModalPanel.java b/src/main/java/org/openldap/commander/panel/PermSearchModalPanel.java
deleted file mode 100644
index 63074fc..0000000
--- a/src/main/java/org/openldap/commander/panel/PermSearchModalPanel.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * This work is part of OpenLDAP Software <http://www.openldap.org/>.
- *
- * Copyright 1998-2014 The OpenLDAP Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted only as authorized by the OpenLDAP
- * Public License.
- *
- * A copy of this license is available in the file LICENSE in the
- * top-level directory of the distribution or, alternatively, at
- * <http://www.OpenLDAP.org/license.html>.
- */
-package org.openldap.commander.panel;
-
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.PageableListView;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.openldap.commander.GlobalUtils;
-import org.openldap.fortress.ReviewMgr;
-import org.openldap.fortress.rbac.Permission;
-
-/**
- *
- * @author Shawn McKinney
- * @version $Rev$
- */
-public class PermSearchModalPanel extends Panel
-{
-    @SpringBean
-    private ReviewMgr reviewMgr;
-    private static final Logger LOG = Logger.getLogger(PermSearchModalPanel.class.getName());
-    private ModalWindow window;
-    private Permission permSelection;
-    private String objectSearchVal;
-    private String opSearchVal;
-    private boolean isAdmin;
-
-    /**
-     * @param id
-     */
-    public PermSearchModalPanel( String id, ModalWindow window, final boolean isAdmin )
-    {
-        super( id );
-        this.reviewMgr.setAdmin( GlobalUtils.getRbacSession( this ) );
-        this.isAdmin = isAdmin;
-        this.window = window;
-        loadPanel();
-    }
-
-    public void loadPanel()
-    {
-        LoadableDetachableModel requests = getListViewModel();
-        PageableListView ouView = createListView( requests );
-        add( ouView );
-        add( new AjaxPagingNavigator( "navigator", ouView ) );
-    }
-
-    private PageableListView createListView( final LoadableDetachableModel requests )
-    {
-        final PageableListView listView = new PageableListView( "dataview", requests, 16 )
-        {
-            @Override
-            protected void populateItem( final ListItem item )
-            {
-                final Permission modelObject = ( Permission ) item.getModelObject();
-                item.add( new AjaxLink<Void>( "select" )
-                {
-                    private static final long serialVersionUID = 1L;
-
-                    @Override
-                    public void onClick(AjaxRequestTarget target)
-                    {
-                        permSelection = modelObject;
-                        window.close( target );
-                    }
-                } );
-                item.add( new Label( "objName", new PropertyModel( item.getModel(), "objName" ) ) );
-                item.add( new Label( "objId", new PropertyModel( item.getModel(), "objId" ) ) );
-                item.add( new Label( "opName", new PropertyModel( item.getModel(), "opName" ) ) );
-                item.add( new Label( "type", new PropertyModel( item.getModel(), "type" ) ) );
-                item.add( new Label( "admin", new PropertyModel( item.getModel(), "admin" ) ) );
-            }
-        };
-        return listView;
-    }
-
-    private LoadableDetachableModel getListViewModel()
-    {
-        final LoadableDetachableModel ret = new LoadableDetachableModel()
-        {
-            @Override
-            protected Object load()
-            {
-                List<?> objects = null;
-                try
-                {
-                    permSelection = null;
-                    if(objectSearchVal == null)
-                        objectSearchVal = "";
-
-                    Permission permission = new Permission( objectSearchVal, "" );
-                    permission.setAdmin( isAdmin );
-                    objects = reviewMgr.findPermissions( permission );
-                }
-                catch ( org.openldap.fortress.SecurityException se )
-                {
-                    String error = "getListViewModel caught SecurityException=" + se;
-                    LOG.error( error );
-                }
-                return objects;
-            }
-        };
-        return ret;
-    }
-
-    public void setAdmin( boolean admin )
-    {
-        isAdmin = admin;
-    }
-
-    public Permission getSelection()
-    {
-        return permSelection;
-    }
-
-    public void setSearchVal( String objectSearchVal )
-    {
-        this.objectSearchVal = objectSearchVal;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-commander/blob/547b9ccd/src/main/java/org/openldap/commander/panel/PwPolicyDetailPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/openldap/commander/panel/PwPolicyDetailPanel.java b/src/main/java/org/openldap/commander/panel/PwPolicyDetailPanel.java
deleted file mode 100644
index 335e204..0000000
--- a/src/main/java/org/openldap/commander/panel/PwPolicyDetailPanel.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * This work is part of OpenLDAP Software <http://www.openldap.org/>.
- *
- * Copyright 1998-2014 The OpenLDAP Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted only as authorized by the OpenLDAP
- * Public License.
- *
- * A copy of this license is available in the file LICENSE in the
- * top-level directory of the distribution or, alternatively, at
- * <http://www.OpenLDAP.org/license.html>.
- */
-
-package org.openldap.commander.panel;
-
-import com.googlecode.wicket.jquery.ui.form.spinner.Spinner;
-import org.apache.log4j.Logger;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.FormComponentPanel;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.apache.wicket.validation.validator.RangeValidator;
-import org.openldap.commander.GlobalIds;
-import org.openldap.commander.GlobalUtils;
-import org.openldap.commander.SaveModelEvent;
-import org.openldap.commander.SecureIndicatingAjaxButton;
-import org.openldap.commander.SelectModelEvent;
-import org.openldap.fortress.PwPolicyMgr;
-import org.openldap.fortress.rbac.PwPolicy;
-
-/**
- * @author Shawn McKinney
- * @version $Rev$
- * Date: 6/12/13
- */
-public class PwPolicyDetailPanel extends FormComponentPanel
-{
-    @SpringBean
-    private PwPolicyMgr pwPolicyMgr;
-    private static final Logger log = Logger.getLogger(PwPolicyDetailPanel.class.getName());
-    private Form editForm;
-    private Displayable display;
-
-    public Form getForm()
-    {
-        return this.editForm;
-    }
-
-    public PwPolicyDetailPanel(String id, Displayable display)
-    {
-        super(id);
-        this.pwPolicyMgr.setAdmin( GlobalUtils.getRbacSession( this ) );
-        this.editForm = new PwPolicyDetailForm(GlobalIds.EDIT_FIELDS, new CompoundPropertyModel<PwPolicy>(new PwPolicy()));
-        this.display = display;
-        add(editForm);
-    }
-
-    public class PwPolicyDetailForm extends Form
-    {
-        private Component component;
-
-        public PwPolicyDetailForm(String id, final IModel<PwPolicy> model)
-        {
-            super(id, model);
-
-            add( new SecureIndicatingAjaxButton( GlobalIds.ADD, GlobalIds.PWPOLICY_MGR, GlobalIds.ADD )
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    log.debug(".onSubmit Add");
-                    PwPolicy policy = (PwPolicy)form.getModel().getObject();
-                    try
-                    {
-                        policy.setCheckQuality( (short)2 );
-                        pwPolicyMgr.add(policy);
-                        SaveModelEvent.send(getPage(), this, policy, target, SaveModelEvent.Operations.ADD);
-                        component = editForm;
-                        String msg = "Policy: " + policy.getName() + " has been added";
-                        display.setMessage(msg);
-                    }
-                    catch (org.openldap.fortress.SecurityException se)
-                    {
-                        String error = ".onSubmit caught SecurityException=" + se;
-                        log.error(error);
-                        display.setMessage(error);
-                        display.display();
-                    }
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.info("PwPolicyPanel.add.onError caught");
-                    target.add();
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-            add( new SecureIndicatingAjaxButton( GlobalIds.COMMIT, GlobalIds.PWPOLICY_MGR, "update" )
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    log.debug(".onSubmit Commit");
-                    PwPolicy policy = (PwPolicy)form.getModel().getObject();
-                    try
-                    {
-                        pwPolicyMgr.update(policy);
-                        String msg = "Policy: " + policy.getName() + " has been updated";
-                        SaveModelEvent.send(getPage(), this, policy, target, SaveModelEvent.Operations.UPDATE);
-                        component = editForm;
-                        display.setMessage(msg);
-                    }
-                    catch (org.openldap.fortress.SecurityException se)
-                    {
-                        String error = ".onSubmit caught SecurityException=" + se;
-                        log.error(error);
-                        display.setMessage(error);
-                        display.display();
-                    }
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.warn("PwPolicyPanel.update.onError");
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-            add( new SecureIndicatingAjaxButton( GlobalIds.DELETE, GlobalIds.PWPOLICY_MGR, GlobalIds.DELETE )
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    log.debug(".onSubmit Commit");
-                    PwPolicy role = (PwPolicy)form.getModel().getObject();
-
-                    try
-                    {
-                        pwPolicyMgr.delete(role);
-                        form.setModelObject( new PwPolicy() );
-                        modelChanged();
-                        String msg = "Role: " + role.getName() + " has been deleted";
-                        SaveModelEvent.send(getPage(), this, role, target, SaveModelEvent.Operations.DELETE);
-                        component = editForm;
-                        display.setMessage(msg);
-                    }
-                    catch (org.openldap.fortress.SecurityException se)
-                    {
-                        String error = ".onSubmit caught SecurityException=" + se;
-                        log.error(error);
-                        display.setMessage(error);
-                        display.display();
-                    }
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.warn("PwPolicyPanel.commit.onError");
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-            add(new AjaxSubmitLink(GlobalIds.CANCEL)
-            {
-                @Override
-                protected void onSubmit(AjaxRequestTarget target, Form form)
-                {
-                    setModelObject(new PwPolicy());
-                    modelChanged();
-                    component = editForm;
-                    String msg = "Role cancelled input form";
-                    display.setMessage(msg);
-                }
-
-                @Override
-                public void onError(AjaxRequestTarget target, Form form)
-                {
-                    log.warn("ControlPanel.cancel.onError");
-                }
-                @Override
-                protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
-                {
-                    super.updateAjaxAttributes( attributes );
-                    AjaxCallListener ajaxCallListener = new AjaxCallListener()
-                    {
-                        @Override
-                        public CharSequence getFailureHandler( Component component )
-                        {
-                            return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
-                        }
-                    };
-                    attributes.getAjaxCallListeners().add( ajaxCallListener );
-                }
-            });
-
-            add(new TextField("name").setRequired( true ));
-
-            add(new TextField<Integer>("minAge").add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)).setRequired( true ));
-
-            add(new TextField<Long>("maxAge").add(new RangeValidator<Long>((long)0, Long.MAX_VALUE)).setRequired( true ));
-            final Spinner<Integer> inHistorySP = new Spinner<Integer>("inHistory");
-            inHistorySP.setRequired(false);
-            inHistorySP.add(new RangeValidator<Short>((short)0, (short)100));
-            add(inHistorySP);
-
-            final Spinner<Integer> minLengthSP = new Spinner<Integer>("minLength");
-            minLengthSP.setRequired(false);
-            minLengthSP.add(new RangeValidator<Short>((short)0, (short)100));
-            add(minLengthSP);
-
-            add(new TextField<Long>("expireWarning").add(new RangeValidator<Long>((long)0, Long.MAX_VALUE)).setRequired( true ));
-            final Spinner<Integer> graceLoginLimitSP = new Spinner<Integer>("graceLoginLimit");
-            graceLoginLimitSP.setRequired(false);
-            graceLoginLimitSP.add(new RangeValidator<Short>((short)0, (short)100));
-            add(graceLoginLimitSP);
-
-            add(new CheckBox("lockout").setRequired( true ));
-            add(new TextField<Integer>("lockoutDuration").add(new RangeValidator<Integer>(0, Integer.MAX_VALUE)).setRequired( true ));
-            final Spinner<Integer> maxFailureSP = new Spinner<Integer>("maxFailure");
-            maxFailureSP.setRequired(false);
-            maxFailureSP.add(new RangeValidator<Short>((short)0, (short)100));
-            add(maxFailureSP);
-
-            add(new TextField<Short>("failureCountInterval").add(new RangeValidator<Short>((short)0, Short.MAX_VALUE)).setRequired( true ));
-            add(new CheckBox("mustChange").setRequired( true ));
-            add(new CheckBox("allowUserChange").setRequired( true ));
-            add(new CheckBox("safeModify").setRequired( true ));
-            setOutputMarkupId(true);
-        }
-
-        @Override
-        public void onEvent(final IEvent<?> event)
-        {
-            if (event.getPayload() instanceof SelectModelEvent)
-            {
-                SelectModelEvent modelEvent = (SelectModelEvent) event.getPayload();
-                PwPolicy policy = (PwPolicy) modelEvent.getEntity();
-                this.setModelObject(policy);
-                String msg = "Policy: " + policy.getName() + " has been selected";
-                log.debug(".onEvent SelectModelEvent: " + policy.getName());
-                display.setMessage(msg);
-                component = editForm;
-            }
-            else if (event.getPayload() instanceof AjaxRequestTarget)
-            {
-                // only add the form to ajax target if something has changed...
-                if (component != null)
-                {
-                    AjaxRequestTarget target = ((AjaxRequestTarget) event.getPayload());
-                    log.debug(".onEvent AjaxRequestTarget: " + target.toString());
-                    target.add(component);
-                    component = null;
-                }
-                display.display((AjaxRequestTarget) event.getPayload());
-            }
-        }
-    }
-}