content: /*
   *  Licensed to the Apache Software Foundation (ASF) under one
   *  or more contributor license agreements.  See the NOTICE file
   *  distributed with this work for additional information
   *  regarding copyright ownership.  The ASF licenses this file
   *  to you under the Apache License, Version 2.0 (the
   *  "License"); you may not use this file except in compliance
   *  with the License.  You may obtain a copy of the License at
   *
   *        http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing,
   *  software distributed under the License is distributed on an
   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   *  KIND, either express or implied.  See the License for the
   *  specific language governing permissions and limitations
   *  under the License.
   */
  package org.apache.causeway.extensions.secman.applib;
  
  import org.springframework.context.annotation.Configuration;
  import org.springframework.context.annotation.Import;
  
  import org.apache.causeway.extensions.secman.applib.feature.api.ApplicationFeatureChoices;
  import org.apache.causeway.extensions.secman.applib.feature.contributions.ApplicationFeatureViewModel_permissions;
  import org.apache.causeway.extensions.secman.applib.permission.app.ApplicationOrphanedPermissionManager;
  import org.apache.causeway.extensions.secman.applib.permission.app.mixins.ApplicationOrphanedPermissionManager_relocateSelected;
  import org.apache.causeway.extensions.secman.applib.permission.dom.mixins.ApplicationPermission_allow;
  import org.apache.causeway.extensions.secman.applib.permission.dom.mixins.ApplicationPermission_changing;
  import org.apache.causeway.extensions.secman.applib.permission.dom.mixins.ApplicationPermission_delete;
  import org.apache.causeway.extensions.secman.applib.permission.dom.mixins.ApplicationPermission_feature;
  import org.apache.causeway.extensions.secman.applib.permission.dom.mixins.ApplicationPermission_updateRole;
  import org.apache.causeway.extensions.secman.applib.permission.dom.mixins.ApplicationPermission_veto;
  import org.apache.causeway.extensions.secman.applib.permission.dom.mixins.ApplicationPermission_viewing;
  import org.apache.causeway.extensions.secman.applib.permission.menu.ApplicationPermissionMenu;
  import org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationRole_addPermission;
  import org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationRole_addUser;
  import org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationRole_delete;
  import org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationRole_removePermissions;
  import org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationRole_removeUsers;
  import org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationRole_updateDescription;
  import org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationRole_updateName;
  import org.apache.causeway.extensions.secman.applib.role.man.mixins.ApplicationRoleManager_allRoles;
  import org.apache.causeway.extensions.secman.applib.role.man.mixins.ApplicationRoleManager_exportAsYaml;
  import org.apache.causeway.extensions.secman.applib.role.man.mixins.ApplicationRoleManager_newRole;
  import org.apache.causeway.extensions.secman.applib.role.menu.ApplicationRoleMenu;
  import org.apache.causeway.extensions.secman.applib.seed.SeedSecurityModuleService;
  import org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_addChild;
  import org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_addUser;
  import org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_delete;
  import org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_removeChild;
  import org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_removeUser;
  import org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_updateName;
  import org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.ApplicationTenancy_users;
  import org.apache.causeway.extensions.secman.applib.tenancy.man.mixins.ApplicationTenancyManager_allTenancies;
  import org.apache.causeway.extensions.secman.applib.tenancy.man.mixins.ApplicationTenancyManager_newTenancy;
  import org.apache.causeway.extensions.secman.applib.tenancy.menu.ApplicationTenancyMenu;
  import org.apache.causeway.extensions.secman.applib.user.contributions.HasUsername_associatedUser;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_addRole;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_delete;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_duplicate;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_lock;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_removeRoles;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_resetPassword;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_timeZone;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_unlock;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateAccountType;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateAtPath;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateEmailAddress;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateFaxNumber;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateLocale;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateName;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updatePassword;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updatePhoneNumber;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationUser_updateUsername;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.perms.ApplicationUser_effectiveMemberPermissions;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.perms.ApplicationUser_filterEffectiveMemberPermissions;
  import org.apache.causeway.extensions.secman.applib.user.dom.mixins.perms.UserPermissionViewModel;
  import org.apache.causeway.extensions.secman.applib.user.man.ApplicationUserManager;
  import org.apache.causeway.extensions.secman.applib.user.man.mixins.ApplicationUserManager_allUsers;
  import org.apache.causeway.extensions.secman.applib.user.man.mixins.ApplicationUserManager_newDelegateUser;
  import org.apache.causeway.extensions.secman.applib.user.man.mixins.ApplicationUserManager_newLocalUser;
  import org.apache.causeway.extensions.secman.applib.user.menu.ApplicationUserMenu;
  import org.apache.causeway.extensions.secman.applib.user.menu.MeService;
  import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
  
  /**
   * @since 2.0 {@index}
   */
  @Configuration
  @Import({
          // Modules
          CausewayModuleTestingFixturesApplib.class,
  
          ApplicationFeatureChoices.class,
  
          // @DomainService
          ApplicationOrphanedPermissionManager.class,
          ApplicationPermissionMenu.class,
          ApplicationRoleMenu.class,
          ApplicationTenancyMenu.class,
          ApplicationUserMenu.class,
  
          MeService.class,
          MeService.UserMenuMeActionAdvisor.class,
  
          // -- ViewModels
          ApplicationUserManager.class,
          UserPermissionViewModel.class,
          ApplicationOrphanedPermissionManager.class,
  
          // -- Mixins
          ApplicationOrphanedPermissionManager_relocateSelected.class,
  
          //ApplicationPermission
          ApplicationPermission_allow.class,
          ApplicationPermission_changing.class,
          ApplicationPermission_delete.class,
          ApplicationPermission_feature.class,
          ApplicationPermission_updateRole.class,
          ApplicationPermission_veto.class,
          ApplicationPermission_viewing.class,
  
          //ApplicationRole
          ApplicationRole_addPermission.class,
          ApplicationRole_addUser.class,
          ApplicationRole_delete.class,
          ApplicationRole_removePermissions.class,
          ApplicationRole_removeUsers.class,
          ApplicationRole_updateDescription.class,
          ApplicationRole_updateName.class,
  
          //ApplicationTenancy
          ApplicationTenancy_addChild.class,
          ApplicationTenancy_addUser.class,
          ApplicationTenancy_delete.class,
          ApplicationTenancy_removeChild.class,
          ApplicationTenancy_removeUser.class,
          ApplicationTenancy_updateName.class,
          ApplicationTenancy_users.class,
  
          //ApplicationUser
          ApplicationUser_addRole.class,
          ApplicationUser_delete.class,
          ApplicationUser_duplicate.class,
          ApplicationUser_filterEffectiveMemberPermissions.class,
          ApplicationUser_lock.class,
          ApplicationUser_effectiveMemberPermissions.class,
          ApplicationUser_removeRoles.class,
          ApplicationUser_resetPassword.class,
          ApplicationUser_timeZone.class,
          ApplicationUser_unlock.class,
          ApplicationUser_updateAccountType.class,
          ApplicationUser_updateAtPath.class,
          ApplicationUser_updateEmailAddress.class,
          ApplicationUser_updateFaxNumber.class,
          ApplicationUser_updateLocale.class,
          ApplicationUser_updateName.class,
          ApplicationUser_updatePassword.class,
          ApplicationUser_updatePhoneNumber.class,
          ApplicationUser_updateUsername.class,
  
          // ApplicationFeatureViewModel
          ApplicationFeatureViewModel_permissions.class,
  
          // HasUsername
          HasUsername_associatedUser.class,
  
          // ApplicationUserManager
          ApplicationUserManager_allUsers.class,
          ApplicationUserManager_newDelegateUser.class,
          ApplicationUserManager_newLocalUser.class,
  
          // ApplicationRoleManager
          ApplicationRoleManager_allRoles.class,
          ApplicationRoleManager_newRole.class,
          ApplicationRoleManager_exportAsYaml.class,
  
          // ApplicationRoleManager
          ApplicationTenancyManager_allTenancies.class,
          ApplicationTenancyManager_newTenancy.class,
  
          // other @Services
          SeedSecurityModuleService.class,
  
  })
  public class CausewayModuleExtSecmanApplib {
  
      public static final String NAMESPACE = "causeway.ext.secman";
      public static final String SCHEMA = "causewayExtSecman";
  
      public abstract static class TitleUiEvent<S>
              extends org.apache.causeway.applib.events.ui.TitleUiEvent<S> { }
  
      public abstract static class IconUiEvent<S>
              extends org.apache.causeway.applib.events.ui.IconUiEvent<S> { }
  
      public abstract static class CssClassUiEvent<S>
              extends org.apache.causeway.applib.events.ui.CssClassUiEvent<S> { }
  
      public abstract static class LayoutUiEvent<S>
              extends org.apache.causeway.applib.events.ui.LayoutUiEvent<S> { }
  
      public abstract static class ActionDomainEvent<S>
      extends org.apache.causeway.applib.events.domain.ActionDomainEvent<S> {}
  
      public abstract static class CollectionDomainEvent<S, T>
      extends org.apache.causeway.applib.events.domain.CollectionDomainEvent<S, T> {}
  
      public abstract static class PropertyDomainEvent<S, T>
      extends org.apache.causeway.applib.events.domain.PropertyDomainEvent<S, T> {}
  
  }
  