├── .gitattributes ├── .github ├── release-drafter.yml └── workflows │ ├── gradle.yml │ ├── release-drafter.yml │ └── release-version.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app ├── aem │ ├── all.cloud │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── content │ │ │ └── META-INF │ │ │ └── vault │ │ │ └── filter.xml │ ├── all │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── content │ │ │ └── META-INF │ │ │ └── vault │ │ │ └── filter.xml │ ├── common.gradle.kts │ ├── common │ │ └── package │ │ │ └── defaults │ │ │ └── META-INF │ │ │ └── vault │ │ │ └── definition │ │ │ └── thumbnail.png │ ├── core │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── main │ │ │ ├── antlr │ │ │ │ └── ApmLang.g4 │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── cognifide │ │ │ │ │ └── apm │ │ │ │ │ ├── api │ │ │ │ │ ├── actions │ │ │ │ │ │ ├── Action.java │ │ │ │ │ │ ├── ActionResult.java │ │ │ │ │ │ ├── AuthorizableManager.java │ │ │ │ │ │ ├── Context.java │ │ │ │ │ │ ├── Message.java │ │ │ │ │ │ ├── SessionSavingMode.java │ │ │ │ │ │ ├── SessionSavingPolicy.java │ │ │ │ │ │ └── annotations │ │ │ │ │ │ │ ├── Flag.java │ │ │ │ │ │ │ ├── Flags.java │ │ │ │ │ │ │ ├── Mapper.java │ │ │ │ │ │ │ ├── Mapping.java │ │ │ │ │ │ │ ├── Named.java │ │ │ │ │ │ │ └── Required.java │ │ │ │ │ ├── exceptions │ │ │ │ │ │ ├── ActionCreationException.java │ │ │ │ │ │ ├── ActionException.java │ │ │ │ │ │ ├── ActionExecutionException.java │ │ │ │ │ │ ├── AuthorizableNotFoundException.java │ │ │ │ │ │ ├── ExecutionException.java │ │ │ │ │ │ └── InvalidActionMapperException.java │ │ │ │ │ ├── scripts │ │ │ │ │ │ ├── LaunchEnvironment.java │ │ │ │ │ │ ├── LaunchMode.java │ │ │ │ │ │ ├── MutableScript.java │ │ │ │ │ │ ├── Script.java │ │ │ │ │ │ └── TransientScript.java │ │ │ │ │ ├── services │ │ │ │ │ │ ├── DefinitionsProvider.java │ │ │ │ │ │ ├── ExecutionMode.java │ │ │ │ │ │ ├── ExecutionResult.java │ │ │ │ │ │ ├── RunModesProvider.java │ │ │ │ │ │ ├── ScriptFinder.java │ │ │ │ │ │ └── ScriptManager.java │ │ │ │ │ └── status │ │ │ │ │ │ └── Status.java │ │ │ │ │ ├── checks │ │ │ │ │ ├── actions │ │ │ │ │ │ ├── ActionGroup.java │ │ │ │ │ │ ├── exclude │ │ │ │ │ │ │ ├── CheckExcludes.java │ │ │ │ │ │ │ └── CheckExcludesMapper.java │ │ │ │ │ │ ├── exists │ │ │ │ │ │ │ ├── CheckAuthorizableExists.java │ │ │ │ │ │ │ ├── CheckGroupExistsMapper.java │ │ │ │ │ │ │ └── CheckUserExistsMapper.java │ │ │ │ │ │ ├── include │ │ │ │ │ │ │ ├── CheckIncludes.java │ │ │ │ │ │ │ └── CheckIncludesMapper.java │ │ │ │ │ │ ├── notexists │ │ │ │ │ │ │ ├── CheckNotExists.java │ │ │ │ │ │ │ └── CheckNotExistsMapper.java │ │ │ │ │ │ ├── password │ │ │ │ │ │ │ ├── CheckPassword.java │ │ │ │ │ │ │ └── CheckPasswordMapper.java │ │ │ │ │ │ ├── permissions │ │ │ │ │ │ │ ├── CheckAllowMapper.java │ │ │ │ │ │ │ ├── CheckDenyMapper.java │ │ │ │ │ │ │ └── CheckPermissions.java │ │ │ │ │ │ └── property │ │ │ │ │ │ │ ├── CheckProperty.java │ │ │ │ │ │ │ └── CheckPropertyMapper.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ActionUtils.java │ │ │ │ │ │ └── MessagingUtils.java │ │ │ │ │ ├── core │ │ │ │ │ ├── Apm.java │ │ │ │ │ ├── Property.java │ │ │ │ │ ├── actions │ │ │ │ │ │ ├── ActionDescriptor.java │ │ │ │ │ │ ├── ActionFactory.java │ │ │ │ │ │ ├── ActionFactoryImpl.java │ │ │ │ │ │ ├── ActionMapperRegistry.java │ │ │ │ │ │ ├── ActionMapperRegistryImpl.java │ │ │ │ │ │ ├── ActionResultImpl.java │ │ │ │ │ │ ├── ArgumentDescription.java │ │ │ │ │ │ ├── CommandDescription.java │ │ │ │ │ │ ├── MapperContext.java │ │ │ │ │ │ ├── MapperDescriptor.java │ │ │ │ │ │ ├── MapperDescriptorFactory.java │ │ │ │ │ │ ├── MappingDescriptor.java │ │ │ │ │ │ ├── ParameterDescriptor.java │ │ │ │ │ │ ├── executor │ │ │ │ │ │ │ ├── AbstractActionExecutor.java │ │ │ │ │ │ │ ├── ActionExecutor.java │ │ │ │ │ │ │ ├── ActionExecutorFactory.java │ │ │ │ │ │ │ ├── DryRunActionExecutor.java │ │ │ │ │ │ │ ├── RunActionExecutor.java │ │ │ │ │ │ │ └── ValidationActionExecutor.java │ │ │ │ │ │ └── scanner │ │ │ │ │ │ │ ├── AnnotatedClassRegistry.java │ │ │ │ │ │ │ ├── BundleUtils.java │ │ │ │ │ │ │ ├── ClassScanner.java │ │ │ │ │ │ │ └── RegistryChangedListener.java │ │ │ │ │ ├── crypto │ │ │ │ │ │ ├── DecryptionService.java │ │ │ │ │ │ ├── ProtectTextForm.java │ │ │ │ │ │ └── ProtectTextServlet.java │ │ │ │ │ ├── endpoints │ │ │ │ │ │ ├── DefinitionsServlet.java │ │ │ │ │ │ ├── ReferencesServlet.java │ │ │ │ │ │ ├── ScriptDeleteForm.java │ │ │ │ │ │ ├── ScriptDeleteServlet.java │ │ │ │ │ │ ├── ScriptExecutionForm.java │ │ │ │ │ │ ├── ScriptExecutionServlet.java │ │ │ │ │ │ ├── ScriptExecutionStatusForm.java │ │ │ │ │ │ ├── ScriptListServlet.java │ │ │ │ │ │ ├── ScriptMoveForm.java │ │ │ │ │ │ ├── ScriptMoveServlet.java │ │ │ │ │ │ ├── ScriptUploadForm.java │ │ │ │ │ │ ├── ScriptUploadServlet.java │ │ │ │ │ │ ├── ScriptValidationForm.java │ │ │ │ │ │ ├── ScriptValidationServlet.java │ │ │ │ │ │ ├── dto │ │ │ │ │ │ │ └── ScriptDto.java │ │ │ │ │ │ ├── params │ │ │ │ │ │ │ ├── FileName.java │ │ │ │ │ │ │ ├── RequestParameter.java │ │ │ │ │ │ │ └── RequestParameterInjector.java │ │ │ │ │ │ ├── response │ │ │ │ │ │ │ └── ResponseEntity.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── RequestProcessor.java │ │ │ │ │ ├── executors │ │ │ │ │ │ └── ContextImpl.java │ │ │ │ │ ├── grammar │ │ │ │ │ │ ├── ActionInvoker.java │ │ │ │ │ │ ├── ApmType.java │ │ │ │ │ │ ├── ReferenceFinder.java │ │ │ │ │ │ ├── ReferenceGraph.java │ │ │ │ │ │ ├── ScriptExecutionException.java │ │ │ │ │ │ ├── ScriptRunner.java │ │ │ │ │ │ ├── argument │ │ │ │ │ │ │ ├── ArgumentResolver.java │ │ │ │ │ │ │ ├── ArgumentResolverException.java │ │ │ │ │ │ │ └── Arguments.java │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ ├── Functions.java │ │ │ │ │ │ │ └── StackWithRoot.java │ │ │ │ │ │ ├── datasource │ │ │ │ │ │ │ ├── DataSource.java │ │ │ │ │ │ │ ├── DataSourceInvoker.java │ │ │ │ │ │ │ ├── LevelsDataSource.java │ │ │ │ │ │ │ ├── LowerDataSource.java │ │ │ │ │ │ │ ├── UpperDataSource.java │ │ │ │ │ │ │ └── ValueMapDataSource.java │ │ │ │ │ │ ├── executioncontext │ │ │ │ │ │ │ ├── ExecutionContext.java │ │ │ │ │ │ │ ├── ExternalExecutionContext.java │ │ │ │ │ │ │ ├── RunScript.java │ │ │ │ │ │ │ └── VariableHolder.java │ │ │ │ │ │ ├── parsedscript │ │ │ │ │ │ │ ├── ApmLangParserFactory.java │ │ │ │ │ │ │ ├── InvalidSyntaxException.java │ │ │ │ │ │ │ ├── InvalidSyntaxMessageFactory.java │ │ │ │ │ │ │ └── ParsedScript.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ ├── ImportScript.java │ │ │ │ │ │ │ └── RequiredVariablesChecker.java │ │ │ │ │ ├── history │ │ │ │ │ │ ├── History.java │ │ │ │ │ │ ├── HistoryAutocleanService.java │ │ │ │ │ │ ├── HistoryEntry.java │ │ │ │ │ │ ├── HistoryEntryImpl.java │ │ │ │ │ │ ├── HistoryEntryWriter.java │ │ │ │ │ │ ├── HistoryImpl.java │ │ │ │ │ │ ├── ScriptHistory.java │ │ │ │ │ │ └── ScriptHistoryImpl.java │ │ │ │ │ ├── jobs │ │ │ │ │ │ ├── JobResultsCache.java │ │ │ │ │ │ └── ScriptRunnerJobConsumer.java │ │ │ │ │ ├── launchers │ │ │ │ │ │ ├── AbstractLauncher.java │ │ │ │ │ │ ├── ApmInstallService.java │ │ │ │ │ │ └── StartupScriptLauncher.java │ │ │ │ │ ├── logger │ │ │ │ │ │ ├── Position.java │ │ │ │ │ │ ├── Progress.java │ │ │ │ │ │ └── ProgressEntry.java │ │ │ │ │ ├── progress │ │ │ │ │ │ ├── ProgressHelper.java │ │ │ │ │ │ └── ProgressImpl.java │ │ │ │ │ ├── scripts │ │ │ │ │ │ ├── FileDescriptor.java │ │ │ │ │ │ ├── LaunchMetadata.java │ │ │ │ │ │ ├── MutableScriptWrapper.java │ │ │ │ │ │ ├── ScriptFilters.java │ │ │ │ │ │ ├── ScriptFinderImpl.java │ │ │ │ │ │ ├── ScriptManagerImpl.java │ │ │ │ │ │ ├── ScriptModel.java │ │ │ │ │ │ ├── ScriptNode.java │ │ │ │ │ │ ├── ScriptStorage.java │ │ │ │ │ │ ├── ScriptStorageException.java │ │ │ │ │ │ └── ScriptStorageImpl.java │ │ │ │ │ ├── services │ │ │ │ │ │ ├── CustomDefinitionsProvider.java │ │ │ │ │ │ ├── DefaultDefinitionsProvider.java │ │ │ │ │ │ ├── ModifiedScriptFinder.java │ │ │ │ │ │ ├── ResourceResolverProvider.java │ │ │ │ │ │ ├── ScriptRootPathsProvider.java │ │ │ │ │ │ ├── ScriptsResourceChangeListener.java │ │ │ │ │ │ ├── async │ │ │ │ │ │ │ ├── AsyncScriptExecutor.java │ │ │ │ │ │ │ ├── AsyncScriptExecutorImpl.java │ │ │ │ │ │ │ └── ExecutionStatus.java │ │ │ │ │ │ ├── event │ │ │ │ │ │ │ ├── ApmEvent.java │ │ │ │ │ │ │ ├── EventManager.java │ │ │ │ │ │ │ └── EventManagerImpl.java │ │ │ │ │ │ └── version │ │ │ │ │ │ │ ├── ScriptVersion.java │ │ │ │ │ │ │ ├── ScriptVersionModel.java │ │ │ │ │ │ │ ├── VersionService.java │ │ │ │ │ │ │ └── VersionServiceImpl.java │ │ │ │ │ ├── sessions │ │ │ │ │ │ └── SessionSavingPolicyImpl.java │ │ │ │ │ ├── tools │ │ │ │ │ │ ├── ApmInstallHook.java │ │ │ │ │ │ └── OsgiAwareInstallHook.java │ │ │ │ │ ├── ui │ │ │ │ │ │ ├── datasources │ │ │ │ │ │ │ ├── AbstractDatasourceServlet.java │ │ │ │ │ │ │ ├── HistoryDatasourceServlet.java │ │ │ │ │ │ │ ├── LaunchEnvironmentDatasourceServlet.java │ │ │ │ │ │ │ ├── LaunchModeDatasourceServlet.java │ │ │ │ │ │ │ ├── ScriptsDatasourceServlet.java │ │ │ │ │ │ │ └── SimpleDataSourceBuilder.java │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── ConsoleModel.java │ │ │ │ │ │ │ ├── DashboardTileModel.java │ │ │ │ │ │ │ ├── ReferencesModel.java │ │ │ │ │ │ │ ├── ScriptsRowModel.java │ │ │ │ │ │ │ └── SummaryTableModel.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── DateFormatter.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── AuthorizableManagerImpl.java │ │ │ │ │ │ ├── CalendarUtils.java │ │ │ │ │ │ ├── LabelUtils.java │ │ │ │ │ │ ├── Pagination.java │ │ │ │ │ │ ├── PathUtils.java │ │ │ │ │ │ ├── ResourceMixinUtil.java │ │ │ │ │ │ ├── RuntimeUtils.java │ │ │ │ │ │ ├── ServletUtils.java │ │ │ │ │ │ ├── mocks │ │ │ │ │ │ ├── MockGroup.java │ │ │ │ │ │ ├── MockPrincipal.java │ │ │ │ │ │ └── MockUser.java │ │ │ │ │ │ └── sling │ │ │ │ │ │ ├── OperateCallback.java │ │ │ │ │ │ ├── OperateException.java │ │ │ │ │ │ ├── ResolveCallback.java │ │ │ │ │ │ ├── ResolveException.java │ │ │ │ │ │ └── SlingHelper.java │ │ │ │ │ ├── install │ │ │ │ │ └── launchers │ │ │ │ │ │ └── ApmInstallService.java │ │ │ │ │ ├── main │ │ │ │ │ ├── CompositeAction.java │ │ │ │ │ ├── RandomPasswordGenerator.java │ │ │ │ │ ├── actions │ │ │ │ │ │ ├── ActionGroup.java │ │ │ │ │ │ ├── CommonFlags.java │ │ │ │ │ │ ├── addchildren │ │ │ │ │ │ │ ├── AddChildren.java │ │ │ │ │ │ │ └── AddChildrenMapper.java │ │ │ │ │ │ ├── addparents │ │ │ │ │ │ │ ├── AddParents.java │ │ │ │ │ │ │ ├── AddParentsMapper.java │ │ │ │ │ │ │ └── AddToGroupMapper.java │ │ │ │ │ │ ├── allow │ │ │ │ │ │ │ ├── Allow.java │ │ │ │ │ │ │ └── AllowMapper.java │ │ │ │ │ │ ├── clearpermissions │ │ │ │ │ │ │ ├── ClearMapper.java │ │ │ │ │ │ │ ├── ClearPermissionsMapper.java │ │ │ │ │ │ │ ├── Purge.java │ │ │ │ │ │ │ └── RemoveAll.java │ │ │ │ │ │ ├── createauthorizable │ │ │ │ │ │ │ ├── CreateAuthorizable.java │ │ │ │ │ │ │ ├── CreateAuthorizableStrategy.java │ │ │ │ │ │ │ ├── CreateGroupMapper.java │ │ │ │ │ │ │ ├── CreateSystemUserMapper.java │ │ │ │ │ │ │ └── CreateUserMapper.java │ │ │ │ │ │ ├── deletegroup │ │ │ │ │ │ │ ├── DeleteGroup.java │ │ │ │ │ │ │ └── DeleteGroupMapper.java │ │ │ │ │ │ ├── deleteuser │ │ │ │ │ │ │ ├── DeleteUserMapper.java │ │ │ │ │ │ │ ├── DestroyUser.java │ │ │ │ │ │ │ └── RemoveUser.java │ │ │ │ │ │ ├── deny │ │ │ │ │ │ │ ├── Deny.java │ │ │ │ │ │ │ └── DenyMapper.java │ │ │ │ │ │ ├── forauthorizable │ │ │ │ │ │ │ ├── ForAuthorizable.java │ │ │ │ │ │ │ ├── ForGroupMapper.java │ │ │ │ │ │ │ └── ForUserMapper.java │ │ │ │ │ │ ├── internal │ │ │ │ │ │ │ ├── DefineMapper.java │ │ │ │ │ │ │ ├── ForEachMapper.java │ │ │ │ │ │ │ ├── ImportMapper.java │ │ │ │ │ │ │ ├── RequireMapper.java │ │ │ │ │ │ │ ├── RunMapper.java │ │ │ │ │ │ │ └── datasources │ │ │ │ │ │ │ │ ├── LevelsMapper.java │ │ │ │ │ │ │ │ ├── LowerMapper.java │ │ │ │ │ │ │ │ ├── UpperMapper.java │ │ │ │ │ │ │ │ └── ValueMapMapper.java │ │ │ │ │ │ ├── removechildren │ │ │ │ │ │ │ ├── RemoveChildren.java │ │ │ │ │ │ │ └── RemoveChildrenMapper.java │ │ │ │ │ │ ├── removechildrengroups │ │ │ │ │ │ │ ├── ClearFromGroupDetacher.java │ │ │ │ │ │ │ ├── RemoveChildrenGroups.java │ │ │ │ │ │ │ └── RemoveChildrenGroupsMapper.java │ │ │ │ │ │ ├── removeparents │ │ │ │ │ │ │ ├── RemoveFromGroupMapper.java │ │ │ │ │ │ │ ├── RemoveParents.java │ │ │ │ │ │ │ └── RemoveParentsMapper.java │ │ │ │ │ │ ├── removeparentsgroups │ │ │ │ │ │ │ ├── RemoveParentsGroups.java │ │ │ │ │ │ │ └── RemoveParentsGroupsMapper.java │ │ │ │ │ │ ├── removeproperty │ │ │ │ │ │ │ ├── RemoveProperty.java │ │ │ │ │ │ │ └── RemovePropertyMapper.java │ │ │ │ │ │ ├── save │ │ │ │ │ │ │ ├── Save.java │ │ │ │ │ │ │ └── SaveMapper.java │ │ │ │ │ │ ├── sessionsave │ │ │ │ │ │ │ ├── SessionSave.java │ │ │ │ │ │ │ └── SessionSaveMapper.java │ │ │ │ │ │ ├── setpassword │ │ │ │ │ │ │ ├── SetPassword.java │ │ │ │ │ │ │ └── SetPasswordMapper.java │ │ │ │ │ │ └── setproperty │ │ │ │ │ │ │ ├── SetProperty.java │ │ │ │ │ │ │ └── SetPropertyMapper.java │ │ │ │ │ ├── permissions │ │ │ │ │ │ ├── PermissionActionHelper.java │ │ │ │ │ │ ├── PrivilegeGroup.java │ │ │ │ │ │ ├── Restrictions.java │ │ │ │ │ │ ├── exceptions │ │ │ │ │ │ │ └── PermissionException.java │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── JackrabbitAccessControlListUtil.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ActionUtils.java │ │ │ │ │ │ ├── MessagingUtils.java │ │ │ │ │ │ └── PathUtils.java │ │ │ │ │ └── runmodes │ │ │ │ │ └── services │ │ │ │ │ └── RunModesProviderService.java │ │ │ └── resources │ │ │ │ ├── apidefinition │ │ │ │ ├── README.md │ │ │ │ └── apm-api-definition.yaml │ │ │ │ └── com │ │ │ │ └── cognifide │ │ │ │ └── apm │ │ │ │ └── core │ │ │ │ └── ui │ │ │ │ └── models │ │ │ │ └── content.apm │ │ │ └── test │ │ │ ├── groovy │ │ │ └── com │ │ │ │ └── cognifide │ │ │ │ └── apm │ │ │ │ └── core │ │ │ │ ├── actions │ │ │ │ ├── MapperDescriptorTest.groovy │ │ │ │ ├── MapperWithWrongReturnType.groovy │ │ │ │ ├── MapperWithoutAnnotation.groovy │ │ │ │ └── SampleMapper.groovy │ │ │ │ └── grammar │ │ │ │ ├── ApmLangParserHelper.groovy │ │ │ │ ├── ArgumentResolverTest.groovy │ │ │ │ ├── ReferenceFinderTest.groovy │ │ │ │ ├── ScriptRunnerTest.groovy │ │ │ │ ├── common │ │ │ │ └── StackWithRootTest.groovy │ │ │ │ └── parsedscript │ │ │ │ └── ParsedScriptTest.groovy │ │ │ └── resources │ │ │ ├── content.apm │ │ │ ├── define-map.apm │ │ │ ├── define.apm │ │ │ ├── filename.apm │ │ │ ├── foreach.apm │ │ │ ├── import-and-run1.apm │ │ │ ├── import-and-run2.apm │ │ │ ├── import-and-run3.apm │ │ │ ├── import-deep-define.apm │ │ │ ├── import-define.apm │ │ │ ├── import.apm │ │ │ ├── includes │ │ │ ├── cycle-a.apm │ │ │ ├── cycle-b.apm │ │ │ ├── cycle-c.apm │ │ │ ├── import-a.apm │ │ │ ├── import-b.apm │ │ │ ├── import-c.apm │ │ │ ├── run-a.apm │ │ │ ├── run-b.apm │ │ │ └── run-c.apm │ │ │ ├── invalid │ │ │ ├── invalid1.apm │ │ │ ├── invalid10.apm │ │ │ ├── invalid11.apm │ │ │ ├── invalid12.apm │ │ │ ├── invalid13.apm │ │ │ ├── invalid14.apm │ │ │ ├── invalid2.apm │ │ │ ├── invalid3.apm │ │ │ ├── invalid4.apm │ │ │ ├── invalid5.apm │ │ │ ├── invalid6.apm │ │ │ ├── invalid7.apm │ │ │ ├── invalid8.apm │ │ │ └── invalid9.apm │ │ │ ├── macro.apm │ │ │ └── run-macro.apm │ ├── ui.apps.base │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── content │ │ │ └── jcr_root │ │ │ └── apps │ │ │ ├── apm │ │ │ ├── .content.xml │ │ │ ├── clientlibs │ │ │ │ ├── externals │ │ │ │ │ └── ace │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── js.txt │ │ │ │ │ │ └── js │ │ │ │ │ │ ├── THIRD-PARTY.txt │ │ │ │ │ │ ├── ace.js │ │ │ │ │ │ ├── ext-beautify.js │ │ │ │ │ │ ├── ext-chromevox.js │ │ │ │ │ │ ├── ext-elastic_tabstops_lite.js │ │ │ │ │ │ ├── ext-emmet.js │ │ │ │ │ │ ├── ext-error_marker.js │ │ │ │ │ │ ├── ext-keybinding_menu.js │ │ │ │ │ │ ├── ext-language_tools.js │ │ │ │ │ │ ├── ext-linking.js │ │ │ │ │ │ ├── ext-modelist.js │ │ │ │ │ │ ├── ext-old_ie.js │ │ │ │ │ │ ├── ext-searchbox.js │ │ │ │ │ │ ├── ext-settings_menu.js │ │ │ │ │ │ ├── ext-spellcheck.js │ │ │ │ │ │ ├── ext-split.js │ │ │ │ │ │ ├── ext-static_highlight.js │ │ │ │ │ │ ├── ext-statusbar.js │ │ │ │ │ │ ├── ext-textarea.js │ │ │ │ │ │ ├── ext-themelist.js │ │ │ │ │ │ ├── ext-whitespace.js │ │ │ │ │ │ ├── keybinding-emacs.js │ │ │ │ │ │ ├── keybinding-vim.js │ │ │ │ │ │ ├── mode-cqsm.js │ │ │ │ │ │ ├── mode-text.js │ │ │ │ │ │ ├── snippets │ │ │ │ │ │ ├── cqsm.js │ │ │ │ │ │ └── text.js │ │ │ │ │ │ ├── theme-chrome.js │ │ │ │ │ │ └── token_tooltip.js │ │ │ │ └── views │ │ │ │ │ ├── dashboard │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ └── css │ │ │ │ │ │ └── styles.less │ │ │ │ │ ├── editor │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ ├── css │ │ │ │ │ │ └── styles.less │ │ │ │ │ ├── js.txt │ │ │ │ │ └── js │ │ │ │ │ │ └── apm-editor.js │ │ │ │ │ ├── editorGrid │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ ├── css │ │ │ │ │ │ └── styles.less │ │ │ │ │ ├── js.txt │ │ │ │ │ └── js │ │ │ │ │ │ └── apm-editor-grid.js │ │ │ │ │ ├── history │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ ├── css │ │ │ │ │ │ └── history.less │ │ │ │ │ ├── img │ │ │ │ │ │ └── icons │ │ │ │ │ │ │ └── summary.png │ │ │ │ │ ├── js.txt │ │ │ │ │ └── js │ │ │ │ │ │ └── apm-history.js │ │ │ │ │ ├── moveItem │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── js.txt │ │ │ │ │ └── js │ │ │ │ │ │ └── moveitem.js │ │ │ │ │ ├── references │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ └── css │ │ │ │ │ │ └── references.less │ │ │ │ │ ├── scripts │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ ├── css │ │ │ │ │ │ └── styles.less │ │ │ │ │ ├── js.txt │ │ │ │ │ └── js │ │ │ │ │ │ ├── apm-scripts.js │ │ │ │ │ │ ├── deleteitem.js │ │ │ │ │ │ ├── fileupload.js │ │ │ │ │ │ └── view-mode.js │ │ │ │ │ ├── summary │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ └── css │ │ │ │ │ │ └── styles.less │ │ │ │ │ └── viewer │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ ├── css │ │ │ │ │ └── styles.less │ │ │ │ │ ├── js.txt │ │ │ │ │ └── js │ │ │ │ │ └── apm-viewer.js │ │ │ ├── components │ │ │ │ ├── console │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── console.html │ │ │ │ ├── dashboardTile │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── dashboardTile.html │ │ │ │ ├── historyRow │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── historyRow.html │ │ │ │ ├── moveitem │ │ │ │ │ └── moveitem.jsp │ │ │ │ ├── reference │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── reference.html │ │ │ │ ├── saveAndCloseButton │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── saveAndCloseButton.html │ │ │ │ ├── scriptDetails │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── scriptDetails.html │ │ │ │ ├── scriptsRow │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── scriptsRow.html │ │ │ │ └── summaryTable │ │ │ │ │ ├── .content.xml │ │ │ │ │ └── summaryTable.html │ │ │ ├── fragments │ │ │ │ ├── .content.xml │ │ │ │ └── scriptLauncher │ │ │ │ │ └── .content.xml │ │ │ └── views │ │ │ │ ├── .content.xml │ │ │ │ ├── dashboard │ │ │ │ └── .content.xml │ │ │ │ ├── editor │ │ │ │ └── .content.xml │ │ │ │ ├── history │ │ │ │ └── .content.xml │ │ │ │ ├── move │ │ │ │ └── .content.xml │ │ │ │ ├── references │ │ │ │ └── .content.xml │ │ │ │ ├── scripts │ │ │ │ └── .content.xml │ │ │ │ ├── summary │ │ │ │ └── .content.xml │ │ │ │ └── viewer │ │ │ │ └── .content.xml │ │ │ └── cq │ │ │ └── core │ │ │ └── content │ │ │ └── nav │ │ │ └── tools │ │ │ └── security │ │ │ └── .content.xml │ ├── ui.apps.cloud │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── content │ │ │ ├── META-INF │ │ │ └── vault │ │ │ │ ├── config.xml │ │ │ │ └── filter.xml │ │ │ └── jcr_root │ │ │ └── apps │ │ │ └── apm │ │ │ └── config │ │ │ ├── org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment~apm.cfg.json │ │ │ ├── org.apache.sling.jcr.repoinit.RepositoryInitializer~apm-script-mixin.cfg.json │ │ │ ├── org.apache.sling.jcr.repoinit.RepositoryInitializer~apm-system-user.cfg.json │ │ │ ├── org.apache.sling.jcr.repoinit.RepositoryInitializer~conf-apm-scripts.cfg.json │ │ │ └── org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~apm-system-user.cfg.json │ └── ui.apps │ │ ├── build.gradle.kts │ │ └── src │ │ └── main │ │ └── content │ │ ├── META-INF │ │ └── vault │ │ │ ├── filter.xml │ │ │ └── nodetypes.cnd │ │ └── jcr_root │ │ ├── _rep_policy.xml │ │ ├── apps │ │ └── apm │ │ │ └── config │ │ │ ├── org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-apm.config │ │ │ └── org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-apm-system-user.config │ │ ├── conf │ │ └── apm │ │ │ └── scripts │ │ │ └── .content.xml │ │ └── home │ │ └── users │ │ └── system │ │ └── apm-system-user │ │ └── .content.xml └── common.gradle.kts ├── build.gradle.kts ├── buildSrc └── build.gradle.kts ├── docs ├── README.md ├── aemaacs.md ├── apm-dashboard.png ├── apm-editor.png ├── apm-execution-summary.png ├── apm-history.png ├── apm-logo.png ├── apm-references.png ├── apm-scripts-0.png ├── apm-scripts-1.png ├── apm-scripts-2.png ├── backend-api.md ├── custom-actions.md ├── grammar.md ├── launchers.md ├── permissions.md ├── ui.md └── wtt-logo.png ├── examples ├── build.gradle.kts └── src │ └── main │ └── content │ ├── META-INF │ └── vault │ │ ├── definition │ │ └── thumbnail.png │ │ └── filter.xml │ └── jcr_root │ └── conf │ └── apm │ └── scripts │ └── examples │ ├── authorizables.apm │ ├── authorizables.apm.dir │ └── .content.xml │ ├── contexts.apm │ ├── contexts.apm.dir │ └── .content.xml │ ├── import-and-run.apm │ ├── import-and-run.apm.dir │ └── .content.xml │ ├── permissions.apm │ ├── permissions.apm.dir │ └── .content.xml │ └── to-import │ ├── script-to-import.apm │ └── script-to-import.apm.dir │ └── .content.xml ├── gradle.properties ├── gradle ├── common.gradle.kts ├── gradle.properties └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── misc ├── apm-logo-blue.svg └── apm-logo-white.svg └── settings.gradle.kts /.gitattributes: -------------------------------------------------------------------------------- 1 | * -text -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name-template: 'Release APM $RESOLVED_VERSION' 2 | tag-template: 'apm-$RESOLVED_VERSION' 3 | template: | 4 | $CHANGES 5 | 6 | All contributors: $CONTRIBUTORS 7 | 8 | categories: 9 | - title: '🚀 Features' 10 | labels: 11 | - 'feature' 12 | - 'enhancement' 13 | - title: '🐛 Bug Fixes' 14 | labels: 15 | - 'fix' 16 | - 'bugfix' 17 | - 'bug' 18 | - title: '🧰 Maintenance' 19 | labels: 20 | - 'maintenance' 21 | - 'documentation' 22 | - 'other' 23 | version-resolver: 24 | major: 25 | labels: 26 | - 'major' 27 | minor: 28 | labels: 29 | - 'minor' 30 | patch: 31 | labels: 32 | - 'patch' 33 | default: patch 34 | exclude-labels: 35 | - 'skip-changelog' -------------------------------------------------------------------------------- /.github/workflows/gradle.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Gradle 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle 3 | 4 | name: Java CI with Gradle 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up JDK 1.8 20 | uses: actions/setup-java@v1 21 | with: 22 | java-version: 1.8 23 | - name: Grant execute permission for gradlew 24 | run: chmod +x gradlew 25 | - name: Build with Gradle 26 | run: ./gradlew build --stacktrace 27 | -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name: Release Drafter 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | update_release_draft: 10 | runs-on: ubuntu-latest 11 | steps: 12 | # Drafts your next Release notes as Pull Requests are merged into "master" 13 | - uses: release-drafter/release-drafter@v5 14 | env: 15 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .gitignore support plugin (hsz.mobi) 2 | 3 | ### Java template 4 | *.class 5 | target/ 6 | build/ 7 | generated/ 8 | .gradle/ 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.ear 17 | 18 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 19 | hs_err_pid* 20 | 21 | # IDE files 22 | *.iml 23 | .idea/ 24 | 25 | # Generated and temporary files 26 | *.log 27 | log.txt 28 | *.project 29 | atlassian-ide-plugin.xml 30 | 31 | #eclipse 32 | .settings 33 | .classpath 34 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 | 7 | ## [Unreleased] 8 | 9 | ## 5.0.0-RC5 10 | 11 | ### Fixed 12 | - #267 - Fixed path in index definition 13 | 14 | ### Changed 15 | - #269 - Changed names of indexes due to the requirements of AEM as Cloud 16 | 17 | ## 5.0.0-RC4 18 | 19 | ### Fixed 20 | - #265 - Shortened bundles' names 21 | 22 | ## 5.0.0-RC3 23 | 24 | ### Fixed 25 | - #262 - Excluded classes generated by lombok from javadoc task 26 | 27 | ### Changed 28 | - #263 - Added CQ Actions bundles to APM package. Removed redundant private packages 29 | 30 | ## 5.0.0-RC2 31 | 32 | ### Fixed 33 | - #258 - Fixed actions which use @Flag annotation 34 | 35 | ### Changed 36 | - #260 - Updated GAP to the latest version. Fixed default task to deploy packages in proper order. Changed antlr and kotlin bundles to private packages -------------------------------------------------------------------------------- /app/aem/all.cloud/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.cognifide.aem.package") 3 | `maven-publish` 4 | signing 5 | } 6 | 7 | description = "APM (AEM Permission Management) - AEM All-In-One Package (Cloud)" 8 | 9 | evaluationDependsOn(":app:aem:ui.apps.cloud") 10 | 11 | apply(from = rootProject.file("app/common.gradle.kts")) 12 | apply(from = rootProject.file("app/aem/common.gradle.kts")) 13 | 14 | aem { 15 | tasks { 16 | packageCompose { 17 | nestPackageProject(":app:aem:ui.apps.cloud") { 18 | dirPath.set("/apps/apm-packages/application/install") 19 | } 20 | } 21 | } 22 | } 23 | 24 | publishing { 25 | publications { 26 | register("apmCrx") { 27 | groupId = project.group.toString() + ".crx" 28 | artifact(tasks["packageCompose"]) 29 | afterEvaluate { 30 | artifactId = "apm-" + project.name 31 | version = rootProject.version 32 | } 33 | pom { 34 | name.set("APM - " + project.name) 35 | description.set(project.description) 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/aem/all.cloud/src/main/content/META-INF/vault/filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/aem/all/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.cognifide.aem.package") 3 | `maven-publish` 4 | signing 5 | } 6 | 7 | description = "APM (AEM Permission Management) - AEM All-In-One Package" 8 | 9 | evaluationDependsOn(":app:aem:ui.apps") 10 | 11 | apply(from = rootProject.file("app/common.gradle.kts")) 12 | apply(from = rootProject.file("app/aem/common.gradle.kts")) 13 | 14 | aem { 15 | tasks { 16 | packageCompose { 17 | nestPackageProject(":app:aem:ui.apps") { 18 | dirPath.set("/apps/apm-packages/application/install") 19 | } 20 | } 21 | } 22 | } 23 | 24 | publishing { 25 | publications { 26 | register("apmCrx") { 27 | groupId = project.group.toString() + ".crx" 28 | artifact(tasks["packageCompose"]) 29 | afterEvaluate { 30 | artifactId = "apm-" + project.name 31 | version = rootProject.version 32 | } 33 | pom { 34 | name.set("APM - " + project.name) 35 | description.set(project.description) 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/aem/all/src/main/content/META-INF/vault/filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/aem/common.gradle.kts: -------------------------------------------------------------------------------- 1 | /** 2 | * Common configuration for AEM application artifacts 3 | */ 4 | import com.cognifide.gradle.aem.AemExtension 5 | import com.cognifide.gradle.aem.bundle.tasks.bundle 6 | 7 | group = "com.cognifide.apm" 8 | 9 | plugins.withId("com.cognifide.aem.common") { 10 | configure { 11 | `package` { 12 | appPath.set("/apps/apm") 13 | commonDir.set(rootProject.file("app/aem/common/package")) 14 | validator { 15 | enabled.set(false) 16 | } 17 | } 18 | } 19 | } 20 | 21 | plugins.withId("com.cognifide.aem.bundle") { 22 | tasks { 23 | withType { 24 | bundle { 25 | category = "apm" 26 | vendor = "wttech" 27 | license = "http://www.apache.org/licenses/LICENSE-2.0.txt" 28 | bnd("-plugin org.apache.sling.caconfig.bndplugin.ConfigurationClassScannerPlugin") 29 | } 30 | } 31 | } 32 | 33 | dependencies { 34 | "implementation"("com.adobe.aem:uber-jar:6.4.0:apis") 35 | "implementation"("org.osgi:osgi.cmpn:6.0.0") 36 | "implementation"("org.osgi:org.osgi.core:6.0.0") 37 | "implementation"("javax.jcr:jcr:2.0") 38 | "implementation"("javax.annotation:javax.annotation-api:1.3.2") 39 | "implementation"("javax.inject:javax.inject:1") 40 | "implementation"("javax.servlet:javax.servlet-api:3.1.0") 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/aem/common/package/defaults/META-INF/vault/definition/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wttech/APM/16cc9ab4e1a3b161a75e66514ae253435b524d18/app/aem/common/package/defaults/META-INF/vault/definition/thumbnail.png -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/Action.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.actions; 21 | 22 | import com.cognifide.apm.api.exceptions.ActionExecutionException; 23 | 24 | public interface Action { 25 | 26 | ActionResult simulate(Context context) throws ActionExecutionException; 27 | 28 | ActionResult execute(Context context) throws ActionExecutionException; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/ActionResult.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.actions; 21 | 22 | import com.cognifide.apm.api.status.Status; 23 | import java.util.List; 24 | 25 | public interface ActionResult { 26 | 27 | void logMessage(String message); 28 | 29 | void logWarning(String warning); 30 | 31 | void logError(String error); 32 | 33 | void changeStatus(Status status, String message); 34 | 35 | List getMessages(); 36 | 37 | void setAuthorizable(String authorizable); 38 | 39 | ActionResult merge(ActionResult... actionResult); 40 | 41 | ActionResult merge(List actionResult); 42 | 43 | String getAuthorizable(); 44 | 45 | Status getStatus(); 46 | } 47 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/Message.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.actions; 21 | 22 | public final class Message { 23 | 24 | public static final String ERROR = "error"; 25 | 26 | private String text; 27 | 28 | private String type; 29 | 30 | public Message(String text, String type) { 31 | this.text = text; 32 | this.type = type; 33 | } 34 | 35 | private Message() { 36 | // GSON library needs this 37 | } 38 | 39 | public String getText() { 40 | return text; 41 | } 42 | 43 | public String getType() { 44 | return type; 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/SessionSavingPolicy.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.actions; 21 | 22 | import javax.jcr.RepositoryException; 23 | import javax.jcr.Session; 24 | 25 | public interface SessionSavingPolicy { 26 | 27 | void setMode(SessionSavingMode mode); 28 | 29 | void save(Session session, SessionSavingMode sessionSavingMode) throws RepositoryException; 30 | } 31 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/annotations/Flag.java: -------------------------------------------------------------------------------- 1 | /* 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | 21 | package com.cognifide.apm.api.actions.annotations; 22 | 23 | import java.lang.annotation.ElementType; 24 | import java.lang.annotation.Repeatable; 25 | import java.lang.annotation.Retention; 26 | import java.lang.annotation.RetentionPolicy; 27 | import java.lang.annotation.Target; 28 | 29 | @Retention(RetentionPolicy.RUNTIME) 30 | @Target(ElementType.PARAMETER) 31 | @Repeatable(Flags.class) 32 | public @interface Flag { 33 | 34 | String value(); 35 | 36 | String description() default ""; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/annotations/Flags.java: -------------------------------------------------------------------------------- 1 | /* 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | 21 | package com.cognifide.apm.api.actions.annotations; 22 | 23 | import java.lang.annotation.ElementType; 24 | import java.lang.annotation.Retention; 25 | import java.lang.annotation.RetentionPolicy; 26 | import java.lang.annotation.Target; 27 | 28 | @Retention(RetentionPolicy.RUNTIME) 29 | @Target(ElementType.PARAMETER) 30 | public @interface Flags { 31 | 32 | Flag[] value() default {}; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/annotations/Mapper.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.actions.annotations; 21 | 22 | import java.lang.annotation.ElementType; 23 | import java.lang.annotation.Inherited; 24 | import java.lang.annotation.Retention; 25 | import java.lang.annotation.RetentionPolicy; 26 | import java.lang.annotation.Target; 27 | 28 | @Target(ElementType.TYPE) 29 | @Retention(RetentionPolicy.RUNTIME) 30 | @Inherited 31 | public @interface Mapper { 32 | 33 | String value(); 34 | 35 | String group() default ""; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/annotations/Mapping.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.actions.annotations; 21 | 22 | import java.lang.annotation.ElementType; 23 | import java.lang.annotation.Retention; 24 | import java.lang.annotation.RetentionPolicy; 25 | import java.lang.annotation.Target; 26 | 27 | @Target(ElementType.METHOD) 28 | @Retention(RetentionPolicy.RUNTIME) 29 | public @interface Mapping { 30 | 31 | String[] examples() default {}; 32 | 33 | String reference() default ""; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/annotations/Named.java: -------------------------------------------------------------------------------- 1 | /* 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | 21 | package com.cognifide.apm.api.actions.annotations; 22 | 23 | import java.lang.annotation.ElementType; 24 | import java.lang.annotation.Retention; 25 | import java.lang.annotation.RetentionPolicy; 26 | import java.lang.annotation.Target; 27 | 28 | @Retention(RetentionPolicy.RUNTIME) 29 | @Target(ElementType.PARAMETER) 30 | public @interface Named { 31 | 32 | String value(); 33 | 34 | String description() default ""; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/actions/annotations/Required.java: -------------------------------------------------------------------------------- 1 | /* 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | 21 | package com.cognifide.apm.api.actions.annotations; 22 | 23 | import java.lang.annotation.ElementType; 24 | import java.lang.annotation.Retention; 25 | import java.lang.annotation.RetentionPolicy; 26 | import java.lang.annotation.Target; 27 | 28 | @Retention(RetentionPolicy.RUNTIME) 29 | @Target(ElementType.PARAMETER) 30 | public @interface Required { 31 | 32 | String value() default ""; 33 | 34 | String description() default ""; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/exceptions/ActionCreationException.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.exceptions; 21 | 22 | public class ActionCreationException extends ActionException { 23 | 24 | public ActionCreationException(final String message) { 25 | super(message); 26 | } 27 | 28 | public ActionCreationException(final String message, final Throwable throwable) { 29 | super(message, throwable); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/exceptions/ActionException.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.exceptions; 21 | 22 | public class ActionException extends ExecutionException { 23 | 24 | public ActionException(final String message) { 25 | super(message); 26 | } 27 | 28 | public ActionException(final String message, final Throwable throwable) { 29 | super(message, throwable); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/exceptions/ActionExecutionException.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.exceptions; 21 | 22 | public class ActionExecutionException extends ActionException { 23 | 24 | public ActionExecutionException(final String message) { 25 | super(message); 26 | } 27 | 28 | public ActionExecutionException(final String message, final Throwable throwable) { 29 | super(message, throwable); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/exceptions/AuthorizableNotFoundException.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.exceptions; 21 | 22 | public class AuthorizableNotFoundException extends ActionException { 23 | 24 | public AuthorizableNotFoundException(String message) { 25 | super(message); 26 | } 27 | 28 | public AuthorizableNotFoundException(String message, Throwable throwable) { 29 | super(message, throwable); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/exceptions/ExecutionException.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.exceptions; 21 | 22 | public class ExecutionException extends Exception { 23 | 24 | public ExecutionException(final String message) { 25 | super(message); 26 | } 27 | 28 | public ExecutionException(final Throwable throwable) { 29 | super(throwable); 30 | } 31 | 32 | public ExecutionException(final String message, final Throwable throwable) { 33 | super(message, throwable); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/exceptions/InvalidActionMapperException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.exceptions; 21 | 22 | public class InvalidActionMapperException extends RuntimeException { 23 | 24 | public InvalidActionMapperException(final String message) { 25 | super(message); 26 | } 27 | 28 | public InvalidActionMapperException(final String message, final Throwable throwable) { 29 | super(message, throwable); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/scripts/MutableScript.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.scripts; 21 | 22 | import java.util.Date; 23 | import org.apache.sling.api.resource.PersistenceException; 24 | 25 | public interface MutableScript extends Script { 26 | 27 | /** 28 | * Set validation status 29 | */ 30 | void setValid(boolean flag) throws PersistenceException; 31 | 32 | /** 33 | * Mark after execution 34 | */ 35 | void setLastExecuted(Date date) throws PersistenceException; 36 | 37 | /** 38 | * Set checksum 39 | */ 40 | void setChecksum(String checksum) throws PersistenceException; 41 | } 42 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/services/DefinitionsProvider.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.services; 21 | 22 | import java.util.Map; 23 | 24 | public interface DefinitionsProvider { 25 | 26 | Map getPredefinedDefinitions(); 27 | } 28 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/services/ExecutionMode.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.services; 21 | 22 | public enum ExecutionMode { 23 | 24 | RUN, AUTOMATIC_RUN, DRY_RUN, VALIDATION 25 | 26 | } 27 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/services/ExecutionResult.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.services; 21 | 22 | import com.cognifide.apm.api.status.Status; 23 | import java.util.Calendar; 24 | import java.util.List; 25 | 26 | public interface ExecutionResult { 27 | 28 | List getEntries(); 29 | 30 | boolean isSuccess(); 31 | 32 | Entry getLastError(); 33 | 34 | String getExecutor(); 35 | 36 | Calendar getStartTime(); 37 | 38 | long determineExecutionDuration(); 39 | 40 | interface Entry { 41 | 42 | String getAuthorizable(); 43 | 44 | String getCommand(); 45 | 46 | List getMessages(); 47 | 48 | List getParameters(); 49 | 50 | Status getStatus(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/services/RunModesProvider.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.services; 21 | 22 | import java.util.Set; 23 | 24 | public interface RunModesProvider { 25 | 26 | Set getRunModes(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/aem/core/src/main/java/com/cognifide/apm/api/services/ScriptFinder.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * ========================LICENSE_START================================= 3 | * AEM Permission Management 4 | * %% 5 | * Copyright (C) 2013 Wunderman Thompson Technology 6 | * %% 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * =========================LICENSE_END================================== 19 | */ 20 | package com.cognifide.apm.api.services; 21 | 22 | import com.cognifide.apm.api.scripts.Script; 23 | import java.util.List; 24 | import java.util.function.Predicate; 25 | import org.apache.sling.api.resource.ResourceResolver; 26 | 27 | public interface ScriptFinder { 28 | 29 | /** 30 | * Find script by relative or absolute path 31 | */ 32 | Script find(String path, ResourceResolver resolver); 33 | 34 | /** 35 | * Find all available scripts 36 | */ 37 | List