From 723b8ae954395837c0019b4cddd8e4b4c334962f Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 9 Oct 2012 07:14:38 +0000 Subject: [PATCH] [MRM-1686] stop support of struts2 webapp. git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1395875 13f79535-47bb-0310-9956-ffa450edef68 --- .../archiva-web/archiva-webapp/pom.xml | 1572 ----------------- .../src/appserver-base/conf/archiva.xml | 1 - .../src/appserver-base/conf/shared.xml | 1 - .../src/appserver-base/logs/.donotdelete | 0 .../archiva-webapp/src/jetty-env-mysql.xml | 135 -- .../archiva-webapp/src/jetty-env-postgres.xml | 70 - .../archiva-webapp/src/jetty-env.xml | 68 - .../web/action/AbstractActionSupport.java | 389 ---- .../action/AbstractRepositoryBasedAction.java | 64 - .../archiva/web/action/BrowseAction.java | 393 ----- .../web/action/DeleteArtifactAction.java | 330 ---- .../archiva/web/action/GlobalResults.java | 30 - .../archiva/web/action/MergeAction.java | 351 ---- .../archiva/web/action/SearchAction.java | 727 -------- .../web/action/ShowArtifactAction.java | 628 ------- .../archiva/web/action/UploadAction.java | 722 -------- .../web/action/admin/SchedulerAction.java | 134 -- .../web/action/admin/SystemStatusAction.java | 138 -- .../appearance/AbstractAppearanceAction.java | 101 -- .../EditOrganisationInfoAction.java | 90 - .../appearance/OrganisationInfoAction.java | 34 - .../proxy/AbstractProxyConnectorAction.java | 145 -- .../AbstractProxyConnectorFormAction.java | 488 ----- .../proxy/AddProxyConnectorAction.java | 87 - .../proxy/DeleteProxyConnectorAction.java | 112 -- .../proxy/DisableProxyConnectorAction.java | 107 -- .../proxy/EditProxyConnectorAction.java | 117 -- .../proxy/EnableProxyConnectorAction.java | 107 -- .../proxy/ProxyConnectorsAction.java | 84 - .../proxy/SortProxyConnectorsAction.java | 148 -- .../legacy/AddLegacyArtifactPathAction.java | 222 --- .../DeleteLegacyArtifactPathAction.java | 80 - .../legacy/LegacyArtifactPathAction.java | 106 -- .../network/NetworkConfigurationAction.java | 98 - .../ConfigureNetworkProxyAction.java | 232 --- .../networkproxies/NetworkProxiesAction.java | 90 - .../AbstractManagedRepositoriesAction.java | 33 - .../AbstractRemoteRepositoriesAction.java | 75 - .../AbstractRepositoriesAdminAction.java | 86 - .../AddManagedRepositoryAction.java | 160 -- .../AddRemoteRepositoryAction.java | 84 - .../DeleteManagedRepositoryAction.java | 124 -- .../DeleteRemoteRepositoryAction.java | 106 -- .../DeleteRepositoryGroupAction.java | 120 -- .../EditManagedRepositoryAction.java | 213 --- .../EditRemoteRepositoryAction.java | 149 -- .../repositories/RepositoriesAction.java | 222 --- .../repositories/RepositoryGroupsAction.java | 191 -- .../repositories/SortRepositoriesAction.java | 170 -- .../scanning/RepositoryScanningAction.java | 354 ---- .../action/reports/GenerateReportAction.java | 774 -------- .../reports/ViewAuditLogReportAction.java | 408 ----- .../interceptor/ConfigurationInterceptor.java | 64 - .../web/mapper/RepositoryActionMapper.java | 232 --- .../archiva/web/tags/CopyPasteSnippetTag.java | 207 --- .../archiva/web/tags/DependencyTree.java | 209 --- .../archiva/web/tags/DependencyTreeTag.java | 239 --- .../archiva/web/tags/ExpressionTool.java | 113 -- .../apache/archiva/web/tags/GroupIdLink.java | 147 -- .../archiva/web/tags/GroupIdLinkTag.java | 96 - .../apache/archiva/web/util/ContextUtils.java | 122 -- .../validator/CronExpressionValidator.java | 47 - .../web/validator/IntervalValidator.java | 63 - .../validator/SyncedRepositoryValidator.java | 113 -- .../resources/META-INF/spring-context.xml | 46 - .../src/main/resources/ehcache.xml | 92 - .../src/main/resources/freemarker.properties | 20 - .../src/main/resources/log4j2.xml | 143 -- .../apache/archiva/redback/custom.properties | 23 - .../DeleteArtifactAction-validation.xml | 60 - ...SearchAction-checksumSearch-validation.xml | 33 - ...SearchAction-filteredSearch-validation.xml | 34 - .../SearchAction-quickSearch-validation.xml | 30 - .../web/action/UploadAction-validation.xml | 45 - .../EditOrganisationInfoAction-validation.xml | 45 - ...AddLegacyArtifactPathAction-validation.xml | 84 - .../NetworkConfigurationAction-validation.xml | 41 - ...roxyAction-saveNetworkProxy-validation.xml | 92 - .../AddManagedRepositoryAction-validation.xml | 81 - .../AddRemoteRepositoryAction-validation.xml | 40 - ...EditManagedRepositoryAction-validation.xml | 81 - .../EditRemoteRepositoryAction-validation.xml | 40 - ...psAction-addRepositoryGroup-validation.xml | 35 - .../src/main/resources/struts.properties | 46 - .../src/main/resources/struts.xml | 638 ------- .../template/xhtml/form-close-validate.ftl | 129 -- .../src/main/resources/validators.xml | 44 - .../webapp/WEB-INF/applicationContext.xml | 337 ---- .../src/main/webapp/WEB-INF/decorators.xml | 31 - .../webapp/WEB-INF/jsp/accessToNoRepos.jsp | 47 - .../jsp/admin/addLegacyArtifactPath.jsp | 115 -- .../WEB-INF/jsp/admin/addProxyConnector.jsp | 46 - .../WEB-INF/jsp/admin/addRemoteRepository.jsp | 49 - .../WEB-INF/jsp/admin/addRepository.jsp | 63 - .../webapp/WEB-INF/jsp/admin/appearance.jsp | 71 - .../jsp/admin/confirmAddRepository.jsp | 142 -- .../WEB-INF/jsp/admin/deleteNetworkProxy.jsp | 63 - .../jsp/admin/deleteProxyConnector.jsp | 56 - .../jsp/admin/deleteRemoteRepository.jsp | 74 - .../WEB-INF/jsp/admin/deleteRepository.jsp | 85 - .../jsp/admin/deleteRepositoryGroup.jsp | 67 - .../jsp/admin/disableProxyConnector.jsp | 52 - .../WEB-INF/jsp/admin/editAppearance.jsp | 54 - .../WEB-INF/jsp/admin/editNetworkProxy.jsp | 88 - .../WEB-INF/jsp/admin/editProxyConnector.jsp | 47 - .../jsp/admin/editRemoteRepository.jsp | 75 - .../WEB-INF/jsp/admin/editRepository.jsp | 74 - .../jsp/admin/enableProxyConnector.jsp | 51 - .../WEB-INF/jsp/admin/errorMessages.jsp | 32 - .../jsp/admin/include/networkProxyForm.jspf | 28 - .../jsp/admin/include/proxyConnectorForm.jspf | 260 --- .../admin/include/remoteRepositoryForm.jspf | 40 - .../jsp/admin/include/repositoryForm.jspf | 36 - .../WEB-INF/jsp/admin/legacyArtifactPath.jsp | 131 -- .../jsp/admin/mergeExcludeConflicts.jsp | 114 -- .../webapp/WEB-INF/jsp/admin/mergeResults.jsp | 42 - .../jsp/admin/networkConfiguration.jsp | 51 - .../WEB-INF/jsp/admin/networkProxies.jsp | 151 -- .../WEB-INF/jsp/admin/proxyConnectors.jsp | 267 --- .../webapp/WEB-INF/jsp/admin/repositories.jsp | 422 ----- .../WEB-INF/jsp/admin/repositoryGroups.jsp | 165 -- .../WEB-INF/jsp/admin/repositoryScanning.jsp | 261 --- .../webapp/WEB-INF/jsp/admin/systemStatus.jsp | 146 -- .../src/main/webapp/WEB-INF/jsp/alert.jsp | 46 - .../src/main/webapp/WEB-INF/jsp/browse.jsp | 192 -- .../WEB-INF/jsp/components/companyLogo.jsp | 52 - .../webapp/WEB-INF/jsp/decorators/default.jsp | 213 --- .../webapp/WEB-INF/jsp/deleteArtifact.jsp | 58 - .../main/webapp/WEB-INF/jsp/findArtifact.jsp | 118 -- .../main/webapp/WEB-INF/jsp/generalError.jsp | 37 - .../jsp/include/artifactDependencies.jspf | 41 - .../WEB-INF/jsp/include/artifactInfo.jspf | 235 --- .../WEB-INF/jsp/include/artifactReports.jspf | 39 - .../jsp/include/deleteArtifactForm.jspf | 29 - .../WEB-INF/jsp/include/dependencyTree.jspf | 28 - .../WEB-INF/jsp/include/mailingLists.jspf | 102 -- .../WEB-INF/jsp/include/mergeActionForm.jspf | 42 - .../WEB-INF/jsp/include/projectDependees.jspf | 40 - .../WEB-INF/jsp/include/projectMetadata.jspf | 86 - .../WEB-INF/jsp/include/uploadForm.jspf | 34 - .../main/webapp/WEB-INF/jsp/quickSearch.jsp | 155 -- .../WEB-INF/jsp/reports/auditLogReport.jsp | 153 -- .../WEB-INF/jsp/reports/basicReport.jsp | 79 - .../WEB-INF/jsp/reports/blankReport.jsp | 38 - .../webapp/WEB-INF/jsp/reports/pickReport.jsp | 80 - .../WEB-INF/jsp/reports/statisticsReport.jsp | 230 --- .../src/main/webapp/WEB-INF/jsp/results.jsp | 366 ---- .../main/webapp/WEB-INF/jsp/showArtifact.jsp | 267 --- .../src/main/webapp/WEB-INF/jsp/upload.jsp | 47 - .../main/webapp/WEB-INF/tags/currentWWUrl.tag | 60 - .../WEB-INF/tags/displayUpdatePolicy.tag | 41 - .../webapp/WEB-INF/tags/showArtifactLink.tag | 77 - .../webapp/WEB-INF/tags/showArtifactTitle.tag | 46 - .../src/main/webapp/WEB-INF/tld/web-tags.tld | 103 -- .../src/main/webapp/WEB-INF/web.xml | 167 -- .../src/main/webapp/css/maven-base.css | 205 --- .../src/main/webapp/css/maven-theme.css | 350 ---- .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 178 -> 0 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 120 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 105 -> 0 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 111 -> 0 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 110 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 101 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes .../css/no-theme/jquery.ui-1.8.14.theme.css | 247 --- .../src/main/webapp/css/print.css | 27 - .../src/main/webapp/css/site.css | 399 ----- .../src/main/webapp/favicon.ico | Bin 3638 -> 0 bytes .../src/main/webapp/images/19Sep-logo.png | Bin 13065 -> 0 bytes .../src/main/webapp/images/19Sep.png | Bin 109893 -> 0 bytes .../src/main/webapp/images/archetype.gif | Bin 2149 -> 0 bytes .../main/webapp/images/archiva-splat-32.gif | Bin 1227 -> 0 bytes .../src/main/webapp/images/archiva-world.png | Bin 1936 -> 0 bytes .../src/main/webapp/images/archiva.png | Bin 8360 -> 0 bytes .../src/main/webapp/images/arrow.gif | Bin 88 -> 0 bytes .../src/main/webapp/images/arrow.left.png | Bin 181 -> 0 bytes .../src/main/webapp/images/arrow.right.png | Bin 181 -> 0 bytes .../src/main/webapp/images/breadcrumbs.jpg | Bin 349 -> 0 bytes .../src/main/webapp/images/collapsed.gif | Bin 53 -> 0 bytes .../src/main/webapp/images/dl.gif | Bin 388 -> 0 bytes .../webapp/images/download-type-archetype.png | Bin 4735 -> 0 bytes .../main/webapp/images/download-type-jar.png | Bin 4583 -> 0 bytes .../images/download-type-maven-plugin.png | Bin 4779 -> 0 bytes .../webapp/images/download-type-other.png | Bin 4549 -> 0 bytes .../main/webapp/images/download-type-pom.png | Bin 4762 -> 0 bytes .../main/webapp/images/download-type-skin.png | Bin 4861 -> 0 bytes .../src/main/webapp/images/download.bl.gif | Bin 179 -> 0 bytes .../src/main/webapp/images/download.br.gif | Bin 120 -> 0 bytes .../src/main/webapp/images/download.ml.gif | Bin 103 -> 0 bytes .../src/main/webapp/images/download.mr.gif | Bin 62 -> 0 bytes .../src/main/webapp/images/download.tl.gif | Bin 179 -> 0 bytes .../src/main/webapp/images/download.tr.gif | Bin 118 -> 0 bytes .../src/main/webapp/images/expanded.gif | Bin 52 -> 0 bytes .../src/main/webapp/images/external.png | Bin 230 -> 0 bytes .../src/main/webapp/images/folder.png | Bin 581 -> 0 bytes .../src/main/webapp/images/footerborder.gif | Bin 54 -> 0 bytes .../src/main/webapp/images/icon_error_sml.gif | Bin 1010 -> 0 bytes .../src/main/webapp/images/icon_info_sml.gif | Bin 606 -> 0 bytes .../src/main/webapp/images/icon_next_page.gif | Bin 315 -> 0 bytes .../webapp/images/icon_next_page_disabled.gif | Bin 80 -> 0 bytes .../src/main/webapp/images/icon_prev_page.gif | Bin 317 -> 0 bytes .../webapp/images/icon_prev_page_disabled.gif | Bin 73 -> 0 bytes .../main/webapp/images/icon_success_sml.gif | Bin 990 -> 0 bytes .../main/webapp/images/icon_warning_sml.gif | Bin 576 -> 0 bytes .../main/webapp/images/icons/arrow-down.png | Bin 237 -> 0 bytes .../main/webapp/images/icons/arrow-left.png | Bin 231 -> 0 bytes .../main/webapp/images/icons/arrow-right.png | Bin 228 -> 0 bytes .../src/main/webapp/images/icons/arrow-up.png | Bin 230 -> 0 bytes .../src/main/webapp/images/icons/box.png | Bin 255 -> 0 bytes .../src/main/webapp/images/icons/create.png | Bin 236 -> 0 bytes .../src/main/webapp/images/icons/delete.gif | Bin 351 -> 0 bytes .../src/main/webapp/images/icons/down.gif | Bin 117 -> 0 bytes .../src/main/webapp/images/icons/edit.png | Bin 246 -> 0 bytes .../main/webapp/images/icons/off-symbol.png | Bin 390 -> 0 bytes .../main/webapp/images/icons/on-symbol.png | Bin 497 -> 0 bytes .../src/main/webapp/images/icons/rss-feed.png | Bin 800 -> 0 bytes .../main/webapp/images/icons/security-key.png | Bin 300 -> 0 bytes .../webapp/images/icons/security-lock.png | Bin 281 -> 0 bytes .../src/main/webapp/images/icons/up.gif | Bin 117 -> 0 bytes .../src/main/webapp/images/icons/user.png | Bin 344 -> 0 bytes .../src/main/webapp/images/jar.gif | Bin 1964 -> 0 bytes .../src/main/webapp/images/mavenplugin.gif | Bin 2336 -> 0 bytes .../src/main/webapp/images/newwindow.png | Bin 220 -> 0 bytes .../src/main/webapp/images/other.gif | Bin 2160 -> 0 bytes .../main/webapp/images/package-x-generic.png | Bin 540 -> 0 bytes .../src/main/webapp/images/pom.gif | Bin 2020 -> 0 bytes .../src/main/webapp/images/skin.gif | Bin 2258 -> 0 bytes .../src/main/webapp/images/super.gif | Bin 1212 -> 0 bytes .../src/main/webapp/images/super_hl.gif | Bin 1212 -> 0 bytes .../src/main/webapp/images/super_hl_sub.gif | Bin 985 -> 0 bytes .../src/main/webapp/images/supersub.gif | Bin 206 -> 0 bytes .../archiva-webapp/src/main/webapp/index.jsp | 20 - .../src/main/webapp/js/jquery-1.6.1.min.js | 18 - .../webapp/js/jquery-ui-1.8.14.custom.min.js | 789 --------- .../archiva-webapp/src/main/webapp/js/md5.js | 256 --- .../configuration/TestConfiguration.java | 69 - .../web/action/AbstractActionTestCase.java | 238 --- .../web/action/AbstractWebworkTestCase.java | 138 -- .../action/AuditEventArgumentsMatcher.java | 49 - .../archiva/web/action/BrowseActionTest.java | 432 ----- .../web/action/DeleteArtifactActionTest.java | 187 -- .../archiva/web/action/SearchActionTest.java | 543 ------ .../web/action/ShowArtifactActionTest.java | 762 -------- .../archiva/web/action/UploadActionTest.java | 866 --------- .../AbstractOrganizationInfoActionTest.java | 74 - .../EditOrganizationInfoActionTest.java | 223 --- .../OrganizationInfoActionTest.java | 56 - .../proxy/AddProxyConnectorActionTest.java | 437 ----- .../proxy/DeleteProxyConnectorActionTest.java | 238 --- .../DisableProxyConnectorActionTest.java | 236 --- .../proxy/EditProxyConnectorActionTest.java | 485 ----- .../proxy/EnableProxyConnectorActionTest.java | 228 --- .../proxy/ProxyConnectorsActionTest.java | 159 -- .../proxy/SortProxyConnectorsActionTest.java | 264 --- .../AddLegacyArtifactPathActionTest.java | 265 --- .../ConfigureNetworkProxyActionTest.java | 230 --- .../AbstractManagedRepositoryActionTest.java | 150 -- .../AddManagedRepositoryActionTest.java | 398 ----- .../AddRemoteRepositoryActionTest.java | 139 -- .../DefaultActionValidatorManagerFactory.java | 115 -- .../DeleteManagedRepositoryActionTest.java | 483 ----- .../DeleteRemoteRepositoryActionTest.java | 225 --- .../DeleteRepositoryGroupActionTest.java | 168 -- .../EditManagedRepositoryActionTest.java | 641 ------- .../EditRemoteRepositoryActionTest.java | 182 -- .../repositories/RepositoriesActionTest.java | 165 -- .../RepositoryGroupsActionTest.java | 399 ----- .../SortRepositoriesActionTest.java | 254 --- .../RepositoryScanningActionTest.java | 143 -- .../reports/GenerateReportActionTest.java | 743 -------- .../archiva/web/startup/BannerTest.java | 99 -- .../archiva/web/tags/DependencyTreeTest.java | 191 -- .../web/validator/utils/ValidatorUtil.java | 71 - .../artifactId/version/artifactId-version.pom | 43 - .../test/groupId/child1/1.0/child1-1.0.pom | 33 - .../test/groupId/child2/1.0/child2-1.0.pom | 37 - .../test/groupId/child3/1.0/child3-1.0.pom | 25 - .../grandchild1/2.0/grandchild1-2.0.pom | 32 - .../grandchild2/2.0/grandchild2-2.0.pom | 25 - .../grandchild3/2.0/grandchild3-2.0.pom | 25 - .../3.0/great-grandchild-3.0.pom | 26 - .../archiva-webapp/src/test/repository.xml | 49 - .../resources/META-INF/spring-context.xml | 37 - .../src/test/resources/artifact.jar | 1 - .../src/test/resources/banner.gz | Bin 282 -> 0 bytes .../src/test/resources/empty-archiva.xml | 111 -- .../src/test/resources/log4j2-test.xml | 78 - .../spring-context-DependencyTreeTest.xml | 38 - .../src/test/resources/spring-context.xml | 44 - .../src/test/resources/struts-security.xml | 330 ---- .../npe-metadata/1.0/npe-metadata-1.0.jar | Bin 16289 -> 0 bytes .../npe-metadata/1.0/npe-metadata-1.0.jar.md5 | 1 - .../1.0/npe-metadata-1.0.jar.sha1 | 1 - .../npe-metadata/1.0/npe-metadata-1.0.pom | 8 - .../npe-metadata/1.0/npe-metadata-1.0.pom.md5 | 1 - .../1.0/npe-metadata-1.0.pom.sha1 | 1 - .../archiva/npe-metadata/maven-metadata.xml | 12 - .../npe-metadata/maven-metadata.xml.md5 | 1 - .../npe-metadata/maven-metadata.xml.sha1 | 1 - .../artifact-to-be-reuploaded.jar | Bin 158 -> 0 bytes .../artifact-to-be-uploaded.jar | 0 .../resources/upload-artifact-test/pom.xml | 6 - .../tomcat/auto-admin-creation.properties | 22 - .../src/test/tomcat/log4j2-test.xml | 64 - .../test/tomcat/tomcat-context-archiva.xml | 31 - .../src/test/webapp/WEB-INF/web.xml | 44 - 312 files changed, 36361 deletions(-) delete mode 100644 archiva-modules/archiva-web/archiva-webapp/pom.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/archiva.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/shared.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/appserver-base/logs/.donotdelete delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/jetty-env-mysql.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/jetty-env-postgres.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/jetty-env.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractActionSupport.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractRepositoryBasedAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/BrowseAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/DeleteArtifactAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/GlobalResults.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/MergeAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/ShowArtifactAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/UploadAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SchedulerAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SystemStatusAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/AbstractAppearanceAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/OrganisationInfoAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/DeleteLegacyArtifactPathAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/LegacyArtifactPathAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/NetworkProxiesAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRemoteRepositoriesAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoriesAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/GenerateReportAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/ViewAuditLogReportAction.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/interceptor/ConfigurationInterceptor.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/CopyPasteSnippetTag.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTree.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTreeTag.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/ExpressionTool.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLink.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLinkTag.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/util/ContextUtils.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/CronExpressionValidator.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/IntervalValidator.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/SyncedRepositoryValidator.java delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/spring-context.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/ehcache.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/freemarker.properties delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/log4j2.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/redback/custom.properties delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/DeleteArtifactAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-checksumSearch-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-filteredSearch-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-quickSearch-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/UploadAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction-addRepositoryGroup-validation.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.properties delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/template/xhtml/form-close-validate.ftl delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/resources/validators.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/decorators.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/accessToNoRepos.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addProxyConnector.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRemoteRepository.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteProxyConnector.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRemoteRepository.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editProxyConnector.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRemoteRepository.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/errorMessages.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/networkProxyForm.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeResults.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkConfiguration.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryGroups.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/systemStatus.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/alert.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/findArtifact.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/generalError.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactDependencies.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactInfo.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactReports.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/dependencyTree.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mergeActionForm.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectDependees.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/blankReport.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/currentWWUrl.tag delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/displayUpdatePolicy.tag delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactLink.tag delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactTitle.tag delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tld/web-tags.tld delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_55_fbf9ee_1x400.png delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_dadada_1x400.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_e6e6e6_1x400.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_222222_256x240.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_2e83ff_256x240.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_454545_256x240.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_888888_256x240.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_cd0a0a_256x240.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/jquery.ui-1.8.14.theme.css delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/print.css delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/favicon.ico delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep-logo.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep.png delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archetype.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-splat-32.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-world.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva.png delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.left.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.right.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/breadcrumbs.jpg delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/collapsed.gif delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/dl.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-archetype.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-jar.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-maven-plugin.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-other.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-pom.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-skin.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.bl.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.br.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.ml.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.mr.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tl.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tr.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/expanded.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/external.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/folder.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/footerborder.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_error_sml.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_info_sml.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page_disabled.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page_disabled.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_success_sml.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_warning_sml.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-down.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-left.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-right.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-up.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/box.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/create.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/delete.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/down.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/edit.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/off-symbol.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/on-symbol.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/rss-feed.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-key.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-lock.png delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/up.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/user.png delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/jar.gif delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/mavenplugin.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/newwindow.png delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/other.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/package-x-generic.png delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/pom.gif delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/skin.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl.gif delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl_sub.gif delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/supersub.gif delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.jsp delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-1.6.1.min.js delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.8.14.custom.min.js delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/md5.js delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractActionTestCase.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractWebworkTestCase.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AuditEventArgumentsMatcher.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/BrowseActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/DeleteArtifactActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/SearchActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/ShowArtifactActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/UploadActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/AbstractOrganizationInfoActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/OrganizationInfoActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoriesActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/reports/GenerateReportActionTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/startup/BannerTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/tags/DependencyTreeTest.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/validator/utils/ValidatorUtil.java delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/artifactId/version/artifactId-version.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child1/1.0/child1-1.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child2/1.0/child2-1.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child3/1.0/child3-1.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild1/2.0/grandchild1-2.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild2/2.0/grandchild2-2.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild3/2.0/grandchild3-2.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/great-grandchild/3.0/great-grandchild-3.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/repository.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/META-INF/spring-context.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/artifact.jar delete mode 100755 archiva-modules/archiva-web/archiva-webapp/src/test/resources/banner.gz delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/empty-archiva.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/log4j2-test.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context-DependencyTreeTest.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/struts-security.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.md5 delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.sha1 delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.md5 delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.sha1 delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.md5 delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.sha1 delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/upload-artifact-test/artifact-to-be-reuploaded.jar delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/upload-artifact-test/artifact-to-be-uploaded.jar delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/resources/upload-artifact-test/pom.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/auto-admin-creation.properties delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j2-test.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/tomcat-context-archiva.xml delete mode 100644 archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/web.xml diff --git a/archiva-modules/archiva-web/archiva-webapp/pom.xml b/archiva-modules/archiva-web/archiva-webapp/pom.xml deleted file mode 100644 index a3fdbe704..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/pom.xml +++ /dev/null @@ -1,1572 +0,0 @@ - - - - - 4.0.0 - - org.apache.archiva - archiva-web - 1.4-M4-SNAPSHOT - - archiva-webapp - war - Archiva Web :: Application - - - - - ${basedir}/src/test/tomcat/tomcat-context-archiva.xml - ${project.build.directory}/appserver-base - - - - - org.apache.archiva - generic-metadata-support - - - org.apache.archiva - npanday-support - - - org.apache.archiva - repository-statistics - - - org.apache.archiva - problem-reports - - - org.apache.archiva - audit - - - org.apache.archiva - archiva-scheduler-repository - - - org.apache.archiva - archiva-indexer - - - org.codehaus.plexus - plexus-utils - - - org.apache.ant - ant - - - org.apache.maven.indexer - indexer-core - - - org.codehaus.plexus - plexus-container-default - - - classworlds - classworlds - - - commons-logging - commons-logging - - - velocity - velocity-dep - - - org.apache.maven - maven-plugin-registry - - - org.apache.maven - maven-settings - - - com.google.code.atinject - atinject - - - - - org.apache.archiva - archiva-proxy - - - commons-logging - commons-logging-api - - - - - org.apache.archiva - archiva-repository-layer - - - org.apache.archiva - archiva-xml-tools - - - xerces - xercesImpl - - - - - org.apache.archiva - archiva-security - - - org.apache.archiva - archiva-core-consumers - - - org.apache.archiva - archiva-configuration - - - - org.apache.archiva - archiva-metadata-consumer - runtime - - - org.apache.archiva - archiva-lucene-consumers - - - org.apache.lucene - lucene-core - - - org.apache.lucene - lucene-queries - - - org.apache.lucene - lucene-memory - - - org.apache.lucene - lucene-highlighter - - - org.apache.archiva - stage-repository-merge - - - org.apache.archiva - archiva-signature-consumers - - - org.apache.archiva - archiva-applet - - provided - - - org.apache.archiva - archiva-rss - - - org.apache.archiva - archiva-rest-services - - - org.eclipse.jetty - jetty-server - - - org.eclipse.jetty - jetty-continuation - - - org.eclipse.jetty - jetty-http - - - org.eclipse.jetty - jetty-io - - - org.eclipse.jetty - jetty-util - - - org.eclipse.jetty - jetty-security - - - commons-logging - commons-logging - - - org.apache.geronimo.specs - geronimo-servlet_3.0_spec - - - org.apache.geronimo.specs - geronimo-javamail_1.4_spec - - - org.apache.geronimo.specs - geronimo-servlet_2.5_spec - - - - - org.apache.archiva - archiva-rest-api - - - org.eclipse.jetty - jetty-server - - - org.eclipse.jetty - jetty-continuation - - - org.eclipse.jetty - jetty-http - - - org.eclipse.jetty - jetty-io - - - org.eclipse.jetty - jetty-util - - - org.eclipse.jetty - jetty-security - - - commons-logging - commons-logging - - - org.apache.geronimo.specs - geronimo-servlet_3.0_spec - - - org.apache.geronimo.specs - geronimo-javamail_1.4_spec - - - org.apache.geronimo.specs - geronimo-servlet_2.5_spec - - - - - javax.servlet - servlet-api - provided - - - javax.servlet - jsp-api - provided - - - opensymphony - sitemesh - - - - taglibs - standard - - - - javax.servlet - jstl - - - org.codehaus.plexus - plexus-slf4j-logging - runtime - - - org.codehaus.plexus - plexus-component-api - - - - - org.slf4j - slf4j-ext - - - org.slf4j - jcl-over-slf4j - provided - - - org.apache.logging.log4j.adapters - log4j12-api - runtime - - - org.apache.logging.log4j - log4j-core - runtime - - - org.apache.logging.log4j.adapters - slf4j-impl - runtime - - - httpunit - httpunit - test - - - commons-lang - commons-lang - - - org.apache.commons - commons-compress - - - commons-configuration - commons-configuration - - - commons-beanutils - commons-beanutils-core - - - commons-logging - commons-logging - - - - - commons-digester - commons-digester - - - commons-logging - commons-logging - - - - - commons-beanutils - commons-beanutils - - - commons-logging - commons-logging - - - - - org.codehaus.jackson - jackson-jaxrs - - - org.codehaus.jackson - jackson-xc - - - org.codehaus.jackson - jackson-core-asl - - - org.apache.cxf - cxf-bundle-jaxrs - - - org.eclipse.jetty - jetty-server - - - org.eclipse.jetty - jetty-continuation - - - org.eclipse.jetty - jetty-http - - - org.eclipse.jetty - jetty-io - - - org.eclipse.jetty - jetty-util - - - org.eclipse.jetty - jetty-security - - - commons-logging - commons-logging - - - org.apache.geronimo.specs - geronimo-servlet_3.0_spec - - - org.apache.geronimo.specs - geronimo-javamail_1.4_spec - - - org.apache.geronimo.specs - geronimo-servlet_2.5_spec - - - org.codehaus.jettison - jettison - - - com.sun.xml.bind - jaxb-impl - - - javax.xml.bind - jaxb-api - - - - - ognl - ognl - 3.0.2 - - - org.apache.struts - struts2-core - - - org.apache.struts - struts2-sitemesh-plugin - ${struts.version} - - - org.apache.archiva.redback.components.registry - spring-registry-api - - - org.springframework - spring-test - - - - - org.apache.archiva.redback.components.registry - spring-registry-commons - - - org.springframework - spring-test - - - - - org.apache.archiva.redback.components.cache - spring-cache-api - - - org.apache.archiva.redback.components - spring-jdo2 - - - org.apache.archiva.redback.components.cache - spring-cache-ehcache - - - commons-logging - commons-logging - - - - - net.sf.ehcache - ehcache-core - - - commons-logging - commons-logging - - - - - - - org.apache.archiva.redback - redback-struts2-integration - - - org.slf4j - jcl-over-slf4j - - - - - org.apache.archiva.redback - redback-common-integrations - - - - org.apache.archiva.redback - redback-keys-memory - - - commons-logging - commons-logging - - - - - - org.apache.archiva.redback - redback-rest-services - - - org.eclipse.jetty - jetty-server - - - org.eclipse.jetty - jetty-continuation - - - org.eclipse.jetty - jetty-http - - - org.eclipse.jetty - jetty-io - - - org.eclipse.jetty - jetty-util - - - org.eclipse.jetty - jetty-security - - - commons-logging - commons-logging - - - org.apache.geronimo.specs - geronimo-servlet_3.0_spec - - - org.apache.geronimo.specs - geronimo-javamail_1.4_spec - - - org.apache.geronimo.specs - geronimo-servlet_2.5_spec - - - - - - org.apache.archiva.redback - redback-struts2-content - runtime - war - - - - - org.apache.archiva - archiva-webdav - - - org.slf4j - jcl-over-slf4j - - - - - org.apache.archiva - archiva-web-common - - - org.apache.struts - struts2-spring-plugin - runtime - - - commons-io - commons-io - - - org.springframework - spring-web - - - javax.mail - mail - provided - - - javax.activation - activation - provided - - - org.apache.archiva.redback.components - spring-taskqueue - - - org.apache.archiva.redback.components - spring-quartz - - - org.quartz-scheduler - quartz - - - c3p0 - c3p0 - - - javax.transaction - jta - - - - - commons-fileupload - commons-fileupload - - - commons-codec - commons-codec - - - stax - stax - - - stax - stax-api - - - - - org.apache.maven.wagon - wagon-http - runtime - - - org.apache.maven.wagon - wagon-http-lightweight - runtime - - - org.apache.maven.wagon - wagon-file - runtime - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - commons-logging - commons-logging - - - - - org.apache.httpcomponents - httpcore - ${httpclient.core.version} - - - commons-logging - commons-logging - - - - - commons-logging - commons-logging - runtime - - - - org.apache.archiva - metadata-model - - - - org.apache.maven - maven-model - ${maven3x.version} - - - org.apache.maven - maven-model-builder - ${maven3x.version} - - - org.sonatype.sisu - sisu-inject-plexus - - - org.sonatype.sisu - sisu-guice - - - - - org.sonatype.sisu - sisu-guice - - - org.sonatype.sisu - sisu-guava - - - - - org.apache.archiva - archiva-plexus-bridge - - - - org.apache.archiva - archiva-repository-admin-api - - - - - org.apache.archiva - archiva-repository-admin-default - - - - org.apache.archiva - metadata-repository-api - - - org.apache.archiva - metadata-store-jcr - - - org.apache.jackrabbit - jackrabbit-jcr-commons - - - org.apache.jackrabbit - jackrabbit-core - - - commons-logging - commons-logging - - - org.slf4j - jcl-over-slf4j - - - commons-dbcp - commons-dbcp - - - - - org.apache.velocity - velocity - - - org.apache.velocity - velocity-tools - 1.3 - runtime - - - commons-logging - commons-logging - - - velocity - velocity-dep - - - velocity - velocity - - - struts - struts - - - - - org.apache.archiva - - maven2-repository - - - log4j - log4j - - - - - org.mockito - mockito-all - test - - - org.apache.struts - struts2-junit-plugin - test - ${struts.version} - - - org.springframework - spring-test - - - - - org.springframework - spring-test - test - - - cglib - cglib - - - jpox - jpox - - - javax.transaction - jta - - - log4j - log4j - - - - - jpox - jpox-ehcache - - - commons-logging - commons-logging - - - ehcache - ehcache - - - log4j - log4j - - - - - org.eclipse.jetty - jetty-server - ${jettyVersion} - test - - - org.eclipse.jetty - jetty-continuation - ${jettyVersion} - test - - - org.eclipse.jetty - jetty-http - ${jettyVersion} - test - - - org.eclipse.jetty - jetty-io - ${jettyVersion} - test - - - org.eclipse.jetty - jetty-util - ${jettyVersion} - test - - - org.eclipse.jetty - jetty-security - ${jettyVersion} - test - - - org.eclipse.jetty - jetty-plus - ${jettyVersion} - test - - - org.apache.archiva.redback - redback-rest-services - tests - test - - - - - org.apache.struts - struts-annotations - 1.0.5 - compile - true - - - - org.apache.archiva - archiva-web-common - tests - test - ${project.version} - - - - org.apache.archiva - archiva-test-utils - ${project.version} - test - - - org.slf4j - slf4j-simple - - - org.springframework - spring-test - - - - - - - - src/main/resources - - - src/main/filtered-resources - true - - - - - org.apache.maven.plugins - maven-surefire-plugin - - -XX:MaxPermSize=256m -client - alphabetical - - ${project.build.directory}/appserver-base - ${project.build.directory}/appserver-base - ${project.build.directory}/appserver-base - ${archiva.baseRestUrl} - ${rest.admin.pwd} - ${basedir}/target/archiva.xml - ${project.build.testOutputDirectory} - ${redbackTestJdbcUrl} - ${redbackTestJdbcDriver} - ${basedir} - ${project.build.directory} - ${project.build.directory} - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - copy-web-config-files - - run - - compile - - - - - - - - - - - generate-resources - - run - - - - - - - - - - - - - org.apache.maven.plugins - maven-war-plugin - 2.1.1 - - false - META-INF/**,WEB-INF/web.xml,WEB-INF/classes/xwork.xml,WEB-INF/lib/** - - - WEB-INF/lib/xalan-*.jar,WEB-INF/lib/velocity-dep-*.jar,WEB-INF/lib/xml-apis-*.jar,WEB-INF/lib/wstx-asl-*.jar,WEB-INF/lib/stax-utils-*.jar,WEB-INF/lib/xercesImpl-*.jar,WEB-INF/lib/commons-lang-*.jar,WEB-INF/lib/commons-configuration-*.jar,WEB-INF/lib/jetty-*.jar - - - ${project.build.outputDirectory}/META-INF/MANIFEST.MF - - - - redback-contents - org.apache.archiva.redback - redback-struts2-content - - WEB-INF/lib/**.jar - WEB-INF/web.xml - META-INF/** - - - - - - - org.apache.felix - maven-bundle-plugin - - - bundle-manifest - process-classes - - manifest - - - - org.apache.archiva.webapp - ${project.version} - - org.apache.archiva.web.action*;version=${project.version}, - org.apache.archiva.web.interceptor*;version=${project.version}, - org.apache.archiva.web.mapper*;version=${project.version}, - org.apache.archiva.web.tags*;version=${project.version}, - org.apache.archiva.web.util*;version=${project.version}, - org.apache.archiva.web.validator*;version=${project.version} - - - com.opensymphony.xwork2, - com.opensymphony.xwork2.config, - com.opensymphony.xwork2.interceptor, - com.opensymphony.xwork2.util, - com.opensymphony.xwork2.validator, - com.opensymphony.xwork2.validator.validators, - com.sun.syndication.feed.synd, - com.sun.syndication.io, - javax.annotation, - javax.inject, - javax.servlet, - javax.servlet.http, - javax.servlet.jsp, - javax.servlet.jsp.tagext, - org.apache.archiva.admin.model;version=${project.version}, - org.apache.archiva.admin.model.admin;version=${project.version}, - org.apache.archiva.admin.model.beans;version=${project.version}, - org.apache.archiva.admin.model.group;version=${project.version}, - org.apache.archiva.admin.model.managed;version=${project.version}, - org.apache.archiva.admin.model.networkproxy;version=${project.version}, - org.apache.archiva.admin.model.proxyconnector;version=${project.version}, - org.apache.archiva.admin.model.remote;version=${project.version}, - org.apache.archiva.admin.repository;version=${project.version}, - org.apache.archiva.admin.repository.admin;version=${project.version}, - org.apache.archiva.admin.repository.utils;version=${project.version}, - org.apache.archiva.audit;version=${project.version}, - org.apache.archiva.checksum;version=${project.version}, - org.apache.archiva.common;version=${project.version}, - org.apache.archiva.common.utils;version=${project.version}, - org.apache.archiva.configuration;version=${project.version}, - org.apache.archiva.consumers;version=${project.version}, - org.apache.archiva.dependency.tree.maven2;version=${project.version}, - org.apache.archiva.indexer.search;version=${project.version}, - org.apache.archiva.metadata.generic;version=${project.version}, - org.apache.archiva.metadata.model;version=${project.version}, - org.apache.archiva.metadata.repository;version=${project.version}, - org.apache.archiva.metadata.repository.filter;version=${project.version}, - org.apache.archiva.metadata.repository.stats;version=${project.version}, - org.apache.archiva.metadata.repository.storage.maven2;version=${project.version}, - org.apache.archiva.model;version=${project.version}, - org.apache.archiva.policies;version=${project.version}, - org.apache.archiva.reports;version=${project.version}, - org.apache.archiva.repository;version=${project.version}, - org.apache.archiva.repository.metadata;version=${project.version}, - org.apache.archiva.repository.scanner;version=${project.version}, - org.apache.archiva.rest.api.model;version=${project.version}, - org.apache.archiva.rest.api.services;version=${project.version}, - org.apache.archiva.rss.processor;version=${project.version}, - org.apache.archiva.scheduler;version=${project.version}, - org.apache.archiva.scheduler.indexing;version=${project.version}, - org.apache.archiva.scheduler.repository;version=${project.version}, - org.apache.archiva.security;version=${project.version}, - org.apache.archiva.stagerepository.merge;version=${project.version}, - org.apache.commons.codec;version="[1.3,2)", - org.apache.commons.codec.binary;version="[1.3,2)", - org.apache.commons.collections;version="[3.2,4)", - org.apache.commons.io;version="[1.4,2)", - org.apache.commons.lang*;version="[2.4,3)", - org.apache.maven.artifact, - org.apache.maven.artifact.versioning, - org.apache.maven.model, - org.apache.maven.model.io.xpp3, - org.apache.maven.shared.dependency.tree, - org.apache.maven.shared.dependency.tree.traversal, - org.apache.struts2*;version="[2.2,3)", - org.apache.taglibs.standard.tag.common.core, - org.apache.taglibs.standard.tag.el.core, - org.codehaus.plexus.cache, - org.apache.archiva.redback.authentication, - org.apache.archiva.redback.authorization, - org.apache.archiva.redback.policy, - org.apache.archiva.redback.system, - org.apache.archiva.redback.users, - org.codehaus.plexus.registry, - org.apache.archiva.redback.components.taskqueue, - org.codehaus.plexus.util, - org.codehaus.redback.components.scheduler, - org.apache.archiva.redback.integration.filter.authentication, - org.codehaus.redback.integration.interceptor, - org.apache.archiva.redback.rest.services, - org.slf4j;resolution:=optional, - org.springframework*;version="[3,4)", - org.springframework.web*;version="[3,4)" - - - - - - - - jar - bundle - war - - - - - - org.mortbay.jetty - jetty-maven-plugin - ${jettyVersion} - - - / - - src/main/webapp,target/archiva,target/redback - - - - / - ${basedir}/src/main/webapp/WEB_INF/web.xml - ${basedir}/src/jetty-env.xml - - - 10 - - - - 9091 - 60000 - - - - - plexus.home - ${project.build.directory}/appserver-base - - - appserver.base - ${project.build.directory}/appserver-base - - - appserver.home - ${project.build.directory}/appserver-home - - - derby.system.home - ${project.build.directory}/appserver-base/logs - - - - - - org.apache.derby - derby - ${derbyVersion} - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - unpack-redback-war - - unpack - - compile - - - - org.apache.archiva.redback - redback-struts2-content - ${redback.version} - war - false - ${project.build.directory}/redback - **/struts-security.xml - - - - - - copy - process-resources - - copy - - - - - ${project.groupId} - archiva-applet - ${project.version} - src/main/webapp - archiva-applet.jar - - - - - - - - - - - org.apache.rat - apache-rat-plugin - - - appserver-base/** - overlays/** - src/appserver-base/conf/** - src/appserver-base/logs/** - src/main/webapp/WEB-INF/lib - src/main/webapp/js/jquery-1.6.1.min.js - src/main/webapp/js/jquery-ui-1.8.14.custom.min.js - src/main/webapp/js/md5.js - src/main/webapp/css/no-theme/** - src/main/webapp/css/redback/** - src/main/webapp/WEB-INF/jsp/redback/** - src/main/resources/archiva-mime-types.txt - src/test/resources/test-repo/** - src/test/resources/** - src/sql/** - src/test/repositories/test-repo/** - src/main/webapp/META-INF/MANIFEST.MF - src/main/webapp/WEB-INF/classes/struts-security.xml - - - - - - - - - mysql - - - mysql - mysql-connector-java - 5.0.4 - - - - - - org.mortbay.jetty - maven-jetty-plugin - - src/jetty-env-mysql.xml - - - - - - - postgres - - - postgresql - postgresql - 8.2-504.jdbc3 - - - - - - org.mortbay.jetty - maven-jetty-plugin - - src/jetty-env-postgres.xml - - - - - - - - dev - - - - org.apache.maven.plugins - maven-dependency-plugin - - - - copy - process-resources - - copy - - - true - - - ${project.groupId} - archiva-applet - ${project.version} - src/main/webapp - archiva-applet.jar - - - - - - - unpack-redback-war - - unpack - - compile - - - - org.apache.archiva.redback - redback-struts2-content - ${redback.version} - war - false - ${basedir}/src/main/webapp - **/web.xml,**/struts*.jar,**/sitemesh*.jar - - - - - - - - - - - - org.apache.archiva - metadata-store-jcr - compile - - - org.apache.jackrabbit - jackrabbit-core - compile - - - commons-logging - commons-logging - - - - - - - - tomcat - - - - org.apache.maven.plugins - maven-dependency-plugin - - - - copy - process-resources - - copy - - - true - - - ${project.groupId} - archiva-applet - ${project.version} - src/main/webapp - archiva-applet.jar - - - - - - - unpack-redback-war - - unpack - - compile - - - - org.apache.archiva.redback - redback-struts2-content - ${redback.version} - war - false - ${basedir}/src/main/webapp - **/web.xml,**/**.jar,**/struts-security.xml - - - - - - - - org.apache.tomcat.maven - tomcat6-maven-plugin - - 9091 - /archiva - ${tomcatContextXml} - - ${archivaAppServerBase} - ${archivaAppServerBase} - ${archivaAppServerBase} - ${archivaAppServerBase}/logs - ${basedir}/src/test/tomcat/auto-admin-creation.properties - ${project.build.directory} - - - ${basedir}/src/test/tomcat - - - - - org.apache.derby - derby - ${derbyVersion} - - - javax.mail - mail - ${javaxMailVersion} - - - - - org.apache.tomcat.maven - tomcat7-maven-plugin - - 9091 - /archiva - ${tomcatContextXml} - - ${archivaAppServerBase} - ${archivaAppServerBase} - ${archivaAppServerBase} - ${archivaAppServerBase}/logs - ${basedir}/src/test/tomcat/auto-admin-creation.properties - ${project.build.directory} - - - ${basedir}/src/test/tomcat - - - - - org.apache.derby - derby - ${derbyVersion} - - - javax.mail - mail - 1.4 - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/archiva.xml b/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/archiva.xml deleted file mode 100644 index 9afb83352..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/archiva.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/shared.xml b/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/shared.xml deleted file mode 100644 index 9afb83352..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/conf/shared.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/logs/.donotdelete b/archiva-modules/archiva-web/archiva-webapp/src/appserver-base/logs/.donotdelete deleted file mode 100644 index e69de29bb..000000000 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/jetty-env-mysql.xml b/archiva-modules/archiva-web/archiva-webapp/src/jetty-env-mysql.xml deleted file mode 100644 index 06d111b31..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/jetty-env-mysql.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - mail/Session - - - - - - - localhost - 25 - - - - - - - - - - - jdbc/users - - - - localhost - redback - archiva - sa - - - - - - jdbc/usersShutdown - - - jdbc:mysql://localhost/redback - archiva - sa - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/jetty-env-postgres.xml b/archiva-modules/archiva-web/archiva-webapp/src/jetty-env-postgres.xml deleted file mode 100644 index ca1862607..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/jetty-env-postgres.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - mail/Session - - - - - - - localhost - continuum@localhost - Continuum - true - - - - - - - - jdbc/users - - - localhost - users - postgres - sparky - - - - - jdbc/users_shutdown - - - localhost - users - postgres - sparky - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/jetty-env.xml b/archiva-modules/archiva-web/archiva-webapp/src/jetty-env.xml deleted file mode 100644 index 8beae6efa..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/jetty-env.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - mail/Session - - - - - - - localhost - archiva@localhost - Archiva - true - - - - - - - - - - jdbc/users - - - ../databases/users - sa - create - - - - - - - jdbc/usersShutdown - - - ../databases/users - sa - shutdown - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractActionSupport.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractActionSupport.java deleted file mode 100644 index e092fe319..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractActionSupport.java +++ /dev/null @@ -1,389 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionSupport; -import org.apache.archiva.admin.model.AuditInformation; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.AuditListener; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.metadata.repository.RepositorySessionFactory; -import org.apache.archiva.redback.users.User; -import org.apache.archiva.security.ArchivaXworkUser; -import org.apache.archiva.web.runtime.ArchivaRuntimeInfo; -import org.apache.commons.lang.StringUtils; -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.interceptor.SessionAware; -import org.apache.archiva.redback.rest.services.RedbackRequestInformation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.ApplicationContext; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import javax.inject.Named; -import javax.servlet.http.HttpServletRequest; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * LogEnabled and SessionAware ActionSupport - */ -public abstract class AbstractActionSupport - extends ActionSupport - implements SessionAware, Auditable -{ - protected Map session; - - protected Logger log = LoggerFactory.getLogger( getClass() ); - - @Inject - private List auditListeners = new ArrayList(); - - - @Inject - @Named( value = "repositorySessionFactory" ) - protected RepositorySessionFactory repositorySessionFactory; - - @Inject - protected ApplicationContext applicationContext; - - private String principal; - - @Inject - private ArchivaRuntimeInfo archivaRuntimeInfo; - - @PostConstruct - public void initialize() - { - // no op - } - - @SuppressWarnings( "unchecked" ) - public void setSession( Map map ) - { - this.session = map; - } - - public void addAuditListener( AuditListener listener ) - { - this.auditListeners.add( listener ); - } - - public void clearAuditListeners() - { - this.auditListeners.clear(); - } - - public void removeAuditListener( AuditListener listener ) - { - this.auditListeners.remove( listener ); - } - - protected void triggerAuditEvent( String repositoryId, String resource, String action ) - { - AuditEvent event = new AuditEvent( repositoryId, getPrincipal(), resource, action ); - event.setRemoteIP( getRemoteAddr() ); - - for ( AuditListener listener : auditListeners ) - { - listener.auditEvent( event ); - } - } - - protected void triggerAuditEvent( String resource, String action ) - { - AuditEvent event = new AuditEvent( null, getPrincipal(), resource, action ); - event.setRemoteIP( getRemoteAddr() ); - - for ( AuditListener listener : auditListeners ) - { - listener.auditEvent( event ); - } - } - - protected void triggerAuditEvent( String action ) - { - AuditEvent event = new AuditEvent( null, getPrincipal(), null, action ); - event.setRemoteIP( getRemoteAddr() ); - - for ( AuditListener listener : auditListeners ) - { - listener.auditEvent( event ); - } - } - - private String getRemoteAddr() - { - HttpServletRequest request = ServletActionContext.getRequest(); - return request != null ? request.getRemoteAddr() : null; - } - - @SuppressWarnings( "unchecked" ) - protected String getPrincipal() - { - if ( principal != null ) - { - return principal; - } - return ArchivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() ); - } - - void setPrincipal( String principal ) - { - this.principal = principal; - } - - public void setAuditListeners( List auditListeners ) - { - this.auditListeners = auditListeners; - } - - public void setRepositorySessionFactory( RepositorySessionFactory repositorySessionFactory ) - { - this.repositorySessionFactory = repositorySessionFactory; - } - - protected Map getBeansOfType( Class clazz ) - { - //TODO do some caching here !!! - // olamy : with plexus we get only roleHint - // as per convention we named spring bean role#hint remove role# if exists - Map springBeans = applicationContext.getBeansOfType( clazz ); - - Map beans = new HashMap( springBeans.size() ); - - for ( Map.Entry entry : springBeans.entrySet() ) - { - String key = StringUtils.substringAfterLast( entry.getKey(), "#" ); - beans.put( key, entry.getValue() ); - } - return beans; - } - - - protected AuditInformation getAuditInformation() - { - AuditInformation auditInformation = new AuditInformation( new SimpleUser( getPrincipal() ), getRemoteAddr() ); - - return auditInformation; - } - - protected RedbackRequestInformation getRedbackRequestInformation() - { - return new RedbackRequestInformation( new SimpleUser( getPrincipal() ), getRemoteAddr() ); - } - - public String getArchivaVersion() - { - return archivaRuntimeInfo.getVersion(); - } - - public String getArchivaBuildNumber() - { - return archivaRuntimeInfo.getBuildNumber(); - } - - public String getArchivaBuildTimestamp() - { - return Long.toString( - archivaRuntimeInfo.getTimestamp() ); - } - - public String getArchivaBuildTimestampDateStr() - { - SimpleDateFormat sfd = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssz", getLocale() ); - return sfd.format( new Date( archivaRuntimeInfo.getTimestamp() ) ); - } - - /** - * dummy information for audit events - * - * @since 1.4-M1 - */ - private static class SimpleUser - implements User - { - - private String principal; - - protected SimpleUser( String principal ) - { - this.principal = principal; - } - - public Object getPrincipal() - { - return this.principal; - } - - public String getUsername() - { - return this.principal; - } - - public void setUsername( String name ) - { - - } - - public String getFullName() - { - return null; - } - - public void setFullName( String name ) - { - - } - - public String getEmail() - { - return null; - } - - public void setEmail( String address ) - { - - } - - public String getPassword() - { - return null; - } - - public void setPassword( String rawPassword ) - { - - } - - public String getEncodedPassword() - { - return null; - } - - public void setEncodedPassword( String encodedPassword ) - { - - } - - public Date getLastPasswordChange() - { - return null; - } - - public void setLastPasswordChange( Date passwordChangeDate ) - { - - } - - public List getPreviousEncodedPasswords() - { - return null; - } - - public void setPreviousEncodedPasswords( List encodedPasswordList ) - { - - } - - public void addPreviousEncodedPassword( String encodedPassword ) - { - - } - - public boolean isPermanent() - { - return false; - } - - public void setPermanent( boolean permanent ) - { - - } - - public boolean isLocked() - { - return false; - } - - public void setLocked( boolean locked ) - { - - } - - public boolean isPasswordChangeRequired() - { - return false; - } - - public void setPasswordChangeRequired( boolean changeRequired ) - { - - } - - public boolean isValidated() - { - return false; - } - - public void setValidated( boolean valid ) - { - - } - - public int getCountFailedLoginAttempts() - { - return 0; - } - - public void setCountFailedLoginAttempts( int count ) - { - - } - - public Date getAccountCreationDate() - { - return null; - } - - public void setAccountCreationDate( Date date ) - { - - } - - public Date getLastLoginDate() - { - return null; - } - - public void setLastLoginDate( Date date ) - { - - } - } - - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractRepositoryBasedAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractRepositoryBasedAction.java deleted file mode 100644 index 60a19b219..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/AbstractRepositoryBasedAction.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import org.apache.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; - -import javax.inject.Inject; -import java.util.Collections; -import java.util.List; - -public class AbstractRepositoryBasedAction - extends AbstractActionSupport -{ - - @Inject - private UserRepositories userRepositories; - - protected List getObservableRepos() - { - try - { - List ids = userRepositories.getObservableRepositoryIds( getPrincipal() ); - return ids == null ? Collections.emptyList() : ids; - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - public void setUserRepositories( UserRepositories userRepositories ) - { - this.userRepositories = userRepositories; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/BrowseAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/BrowseAction.java deleted file mode 100644 index 5c040c729..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/BrowseAction.java +++ /dev/null @@ -1,393 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.repository.MetadataResolutionException; -import org.apache.archiva.metadata.repository.MetadataResolver; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -/** - * Browse the repository. - * - * @todo implement repository selectors (all or specific repository) - */ -@Controller( "browseAction" ) -@Scope( "prototype" ) -public class BrowseAction - extends AbstractRepositoryBasedAction -{ - private String groupId; - - private String artifactId; - - private String repositoryId; - - private ProjectVersionMetadata sharedModel; - - private Collection namespaces; - - private Collection projectIds; - - private Collection projectVersions; - - public String browse() - throws MetadataResolutionException - { - List selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty( selectedRepos ) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - Set namespaces = new LinkedHashSet(); - - // TODO: this logic should be optional, particularly remembering we want to keep this code simple - // it is located here to avoid the content repository implementation needing to do too much for what - // is essentially presentation code - Set namespacesToCollapse; - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - namespacesToCollapse = new LinkedHashSet(); - for ( String repoId : selectedRepos ) - { - namespacesToCollapse.addAll( metadataResolver.resolveRootNamespaces( repositorySession, repoId ) ); - } - - for ( String n : namespacesToCollapse ) - { - // TODO: check performance of this - namespaces.add( collapseNamespaces( repositorySession, metadataResolver, selectedRepos, n ) ); - } - } - finally - { - repositorySession.close(); - } - - this.namespaces = getSortedList( namespaces ); - return SUCCESS; - } - - private String collapseNamespaces( RepositorySession repositorySession, MetadataResolver metadataResolver, - Collection repoIds, String n ) - throws MetadataResolutionException - { - Set subNamespaces = new LinkedHashSet(); - for ( String repoId : repoIds ) - { - subNamespaces.addAll( metadataResolver.resolveNamespaces( repositorySession, repoId, n ) ); - } - if ( subNamespaces.size() != 1 ) - { - log.debug( "{} is not collapsible as it has sub-namespaces: {}", n, subNamespaces ); - return n; - } - else - { - for ( String repoId : repoIds ) - { - Collection projects = metadataResolver.resolveProjects( repositorySession, repoId, n ); - if ( projects != null && !projects.isEmpty() ) - { - log.debug( "{} is not collapsible as it has projects", n ); - return n; - } - } - return collapseNamespaces( repositorySession, metadataResolver, repoIds, - n + "." + subNamespaces.iterator().next() ); - } - } - - public String browseGroup() - throws MetadataResolutionException - { - if ( StringUtils.isEmpty( groupId ) ) - { - // TODO: i18n - addActionError( "You must specify a group ID to browse" ); - return ERROR; - } - - List selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty( selectedRepos ) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - Set projects = new LinkedHashSet(); - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - Set namespaces; - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - - Set namespacesToCollapse = new LinkedHashSet(); - for ( String repoId : selectedRepos ) - { - namespacesToCollapse.addAll( metadataResolver.resolveNamespaces( repositorySession, repoId, groupId ) ); - - projects.addAll( metadataResolver.resolveProjects( repositorySession, repoId, groupId ) ); - } - - // TODO: this logic should be optional, particularly remembering we want to keep this code simple - // it is located here to avoid the content repository implementation needing to do too much for what - // is essentially presentation code - namespaces = new LinkedHashSet(); - for ( String n : namespacesToCollapse ) - { - // TODO: check performance of this - namespaces.add( - collapseNamespaces( repositorySession, metadataResolver, selectedRepos, groupId + "." + n ) ); - } - } - finally - { - repositorySession.close(); - } - - this.namespaces = getSortedList( namespaces ); - this.projectIds = getSortedList( projects ); - return SUCCESS; - } - - private List getSortedList( Set set ) - { - List list = new ArrayList( set ); - Collections.sort( list ); - return list; - } - - public String browseArtifact() - throws MetadataResolutionException - { - if ( StringUtils.isEmpty( groupId ) ) - { - // TODO: i18n - addActionError( "You must specify a group ID to browse" ); - return ERROR; - } - - if ( StringUtils.isEmpty( artifactId ) ) - { - // TODO: i18n - addActionError( "You must specify a artifact ID to browse" ); - return ERROR; - } - - List selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty( selectedRepos ) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - - Set versions = new LinkedHashSet(); - for ( String repoId : selectedRepos ) - { - versions.addAll( - metadataResolver.resolveProjectVersions( repositorySession, repoId, groupId, artifactId ) ); - } - - // TODO: sort by known version ordering method - this.projectVersions = new ArrayList( versions ); - - populateSharedModel( repositorySession, metadataResolver, selectedRepos, versions ); - } - finally - { - repositorySession.close(); - } - - return SUCCESS; - } - - private void populateSharedModel( RepositorySession repositorySession, MetadataResolver metadataResolver, - Collection selectedRepos, Collection projectVersions ) - { - sharedModel = new ProjectVersionMetadata(); - - MavenProjectFacet mavenFacet = new MavenProjectFacet(); - mavenFacet.setGroupId( groupId ); - mavenFacet.setArtifactId( artifactId ); - sharedModel.addFacet( mavenFacet ); - - boolean isFirstVersion = true; - - for ( String version : projectVersions ) - { - ProjectVersionMetadata versionMetadata = null; - for ( String repoId : selectedRepos ) - { - if ( versionMetadata == null ) - { - try - { - versionMetadata = - metadataResolver.resolveProjectVersion( repositorySession, repoId, groupId, artifactId, - version ); - } - catch ( MetadataResolutionException e ) - { - log.error( - "Skipping invalid metadata while compiling shared model for " + groupId + ":" + artifactId - + " in repo " + repoId + ": " + e.getMessage() ); - } - } - } - - if ( versionMetadata == null ) - { - continue; - } - - if ( isFirstVersion ) - { - sharedModel = versionMetadata; - sharedModel.setId( null ); - } - else - { - MavenProjectFacet versionMetadataMavenFacet = - (MavenProjectFacet) versionMetadata.getFacet( MavenProjectFacet.FACET_ID ); - if ( versionMetadataMavenFacet != null ) - { - if ( mavenFacet.getPackaging() != null && !StringUtils.equalsIgnoreCase( mavenFacet.getPackaging(), - versionMetadataMavenFacet.getPackaging() ) ) - { - mavenFacet.setPackaging( null ); - } - } - - if ( sharedModel.getName() != null && !StringUtils.equalsIgnoreCase( sharedModel.getName(), - versionMetadata.getName() ) ) - { - sharedModel.setName( "" ); - } - - if ( sharedModel.getDescription() != null && !StringUtils.equalsIgnoreCase( - sharedModel.getDescription(), versionMetadata.getDescription() ) ) - { - sharedModel.setDescription( null ); - } - - if ( sharedModel.getIssueManagement() != null && versionMetadata.getIssueManagement() != null - && !StringUtils.equalsIgnoreCase( sharedModel.getIssueManagement().getUrl(), - versionMetadata.getIssueManagement().getUrl() ) ) - { - sharedModel.setIssueManagement( null ); - } - - if ( sharedModel.getCiManagement() != null && versionMetadata.getCiManagement() != null - && !StringUtils.equalsIgnoreCase( sharedModel.getCiManagement().getUrl(), - versionMetadata.getCiManagement().getUrl() ) ) - { - sharedModel.setCiManagement( null ); - } - - if ( sharedModel.getOrganization() != null && versionMetadata.getOrganization() != null - && !StringUtils.equalsIgnoreCase( sharedModel.getOrganization().getName(), - versionMetadata.getOrganization().getName() ) ) - { - sharedModel.setOrganization( null ); - } - - if ( sharedModel.getUrl() != null && !StringUtils.equalsIgnoreCase( sharedModel.getUrl(), - versionMetadata.getUrl() ) ) - { - sharedModel.setUrl( null ); - } - } - - isFirstVersion = false; - } - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public Collection getNamespaces() - { - return namespaces; - } - - public String getRepositoryId() - { - - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - - this.repositoryId = repositoryId; - } - - public ProjectVersionMetadata getSharedModel() - { - return sharedModel; - } - - public Collection getProjectIds() - { - return projectIds; - } - - public Collection getProjectVersions() - { - return projectVersions; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/DeleteArtifactAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/DeleteArtifactAction.java deleted file mode 100644 index cdf446c52..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/DeleteArtifactAction.java +++ /dev/null @@ -1,330 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.maven2.model.Artifact; -import org.apache.archiva.rest.api.services.ArchivaRestServiceException; -import org.apache.archiva.rest.api.services.RepositoriesService; -import org.apache.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.redback.rest.services.RedbackAuthenticationThreadLocal; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.Collections; -import java.util.List; - -/** - * Delete an artifact. Metadata will be updated if one exists, otherwise it would be created. - */ -@Controller( "deleteArtifactAction" ) -@Scope( "prototype" ) -public class DeleteArtifactAction - extends AbstractActionSupport - implements Validateable, Preparable, Auditable -{ - /** - * The groupId of the artifact to be deleted. - */ - private String groupId; - - /** - * The artifactId of the artifact to be deleted. - */ - private String artifactId; - - /** - * The version of the artifact to be deleted. - */ - private String version; - - /** - * @since 1.4-M2 - * The classifier of the artifact to be deleted (optionnal) - */ - private String classifier; - - /** - * @since 1.4-M2 - * The type of the artifact to be deleted (optionnal) (default jar) - */ - private String type; - - /** - * The repository where the artifact is to be deleted. - */ - private String repositoryId; - - /** - * List of managed repositories to delete from. - */ - private List managedRepos; - - @Inject - private UserRepositories userRepositories; - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RepositoriesService repositoriesService; - - private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[]{ ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 }; - - @PostConstruct - public void initialize() - { - super.initialize(); - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public List getManagedRepos() - { - return managedRepos; - } - - public void setManagedRepos( List managedRepos ) - { - this.managedRepos = managedRepos; - } - - public void prepare() - { - managedRepos = getManagableRepos(); - } - - public String getClassifier() - { - return classifier; - } - - public void setClassifier( String classifier ) - { - this.classifier = classifier; - } - - public String getType() - { - return type; - } - - public void setType( String type ) - { - this.type = type; - } - - public String input() - { - return INPUT; - } - - private void reset() - { - // reset the fields so the form is clear when - // the action returns to the jsp page - groupId = ""; - artifactId = ""; - version = ""; - repositoryId = ""; - classifier = ""; - type = ""; - } - - public String doDelete() - { - // services need a ThreadLocal variable to test karma - RedbackAuthenticationThreadLocal.set( getRedbackRequestInformation() ); - try - { - Artifact artifact = new Artifact(); - artifact.setGroupId( groupId ); - artifact.setArtifactId( artifactId ); - artifact.setVersion( version ); - artifact.setClassifier( classifier ); - artifact.setPackaging( type ); - artifact.setContext( repositoryId ); - - repositoriesService.deleteArtifact( artifact ); - } - catch ( ArchivaRestServiceException e ) - { - addActionError( "ArchivaRestServiceException exception: " + e.getMessage() ); - return ERROR; - } - finally - { - RedbackAuthenticationThreadLocal.set( null ); - } - - StringBuilder msg = new StringBuilder( "Artifact \'" ).append( groupId ).append( ":" ).append( artifactId ); - - if ( StringUtils.isNotEmpty( classifier ) ) - { - msg.append( ":" ).append( classifier ); - } - msg.append( ":" ).append( version ).append( "' was successfully deleted from repository '" ).append( - repositoryId ).append( "'" ); - addActionMessage( msg.toString() ); - reset(); - return SUCCESS; - } - - public void validate() - { - try - { - if ( !userRepositories.isAuthorizedToDeleteArtifacts( getPrincipal(), repositoryId ) ) - { - addActionError( "User is not authorized to delete artifacts in repository '" + repositoryId + "'." ); - } - - if ( ( version.length() > 0 ) && ( !VersionUtil.isVersion( version ) ) ) - { - addActionError( "Invalid version." ); - } - } - catch ( AccessDeniedException e ) - { - addActionError( e.getMessage() ); - } - catch ( ArchivaSecurityException e ) - { - addActionError( e.getMessage() ); - } - - // trims all request parameter values, since the trailing/leading white-spaces are ignored during validation. - trimAllRequestParameterValues(); - } - - private List getManagableRepos() - { - try - { - return userRepositories.getManagableRepositoryIds( getPrincipal() ); - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - // TODO: pass this onto the screen. - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( groupId ) ) - { - groupId = groupId.trim(); - } - - if ( StringUtils.isNotEmpty( artifactId ) ) - { - artifactId = artifactId.trim(); - } - - if ( StringUtils.isNotEmpty( version ) ) - { - version = version.trim(); - } - - if ( StringUtils.isNotEmpty( repositoryId ) ) - { - repositoryId = repositoryId.trim(); - } - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public RepositoriesService getRepositoriesService() - { - return repositoriesService; - } - - public void setRepositoriesService( RepositoriesService repositoriesService ) - { - this.repositoriesService = repositoriesService; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/GlobalResults.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/GlobalResults.java deleted file mode 100644 index ec52a4db2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/GlobalResults.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -/** - * GlobalResults - constants for global result definitions. - * - * - */ -public class GlobalResults -{ - public static final String ACCESS_TO_NO_REPOS = "access_to_no_repos"; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/MergeAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/MergeAction.java deleted file mode 100644 index af6f684c8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/MergeAction.java +++ /dev/null @@ -1,351 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.filter.Filter; -import org.apache.archiva.metadata.repository.filter.IncludesFilter; -import org.apache.archiva.redback.components.taskqueue.TaskQueueException; -import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.stagerepository.merge.Maven2RepositoryMerger; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * - */ -@Controller ("mergeAction") -@Scope ("prototype") -public class MergeAction - extends AbstractActionSupport - implements Validateable, Preparable, Auditable -{ - - @Inject - @Named (value = "repositoryMerger#maven2") - private Maven2RepositoryMerger repositoryMerger; - - @Inject - protected ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - @Named (value = "archivaTaskScheduler#repository") - private RepositoryArchivaTaskScheduler repositoryTaskScheduler; - - private ManagedRepository repository; - - private String repoid; - - private String sourceRepoId; - - private final String action = "merge"; - - private final String hasConflicts = "CONFLICTS"; - - private List conflictSourceArtifacts; - - private List conflictSourceArtifactsToBeDisplayed; - - public String getConflicts() - { - try - { - sourceRepoId = repoid + "-stage"; - ManagedRepository targetRepoConfig = managedRepositoryAdmin.getManagedRepository( sourceRepoId ); - - if ( targetRepoConfig != null ) - { - return hasConflicts; - } - else - { - return ERROR; - } - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException " + e.getMessage() ); - return ERROR; - } - } - - public String doMerge() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - List sourceArtifacts = metadataRepository.getArtifacts( sourceRepoId ); - - if ( repository.isReleases() && !repository.isSnapshots() ) - { - mergeWithOutSnapshots( metadataRepository, sourceArtifacts, sourceRepoId, repoid ); - } - else - { - repositoryMerger.merge( metadataRepository, sourceRepoId, repoid ); - - for ( ArtifactMetadata metadata : sourceArtifacts ) - { - triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES ); - } - } - - scanRepository(); - - addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." ); - - return SUCCESS; - } - catch ( Exception e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error occurred while merging the repositories: " + e.getMessage() ); - return ERROR; - } - finally - { - repositorySession.close(); - } - } - - public String mergeBySkippingConflicts() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - List sourceArtifacts = metadataRepository.getArtifacts( sourceRepoId ); - sourceArtifacts.removeAll( conflictSourceArtifacts ); - - if ( repository.isReleases() && !repository.isSnapshots() ) - { - mergeWithOutSnapshots( metadataRepository, sourceArtifacts, sourceRepoId, repoid ); - } - else - { - - Filter artifactsWithOutConflicts = - new IncludesFilter( sourceArtifacts ); - repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactsWithOutConflicts ); - for ( ArtifactMetadata metadata : sourceArtifacts ) - { - triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES ); - } - } - - scanRepository(); - - addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." ); - - return SUCCESS; - } - catch ( Exception e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error occurred while merging the repositories: " + e.getMessage() ); - return ERROR; - } - finally - { - repositorySession.close(); - } - } - - private void mergeWithOutSnapshots( MetadataRepository metadataRepository, List sourceArtifacts, - String sourceRepoId, String repoid ) - throws Exception - { - List artifactsWithOutSnapshots = new ArrayList(); - for ( ArtifactMetadata metadata : sourceArtifacts ) - { - - if ( metadata.getProjectVersion().contains( VersionUtil.SNAPSHOT ) ) - { - artifactsWithOutSnapshots.add( metadata ); - } - else - { - triggerAuditEvent( repoid, metadata.getId(), AuditEvent.MERGING_REPOSITORIES ); - } - - } - sourceArtifacts.removeAll( artifactsWithOutSnapshots ); - - Filter artifactListWithOutSnapShots = new IncludesFilter( sourceArtifacts ); - repositoryMerger.merge( metadataRepository, sourceRepoId, repoid, artifactListWithOutSnapShots ); - } - - public String mergeWithOutConlficts() - { - sourceRepoId = repoid + "-stage"; - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - conflictSourceArtifacts = - repositoryMerger.getConflictingArtifacts( repositorySession.getRepository(), sourceRepoId, repoid ); - } - catch ( Exception e ) - { - addActionError( "Error occurred while merging the repositories." ); - return ERROR; - } - finally - { - repositorySession.close(); - } - - addActionMessage( "Repository '" + sourceRepoId + "' successfully merged to '" + repoid + "'." ); - - return SUCCESS; - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - public void prepare() - throws Exception - { - sourceRepoId = repoid + "-stage"; - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - conflictSourceArtifacts = - repositoryMerger.getConflictingArtifacts( repositorySession.getRepository(), sourceRepoId, repoid ); - } - finally - { - repositorySession.close(); - } - - this.repository = managedRepositoryAdmin.getManagedRepository( repoid ); - setConflictSourceArtifactsToBeDisplayed( conflictSourceArtifacts ); - } - - public String getSourceRepoId() - { - return sourceRepoId; - } - - public void setSourceRepoId( String sourceRepoId ) - { - this.sourceRepoId = sourceRepoId; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - public List getConflictSourceArtifacts() - { - return conflictSourceArtifacts; - } - - public void setConflictSourceArtifacts( List conflictSourceArtifacts ) - { - this.conflictSourceArtifacts = conflictSourceArtifacts; - } - - public List getConflictSourceArtifactsToBeDisplayed() - { - return conflictSourceArtifactsToBeDisplayed; - } - - public void setConflictSourceArtifactsToBeDisplayed( List conflictSourceArtifacts ) - throws Exception - { - this.conflictSourceArtifactsToBeDisplayed = new ArrayList(); - HashMap map = new HashMap(); - for ( ArtifactMetadata metadata : conflictSourceArtifacts ) - { - String metadataId = - metadata.getNamespace() + metadata.getProject() + metadata.getProjectVersion() + metadata.getVersion(); - map.put( metadataId, metadata ); - } - conflictSourceArtifactsToBeDisplayed.addAll( map.values() ); - } - - - private void scanRepository() - { - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( repoid ); - task.setScanAll( true ); - - if ( repositoryTaskScheduler.isProcessingRepositoryTask( repoid ) ) - { - log.info( "Repository [{}] task was already queued.", repoid ); - } - else - { - try - { - log.info( "Your request to have repository [{}] be indexed has been queued.", repoid ); - repositoryTaskScheduler.queueTask( task ); - } - catch ( TaskQueueException e ) - { - log.warn( "Unable to queue your request to have repository [{}] be indexed: {}", repoid, - e.getMessage() ); - } - } - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } -} \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java deleted file mode 100644 index 24bf76179..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/SearchAction.java +++ /dev/null @@ -1,727 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.indexer.search.RepositorySearch; -import org.apache.archiva.indexer.search.RepositorySearchException; -import org.apache.archiva.indexer.search.SearchFields; -import org.apache.archiva.indexer.search.SearchResultHit; -import org.apache.archiva.indexer.search.SearchResultLimits; -import org.apache.archiva.indexer.search.SearchResults; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.struts2.ServletActionContext; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; - -import javax.inject.Inject; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Search all indexed fields by the given criteria. - */ -@Controller( "searchAction" ) -@Scope( "prototype" ) -public class SearchAction - extends AbstractRepositoryBasedAction - implements Preparable -{ - - @Inject - protected ManagedRepositoryAdmin managedRepositoryAdmin; - - /** - * Query string. - */ - private String q; - - /** - * The Search Results. - */ - private SearchResults results; - - private static final String RESULTS = "results"; - - private static final String ARTIFACT = "artifact"; - - private List databaseResults; - - private int currentPage = 0; - - private int totalPages; - - private boolean searchResultsOnly; - - private String completeQueryString; - - private static final String COMPLETE_QUERY_STRING_SEPARATOR = ";"; - - private List managedRepositoryList = new ArrayList(); - - private String groupId; - - private String artifactId; - - private String version; - - private String className; - - /** - * contains osgi metadata Bundle-Version if available - * - * @since 1.4-M1 - */ - private String bundleVersion; - - /** - * contains osgi metadata Bundle-SymbolicName if available - * - * @since 1.4-M1 - */ - private String bundleSymbolicName; - - /** - * contains osgi metadata Export-Package if available - * - * @since 1.4-M1 - */ - private String bundleExportPackage; - - /** - * contains osgi metadata import package if available - * - * @since 1.4-M1 - */ - private String bundleImportPackage; - - /** - * contains osgi metadata name if available - * - * @since 1.4-M1 - */ - private String bundleName; - - /** - * contains osgi metadata Export-Service if available - * - * @since 1.4-M1 - */ - private String bundleExportService; - - private int rowCount = 30; - - private String repositoryId; - - private boolean fromFilterSearch; - - private boolean filterSearch = false; - - private boolean fromResultsPage; - - @Inject - private RepositorySearch nexusSearch; - - private Map searchFields; - - private String infoMessage; - - public boolean isFromResultsPage() - { - return fromResultsPage; - } - - public void setFromResultsPage(boolean fromResultsPage) - { - this.fromResultsPage = fromResultsPage; - } - - public boolean isFromFilterSearch() - { - return fromFilterSearch; - } - - public void setFromFilterSearch(boolean fromFilterSearch) - { - this.fromFilterSearch = fromFilterSearch; - } - - public void prepare() - { - managedRepositoryList = getObservableRepos(); - - if ( managedRepositoryList.size() > 0 ) - { - managedRepositoryList.add("all"); - } - - searchFields = new LinkedHashMap(); - searchFields.put("groupId", "Group ID"); - searchFields.put("artifactId", "Artifact ID"); - searchFields.put("version", "Version"); - searchFields.put("className", "Class/Package Name"); - searchFields.put("rowCount", "Row Count"); - searchFields.put("bundleVersion", "OSGI Bundle Version"); - searchFields.put("bundleSymbolicName", "OSGI Bundle-SymbolicName"); - searchFields.put("bundleExportPackage", "OSGI Export-Package"); - searchFields.put("bundleImportPackage", "OSGI import package"); - searchFields.put("bundleName", "OSGI name"); - searchFields.put("bundleExportService", "OSGI Export-Service"); - - super.clearErrorsAndMessages(); - clearSearchFields(); - } - - private void clearSearchFields() - { - repositoryId = ""; - artifactId = ""; - groupId = ""; - version = ""; - className = ""; - rowCount = 30; - currentPage = 0; - } - - // advanced search MRM-90 -- filtered search - public String filteredSearch() - throws MalformedURLException - { - if ( StringUtils.isBlank(groupId) && StringUtils.isBlank(artifactId) && StringUtils.isBlank(className) - && StringUtils.isBlank(version) && StringUtils.isBlank(bundleExportPackage) && StringUtils.isBlank( - bundleExportService) && StringUtils.isBlank(bundleImportPackage) && StringUtils.isBlank(bundleName) - && StringUtils.isBlank(bundleSymbolicName) && StringUtils.isBlank(bundleVersion) ) - { - addActionError("Advanced Search - At least one search criteria must be provided."); - return INPUT; - } - - fromFilterSearch = true; - - if ( CollectionUtils.isEmpty(managedRepositoryList) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - SearchResultLimits limits = new SearchResultLimits(currentPage); - limits.setPageSize(rowCount); - List selectedRepos = new ArrayList(); - - if ( repositoryId == null || StringUtils.isBlank(repositoryId) || "all".equals( - StringUtils.stripToEmpty(repositoryId)) ) - { - selectedRepos = getObservableRepos(); - } - else - { - selectedRepos.add(repositoryId); - } - - if ( CollectionUtils.isEmpty(selectedRepos) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - SearchFields searchFields = new SearchFields(groupId, artifactId, version, null, className, selectedRepos); - - if ( StringUtils.isNotBlank(this.bundleExportPackage) ) - { - searchFields.setBundleExportPackage(this.bundleExportPackage); - } - - if ( StringUtils.isNotBlank(this.bundleExportService) ) - { - searchFields.setBundleExportService(this.bundleExportService); - } - - if ( StringUtils.isNotBlank(this.bundleImportPackage) ) - { - searchFields.setBundleImportPackage(this.bundleImportPackage); - } - - if ( StringUtils.isNotBlank(this.bundleSymbolicName) ) - { - searchFields.setBundleSymbolicName(this.bundleSymbolicName); - } - - if ( StringUtils.isNotBlank(this.bundleName) ) - { - searchFields.setBundleName(this.bundleName); - } - - if ( StringUtils.isNotBlank(this.bundleVersion) ) - { - searchFields.setBundleVersion(this.bundleVersion); - } - - log.debug("filteredSearch with searchFields {}", searchFields); - - // TODO: add packaging in the list of fields for advanced search (UI)? - try - { - results = getNexusSearch().search(getPrincipal(), searchFields, limits); - } - catch ( RepositorySearchException e ) - { - addActionError(e.getMessage()); - return ERROR; - } - - if ( results.isEmpty() ) - { - addActionError("No results found"); - return INPUT; - } - - totalPages = results.getTotalHits() / limits.getPageSize(); - - if ( ( results.getTotalHits() % limits.getPageSize() ) != 0 ) - { - totalPages = totalPages + 1; - } - - for ( SearchResultHit hit : results.getHits() ) - { - // fix version ? - //hit.setVersion( VersionUtil.getBaseVersion( version ) ); - - } - - return SUCCESS; - } - - @SuppressWarnings( "unchecked" ) - public String quickSearch() - throws MalformedURLException - { - /* TODO: give action message if indexing is in progress. - * This should be based off a count of 'unprocessed' artifacts. - * This (yet to be written) routine could tell the user that X (unprocessed) artifacts are not yet - * present in the full text search. - */ - - assert q != null && q.length() != 0; - - fromFilterSearch = false; - - SearchResultLimits limits = new SearchResultLimits(currentPage); - - List selectedRepos = getObservableRepos(); - if ( CollectionUtils.isEmpty(selectedRepos) ) - { - return GlobalResults.ACCESS_TO_NO_REPOS; - } - - log.debug("quickSearch with selectedRepos {} query {}", selectedRepos, q); - - try - { - if ( searchResultsOnly && !completeQueryString.equals("") ) - { - results = getNexusSearch().search(getPrincipal(), selectedRepos, q, limits, parseCompleteQueryString()); - } - else - { - completeQueryString = ""; - results = getNexusSearch().search(getPrincipal(), selectedRepos, q, limits, null); - } - } - catch ( RepositorySearchException e ) - { - addActionError(e.getMessage()); - return ERROR; - } - - if ( results.isEmpty() ) - { - addActionError("No results found"); - return INPUT; - } - - totalPages = results.getTotalHitsMapSize() / limits.getPageSize(); - - if ( ( results.getTotalHitsMapSize() % limits.getPageSize() ) != 0 ) - { - totalPages = totalPages + 1; - } - - if ( !isEqualToPreviousSearchTerm(q) ) - { - buildCompleteQueryString(q); - } - - return SUCCESS; - } - - public String findArtifact() - throws Exception - { - // TODO: give action message if indexing is in progress - - if ( StringUtils.isBlank(q) ) - { - addActionError("Unable to search for a blank checksum"); - return INPUT; - } - - databaseResults = new ArrayList(); - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - for ( String repoId : getObservableRepos() ) - { - databaseResults.addAll(metadataRepository.getArtifactsByChecksum(repoId, q)); - } - } - finally - { - repositorySession.close(); - } - - if ( databaseResults.isEmpty() ) - { - addActionError("No results found"); - return INPUT; - } - - if ( databaseResults.size() == 1 ) - { - // 1 hit? return it's information directly! - return ARTIFACT; - } - - return RESULTS; - } - - public String doInput() - { - return INPUT; - } - - private void buildCompleteQueryString(String searchTerm) - { - if ( searchTerm.indexOf(COMPLETE_QUERY_STRING_SEPARATOR) != -1 ) - { - searchTerm = StringUtils.remove(searchTerm, COMPLETE_QUERY_STRING_SEPARATOR); - } - - if ( completeQueryString == null || "".equals(completeQueryString) ) - { - completeQueryString = searchTerm; - } - else - { - completeQueryString = completeQueryString + COMPLETE_QUERY_STRING_SEPARATOR + searchTerm; - } - } - - private List parseCompleteQueryString() - { - List parsedCompleteQueryString = new ArrayList(); - String[] parsed = StringUtils.split(completeQueryString, COMPLETE_QUERY_STRING_SEPARATOR); - CollectionUtils.addAll(parsedCompleteQueryString, parsed); - - return parsedCompleteQueryString; - } - - private boolean isEqualToPreviousSearchTerm(String searchTerm) - { - if ( !"".equals(completeQueryString) ) - { - String[] parsed = StringUtils.split(completeQueryString, COMPLETE_QUERY_STRING_SEPARATOR); - if ( StringUtils.equalsIgnoreCase(searchTerm, parsed[parsed.length - 1]) ) - { - return true; - } - } - - return false; - } - - public String getQ() - { - return q; - } - - public void setQ(String q) - { - this.q = q; - } - - public SearchResults getResults() - { - return results; - } - - public List getDatabaseResults() - { - return databaseResults; - } - - public void setCurrentPage(int page) - { - this.currentPage = page; - } - - public int getCurrentPage() - { - return currentPage; - } - - public int getTotalPages() - { - return totalPages; - } - - public void setTotalPages(int totalPages) - { - this.totalPages = totalPages; - } - - public boolean isSearchResultsOnly() - { - return searchResultsOnly; - } - - public void setSearchResultsOnly(boolean searchResultsOnly) - { - this.searchResultsOnly = searchResultsOnly; - } - - public String getCompleteQueryString() - { - return completeQueryString; - } - - public void setCompleteQueryString(String completeQueryString) - { - this.completeQueryString = completeQueryString; - } - - public Map getManagedRepositories() - throws RepositoryAdminException - { - return managedRepositoryAdmin.getManagedRepositoriesAsMap(); - } - - // wtf : does nothing ?? - public void setManagedRepositories(Map managedRepositories) - { - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId(String groupId) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId(String artifactId) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion(String version) - { - this.version = version; - } - - public int getRowCount() - { - return rowCount; - } - - public void setRowCount(int rowCount) - { - this.rowCount = rowCount; - } - - public boolean isFilterSearch() - { - return filterSearch; - } - - public void setFilterSearch(boolean filterSearch) - { - this.filterSearch = filterSearch; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId(String repositoryId) - { - this.repositoryId = repositoryId; - } - - public List getManagedRepositoryList() - { - return managedRepositoryList; - } - - public void setManagedRepositoryList(List managedRepositoryList) - { - this.managedRepositoryList = managedRepositoryList; - } - - public String getClassName() - { - return className; - } - - public void setClassName(String className) - { - this.className = className; - } - - public RepositorySearch getNexusSearch() - { - if ( nexusSearch == null ) - { - WebApplicationContext wac = - WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext()); - nexusSearch = wac.getBean("nexusSearch", RepositorySearch.class); - } - return nexusSearch; - } - - public void setNexusSearch(RepositorySearch nexusSearch) - { - this.nexusSearch = nexusSearch; - } - - public Map getSearchFields() - { - return searchFields; - } - - public void setSearchFields(Map searchFields) - { - this.searchFields = searchFields; - } - - public String getInfoMessage() - { - return infoMessage; - } - - public void setInfoMessage(String infoMessage) - { - this.infoMessage = infoMessage; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin(ManagedRepositoryAdmin managedRepositoryAdmin) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public String getBundleVersion() - { - return bundleVersion; - } - - public void setBundleVersion(String bundleVersion) - { - this.bundleVersion = bundleVersion; - } - - public String getBundleSymbolicName() - { - return bundleSymbolicName; - } - - public void setBundleSymbolicName(String bundleSymbolicName) - { - this.bundleSymbolicName = bundleSymbolicName; - } - - public String getBundleExportPackage() - { - return bundleExportPackage; - } - - public void setBundleExportPackage(String bundleExportPackage) - { - this.bundleExportPackage = bundleExportPackage; - } - - public String getBundleImportPackage() - { - return bundleImportPackage; - } - - public void setBundleImportPackage(String bundleImportPackage) - { - this.bundleImportPackage = bundleImportPackage; - } - - public String getBundleName() - { - return bundleName; - } - - public void setBundleName(String bundleName) - { - this.bundleName = bundleName; - } - - public String getBundleExportService() - { - return bundleExportService; - } - - public void setBundleExportService(String bundleExportService) - { - this.bundleExportService = bundleExportService; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/ShowArtifactAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/ShowArtifactAction.java deleted file mode 100644 index d6cb7b8a0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/ShowArtifactAction.java +++ /dev/null @@ -1,628 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.metadata.generic.GenericMetadataFacet; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.Dependency; -import org.apache.archiva.metadata.model.MailingList; -import org.apache.archiva.metadata.model.MetadataFacet; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.model.ProjectVersionReference; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.MetadataResolutionException; -import org.apache.archiva.metadata.repository.MetadataResolver; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMetadataVersionComparator; -import org.apache.archiva.reports.RepositoryProblemFacet; -import org.apache.archiva.repository.RepositoryContentFactory; -import org.apache.archiva.repository.RepositoryException; -import org.apache.archiva.repository.RepositoryNotFoundException; -import org.apache.archiva.maven2.model.Artifact; -import org.apache.archiva.rest.services.utils.ArtifactBuilder; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Browse the repository. - *

- * TODO change name to ShowVersionedAction to conform to terminology. - */ -@SuppressWarnings( "serial" ) -@Controller( "showArtifactAction" ) -@Scope( "prototype" ) -public class ShowArtifactAction - extends AbstractRepositoryBasedAction - implements Validateable -{ - /* .\ Not Exposed \._____________________________________________ */ - - @Inject - private RepositoryContentFactory repositoryFactory; - - /* .\ Exposed Output Objects \.__________________________________ */ - - private String groupId; - - private String artifactId; - - private String version; - - private String repositoryId; - - /** - * The model of this versioned project. - */ - private ProjectVersionMetadata model; - - /** - * The list of artifacts that depend on this versioned project. - */ - private List dependees; - - private List mailingLists; - - private List dependencies; - - private Map> artifacts; - - private boolean dependencyTree = false; - - private String deleteItem; - - private Map genericMetadata; - - private String propertyName; - - private String propertyValue; - - /** - * Show the versioned project information tab. TODO: Change name to 'project' - we are showing project versions - * here, not specific artifact information (though that is rendered in the download box). - */ - public String artifact() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - return handleArtifact( repositorySession ); - } - catch ( Exception e ) - { - log.warn( "Unable to getProjectVersionMetadata: " + e.getMessage(), e ); - addActionError( "Unable to getProjectVersionMetadata - consult application logs." ); - return ERROR; - } - finally - - { - repositorySession.close(); - } - - } - - private String handleArtifact( RepositorySession session ) - throws RepositoryNotFoundException, RepositoryException - { - // In the future, this should be replaced by the repository grouping mechanism, so that we are only making - // simple resource requests here and letting the resolver take care of it - ProjectVersionMetadata versionMetadata = getProjectVersionMetadata( session ); - - if ( versionMetadata == null ) - { - addActionError( "Artifact not found" ); - return ERROR; - } - - if ( versionMetadata.isIncomplete() ) - { - addIncompleteModelWarning( "Artifact metadata is incomplete." ); - } - - model = versionMetadata; - - return SUCCESS; - } - - private ProjectVersionMetadata getProjectVersionMetadata( RepositorySession session ) - throws RepositoryNotFoundException, RepositoryException - { - ProjectVersionMetadata versionMetadata = null; - artifacts = new LinkedHashMap>(); - - List repos = getObservableRepos(); - - MetadataResolver metadataResolver = session.getResolver(); - for ( String repoId : repos ) - { - if ( versionMetadata == null ) - { - // we don't want the implementation being that intelligent - so another resolver to do the - // "just-in-time" nature of picking up the metadata (if appropriate for the repository type) is used - try - { - versionMetadata = - metadataResolver.resolveProjectVersion( session, repoId, groupId, artifactId, version ); - if ( versionMetadata != null ) - { - MetadataFacet repoProbFacet; - if ( ( repoProbFacet = versionMetadata.getFacet( RepositoryProblemFacet.FACET_ID ) ) != null ) - { - addIncompleteModelWarning( "Artifact metadata is incomplete: " - + ( (RepositoryProblemFacet) repoProbFacet ).getProblem() ); - //set metadata to complete so that no additional 'Artifact metadata is incomplete' warning is logged - versionMetadata.setIncomplete( false ); - } - } - - } - catch ( MetadataResolutionException e ) - { - addIncompleteModelWarning( "Error resolving artifact metadata: " + e.getMessage() ); - - // TODO: need a consistent way to construct this - same in ArchivaMetadataCreationConsumer - versionMetadata = new ProjectVersionMetadata(); - versionMetadata.setId( version ); - } - if ( versionMetadata != null ) - { - repositoryId = repoId; - - List artifacts; - try - { - artifacts = new ArrayList( - metadataResolver.resolveArtifacts( session, repoId, groupId, artifactId, version ) ); - } - catch ( MetadataResolutionException e ) - { - addIncompleteModelWarning( "Error resolving artifact metadata: " + e.getMessage() ); - artifacts = Collections.emptyList(); - } - Collections.sort( artifacts, ArtifactMetadataVersionComparator.INSTANCE ); - - for ( ArtifactMetadata artifact : artifacts ) - { - List l = this.artifacts.get( artifact.getVersion() ); - if ( l == null ) - { - l = new ArrayList(); - this.artifacts.put( artifact.getVersion(), l ); - } - - ArtifactBuilder builder = new ArtifactBuilder().forArtifactMetadata( - artifact ).withManagedRepositoryContent( - repositoryFactory.getManagedRepositoryContent( repositoryId ) ); - l.add( builder.build() ); - } - } - } - } - - return versionMetadata; - } - - private void addIncompleteModelWarning( String warningMessage ) - { - addActionError( warningMessage ); - //"The model may be incomplete due to a previous error in resolving information. Refer to the repository problem reports for more information." ); - } - - /** - * Show the artifact information tab. - */ - public String dependencies() - { - String result = artifact(); - - this.dependencies = model.getDependencies(); - - return result; - } - - /** - * Show the mailing lists information tab. - */ - public String mailingLists() - { - String result = artifact(); - - this.mailingLists = model.getMailingLists(); - - return result; - } - - /** - * Show the reports tab. - */ - public String reports() - { - // TODO: hook up reports on project - - return SUCCESS; - } - - /** - * Show the dependees (other artifacts that depend on this project) tab. - */ - public String dependees() - throws MetadataResolutionException - { - List references = new ArrayList(); - // TODO: what if we get duplicates across repositories? - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataResolver metadataResolver = repositorySession.getResolver(); - for ( String repoId : getObservableRepos() ) - { - // TODO: what about if we want to see this irrespective of version? - references.addAll( - metadataResolver.resolveProjectReferences( repositorySession, repoId, groupId, artifactId, - version ) ); - } - } - finally - { - repositorySession.close(); - } - - this.dependees = references; - - // TODO: may need to note on the page that references will be incomplete if the other artifacts are not yet - // stored in the content repository - // (especially in the case of pre-population import) - - return artifact(); - } - - /** - * Show the dependencies of this versioned project tab. - */ - public String dependencyTree() - { - // temporarily use this as we only need the model for the tag to perform, but we should be resolving the - // graph here instead - - // TODO: may need to note on the page that tree will be incomplete if the other artifacts are not yet stored in - // the content repository - // (especially in the case of pre-population import) - - // TODO: a bit ugly, should really be mapping all these results differently now - this.dependencyTree = true; - - return artifact(); - } - - public String projectMetadata() - { - String result = artifact(); - - if ( model.getFacet( GenericMetadataFacet.FACET_ID ) != null ) - { - genericMetadata = model.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - } - - if ( genericMetadata == null ) - { - genericMetadata = new HashMap(); - } - - return result; - } - - public String addMetadataProperty() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - ProjectVersionMetadata projectMetadata; - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - projectMetadata = getProjectVersionMetadata( repositorySession ); - if ( projectMetadata == null ) - { - addActionError( "Artifact not found" ); - return ERROR; - } - - if ( projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ) == null ) - { - genericMetadata = new HashMap(); - } - else - { - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - } - - if ( propertyName == null || "".equals( propertyName.trim() ) || propertyValue == null || "".equals( - propertyValue.trim() ) ) - { - model = projectMetadata; - addActionError( "Property Name and Property Value are required." ); - return INPUT; - } - - genericMetadata.put( propertyName, propertyValue ); - - try - { - updateProjectMetadata( projectMetadata, metadataRepository ); - repositorySession.save(); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to persist modified project metadata after adding entry: " + e.getMessage(), e ); - addActionError( - "Unable to add metadata item to underlying content storage - consult application logs." ); - return ERROR; - } - - // TODO: why re-retrieve? - projectMetadata = getProjectVersionMetadata( repositorySession ); - } - catch ( Exception e ) - { - log.warn( "Unable to getProjectVersionMetadata: " + e.getMessage(), e ); - addActionError( "Unable to getProjectVersionMetadata - consult application logs." ); - return ERROR; - } - finally - { - repositorySession.close(); - } - - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - - model = projectMetadata; - - propertyName = ""; - propertyValue = ""; - - return SUCCESS; - } - - public String deleteMetadataEntry() - { - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - ProjectVersionMetadata projectMetadata = getProjectVersionMetadata( repositorySession ); - - if ( projectMetadata == null ) - { - addActionError( "Artifact not found" ); - return ERROR; - } - - if ( projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ) != null ) - { - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - - if ( !StringUtils.isEmpty( deleteItem ) ) - { - genericMetadata.remove( deleteItem ); - - try - { - updateProjectMetadata( projectMetadata, metadataRepository ); - repositorySession.save(); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to persist modified project metadata after removing entry: " + e.getMessage(), - e ); - addActionError( - "Unable to remove metadata item to underlying content storage - consult application logs." ); - return ERROR; - } - - // TODO: why re-retrieve? - projectMetadata = getProjectVersionMetadata( repositorySession ); - - genericMetadata = projectMetadata.getFacet( GenericMetadataFacet.FACET_ID ).toProperties(); - - model = projectMetadata; - - addActionMessage( "Property successfully deleted." ); - } - - deleteItem = ""; - } - else - { - addActionError( "No generic metadata facet for this artifact." ); - return ERROR; - } - } - catch ( Exception e ) - { - log.warn( "Unable to getProjectVersionMetadata: " + e.getMessage(), e ); - addActionError( "Unable to getProjectVersionMetadata - consult application logs." ); - return ERROR; - - } - finally - { - repositorySession.close(); - } - - return SUCCESS; - } - - private void updateProjectMetadata( ProjectVersionMetadata projectMetadata, MetadataRepository metadataRepository ) - throws MetadataRepositoryException - { - GenericMetadataFacet genericMetadataFacet = new GenericMetadataFacet(); - genericMetadataFacet.fromProperties( genericMetadata ); - - projectMetadata.addFacet( genericMetadataFacet ); - - metadataRepository.updateProjectVersion( repositoryId, groupId, artifactId, projectMetadata ); - } - - @Override - public void validate() - { - if ( StringUtils.isBlank( groupId ) ) - { - addActionError( "You must specify a group ID to browse" ); - } - - if ( StringUtils.isBlank( artifactId ) ) - { - addActionError( "You must specify a artifact ID to browse" ); - } - - if ( StringUtils.isBlank( version ) ) - { - addActionError( "You must specify a version to browse" ); - } - } - - public ProjectVersionMetadata getModel() - { - return model; - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - - public List getMailingLists() - { - return mailingLists; - } - - public List getDependencies() - { - return dependencies; - } - - public List getDependees() - { - return dependees; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public Map> getArtifacts() - { - return artifacts; - } - - public Collection getSnapshotVersions() - { - return artifacts.keySet(); - } - - public boolean isDependencyTree() - { - return dependencyTree; - } - - public void setDeleteItem( String deleteItem ) - { - this.deleteItem = deleteItem; - } - - public Map getGenericMetadata() - { - return genericMetadata; - } - - public void setGenericMetadata( Map genericMetadata ) - { - this.genericMetadata = genericMetadata; - } - - public String getPropertyName() - { - return propertyName; - } - - public void setPropertyName( String propertyName ) - { - this.propertyName = propertyName; - } - - public String getPropertyValue() - { - return propertyValue; - } - - public void setPropertyValue( String propertyValue ) - { - this.propertyValue = propertyValue; - } - - public void setRepositoryFactory( RepositoryContentFactory repositoryFactory ) - { - this.repositoryFactory = repositoryFactory; - } - - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/UploadAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/UploadAction.java deleted file mode 100644 index 421f8ba1a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/UploadAction.java +++ /dev/null @@ -1,722 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.checksum.ChecksummedFile; -import org.apache.archiva.common.utils.VersionComparator; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.maven2.metadata.MavenMetadataReader; -import org.apache.archiva.model.ArchivaRepositoryMetadata; -import org.apache.archiva.model.ArtifactReference; -import org.apache.archiva.model.SnapshotVersion; -import org.apache.archiva.redback.components.taskqueue.TaskQueueException; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.repository.RepositoryContentFactory; -import org.apache.archiva.repository.RepositoryException; -import org.apache.archiva.repository.RepositoryNotFoundException; -import org.apache.archiva.repository.metadata.MetadataTools; -import org.apache.archiva.repository.metadata.RepositoryMetadataException; -import org.apache.archiva.repository.metadata.RepositoryMetadataWriter; -import org.apache.archiva.scheduler.ArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; -import org.apache.archiva.xml.XMLException; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Writer; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.TimeZone; - -/** - * Upload an artifact using Jakarta file upload in webwork. If set by the user a pom will also be generated. Metadata - * will also be updated if one exists, otherwise it would be created. - */ -@SuppressWarnings( "serial" ) -@Controller( "uploadAction" ) -@Scope( "prototype" ) -public class UploadAction - extends AbstractActionSupport - implements Validateable, Preparable, Auditable -{ - /** - * The groupId of the artifact to be deployed. - */ - private String groupId; - - /** - * The artifactId of the artifact to be deployed. - */ - private String artifactId; - - /** - * The version of the artifact to be deployed. - */ - private String version; - - /** - * The packaging of the artifact to be deployed. - */ - private String packaging; - - /** - * The classifier of the artifact to be deployed. - */ - private String classifier; - - /** - * The temporary file representing the artifact to be deployed. - */ - private File artifactFile; - - /** - * The temporary file representing the pom to be deployed alongside the artifact. - */ - private File pomFile; - - /** - * The repository where the artifact is to be deployed. - */ - private String repositoryId; - - /** - * Flag whether to generate a pom for the artifact or not. - */ - private boolean generatePom; - - /** - * List of managed repositories to deploy to. - */ - private List managedRepoIdList; - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private UserRepositories userRepositories; - - @Inject - private ArchivaAdministration archivaAdministration; - - @Inject - private RepositoryContentFactory repositoryFactory; - - @Inject - @Named( value = "archivaTaskScheduler#repository" ) - private ArchivaTaskScheduler scheduler; - - private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[]{ ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 }; - - public void setArtifact( File file ) - { - this.artifactFile = file; - } - - public void setArtifactContentType( String contentType ) - { - StringUtils.trim( contentType ); - } - - public void setArtifactFileName( String filename ) - { - StringUtils.trim( filename ); - } - - public void setPom( File file ) - { - this.pomFile = file; - } - - public void setPomContentType( String contentType ) - { - StringUtils.trim( contentType ); - } - - public void setPomFileName( String filename ) - { - StringUtils.trim( filename ); - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = StringUtils.trim( groupId ); - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = StringUtils.trim( artifactId ); - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = StringUtils.trim( version ); - } - - public String getPackaging() - { - return packaging; - } - - public void setPackaging( String packaging ) - { - this.packaging = StringUtils.trim( packaging ); - } - - public String getClassifier() - { - return classifier; - } - - public void setClassifier( String classifier ) - { - this.classifier = StringUtils.trim( classifier ); - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public boolean isGeneratePom() - { - return generatePom; - } - - public void setGeneratePom( boolean generatePom ) - { - this.generatePom = generatePom; - } - - public List getManagedRepoIdList() - { - return managedRepoIdList; - } - - public void setManagedRepoIdList( List managedRepoIdList ) - { - this.managedRepoIdList = managedRepoIdList; - } - - public void prepare() - { - managedRepoIdList = getManagableRepos(); - } - - public String input() - { - return INPUT; - } - - private void reset() - { - // reset the fields so the form is clear when - // the action returns to the jsp page - groupId = ""; - artifactId = ""; - version = ""; - packaging = ""; - classifier = ""; - artifactFile = null; - pomFile = null; - repositoryId = ""; - generatePom = false; - } - - public String doUpload() - { - try - { - ManagedRepository repoConfig = managedRepositoryAdmin.getManagedRepository( repositoryId ); - - ArtifactReference artifactReference = new ArtifactReference(); - artifactReference.setArtifactId( artifactId ); - artifactReference.setGroupId( groupId ); - artifactReference.setVersion( version ); - artifactReference.setClassifier( classifier ); - artifactReference.setType( packaging ); - - ManagedRepositoryContent repository = repositoryFactory.getManagedRepositoryContent( repositoryId ); - - String artifactPath = repository.toPath( artifactReference ); - - int lastIndex = artifactPath.lastIndexOf( '/' ); - - String path = artifactPath.substring( 0, lastIndex ); - File targetPath = new File( repoConfig.getLocation(), path ); - - log.debug( "artifactPath: {} found targetPath: {}", artifactPath, targetPath ); - - Date lastUpdatedTimestamp = Calendar.getInstance().getTime(); - int newBuildNumber = -1; - String timestamp = null; - - File versionMetadataFile = new File( targetPath, MetadataTools.MAVEN_METADATA ); - ArchivaRepositoryMetadata versionMetadata = getMetadata( versionMetadataFile ); - - if ( VersionUtil.isSnapshot( version ) ) - { - TimeZone timezone = TimeZone.getTimeZone( "UTC" ); - DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); - fmt.setTimeZone( timezone ); - timestamp = fmt.format( lastUpdatedTimestamp ); - if ( versionMetadata.getSnapshotVersion() != null ) - { - newBuildNumber = versionMetadata.getSnapshotVersion().getBuildNumber() + 1; - } - else - { - newBuildNumber = 1; - } - } - - if ( !targetPath.exists() ) - { - targetPath.mkdirs(); - } - - String filename = artifactPath.substring( lastIndex + 1 ); - if ( VersionUtil.isSnapshot( version ) ) - { - filename = filename.replaceAll( VersionUtil.SNAPSHOT, timestamp + "-" + newBuildNumber ); - } - - boolean fixChecksums = - !( archivaAdministration.getKnownContentConsumers().contains( "create-missing-checksums" ) ); - - try - { - File targetFile = new File( targetPath, filename ); - if ( targetFile.exists() && !VersionUtil.isSnapshot( version ) && repoConfig.isBlockRedeployments() ) - { - addActionError( - "Overwriting released artifacts in repository '" + repoConfig.getId() + "' is not allowed." ); - return ERROR; - } - else - { - copyFile( artifactFile, targetPath, filename, fixChecksums ); - triggerAuditEvent( repository.getId(), path + "/" + filename, AuditEvent.UPLOAD_FILE ); - queueRepositoryTask( repository.getId(), targetFile ); - } - } - catch ( IOException ie ) - { - addActionError( "Error encountered while uploading file: " + ie.getMessage() ); - return ERROR; - } - - String pomFilename = filename; - if ( classifier != null && !"".equals( classifier ) ) - { - pomFilename = StringUtils.remove( pomFilename, "-" + classifier ); - } - pomFilename = FilenameUtils.removeExtension( pomFilename ) + ".pom"; - - if ( generatePom ) - { - try - { - File generatedPomFile = createPom( targetPath, pomFilename ); - triggerAuditEvent( repoConfig.getId(), path + "/" + pomFilename, AuditEvent.UPLOAD_FILE ); - if ( fixChecksums ) - { - fixChecksums( generatedPomFile ); - } - queueRepositoryTask( repoConfig.getId(), generatedPomFile ); - } - catch ( IOException ie ) - { - addActionError( "Error encountered while writing pom file: " + ie.getMessage() ); - return ERROR; - } - } - - if ( pomFile != null && pomFile.length() > 0 ) - { - try - { - copyFile( pomFile, targetPath, pomFilename, fixChecksums ); - triggerAuditEvent( repoConfig.getId(), path + "/" + pomFilename, AuditEvent.UPLOAD_FILE ); - queueRepositoryTask( repoConfig.getId(), new File( targetPath, pomFilename ) ); - } - catch ( IOException ie ) - { - addActionError( "Error encountered while uploading pom file: " + ie.getMessage() ); - return ERROR; - } - - } - - // explicitly update only if metadata-updater consumer is not enabled! - if ( !archivaAdministration.getKnownContentConsumers().contains( "metadata-updater" ) ) - { - updateProjectMetadata( targetPath.getAbsolutePath(), lastUpdatedTimestamp, timestamp, newBuildNumber, - fixChecksums ); - - if ( VersionUtil.isSnapshot( version ) ) - { - updateVersionMetadata( versionMetadata, versionMetadataFile, lastUpdatedTimestamp, timestamp, - newBuildNumber, fixChecksums ); - } - } - - String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version - + "\' was successfully deployed to repository \'" + repositoryId + "\'"; - - addActionMessage( msg ); - - reset(); - return SUCCESS; - } - catch ( RepositoryNotFoundException re ) - { - addActionError( "Target repository cannot be found: " + re.getMessage() ); - return ERROR; - } - catch ( RepositoryException rep ) - { - addActionError( "Repository exception: " + rep.getMessage() ); - return ERROR; - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdmin exception: " + e.getMessage() ); - return ERROR; - } - } - - private void fixChecksums( File file ) - { - ChecksummedFile checksum = new ChecksummedFile( file ); - checksum.fixChecksums( algorithms ); - } - - private void copyFile( File sourceFile, File targetPath, String targetFilename, boolean fixChecksums ) - throws IOException - { - FileOutputStream out = new FileOutputStream( new File( targetPath, targetFilename ) ); - FileInputStream input = new FileInputStream( sourceFile ); - - try - { - IOUtils.copy( input, out ); - } - finally - { - IOUtils.closeQuietly( out ); - IOUtils.closeQuietly( input ); - } - - if ( fixChecksums ) - { - fixChecksums( new File( targetPath, targetFilename ) ); - } - } - - private File createPom( File targetPath, String filename ) - throws IOException - { - Model projectModel = new Model(); - projectModel.setModelVersion( "4.0.0" ); - projectModel.setGroupId( groupId ); - projectModel.setArtifactId( artifactId ); - projectModel.setVersion( version ); - projectModel.setPackaging( packaging ); - - File pomFile = new File( targetPath, filename ); - MavenXpp3Writer writer = new MavenXpp3Writer(); - FileWriter w = new FileWriter( pomFile ); - try - { - writer.write( w, projectModel ); - } - finally - { - IOUtils.closeQuietly( w ); - } - - return pomFile; - } - - private ArchivaRepositoryMetadata getMetadata( File metadataFile ) - throws RepositoryMetadataException - { - ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); - if ( metadataFile.exists() ) - { - try - { - metadata = MavenMetadataReader.read( metadataFile ); - } - catch ( XMLException e ) - { - throw new RepositoryMetadataException( e.getMessage(), e ); - } - } - return metadata; - } - - - /** - * Update version level metadata for snapshot artifacts. If it does not exist, create the metadata and fix checksums - * if necessary. - */ - private void updateVersionMetadata( ArchivaRepositoryMetadata metadata, File metadataFile, - Date lastUpdatedTimestamp, String timestamp, int buildNumber, - boolean fixChecksums ) - throws RepositoryMetadataException - { - if ( !metadataFile.exists() ) - { - metadata.setGroupId( groupId ); - metadata.setArtifactId( artifactId ); - metadata.setVersion( version ); - } - - if ( metadata.getSnapshotVersion() == null ) - { - metadata.setSnapshotVersion( new SnapshotVersion() ); - } - - metadata.getSnapshotVersion().setBuildNumber( buildNumber ); - metadata.getSnapshotVersion().setTimestamp( timestamp ); - metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); - - RepositoryMetadataWriter.write( metadata, metadataFile ); - - if ( fixChecksums ) - { - fixChecksums( metadataFile ); - } - } - - /** - * Update artifact level metadata. If it does not exist, create the metadata and fix checksums if necessary. - */ - private void updateProjectMetadata( String targetPath, Date lastUpdatedTimestamp, String timestamp, int buildNumber, - boolean fixChecksums ) - throws RepositoryMetadataException - { - List availableVersions = new ArrayList(); - String latestVersion = version; - - File projectDir = new File( targetPath ).getParentFile(); - File projectMetadataFile = new File( projectDir, MetadataTools.MAVEN_METADATA ); - - ArchivaRepositoryMetadata projectMetadata = getMetadata( projectMetadataFile ); - - if ( projectMetadataFile.exists() ) - { - availableVersions = projectMetadata.getAvailableVersions(); - - Collections.sort( availableVersions, VersionComparator.getInstance() ); - - if ( !availableVersions.contains( version ) ) - { - availableVersions.add( version ); - } - - latestVersion = availableVersions.get( availableVersions.size() - 1 ); - } - else - { - availableVersions.add( version ); - - projectMetadata.setGroupId( groupId ); - projectMetadata.setArtifactId( artifactId ); - } - - if ( projectMetadata.getGroupId() == null ) - { - projectMetadata.setGroupId( groupId ); - } - - if ( projectMetadata.getArtifactId() == null ) - { - projectMetadata.setArtifactId( artifactId ); - } - - projectMetadata.setLatestVersion( latestVersion ); - projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); - projectMetadata.setAvailableVersions( availableVersions ); - - if ( !VersionUtil.isSnapshot( version ) ) - { - projectMetadata.setReleasedVersion( latestVersion ); - } - - RepositoryMetadataWriter.write( projectMetadata, projectMetadataFile ); - - if ( fixChecksums ) - { - fixChecksums( projectMetadataFile ); - } - } - - public void validate() - { - try - { - // is this enough check for the repository permission? - if ( !userRepositories.isAuthorizedToUploadArtifacts( getPrincipal(), repositoryId ) ) - { - addActionError( "User is not authorized to upload in repository " + repositoryId ); - } - - if ( artifactFile == null || artifactFile.length() == 0 ) - { - addActionError( "Please add a file to upload." ); - } - - if ( version == null || !VersionUtil.isVersion( version ) ) - { - addActionError( "Invalid version." ); - } - } - catch ( PrincipalNotFoundException pe ) - { - addActionError( pe.getMessage() ); - } - catch ( ArchivaSecurityException ae ) - { - addActionError( ae.getMessage() ); - } - } - - private List getManagableRepos() - { - try - { - return userRepositories.getManagableRepositoryIds( getPrincipal() ); - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - // TODO: pass this onto the screen. - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - private void queueRepositoryTask( String repositoryId, File localFile ) - { - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( repositoryId ); - task.setResourceFile( localFile ); - task.setUpdateRelatedArtifacts( true ); - task.setScanAll( false ); - - try - { - scheduler.queueTask( task ); - } - catch ( TaskQueueException e ) - { - log.error( "Unable to queue repository task to execute consumers on resource file ['" + localFile.getName() - + "']." ); - } - } - - public void setScheduler( ArchivaTaskScheduler scheduler ) - { - this.scheduler = scheduler; - } - - public void setRepositoryFactory( RepositoryContentFactory repositoryFactory ) - { - this.repositoryFactory = repositoryFactory; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SchedulerAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SchedulerAction.java deleted file mode 100644 index a4639995d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SchedulerAction.java +++ /dev/null @@ -1,134 +0,0 @@ -package org.apache.archiva.web.action.admin; - -/* - * 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. - */ - -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.components.taskqueue.TaskQueueException; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; - -/** - * Configures the application. - */ -@Controller( "schedulerAction" ) -@Scope( "prototype" ) -public class SchedulerAction - extends AbstractActionSupport - implements SecureAction -{ - - @Inject - @Named( value = "archivaTaskScheduler#repository" ) - private RepositoryArchivaTaskScheduler repositoryTaskScheduler; - - private String repoid; - - private boolean scanAll; - - public String scanRepository() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Cannot run indexer on blank repository id." ); - return SUCCESS; - } - - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( repoid ); - task.setScanAll( scanAll ); - - if ( repositoryTaskScheduler.isProcessingRepositoryTask( repoid ) ) - { - addActionError( "Repository [" + repoid + "] task was already queued." ); - } - else - { - try - { - addActionMessage( "Your request to have repository [" + repoid + "] be indexed has been queued." ); - repositoryTaskScheduler.queueTask( task ); - } - catch ( TaskQueueException e ) - { - addActionError( - "Unable to queue your request to have repository [" + repoid + "] be indexed: " + e.getMessage() ); - } - } - - // Return to the repositories screen. - return SUCCESS; - } - - @Override - public void addActionMessage( String aMessage ) - { - super.addActionMessage( aMessage ); - log.info( "[ActionMessage] " + aMessage ); - } - - @Override - public void addActionError( String anErrorMessage ) - { - super.addActionError( anErrorMessage ); - log.warn( "[ActionError] " + anErrorMessage ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_RUN_INDEXER, Resource.GLOBAL ); - - return bundle; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - public boolean getScanAll() - { - return scanAll; - } - - public void setScanAll( boolean scanAll ) - { - this.scanAll = scanAll; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SystemStatusAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SystemStatusAction.java deleted file mode 100644 index bbe5b5fe8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/SystemStatusAction.java +++ /dev/null @@ -1,138 +0,0 @@ -package org.apache.archiva.web.action.admin; - -/* - * 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. - */ - -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.repository.scanner.RepositoryScanner; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.components.cache.Cache; -import org.apache.archiva.redback.components.taskqueue.TaskQueue; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.Map; - -/** - * Shows system status information for the administrator. - * - * - */ -@Controller( "systemStatus" ) -@Scope( "prototype" ) -public class SystemStatusAction - extends AbstractActionSupport - implements SecureAction -{ - - private Map queues; - - private Map caches; - - @Inject - private RepositoryScanner scanner; - - private String memoryStatus; - - private String cacheKey; - - @PostConstruct - public void initialize() - { - super.initialize(); - queues = getBeansOfType( TaskQueue.class ); - caches = getBeansOfType( Cache.class ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public String execute() - { - Runtime runtime = Runtime.getRuntime(); - runtime.gc(); - long total = runtime.totalMemory(); - long used = total - runtime.freeMemory(); - long max = runtime.maxMemory(); - memoryStatus = formatMemory( used ) + "/" + formatMemory( total ) + " (Max: " + formatMemory( max ) + ")"; - - return SUCCESS; - } - - public String flush() - { - if( !StringUtils.isEmpty( cacheKey ) ) - { - Cache cache = caches.get( cacheKey ); - cache.clear(); - } - - return SUCCESS; - } - - private static String formatMemory( long l ) - { - return l / ( 1024 * 1024 ) + "M"; - } - - public String getMemoryStatus() - { - return memoryStatus; - } - - public RepositoryScanner getScanner() - { - return scanner; - } - - public Map getCaches() - { - return caches; - } - - public Map getQueues() - { - return queues; - } - - public String getCacheKey() - { - return cacheKey; - } - - public void setCacheKey( String cacheKey ) - { - this.cacheKey = cacheKey; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/AbstractAppearanceAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/AbstractAppearanceAction.java deleted file mode 100644 index 3fab37576..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/AbstractAppearanceAction.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.apache.archiva.web.action.admin.appearance; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.OrganisationInformation; -import org.apache.archiva.web.action.AbstractActionSupport; - -import javax.inject.Inject; - -/** - * AbstractAppearanceAction - * - * - */ -public abstract class AbstractAppearanceAction - extends AbstractActionSupport - implements Preparable -{ - - @Inject - protected ArchivaAdministration archivaAdministration; - - private String organisationLogo; - - private String organisationUrl; - - private String organisationName; - - public String getOrganisationLogo() - { - return organisationLogo; - } - - public String getOrganisationName() - { - return organisationName; - } - - public String getOrganisationUrl() - { - return organisationUrl; - } - - public void setOrganisationLogo( String organisationLogo ) - { - this.organisationLogo = organisationLogo; - } - - public void setOrganisationName( String organisationName ) - { - this.organisationName = organisationName; - } - - public void setOrganisationUrl( String organisationUrl ) - { - this.organisationUrl = organisationUrl; - } - - public void prepare() - throws Exception - { - - OrganisationInformation orgInfo = archivaAdministration.getOrganisationInformation(); - if ( orgInfo != null ) - { - setOrganisationLogo( orgInfo.getLogoLocation() ); - setOrganisationName( orgInfo.getName() ); - setOrganisationUrl( orgInfo.getUrl() ); - } - - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction.java deleted file mode 100644 index df514acd4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.apache.archiva.web.action.admin.appearance; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.OrganisationInformation; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * - */ -@Controller( "editOrganisationInfo" ) -@Scope( "prototype" ) -public class EditOrganisationInfoAction - extends AbstractAppearanceAction - implements SecureAction, Validateable -{ - @Override - public String execute() - throws RepositoryAdminException - { - - OrganisationInformation orgInfo = archivaAdministration.getOrganisationInformation(); - - orgInfo.setLogoLocation( getOrganisationLogo() ); - orgInfo.setName( getOrganisationName() ); - orgInfo.setUrl( getOrganisationUrl() ); - - archivaAdministration.setOrganisationInformation( orgInfo ); - return SUCCESS; - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - return bundle; - } - - public void validate() - { - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( super.getOrganisationName() ) ) - { - super.setOrganisationName( super.getOrganisationName().trim() ); - } - - if ( StringUtils.isNotEmpty( super.getOrganisationUrl() ) ) - { - super.setOrganisationUrl( super.getOrganisationUrl().trim() ); - } - - if ( StringUtils.isNotEmpty( super.getOrganisationLogo() ) ) - { - super.setOrganisationLogo( super.getOrganisationLogo().trim() ); - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/OrganisationInfoAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/OrganisationInfoAction.java deleted file mode 100644 index b8ed832e6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/appearance/OrganisationInfoAction.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.apache.archiva.web.action.admin.appearance; - -/* - * 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. - */ - -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * Stores the organisation information for displaying on the page. - */ -@Controller( "organisationInfo" ) -@Scope( "prototype" ) -public class OrganisationInfoAction - extends AbstractAppearanceAction -{ - // no op -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorAction.java deleted file mode 100644 index 4754fd9ce..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorAction.java +++ /dev/null @@ -1,145 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin; -import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; - -import javax.inject.Inject; -import java.util.List; -import java.util.Map; - -/** - * AbstractProxyConnectorAction - * - * - */ -public abstract class AbstractProxyConnectorAction - extends AbstractActionSupport - implements SecureAction -{ - public static final String DIRECT_CONNECTION = "(direct connection)"; - - @Inject - private ProxyConnectorAdmin proxyConnectorAdmin; - - @Inject - private RemoteRepositoryAdmin remoteRepositoryAdmin; - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - - protected void addProxyConnector( ProxyConnector proxyConnector ) - throws RepositoryAdminException - { - getProxyConnectorAdmin().addProxyConnector( proxyConnector, getAuditInformation() ); - } - - protected ProxyConnector findProxyConnector( String sourceId, String targetId ) - throws RepositoryAdminException - { - if ( StringUtils.isBlank( sourceId ) ) - { - return null; - } - - if ( StringUtils.isBlank( targetId ) ) - { - return null; - } - - return getProxyConnectorAdmin().getProxyConnector( sourceId, targetId ); - } - - protected Map> createProxyConnectorMap() - throws RepositoryAdminException - { - return getProxyConnectorAdmin().getProxyConnectorAsMap(); - } - - protected void removeConnector( String sourceId, String targetId ) - throws RepositoryAdminException - { - ProxyConnector proxyConnector = findProxyConnector( sourceId, targetId ); - if ( proxyConnector != null ) - { - getProxyConnectorAdmin().deleteProxyConnector( proxyConnector, getAuditInformation() ); - } - } - - protected void removeProxyConnector( ProxyConnector connector ) - throws RepositoryAdminException - { - getProxyConnectorAdmin().deleteProxyConnector( connector, getAuditInformation() ); - } - - - public ProxyConnectorAdmin getProxyConnectorAdmin() - { - return proxyConnectorAdmin; - } - - public void setProxyConnectorAdmin( ProxyConnectorAdmin proxyConnectorAdmin ) - { - this.proxyConnectorAdmin = proxyConnectorAdmin; - } - - public RemoteRepositoryAdmin getRemoteRepositoryAdmin() - { - return remoteRepositoryAdmin; - } - - public void setRemoteRepositoryAdmin( RemoteRepositoryAdmin remoteRepositoryAdmin ) - { - this.remoteRepositoryAdmin = remoteRepositoryAdmin; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java deleted file mode 100644 index 34abe41d3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AbstractProxyConnectorFormAction.java +++ /dev/null @@ -1,488 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.policies.DownloadErrorPolicy; -import org.apache.archiva.policies.Policy; -import org.apache.archiva.policies.PostDownloadPolicy; -import org.apache.archiva.policies.PreDownloadPolicy; -import org.apache.commons.lang.StringEscapeUtils; -import org.apache.commons.lang.StringUtils; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * AbstractProxyConnectorFormAction - generic fields and methods for either add or edit actions related with the - * Proxy Connector. - * - * - */ -public abstract class AbstractProxyConnectorFormAction - extends AbstractProxyConnectorAction - implements Preparable -{ - - - private Map preDownloadPolicyMap; - - private Map postDownloadPolicyMap; - - private Map downloadErrorPolicyMap; - - private List proxyIdOptions; - - private List managedRepoIdList; - - private List remoteRepoIdList; - - /** - * The map of policies that are available to be set. - */ - private Map policyMap; - - /** - * The property key to add or remove. - */ - private String propertyKey; - - /** - * The property value to add. - */ - private String propertyValue; - - /** - * The blacklist pattern to add. - */ - private String blackListPattern; - - /** - * The whitelist pattern to add. - */ - private String whiteListPattern; - - /** - * The pattern to add or remove (black or white). - */ - private String pattern; - - /** - * The model for this action. - */ - protected ProxyConnector connector; - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - @PostConstruct - public void initialize( ) - { - super.initialize( ); - this.preDownloadPolicyMap = getBeansOfType( PreDownloadPolicy.class ); - this.postDownloadPolicyMap = getBeansOfType( PostDownloadPolicy.class ); - this.downloadErrorPolicyMap = getBeansOfType( DownloadErrorPolicy.class ); - } - - public String addBlackListPattern( ) - { - String pattern = getBlackListPattern( ); - - //pattern = StringEscapeUtils.unescapeJavaScript( pattern ); - - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot add a blank black list pattern." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getBlackListPatterns( ).add( pattern ); - setBlackListPattern( null ); - } - - return INPUT; - } - - @SuppressWarnings( "unchecked" ) - public String addProperty( ) - { - String key = getPropertyKey( ); - String value = getPropertyValue( ); - - if ( StringUtils.isBlank( key ) ) - { - addActionError( "Unable to add property with blank key." ); - } - - if ( StringUtils.isBlank( value ) ) - { - addActionError( "Unable to add property with blank value." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getProperties( ).put( key, value ); - setPropertyKey( null ); - setPropertyValue( null ); - } - - return INPUT; - } - - public String addWhiteListPattern( ) - { - String pattern = getWhiteListPattern( ); - //pattern = StringEscapeUtils.unescapeJavaScript( pattern ); - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot add a blank white list pattern." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getWhiteListPatterns( ).add( pattern ); - setWhiteListPattern( null ); - } - - return INPUT; - } - - public String getBlackListPattern( ) - { - return blackListPattern; - } - - public ProxyConnector getConnector( ) - { - return connector; - } - - public List getManagedRepoIdList( ) - { - return managedRepoIdList; - } - - public String getPattern( ) - { - return pattern; - } - - public Map getPolicyMap( ) - { - return policyMap; - } - - public String getPropertyKey( ) - { - return propertyKey; - } - - public String getPropertyValue( ) - { - return propertyValue; - } - - public List getProxyIdOptions( ) - { - return proxyIdOptions; - } - - public List getRemoteRepoIdList( ) - { - return remoteRepoIdList; - } - - public String getWhiteListPattern( ) - { - return whiteListPattern; - } - - public void prepare( ) - throws RepositoryAdminException - { - proxyIdOptions = createNetworkProxyOptions( ); - managedRepoIdList = createManagedRepoOptions( ); - remoteRepoIdList = createRemoteRepoOptions( ); - policyMap = createPolicyMap( ); - } - - public String removeBlackListPattern( ) - { - String pattern = getPattern( ); - - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot remove a blank black list pattern." ); - } - - if ( !getConnector( ).getBlackListPatterns( ).contains( pattern ) - && !getConnector( ).getBlackListPatterns( ).contains( pattern )) - { - addActionError( "Non-existant black list pattern [" + pattern + "], no black list pattern removed." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getBlackListPatterns( ).remove( pattern ); - } - - setBlackListPattern( null ); - setPattern( null ); - - return INPUT; - } - - public String removeProperty( ) - { - String key = getPropertyKey( ); - - if ( StringUtils.isBlank( key ) ) - { - addActionError( "Unable to remove property with blank key." ); - } - - if ( !getConnector( ).getProperties( ).containsKey( key ) ) - { - addActionError( "Non-existant property key [" + pattern + "], no property was removed." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getProperties( ).remove( key ); - } - - setPropertyKey( null ); - setPropertyValue( null ); - - return INPUT; - } - - public String removeWhiteListPattern( ) - { - String pattern = getPattern( ); - - if ( StringUtils.isBlank( pattern ) ) - { - addActionError( "Cannot remove a blank white list pattern." ); - } - - if ( !getConnector( ).getWhiteListPatterns( ).contains( pattern ) - && !getConnector( ).getWhiteListPatterns( ).contains( pattern )) - { - addActionError( "Non-existant white list pattern [" + pattern + "], no white list pattern removed." ); - } - - if ( !hasActionErrors( ) ) - { - getConnector( ).getWhiteListPatterns( ).remove( pattern ); - } - - setWhiteListPattern( null ); - setPattern( null ); - - return INPUT; - } - - public void setBlackListPattern( String blackListPattern ) - { - this.blackListPattern = blackListPattern; - } - - public void setConnector( ProxyConnector connector ) - { - this.connector = connector; - } - - public void setManagedRepoIdList( List managedRepoIdList ) - { - this.managedRepoIdList = managedRepoIdList; - } - - public void setPattern( String pattern ) - { - this.pattern = pattern; - } - - public void setPolicyMap( Map policyMap ) - { - this.policyMap = policyMap; - } - - public void setPropertyKey( String propertyKey ) - { - this.propertyKey = propertyKey; - } - - public void setPropertyValue( String propertyValue ) - { - this.propertyValue = propertyValue; - } - - public void setProxyIdOptions( List proxyIdOptions ) - { - this.proxyIdOptions = proxyIdOptions; - } - - public void setRemoteRepoIdList( List remoteRepoIdList ) - { - this.remoteRepoIdList = remoteRepoIdList; - } - - public void setWhiteListPattern( String whiteListPattern ) - { - this.whiteListPattern = whiteListPattern; - } - - protected List createManagedRepoOptions( ) - throws RepositoryAdminException - { - return new ArrayList( getManagedRepositoryAdmin( ).getManagedRepositoriesAsMap( ).keySet( ) ); - } - - protected List createNetworkProxyOptions( ) - throws RepositoryAdminException - { - List options = new ArrayList( ); - - options.add( DIRECT_CONNECTION ); - options.addAll( getNetworkProxiesKeys( ) ); - - return options; - } - - private Collection getNetworkProxiesKeys( ) - throws RepositoryAdminException - { - List networkProxies = networkProxyAdmin.getNetworkProxies( ); - if ( networkProxies == null || networkProxies.isEmpty( ) ) - { - return Collections.emptyList( ); - } - List keys = new ArrayList( networkProxies.size( ) ); - for ( NetworkProxy networkProxy : networkProxies ) - { - keys.add( networkProxy.getId( ) ); - } - return keys; - - } - - protected Map createPolicyMap( ) - { - Map policyMap = new HashMap( ); - - policyMap.putAll( preDownloadPolicyMap ); - policyMap.putAll( postDownloadPolicyMap ); - policyMap.putAll( downloadErrorPolicyMap ); - - return policyMap; - } - - protected List createRemoteRepoOptions( ) - throws RepositoryAdminException - { - return new ArrayList( getRemoteRepositoryAdmin( ).getRemoteRepositoriesAsMap( ).keySet( ) ); - } - - @SuppressWarnings( "unchecked" ) - protected void validateConnector( ) - { - if ( connector.getPolicies( ) == null ) - { - addActionError( "Policies must be set." ); - } - else - { - // Validate / Fix policy settings arriving from browser. - for ( Map.Entry entry : getPolicyMap( ).entrySet( ) ) - { - String policyId = entry.getKey( ); - Policy policy = entry.getValue( ); - List options = policy.getOptions( ); - - if ( !connector.getPolicies( ).containsKey( policyId ) ) - { - addActionError( "Policy [" + policyId + "] must be set (missing id)." ); - continue; - } - - Map properties = connector.getProperties( ); - for ( Map.Entry entry2 : properties.entrySet( ) ) - { - Object value = entry2.getValue( ); - if ( value.getClass( ).isArray( ) ) - { - String[] arr = (String[]) value; - properties.put( entry2.getKey( ), arr[0] ); - } - } - - // Ugly hack to compensate for ugly browsers. - Object o = connector.getPolicies( ).get( policyId ); - String value; - if ( o.getClass( ).isArray( ) ) - { - String arr[] = (String[]) o; - value = arr[0]; - } - else - { - value = (String) o; - } - - connector.getPolicies( ).put( policyId, value ); - - if ( StringUtils.isBlank( value ) ) - { - addActionError( "Policy [" + policyId + "] must be set (missing value)." ); - continue; - } - - if ( !options.contains( value ) ) - { - addActionError( - "Value of [" + value + "] is invalid for policy [" + policyId + "], valid values: " + options ); - continue; - } - } - } - } - - public NetworkProxyAdmin getNetworkProxyAdmin( ) - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorAction.java deleted file mode 100644 index da877988c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorAction.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * AddProxyConnectorAction - * - * - */ -@Controller( "addProxyConnectorAction" ) -@Scope( "prototype" ) -public class AddProxyConnectorAction - extends AbstractProxyConnectorFormAction -{ - @Override - public void prepare() - throws RepositoryAdminException - { - super.prepare(); - connector = new ProxyConnector(); - } - - @Override - public String input() - { - return INPUT; - } - - public String commit() - throws RepositoryAdminException - { - /* Too complex for webwork's ${Action}-validation.xml techniques. - * Not appropriate for use with webwork's implements Validatable, as that validates regardless of - * the request method, such as .addProperty() or .addWhiteList(). - * - * This validation is ultimately only useful on this one request method. - */ - String sourceId = connector.getSourceRepoId(); - String targetId = connector.getTargetRepoId(); - - ProxyConnector otherConnector = findProxyConnector( sourceId, targetId ); - if ( otherConnector != null ) - { - addActionError( - "Unable to add proxy connector, as one already exists with source repository id [" + sourceId - + "] and target repository id [" + targetId + "]." ); - } - - validateConnector(); - - if ( hasActionErrors() ) - { - return INPUT; - } - - if ( StringUtils.equals( DIRECT_CONNECTION, connector.getProxyId() ) ) - { - connector.setProxyId( null ); - } - - addProxyConnector( connector ); - return SUCCESS; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorAction.java deleted file mode 100644 index 7e2e1ceb0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorAction.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * DeleteProxyConnectorAction - * - * - */ -@Controller( "deleteProxyConnectorAction" ) -@Scope( "prototype" ) -public class DeleteProxyConnectorAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - private ProxyConnector proxyConfig; - - public String confirmDelete() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to delete proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - return INPUT; - } - - public String delete() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to delete proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - if ( hasActionErrors() ) - { - return ERROR; - } - - getProxyConnectorAdmin().deleteProxyConnector( proxyConfig, getAuditInformation() ); - addActionMessage( "Successfully removed proxy connector [" + source + " , " + target + " ]" ); - - setSource( null ); - setTarget( null ); - - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String id ) - { - this.source = id; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String id ) - { - this.target = id; - } - - public ProxyConnector getProxyConfig() - { - return proxyConfig; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java deleted file mode 100644 index 8ef74b173..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/* - * 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. - */ - -/** - * DisableProxyConnectorAction - */ -@Controller( "disableProxyConnectorAction" ) -@Scope( "prototype" ) -public class DisableProxyConnectorAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - private ProxyConnector proxyConfig; - - public String confirmDisable() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to disable proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - return INPUT; - } - - public String disable() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to disable proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - if ( hasActionErrors() ) - { - return ERROR; - } - - proxyConfig.setDisabled( true ); - - addActionMessage( "Successfully disabled proxy connector [" + source + " , " + target + " ]" ); - - setSource( null ); - setTarget( null ); - - getProxyConnectorAdmin().updateProxyConnector( proxyConfig, getAuditInformation() ); - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String source ) - { - this.source = source; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String target ) - { - this.target = target; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorAction.java deleted file mode 100644 index a6e5b3ded..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorAction.java +++ /dev/null @@ -1,117 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * EditProxyConnectorAction - * - * - */ -@Controller( "editProxyConnectorAction" ) -@Scope( "prototype" ) -public class EditProxyConnectorAction - extends AbstractProxyConnectorFormAction -{ - /** - * The proxy connector source id to edit. (used with {@link #target}) - */ - private String source; - - /** - * The proxy connector target id to edit. (used with {@link #source}) - */ - private String target; - - @Override - public void prepare() - throws RepositoryAdminException - { - super.prepare(); - - connector = findProxyConnector( source, target ); - } - - public String input() - { - if ( connector == null ) - { - addActionError( - "Unable to edit non existant proxy connector with source [" + source + "] and target [" + target - + "]" ); - return ERROR; - } - return INPUT; - } - - public String commit() - throws RepositoryAdminException - { - validateConnector(); - - if ( hasActionErrors() ) - { - return INPUT; - } - - String sourceId = connector.getSourceRepoId(); - String targetId = connector.getTargetRepoId(); - - ProxyConnector otherConnector = findProxyConnector( sourceId, targetId ); - if ( otherConnector != null ) - { - // Remove the previous connector. - removeProxyConnector( otherConnector ); - } - - if ( hasActionErrors() ) - { - return INPUT; - } - - addProxyConnector( connector ); - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String source ) - { - this.source = source; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String target ) - { - this.target = target; - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java deleted file mode 100644 index 5a000a3a5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/* - * 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. - */ - -/** - * EnableProxyConnectorAction - */ -@Controller( "enableProxyConnectorAction" ) -@Scope( "prototype" ) -public class EnableProxyConnectorAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - private ProxyConnector proxyConfig; - - public String confirmEnable() - throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to enable proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - return INPUT; - } - - public String enable() throws RepositoryAdminException - { - this.proxyConfig = findProxyConnector( source, target ); - - // Not set? Then there is nothing to delete. - if ( this.proxyConfig == null ) - { - addActionError( - "Unable to enabled proxy configuration, configuration with source [" + source + "], and target [" - + target + "] does not exist." ); - return ERROR; - } - - if ( hasActionErrors() ) - { - return ERROR; - } - - proxyConfig.setDisabled( false ); - - getProxyConnectorAdmin().updateProxyConnector( proxyConfig, getAuditInformation() ); - - addActionMessage( "Successfully enabled proxy connector [" + source + " , " + target + " ]" ); - - setSource( null ); - setTarget( null ); - - return SUCCESS; - } - - public String getSource() - { - return source; - } - - public void setSource( String source ) - { - this.source = source; - } - - public String getTarget() - { - return target; - } - - public void setTarget( String target ) - { - this.target = target; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java deleted file mode 100644 index 9f5461298..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.beans.AbstractRepository; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * ProxyConnectorsAction - * - * - */ -@Controller( "proxyConnectorsAction" ) -@Scope( "prototype" ) -public class ProxyConnectorsAction - extends AbstractProxyConnectorAction - implements Preparable -{ - private Map repoMap; - - /** - * boolean to indicate that remote repo is present. Used for Add Link - */ - private boolean remoteRepoExists = false; - - /** - * Map of Proxy Connectors. - */ - private Map> proxyConnectorMap; - - public void prepare() - throws RepositoryAdminException - { - repoMap = new HashMap(); - repoMap.putAll( getRemoteRepositoryAdmin().getRemoteRepositoriesAsMap() ); - // FIXME olamy : are we sure we want Managed too ??? - repoMap.putAll( getManagedRepositoryAdmin().getManagedRepositoriesAsMap() ); - - proxyConnectorMap = createProxyConnectorMap(); - - remoteRepoExists = getRemoteRepositoryAdmin().getRemoteRepositories().size() > 0; - } - - public Map getRepoMap() - { - return repoMap; - } - - public Map> getProxyConnectorMap() - { - return proxyConnectorMap; - } - - // FIXME olamy should be is ! - public boolean getRemoteRepoExists() - { - return remoteRepoExists; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsAction.java deleted file mode 100644 index 80c17105d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsAction.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.util.List; - -/** - * SortProxyConnectorsAction - - * - * - */ -@Controller( "sortProxyConnectorsAction" ) -@Scope( "prototype" ) -public class SortProxyConnectorsAction - extends AbstractProxyConnectorAction -{ - private String source; - - private String target; - - public String getSource() - { - return source; - } - - public String getTarget() - { - return target; - } - - public void setSource( String id ) - { - this.source = id; - } - - public void setTarget( String id ) - { - this.target = id; - } - - public String sortDown() - throws RepositoryAdminException - { - List connectors = createProxyConnectorMap().get( source ); - - int idx = findTargetConnector( connectors, target ); - - if ( idx >= 0 ) - { - incrementConnectorOrder( connectors, idx ); - decrementConnectorOrder( connectors, idx + 1 ); - } - - for ( ProxyConnector proxyConnector : connectors ) - { - getProxyConnectorAdmin().updateProxyConnector( proxyConnector, getAuditInformation() ); - } - return SUCCESS; - } - - public String sortUp() - throws RepositoryAdminException - { - List connectors = createProxyConnectorMap().get( source ); - - int idx = findTargetConnector( connectors, target ); - - if ( idx >= 0 ) - { - decrementConnectorOrder( connectors, idx ); - incrementConnectorOrder( connectors, idx - 1 ); - } - - for ( ProxyConnector proxyConnector : connectors ) - { - getProxyConnectorAdmin().updateProxyConnector( proxyConnector, getAuditInformation() ); - } - return SUCCESS; - } - - private void decrementConnectorOrder( List connectors, int idx ) - { - if ( !validIndex( connectors, idx ) ) - { - // Do nothing. - return; - } - - int order = connectors.get( idx ).getOrder(); - connectors.get( idx ).setOrder( Math.max( 1, order - 1 ) ); - } - - private int findTargetConnector( List connectors, String targetRepoId ) - { - int idx = ( -1 ); - - for ( int i = 0; i < connectors.size(); i++ ) - { - if ( StringUtils.equals( targetRepoId, connectors.get( i ).getTargetRepoId() ) ) - { - idx = i; - break; - } - } - - return idx; - } - - private void incrementConnectorOrder( List connectors, int idx ) - { - if ( !validIndex( connectors, idx ) ) - { - // Do nothing. - return; - } - - int order = connectors.get( idx ).getOrder(); - connectors.get( idx ).setOrder( order + 1 ); - } - - private boolean validIndex( List connectors, int idx ) - { - return ( idx >= 0 ) && ( idx < connectors.size() ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction.java deleted file mode 100644 index 073924ae7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction.java +++ /dev/null @@ -1,222 +0,0 @@ -package org.apache.archiva.web.action.admin.legacy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.LegacyArtifactPath; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.model.ArtifactReference; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.inject.Named; - -/** - * Add a LegacyArtifactPath to archiva configuration - * - * @since 1.1 - */ -@Controller( "addLegacyArtifactPathAction" ) -@Scope( "prototype" ) -public class AddLegacyArtifactPathAction - extends AbstractActionSupport - implements Preparable, Validateable -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - @Inject - @Named( value = "managedRepositoryContent#legacy" ) - private ManagedRepositoryContent repositoryContent; - - - private LegacyArtifactPath legacyArtifactPath; - - private String groupId; - - private String artifactId; - - private String version; - - private String classifier; - - private String type; - - - public void prepare() - { - this.legacyArtifactPath = new LegacyArtifactPath(); - } - - public String input() - { - return INPUT; - } - - public String commit() - { - this.legacyArtifactPath.setArtifact( - this.groupId + ":" + this.artifactId + ":" + this.version + ":" + this.classifier + ":" + this.type ); - - // Check the proposed Artifact macthes the path - ArtifactReference artifact = new ArtifactReference(); - - artifact.setGroupId( this.groupId ); - artifact.setArtifactId( this.artifactId ); - artifact.setClassifier( this.classifier ); - artifact.setVersion( this.version ); - artifact.setType( this.type ); - - String path = repositoryContent.toPath( artifact ); - if ( !path.equals( this.legacyArtifactPath.getPath() ) ) - { - addActionError( "artifact reference does not match the initial path : " + path ); - return ERROR; - } - - try - { - getArchivaAdministration().addLegacyArtifactPath( legacyArtifactPath, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error occured " + e.getMessage() ); - return INPUT; - } - return SUCCESS; - } - - public LegacyArtifactPath getLegacyArtifactPath() - { - return legacyArtifactPath; - } - - public void setLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath ) - { - this.legacyArtifactPath = legacyArtifactPath; - } - - public void validate() - { - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( legacyArtifactPath.getPath() ) ) - { - legacyArtifactPath.setPath( legacyArtifactPath.getPath().trim() ); - } - - if ( StringUtils.isNotEmpty( groupId ) ) - { - groupId = groupId.trim(); - } - - if ( StringUtils.isNotEmpty( artifactId ) ) - { - artifactId = artifactId.trim(); - } - - if ( StringUtils.isNotEmpty( version ) ) - { - version = version.trim(); - } - - if ( StringUtils.isNotEmpty( classifier ) ) - { - classifier = classifier.trim(); - } - - if ( StringUtils.isNotEmpty( type ) ) - { - type = type.trim(); - } - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public String getVersion() - { - return version; - } - - public void setVersion( String version ) - { - this.version = version; - } - - public String getClassifier() - { - return classifier; - } - - public void setClassifier( String classifier ) - { - this.classifier = classifier; - } - - public String getType() - { - return type; - } - - public void setType( String type ) - { - this.type = type; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/DeleteLegacyArtifactPathAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/DeleteLegacyArtifactPathAction.java deleted file mode 100644 index 944ac1d3e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/DeleteLegacyArtifactPathAction.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.apache.archiva.web.action.admin.legacy; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * Delete a LegacyArtifactPath to archiva configuration - * - * @since 1.1 - */ -@Controller( "deleteLegacyArtifactPathAction" ) -@Scope( "prototype" ) -public class DeleteLegacyArtifactPathAction - extends AbstractActionSupport -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - private String path; - - public String delete() - { - log.info( "remove [" + path + "] from legacy artifact path resolution" ); - try - { - getArchivaAdministration().deleteLegacyArtifactPath( path, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Exception during delete " + e.getMessage() ); - } - return SUCCESS; - } - - public String getPath() - { - return path; - } - - public void setPath( String path ) - { - this.path = path; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/LegacyArtifactPathAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/LegacyArtifactPathAction.java deleted file mode 100644 index cfb095a1d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/legacy/LegacyArtifactPathAction.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.apache.archiva.web.action.admin.legacy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.LegacyArtifactPath; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.List; - -/** - * Shows the LegacyArtifactPath Tab for the administrator. - * - * @since 1.1 - */ -@Controller( "legacyArtifactPathAction" ) -@Scope( "prototype" ) -public class LegacyArtifactPathAction - extends AbstractActionSupport - implements SecureAction, ServletRequestAware, Preparable -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - private List legacyArtifactPaths; - - /** - * Used to construct the repository WebDAV URL in the repository action. - */ - private String baseUrl; - - public void setServletRequest( HttpServletRequest request ) - { - // TODO: is there a better way to do this? - this.baseUrl = ContextUtils.getBaseURL( request, "repository" ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public void prepare() - throws RepositoryAdminException - { - legacyArtifactPaths = new ArrayList( getArchivaAdministration().getLegacyArtifactPaths() ); - } - - public List getLegacyArtifactPaths() - { - return legacyArtifactPaths; - } - - public String getBaseUrl() - { - return baseUrl; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction.java deleted file mode 100644 index 1c484aa55..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction.java +++ /dev/null @@ -1,98 +0,0 @@ -package org.apache.archiva.web.action.admin.network; -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.NetworkConfiguration; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * @author Olivier Lamy - * @since 1.4-M1 - */ -@Controller( "networkConfigurationAction" ) -@Scope( "prototype" ) -public class NetworkConfigurationAction - extends AbstractActionSupport - implements Preparable, SecureAction -{ - - @Inject - private ArchivaAdministration archivaAdministration; - - private NetworkConfiguration networkConfiguration; - - public void prepare( ) - throws Exception - { - networkConfiguration = archivaAdministration.getNetworkConfiguration( ); - } - - public SecureActionBundle getSecureActionBundle( ) - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle( ); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public String edit( ) - { - return INPUT; - } - - public String save( ) - { - try - { - archivaAdministration.setNetworkConfiguration( this.networkConfiguration ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "Error during networkConfiguration upate:" + e.getMessage( ) ); - return ERROR; - } - addActionMessage( "Network Configuration Updated" ); - return SUCCESS; - } - - public NetworkConfiguration getNetworkConfiguration( ) - { - return networkConfiguration; - } - - public void setNetworkConfiguration( NetworkConfiguration networkConfiguration ) - { - this.networkConfiguration = networkConfiguration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java deleted file mode 100644 index 087945a78..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction.java +++ /dev/null @@ -1,232 +0,0 @@ -package org.apache.archiva.web.action.admin.networkproxies; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * ConfigureNetworkProxyAction - * - * - */ -@Controller( "configureNetworkProxyAction" ) -@Scope( "prototype" ) -public class ConfigureNetworkProxyAction - extends AbstractActionSupport - implements SecureAction, Preparable, Validateable -{ - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - private String mode; - - private String proxyid; - - private NetworkProxy proxy; - - public String add() - { - this.mode = "add"; - return INPUT; - } - - public String confirm() - { - return INPUT; - } - - public String delete() - throws RepositoryAdminException - { - - String id = getProxyid(); - if ( StringUtils.isBlank( id ) ) - { - addActionError( "Unable to delete network proxy with blank id." ); - return SUCCESS; - } - - NetworkProxy networkProxy = getNetworkProxyAdmin().getNetworkProxy( id ); - if ( networkProxy == null ) - { - addActionError( "Unable to remove network proxy, proxy with id [" + id + "] not found." ); - return SUCCESS; - } - - getNetworkProxyAdmin().deleteNetworkProxy( id, getAuditInformation() ); - addActionMessage( "Successfully removed network proxy [" + id + "]" ); - return SUCCESS; - } - - public String edit() - { - this.mode = "edit"; - return INPUT; - } - - public String getMode() - { - return mode; - } - - public NetworkProxy getProxy() - { - return proxy; - } - - public String getProxyid() - { - return proxyid; - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public String input() - { - return INPUT; - } - - public void prepare() - throws Exception - { - String id = getProxyid(); - - if ( StringUtils.isNotBlank( id ) ) - { - proxy = findNetworkProxy( id ); - } - - if ( proxy == null ) - { - proxy = new NetworkProxy(); - } - } - - public String save() - throws RepositoryAdminException - { - String mode = getMode(); - - String id = getProxy().getId(); - - if ( StringUtils.equalsIgnoreCase( "edit", mode ) ) - { - getNetworkProxyAdmin().updateNetworkProxy( proxy, getAuditInformation() ); - } - else - { - getNetworkProxyAdmin().addNetworkProxy( proxy, getAuditInformation() ); - } - - return SUCCESS; - } - - public void validate() - { - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - public void setMode( String mode ) - { - this.mode = mode; - } - - public void setProxy( NetworkProxy proxy ) - { - this.proxy = proxy; - } - - public void setProxyid( String proxyid ) - { - this.proxyid = proxyid; - } - - - private NetworkProxy findNetworkProxy( String id ) - throws RepositoryAdminException - { - return getNetworkProxyAdmin().getNetworkProxy( id ); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( proxy.getId() ) ) - { - proxy.setId( proxy.getId().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getHost() ) ) - { - proxy.setHost( proxy.getHost().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getPassword() ) ) - { - proxy.setPassword( proxy.getPassword().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getProtocol() ) ) - { - proxy.setProtocol( proxy.getProtocol().trim() ); - } - - if ( StringUtils.isNotEmpty( proxy.getUsername() ) ) - { - proxy.setUsername( proxy.getUsername().trim() ); - } - } - - public NetworkProxyAdmin getNetworkProxyAdmin() - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } -} - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/NetworkProxiesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/NetworkProxiesAction.java deleted file mode 100644 index f43083296..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/networkproxies/NetworkProxiesAction.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.apache.archiva.web.action.admin.networkproxies; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.List; - -/** - * NetworkProxiesAction - * - * - */ -@Controller( "networkProxiesAction" ) -@Scope( "prototype" ) -public class NetworkProxiesAction - extends AbstractActionSupport - implements Preparable, SecureAction -{ - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - private List networkProxies; - - public void prepare() - throws Exception - { - networkProxies = getNetworkProxyAdmin().getNetworkProxies(); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public List getNetworkProxies() - { - return networkProxies; - } - - public void setNetworkProxies( List networkProxies ) - { - this.networkProxies = networkProxies; - } - - public NetworkProxyAdmin getNetworkProxyAdmin() - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java deleted file mode 100644 index 3ae0a1436..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -/** - * Abstract ManagedRepositories Action. - *

- * Place for all generic methods used in Managed Repository Administration. - * - * - */ -public abstract class AbstractManagedRepositoriesAction - extends AbstractRepositoriesAdminAction -{ - public static final String CONFIRM = "confirm"; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRemoteRepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRemoteRepositoriesAction.java deleted file mode 100644 index b00461600..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRemoteRepositoriesAction.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; -import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; - -import javax.inject.Inject; -import java.util.Collections; -import java.util.List; - -/* - * 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. - */ - -/** - * AbstractRemoteRepositoriesAction - * - * - */ -public class AbstractRemoteRepositoriesAction - extends AbstractRepositoriesAdminAction -{ - @Inject - private RemoteRepositoryAdmin remoteRepositoryAdmin; - - @Inject - private NetworkProxyAdmin networkProxyAdmin; - - private List networkProxies; - - public RemoteRepositoryAdmin getRemoteRepositoryAdmin() - { - return remoteRepositoryAdmin; - } - - public void setRemoteRepositoryAdmin( RemoteRepositoryAdmin remoteRepositoryAdmin ) - { - this.remoteRepositoryAdmin = remoteRepositoryAdmin; - } - - public NetworkProxyAdmin getNetworkProxyAdmin() - { - return networkProxyAdmin; - } - - public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin ) - { - this.networkProxyAdmin = networkProxyAdmin; - } - - public List getNetworkProxies() - { - return networkProxies == null ? Collections.emptyList() : networkProxies; - } - - public void setNetworkProxies( List networkProxies ) - { - this.networkProxies = networkProxies; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java deleted file mode 100644 index 2a75d8d85..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.RepositoryCommonValidator; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; - -import javax.inject.Inject; - -/** - * Abstract AdminRepositories Action base. - *

- * Base class for all repository administrative functions. - * This should be neutral to the type of action (add/edit/delete) and type of repo (managed/remote) - * - * - */ -public abstract class AbstractRepositoriesAdminAction - extends AbstractActionSupport - implements SecureAction, Auditable -{ - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RepositoryCommonValidator repositoryCommonValidator; - - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public RepositoryCommonValidator getRepositoryCommonValidator() - { - return repositoryCommonValidator; - } - - public void setRepositoryCommonValidator( RepositoryCommonValidator repositoryCommonValidator ) - { - this.repositoryCommonValidator = repositoryCommonValidator; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java deleted file mode 100644 index dff8eafea..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java +++ /dev/null @@ -1,160 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.redback.components.scheduler.CronExpressionValidator; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.io.File; - -/** - * AddManagedRepositoryAction - * - * - */ -@Controller( "addManagedRepositoryAction" ) -@Scope( "prototype" ) -public class AddManagedRepositoryAction - extends AbstractManagedRepositoriesAction - implements Preparable, Validateable -{ - - private ManagedRepository repository; - - private boolean stageNeeded; - - private String action = "addRepository"; - - public void prepare() - { - this.repository = new ManagedRepository(); - this.repository.setReleases( false ); - this.repository.setScanned( false ); - this.repository.setBlockRedeployments( false ); - } - - public String input() - { - this.repository.setReleases( true ); - this.repository.setScanned( true ); - this.repository.setBlockRedeployments( true ); - - return INPUT; - } - - public String confirmAdd() - { - return save(); - } - - public String commit() - { - repository.setLocation( getRepositoryCommonValidator().removeExpressions( repository.getLocation() ) ); - - File location = new File( repository.getLocation() ); - if ( location.exists() ) - { - return CONFIRM; - } - - return save(); - } - - private String save() - { - String result = SUCCESS; - try - { - getManagedRepositoryAdmin().addManagedRepository( repository, stageNeeded, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Check your server logs, Repository Administration Exception: " + e.getMessage() ); - result = INPUT; - } - - return result; - } - - @Override - public void validate() - { - CronExpressionValidator validator = new CronExpressionValidator(); - - if ( !validator.validate( repository.getCronExpression() ) ) - { - addFieldError( "repository.cronExpression", "Invalid cron expression." ); - } - - // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation). - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( repository.getId() ) ) - { - repository.setId( repository.getId().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getName() ) ) - { - repository.setName( repository.getName().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getLocation() ) ) - { - repository.setLocation( repository.getLocation().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getIndexDirectory() ) ) - { - repository.setIndexDirectory( repository.getIndexDirectory().trim() ); - } - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - - public void setStageNeeded( boolean stageNeeded ) - { - this.stageNeeded = stageNeeded; - } - - public String getAction() - { - return action; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java deleted file mode 100644 index c6a4e4ea0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * AddRemoteRepositoryAction - * - * - */ -@Controller( "addRemoteRepositoryAction" ) -@Scope( "prototype" ) -public class AddRemoteRepositoryAction - extends AbstractRemoteRepositoriesAction - implements Preparable, Validateable -{ - /** - * The model for this action. - */ - private RemoteRepository repository; - - public void prepare() - throws RepositoryAdminException - { - this.repository = new RemoteRepository(); - setNetworkProxies( getNetworkProxyAdmin().getNetworkProxies() ); - } - - public String input() - { - return INPUT; - } - - public String commit() - { - - String result = SUCCESS; - try - { - getRemoteRepositoryAdmin().addRemoteRepository( repository, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException: " + e.getMessage() ); - result = INPUT; - } - - return result; - } - - - public RemoteRepository getRepository() - { - return repository; - } - - public void setRepository( RemoteRepository repository ) - { - this.repository = repository; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java deleted file mode 100644 index 23f5d7602..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * DeleteManagedRepositoryAction - * - * - */ -@Controller( "deleteManagedRepositoryAction" ) -@Scope( "prototype" ) -public class DeleteManagedRepositoryAction - extends AbstractManagedRepositoriesAction - implements Preparable -{ - - - private ManagedRepository repository; - - private ManagedRepository stagingRepository; - - private String repoid; - - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - this.repository = getManagedRepositoryAdmin().getManagedRepository( repoid ); - this.stagingRepository = getManagedRepositoryAdmin().getManagedRepository( repoid + "-stage" ); - } - } - - public String confirmDelete() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Unable to delete managed repository: repository id was blank." ); - return ERROR; - } - - return INPUT; - } - - public String deleteEntry() - { - return deleteRepository( false ); - } - - public String deleteContents() - { - return deleteRepository( true ); - } - - private String deleteRepository( boolean deleteContents ) - { - ManagedRepository existingRepository = repository; - if ( existingRepository == null ) - { - addActionError( "A repository with that id does not exist" ); - return ERROR; - } - - String result = SUCCESS; - - try - { - getManagedRepositoryAdmin().deleteManagedRepository( existingRepository.getId(), getAuditInformation(), - deleteContents ); - } - catch ( RepositoryAdminException e ) - { - addActionError( - "Unable to delete repository, content may already be partially removed: " + e.getMessage() ); - log.error( e.getMessage(), e ); - result = ERROR; - } - return result; - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java deleted file mode 100644 index cca80a1a9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -/** - * DeleteRemoteRepositoryAction - * - * - */ -@Controller( "deleteRemoteRepositoryAction" ) -@Scope( "prototype" ) -public class DeleteRemoteRepositoryAction - extends AbstractRemoteRepositoriesAction - implements Preparable -{ - private RemoteRepository repository; - - private String repoid; - - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - this.repository = getRemoteRepositoryAdmin().getRemoteRepository( repoid ); - } - } - - public String confirmDelete() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Unable to delete remote repository: repository id was blank." ); - return ERROR; - } - - return INPUT; - } - - public String delete() - { - String result = SUCCESS; - RemoteRepository existingRepository = repository; - if ( existingRepository == null ) - { - addActionError( "A repository with that id does not exist" ); - return ERROR; - } - - try - { - getRemoteRepositoryAdmin().deleteRemoteRepository( existingRepository.getId(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException: " + e.getMessage() ); - result = ERROR; - } - return result; - } - - - public RemoteRepository getRepository() - { - return repository; - } - - public void setRepository( RemoteRepository repository ) - { - this.repository = repository; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java deleted file mode 100644 index 0ce76aba5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RepositoryGroup; -import org.apache.archiva.admin.model.group.RepositoryGroupAdmin; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * DeleteRepositoryGroupAction - */ -@Controller( "deleteRepositoryGroupAction" ) -@Scope( "prototype" ) -public class DeleteRepositoryGroupAction - extends AbstractRepositoriesAdminAction - implements Preparable -{ - private RepositoryGroup repositoryGroup; - - @Inject - private RepositoryGroupAdmin repositoryGroupAdmin; - - private String repoGroupId; - - public void prepare() - throws RepositoryAdminException - { - - if ( StringUtils.isNotBlank( repoGroupId ) ) - { - this.repositoryGroup = repositoryGroupAdmin.getRepositoryGroup( repoGroupId ); - } - } - - public String confirmDelete() - { - if ( StringUtils.isBlank( repoGroupId ) ) - { - addActionError( "Unable to delete repository group: repository id was blank." ); - return ERROR; - } - - return INPUT; - } - - public String delete() - { - - try - { - RepositoryGroup group = repositoryGroupAdmin.getRepositoryGroup( repoGroupId ); - if ( group == null ) - { - addActionError( "A repository group with that id does not exist." ); - return ERROR; - } - - repositoryGroupAdmin.deleteRepositoryGroup( repoGroupId, getAuditInformation() ); - return SUCCESS; - } - catch ( RepositoryAdminException e ) - { - addActionError( "error occured " + e.getMessage() ); - return ERROR; - } - } - - public RepositoryGroup getRepositoryGroup() - { - return repositoryGroup; - } - - public void setRepositoryGroup( RepositoryGroup repositoryGroup ) - { - this.repositoryGroup = repositoryGroup; - } - - public String getRepoGroupId() - { - return repoGroupId; - } - - public void setRepoGroupId( String repoGroupId ) - { - this.repoGroupId = repoGroupId; - } - - public RepositoryGroupAdmin getRepositoryGroupAdmin() - { - return repositoryGroupAdmin; - } - - public void setRepositoryGroupAdmin( RepositoryGroupAdmin repositoryGroupAdmin ) - { - this.repositoryGroupAdmin = repositoryGroupAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java deleted file mode 100644 index 47962ba43..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java +++ /dev/null @@ -1,213 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.redback.components.scheduler.CronExpressionValidator; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import java.io.File; - -/** - * AddManagedRepositoryAction - * - * - */ -@Controller( "editManagedRepositoryAction" ) -@Scope( "prototype" ) -public class EditManagedRepositoryAction - extends AbstractManagedRepositoriesAction - implements Preparable, Validateable -{ - - private ManagedRepository repository; - - private ManagedRepository stagingRepository; - - private String repoid; - - private final String action = "editRepository"; - - private boolean stageNeeded; - - - // FIXME better error message - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - repository = getManagedRepositoryAdmin().getManagedRepository( repoid ); - stagingRepository = getManagedRepositoryAdmin().getManagedRepository( repoid + "-stage" ); - } - else if ( repository != null ) - { - repository.setReleases( false ); - repository.setScanned( false ); - } - } - - public String input() - { - if ( repository == null ) - { - addActionError( "Edit failure, unable to edit a repository with a blank repository id." ); - return ERROR; - } - - return INPUT; - } - - public String confirmUpdate() - { - // location was changed - return save( true ); - } - - public String commit() - throws RepositoryAdminException - { - ManagedRepository existingConfig = getManagedRepositoryAdmin().getManagedRepository( repository.getId() ); - boolean resetStats = false; - - // check if the location was changed - repository.setLocation( getRepositoryCommonValidator().removeExpressions( repository.getLocation() ) ); - - if ( !StringUtils.equalsIgnoreCase( existingConfig.getLocation().trim(), repository.getLocation().trim() ) ) - { - resetStats = true; - - File dir = new File( repository.getLocation() ); - if ( dir.exists() ) - { - return CONFIRM; - } - } - - return save( resetStats ); - } - - private String save( boolean resetStats ) - { - - String result = SUCCESS; - try - { - getManagedRepositoryAdmin().updateManagedRepository( repository, stageNeeded, getAuditInformation(), - resetStats ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "Repository Administration Exception: " + e.getMessage() ); - result = ERROR; - } - - return result; - } - - - @Override - public void validate() - { - CronExpressionValidator validator = new CronExpressionValidator(); - - if ( !validator.validate( repository.getCronExpression() ) ) - { - addFieldError( "repository.cronExpression", "Invalid cron expression." ); - } - - trimAllRequestParameterValues(); - } - - private void trimAllRequestParameterValues() - { - if ( StringUtils.isNotEmpty( repository.getId() ) ) - { - repository.setId( repository.getId().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getName() ) ) - { - repository.setName( repository.getName().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getLocation() ) ) - { - repository.setLocation( repository.getLocation().trim() ); - } - - if ( StringUtils.isNotEmpty( repository.getIndexDirectory() ) ) - { - repository.setIndexDirectory( repository.getIndexDirectory().trim() ); - } - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - - public boolean isStageNeeded() - { - return stageNeeded; - } - - public void setStageNeeded( boolean stageNeeded ) - { - - this.stageNeeded = stageNeeded; - } - - public String getAction() - { - return action; - } - - public ManagedRepository getRepository() - { - return repository; - } - - public void setRepository( ManagedRepository repository ) - { - this.repository = repository; - } - - public ManagedRepository getStagingRepository() - { - return stagingRepository; - } - - public void setStagingRepository( ManagedRepository stagingRepository ) - { - this.stagingRepository = stagingRepository; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java deleted file mode 100644 index 21cfb2743..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java +++ /dev/null @@ -1,149 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.archiva.scheduler.indexing.DownloadRemoteIndexException; -import org.apache.archiva.scheduler.indexing.DownloadRemoteIndexScheduler; -import org.apache.commons.lang.StringUtils; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; - -/** - * EditRemoteRepositoryAction - * - * - */ -@Controller( "editRemoteRepositoryAction" ) -@Scope( "prototype" ) -public class EditRemoteRepositoryAction - extends AbstractRemoteRepositoriesAction - implements Preparable -{ - /** - * The model for this action. - */ - private RemoteRepository repository; - - /** - * The repository id to edit. - */ - private String repoid; - - private boolean now, fullDownload; - - @Inject - private DownloadRemoteIndexScheduler downloadRemoteIndexScheduler; - - public void prepare() - throws RepositoryAdminException - { - if ( StringUtils.isNotBlank( repoid ) ) - { - this.repository = getRemoteRepositoryAdmin().getRemoteRepository( repoid ); - } - setNetworkProxies( getNetworkProxyAdmin().getNetworkProxies() ); - } - - public String input() - { - if ( StringUtils.isBlank( repoid ) ) - { - addActionError( "Edit failure, unable to edit a repository with a blank repository id." ); - return ERROR; - } - - return INPUT; - } - - public String commit() - { - String result = SUCCESS; - try - { - getRemoteRepositoryAdmin().updateRemoteRepository( getRepository(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "RepositoryAdminException: " + e.getMessage() ); - result = INPUT; - } - - return result; - } - - public String downloadRemoteIndex() - { - try - { - downloadRemoteIndexScheduler.scheduleDownloadRemote( repoid, now, fullDownload ); - } - catch ( DownloadRemoteIndexException e ) - { - addActionError( "DownloadRemoteIndexException: " + e.getMessage() ); - return INPUT; - } - return SUCCESS; - } - - public RemoteRepository getRepository() - { - return repository; - } - - public void setRepository( RemoteRepository repository ) - { - this.repository = repository; - } - - public String getRepoid() - { - return repoid; - } - - public void setRepoid( String repoid ) - { - this.repoid = repoid; - } - - public boolean isNow() - { - return now; - } - - public void setNow( boolean now ) - { - this.now = now; - } - - public boolean isFullDownload() - { - return fullDownload; - } - - public void setFullDownload( boolean fullDownload ) - { - this.fullDownload = fullDownload; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoriesAction.java deleted file mode 100644 index a839e9102..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoriesAction.java +++ /dev/null @@ -1,222 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.archiva.admin.model.group.RepositoryGroupAdmin; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; -import org.apache.archiva.admin.repository.utils.RepositoryComparator; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.stats.RepositoryStatistics; -import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Shows the Repositories Tab for the administrator. - * - * - */ -@Controller( "repositoriesAction" ) -@Scope( "prototype" ) -public class RepositoriesAction - extends AbstractActionSupport - implements SecureAction, ServletRequestAware, Preparable -{ - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RemoteRepositoryAdmin remoteRepositoryAdmin; - - @Inject - private RepositoryGroupAdmin repositoryGroupAdmin; - - private List managedRepositories; - - private List remoteRepositories; - - private Map repositoryStatistics; - - private Map> repositoryToGroupMap; - - /** - * Used to construct the repository WebDAV URL in the repository action. - */ - private String baseUrl; - - - @Inject - private RepositoryStatisticsManager repositoryStatisticsManager; - - public void setServletRequest( HttpServletRequest request ) - { - // TODO: is there a better way to do this? - this.baseUrl = ContextUtils.getBaseURL( request, "repository" ); - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - @SuppressWarnings( "unchecked" ) - public void prepare() - throws RepositoryAdminException - { - remoteRepositories = new ArrayList( getRemoteRepositoryAdmin().getRemoteRepositories() ); - managedRepositories = new ArrayList( getManagedRepositoryAdmin().getManagedRepositories() ); - repositoryToGroupMap = getRepositoryGroupAdmin().getRepositoryToGroupMap(); - - Collections.sort( managedRepositories, new RepositoryComparator() ); - Collections.sort( remoteRepositories, new RepositoryComparator() ); - - repositoryStatistics = new HashMap(); - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - for ( ManagedRepository repo : managedRepositories ) - { - RepositoryStatistics stats = null; - try - { - stats = repositoryStatisticsManager.getLastStatistics( metadataRepository, repo.getId() ); - } - catch ( MetadataRepositoryException e ) - { - addActionError( - "Error retrieving statistics for repository " + repo.getId() + " - consult application logs" ); - log.warn( "Error retrieving repository statistics: " + e.getMessage(), e ); - } - if ( stats != null ) - { - repositoryStatistics.put( repo.getId(), stats ); - } - } - } - finally - { - repositorySession.close(); - } - } - - public List getManagedRepositories() - { - List managedRepositoriesList = new ArrayList(); - for ( ManagedRepository repoConfig : managedRepositories ) - { - if ( !repoConfig.getId().endsWith( "-stage" ) ) - { - managedRepositoriesList.add( repoConfig ); - } - } - return managedRepositoriesList; - } - - public List getRemoteRepositories() - { - return remoteRepositories; - } - - public Map getRepositoryStatistics() - { - return repositoryStatistics; - } - - public String getBaseUrl() - { - return baseUrl; - } - - public Map> getRepositoryToGroupMap() - { - return repositoryToGroupMap; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } - - public RemoteRepositoryAdmin getRemoteRepositoryAdmin() - { - return remoteRepositoryAdmin; - } - - public void setRemoteRepositoryAdmin( RemoteRepositoryAdmin remoteRepositoryAdmin ) - { - this.remoteRepositoryAdmin = remoteRepositoryAdmin; - } - - public RepositoryGroupAdmin getRepositoryGroupAdmin() - { - return repositoryGroupAdmin; - } - - public void setRepositoryGroupAdmin( RepositoryGroupAdmin repositoryGroupAdmin ) - { - this.repositoryGroupAdmin = repositoryGroupAdmin; - } - - public RepositoryStatisticsManager getRepositoryStatisticsManager() - { - return repositoryStatisticsManager; - } - - public void setRepositoryStatisticsManager( RepositoryStatisticsManager repositoryStatisticsManager ) - { - this.repositoryStatisticsManager = repositoryStatisticsManager; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction.java deleted file mode 100644 index 5d12e100b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction.java +++ /dev/null @@ -1,191 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.beans.RepositoryGroup; -import org.apache.archiva.admin.model.group.RepositoryGroupAdmin; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.Map; -import java.util.regex.Pattern; - -/** - * RepositoryGroupsAction - */ -@Controller( "repositoryGroupsAction" ) -@Scope( "prototype" ) -public class RepositoryGroupsAction - extends AbstractRepositoriesAdminAction - implements ServletRequestAware, Preparable -{ - - @Inject - private RepositoryGroupAdmin repositoryGroupAdmin; - - private RepositoryGroup repositoryGroup; - - private Map repositoryGroups; - - private Map managedRepositories; - - private Map> groupToRepositoryMap; - - private String repoGroupId; - - private String repoId; - - /** - * Used to construct the repository WebDAV URL in the repository action. - */ - private String baseUrl; - - public void setServletRequest( HttpServletRequest request ) - { - this.baseUrl = ContextUtils.getBaseURL( request, "repository" ); - } - - public void prepare() - throws RepositoryAdminException - { - - repositoryGroup = new RepositoryGroup(); - repositoryGroups = getRepositoryGroupAdmin().getRepositoryGroupsAsMap(); - managedRepositories = getManagedRepositoryAdmin().getManagedRepositoriesAsMap(); - groupToRepositoryMap = getRepositoryGroupAdmin().getGroupToRepositoryMap(); - } - - public String addRepositoryGroup() - { - try - { - getRepositoryGroupAdmin().addRepositoryGroup( repositoryGroup, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return ERROR; - } - - return SUCCESS; - } - - public String addRepositoryToGroup() - { - try - { - getRepositoryGroupAdmin().addRepositoryToGroup( repoGroupId, repoId, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return ERROR; - } - return SUCCESS; - } - - public String removeRepositoryFromGroup() - { - try - { - getRepositoryGroupAdmin().deleteRepositoryFromGroup( repoGroupId, repoId, getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return ERROR; - } - return SUCCESS; - } - - - public RepositoryGroup getRepositoryGroup() - { - return repositoryGroup; - } - - public void setRepositoryGroup( RepositoryGroup repositoryGroup ) - { - this.repositoryGroup = repositoryGroup; - } - - public Map getRepositoryGroups() - { - return repositoryGroups; - } - - public void setRepositoryGroups( Map repositoryGroups ) - { - this.repositoryGroups = repositoryGroups; - } - - public Map getManagedRepositories() - { - return managedRepositories; - } - - public Map> getGroupToRepositoryMap() - { - return this.groupToRepositoryMap; - } - - public String getRepoGroupId() - { - return repoGroupId; - } - - public void setRepoGroupId( String repoGroupId ) - { - this.repoGroupId = repoGroupId; - } - - public String getRepoId() - { - return repoId; - } - - public void setRepoId( String repoId ) - { - this.repoId = repoId; - } - - public String getBaseUrl() - { - return baseUrl; - } - - public RepositoryGroupAdmin getRepositoryGroupAdmin() - { - return repositoryGroupAdmin; - } - - public void setRepositoryGroupAdmin( RepositoryGroupAdmin repositoryGroupAdmin ) - { - this.repositoryGroupAdmin = repositoryGroupAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesAction.java deleted file mode 100644 index 087814b83..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesAction.java +++ /dev/null @@ -1,170 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.RepositoryGroupConfiguration; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.List; - -/** - * SortRepositoriesAction - * FIXME remove access to archivaconfiguration - */ -@Controller( "sortRepositoriesAction" ) -@Scope( "prototype" ) -public class SortRepositoriesAction - extends AbstractRepositoriesAdminAction -{ - - private String repoGroupId; - - private String targetRepo; - - @Inject - protected ArchivaConfiguration archivaConfiguration; - - public String sortDown() - { - Configuration config = archivaConfiguration.getConfiguration(); - - List repositories = getRepositoriesFromGroup(); - - int idx = findTargetRepository( repositories, targetRepo ); - - if ( idx >= 0 && validIndex( repositories, idx + 1 ) ) - { - repositories.remove( idx ); - repositories.add( idx + 1, targetRepo ); - } - - return saveConfiguration( config ); - } - - public String sortUp() - { - Configuration config = archivaConfiguration.getConfiguration(); - - List repositories = getRepositoriesFromGroup(); - - int idx = findTargetRepository( repositories, targetRepo ); - - if ( idx >= 0 && validIndex( repositories, idx - 1 ) ) - { - repositories.remove( idx ); - repositories.add( idx - 1, targetRepo ); - } - - return saveConfiguration( config ); - } - -/** - * Save the configuration. - * - * @param configuration the configuration to save. - * @return the webwork result code to issue. - * @throws java.io.IOException thrown if unable to save file to disk. - * @throws org.apache.archiva.configuration.InvalidConfigurationException thrown if configuration is invalid. - * @throws org.apache.archiva.redback.components.registry.RegistryException thrown if configuration subsystem has a problem saving the configuration to disk. - */ - protected String saveConfiguration( Configuration configuration ) - { - try - { - archivaConfiguration.save( configuration ); - addActionMessage( "Successfully saved configuration" ); - } - catch ( IndeterminateConfigurationException e ) - { - addActionError( e.getMessage() ); - return INPUT; - } - catch ( org.apache.archiva.redback.components.registry.RegistryException e ) - { - addActionError( "Configuration Registry Exception: " + e.getMessage() ); - return INPUT; - } - - return SUCCESS; - } - - public String getRepoGroupId() - { - return repoGroupId; - } - - public void setRepoGroupId( String repoGroupId ) - { - this.repoGroupId = repoGroupId; - } - - public String getTargetRepo() - { - return targetRepo; - } - - public void setTargetRepo( String targetRepo ) - { - this.targetRepo = targetRepo; - } - - private int findTargetRepository( List repositories, String targetRepository ) - { - int idx = ( -1 ); - - for ( int i = 0; i < repositories.size(); i++ ) - { - if ( StringUtils.equals( targetRepository, repositories.get( i ) ) ) - { - idx = i; - break; - } - } - return idx; - } - - private List getRepositoriesFromGroup() - { - Configuration config = archivaConfiguration.getConfiguration(); - RepositoryGroupConfiguration repoGroup = config.findRepositoryGroupById( repoGroupId ); - return repoGroup.getRepositories(); - } - - private boolean validIndex( List repositories, int idx ) - { - return ( idx >= 0 ) && ( idx < repositories.size() ); - } - - public ArchivaConfiguration getArchivaConfiguration() - { - return archivaConfiguration; - } - - public void setArchivaConfiguration( ArchivaConfiguration archivaConfiguration ) - { - this.archivaConfiguration = archivaConfiguration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java deleted file mode 100644 index 059c1ca68..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java +++ /dev/null @@ -1,354 +0,0 @@ -package org.apache.archiva.web.action.admin.scanning; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import com.opensymphony.xwork2.Validateable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.FileType; -import org.apache.archiva.admin.repository.admin.FiletypeToMapClosure; -import org.apache.archiva.audit.Auditable; -import org.apache.archiva.repository.scanner.RepositoryContentConsumers; -import org.apache.archiva.rest.api.model.AdminRepositoryConsumer; -import org.apache.archiva.rest.services.utils.AddAdminRepoConsumerClosure; -import org.apache.archiva.rest.services.utils.AdminRepositoryConsumerComparator; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * RepositoryScanningAction - * - * - */ -@Controller( "repositoryScanningAction" ) -@Scope( "prototype" ) -public class RepositoryScanningAction - extends AbstractActionSupport - implements Preparable, Validateable, SecureAction, Auditable -{ - - @Inject - private RepositoryContentConsumers repoconsumerUtil; - - @Inject - private ArchivaAdministration archivaAdministration; - - private Map fileTypeMap; - - private List fileTypeIds; - - /** - * List of {@link org.apache.archiva.rest.api.model.AdminRepositoryConsumer} objects for consumers of known content. - */ - private List knownContentConsumers; - - /** - * List of enabled {@link AdminRepositoryConsumer} objects for consumers of known content. - */ - private List enabledKnownContentConsumers; - - /** - * List of {@link AdminRepositoryConsumer} objects for consumers of invalid/unknown content. - */ - private List invalidContentConsumers; - - /** - * List of enabled {@link AdminRepositoryConsumer} objects for consumers of invalid/unknown content. - */ - private List enabledInvalidContentConsumers; - - private String pattern; - - private String fileTypeId; - - public void addActionError( String anErrorMessage ) - { - super.addActionError( anErrorMessage ); - log.warn( "[ActionError] {}", anErrorMessage ); - } - - public void addActionMessage( String aMessage ) - { - super.addActionMessage( aMessage ); - log.info( "[ActionMessage] {}", aMessage ); - } - - public void prepare() - throws Exception - { - FiletypeToMapClosure filetypeToMapClosure = new FiletypeToMapClosure(); - - CollectionUtils.forAllDo( archivaAdministration.getFileTypes(), filetypeToMapClosure ); - fileTypeMap = filetypeToMapClosure.getMap(); - - AddAdminRepoConsumerClosure addAdminRepoConsumer = - new AddAdminRepoConsumerClosure( archivaAdministration.getKnownContentConsumers() ); - CollectionUtils.forAllDo( repoconsumerUtil.getAvailableKnownConsumers(), addAdminRepoConsumer ); - this.knownContentConsumers = addAdminRepoConsumer.getList(); - Collections.sort( knownContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); - - addAdminRepoConsumer = new AddAdminRepoConsumerClosure( archivaAdministration.getInvalidContentConsumers() ); - CollectionUtils.forAllDo( repoconsumerUtil.getAvailableInvalidConsumers(), addAdminRepoConsumer ); - this.invalidContentConsumers = addAdminRepoConsumer.getList(); - Collections.sort( invalidContentConsumers, AdminRepositoryConsumerComparator.getInstance() ); - - fileTypeIds = new ArrayList(); - fileTypeIds.addAll( fileTypeMap.keySet() ); - Collections.sort( fileTypeIds ); - } - - public String addFiletypePattern() - { - log.info( "Add New File Type Pattern [{}:{}]", getFileTypeId(), getPattern() ); - - if ( !isValidFiletypeCommand() ) - { - return INPUT; - } - - try - { - getArchivaAdministration().addFileTypePattern( getFileTypeId(), getPattern(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( e.getMessage() ); - return INPUT; - } - return SUCCESS; - } - - public String removeFiletypePattern() - throws RepositoryAdminException - { - log.info( "Remove File Type Pattern [{}:{}]", getFileTypeId(), getPattern() ); - - if ( !isValidFiletypeCommand() ) - { - return INPUT; - } - - try - { - getArchivaAdministration().removeFileTypePattern( getFileTypeId(), getPattern(), getAuditInformation() ); - } - catch ( RepositoryAdminException e ) - { - addActionError( "error adding file type pattern " + e.getMessage() ); - return INPUT; - } - - return SUCCESS; - } - - public String getFileTypeId() - { - return fileTypeId; - } - - public List getFileTypeIds() - { - return fileTypeIds; - } - - public Map getFileTypeMap() - { - return fileTypeMap; - } - - public List getInvalidContentConsumers() - { - return invalidContentConsumers; - } - - public List getKnownContentConsumers() - { - return knownContentConsumers; - } - - public String getPattern() - { - return pattern; - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL ); - - return bundle; - } - - public void setFileTypeId( String fileTypeId ) - { - this.fileTypeId = fileTypeId; - } - - public void setPattern( String pattern ) - { - this.pattern = pattern; - } - - public String updateInvalidConsumers() - { - - try - { - List oldConsumers = getArchivaAdministration().getInvalidContentConsumers(); - - if ( enabledInvalidContentConsumers != null ) - { - for ( String oldConsumer : oldConsumers ) - { - if ( !enabledInvalidContentConsumers.contains( oldConsumer ) ) - { - getArchivaAdministration().removeInvalidContentConsumer( oldConsumer, getAuditInformation() ); - } - } - for ( String enabledKnowContentConsumer : enabledInvalidContentConsumers ) - { - getArchivaAdministration().addInvalidContentConsumer( enabledKnowContentConsumer, - getAuditInformation() ); - } - } - else - { - for ( String oldConsumer : oldConsumers ) - { - getArchivaAdministration().removeInvalidContentConsumer( oldConsumer, getAuditInformation() ); - } - } - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error update invalidContentConsumers " + e.getMessage() ); - return INPUT; - } - addActionMessage( "Update Invalid Consumers" ); - - return SUCCESS; - } - - public String updateKnownConsumers() - { - - try - { - List oldConsumers = getArchivaAdministration().getKnownContentConsumers(); - - if ( enabledKnownContentConsumers != null ) - { - for ( String oldConsumer : oldConsumers ) - { - if ( !enabledKnownContentConsumers.contains( oldConsumer ) ) - { - getArchivaAdministration().removeKnownContentConsumer( oldConsumer, getAuditInformation() ); - } - } - for ( String enabledKnowContentConsumer : enabledKnownContentConsumers ) - { - getArchivaAdministration().addKnownContentConsumer( enabledKnowContentConsumer, - getAuditInformation() ); - } - } - else - { - for ( String oldConsumer : oldConsumers ) - { - getArchivaAdministration().removeKnownContentConsumer( oldConsumer, getAuditInformation() ); - } - } - } - catch ( RepositoryAdminException e ) - { - log.error( e.getMessage(), e ); - addActionError( "Error update knowContentConsumers " + e.getMessage() ); - return INPUT; - } - addActionMessage( "Update Known Consumers" ); - - return SUCCESS; - } - - private boolean isValidFiletypeCommand() - { - if ( StringUtils.isBlank( getFileTypeId() ) ) - { - addActionError( "Unable to process blank filetype id." ); - } - - if ( StringUtils.isBlank( getPattern() ) ) - { - addActionError( "Unable to process blank pattern." ); - } - - return !hasActionErrors(); - } - - - public List getEnabledInvalidContentConsumers() - { - return enabledInvalidContentConsumers; - } - - public void setEnabledInvalidContentConsumers( List enabledInvalidContentConsumers ) - { - this.enabledInvalidContentConsumers = enabledInvalidContentConsumers; - } - - public List getEnabledKnownContentConsumers() - { - return enabledKnownContentConsumers; - } - - public void setEnabledKnownContentConsumers( List enabledKnownContentConsumers ) - { - this.enabledKnownContentConsumers = enabledKnownContentConsumers; - } - - public ArchivaAdministration getArchivaAdministration() - { - return archivaAdministration; - } - - public void setArchivaAdministration( ArchivaAdministration archivaAdministration ) - { - this.archivaAdministration = archivaAdministration; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/GenerateReportAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/GenerateReportAction.java deleted file mode 100644 index 07600cd6e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/GenerateReportAction.java +++ /dev/null @@ -1,774 +0,0 @@ -package org.apache.archiva.web.action.reports; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.MetadataRepositoryException; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.stats.RepositoryStatistics; -import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.reports.RepositoryProblemFacet; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateUtils; -import org.apache.archiva.web.action.AbstractRepositoryBasedAction; -import org.apache.archiva.redback.rbac.Resource; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -/** - * - */ -@Controller( "generateReport" ) -@Scope( "prototype" ) -public class GenerateReportAction - extends AbstractRepositoryBasedAction - implements SecureAction, Preparable -{ - public static final String ALL_REPOSITORIES = "All Repositories"; - - public static final String BLANK = "blank"; - - private static final String[] datePatterns = - new String[]{ "MM/dd/yy", "MM/dd/yyyy", "MMMMM/dd/yyyy", "MMMMM/dd/yy", "dd MMMMM yyyy", "dd/MM/yy", - "dd/MM/yyyy", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy-dd-MM", "MM-dd-yyyy", "MM-dd-yy" }; - - public static final String SEND_FILE = "send-file"; - - private Logger log = LoggerFactory.getLogger( GenerateReportAction.class ); - - @Inject - private ManagedRepositoryAdmin managedRepositoryAdmin; - - @Inject - private RepositoryStatisticsManager repositoryStatisticsManager; - - private String groupId; - - private String repositoryId; - - private int page = 1; - - private int rowCount = 100; - - private List selectedRepositories = new ArrayList(); - - private String startDate; - - private String endDate; - - private int numPages; - - private List repositoryIds; - - private Map> repositoriesMap = - new TreeMap>(); - - private List availableRepositories; - - private List repositoryStatistics = new ArrayList(); - - private InputStream inputStream; - - private boolean lastPage; - - @SuppressWarnings( "unchecked" ) - public void prepare() - throws RepositoryAdminException - { - repositoryIds = new ArrayList(); - repositoryIds.add( ALL_REPOSITORIES ); // comes first to be first in the list - repositoryIds.addAll( getObservableRepos() ); - - availableRepositories = new ArrayList(); - - // remove selected repositories in the option for the statistics report - availableRepositories.addAll( managedRepositoryAdmin.getManagedRepositoriesAsMap().keySet() ); - for ( String repo : selectedRepositories ) - { - if ( availableRepositories.contains( repo ) ) - { - availableRepositories.remove( repo ); - } - } - } - - /** - * Generate the statistics report. - *

- * check whether single repo report or comparison report - * 1. if it is a single repository, get all the statistics for the repository on the specified date - * - if no date is specified, get only the latest - * (total page = 1 --> no pagination since only the most recent stats will be displayed) - * - otherwise, get everything within the date range (total pages = repo stats / rows per page) - * - required params: repository, startDate, endDate - *

- * 2. if multiple repositories, get the latest statistics on each repository on the specified date - * - if no date is specified, use the current date endDate - * - required params: repositories, endDate - * - total pages = repositories / rows per page - * - * @return action result - */ - public String generateStatistics() - { - if ( rowCount < 10 ) - { - // TODO: move to validation framework - addFieldError( "rowCount", "Row count must be larger than 10." ); - return INPUT; - } - Date startDateInDF; - Date endDateInDF; - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - if ( selectedRepositories.size() > 1 ) - { - numPages = 1; - - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - } - catch ( ParseException e ) - { - addActionError( "Error parsing date(s)." ); - return ERROR; - } - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - // multiple repos - for ( String repo : selectedRepositories ) - { - List stats = null; - try - { - stats = - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repo, startDateInDF, - endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - log.info( "No statistics available for repository '" + repo + "'." ); - // TODO set repo's stats to 0 - continue; - } - - repositoryStatistics.add( stats.get( 0 ) ); - } - } - else if ( selectedRepositories.size() == 1 ) - { - repositoryId = selectedRepositories.get( 0 ); - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - List stats = null; - try - { - stats = repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repositoryId, - startDateInDF, endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - addActionError( - "No statistics available for repository. Repository might not have been scanned." ); - return ERROR; - } - - int rowCount = getRowCount(); - int extraPage = ( stats.size() % rowCount ) != 0 ? 1 : 0; - int totalPages = ( stats.size() / rowCount ) + extraPage; - numPages = totalPages; - - int currentPage = getPage(); - if ( currentPage > totalPages ) - { - addActionError( - "Error encountered while generating report :: The requested page exceeds the total number of pages." ); - return ERROR; - } - - int start = rowCount * ( currentPage - 1 ); - int end = ( start + rowCount ) - 1; - - if ( end >= stats.size() ) - { - end = stats.size() - 1; - } - - repositoryStatistics = stats.subList( start, end + 1 ); - } - catch ( ParseException pe ) - { - addActionError( pe.getMessage() ); - return ERROR; - } - } - else - { - addFieldError( "availableRepositories", "Please select a repository (or repositories) from the list." ); - return INPUT; - } - } - finally - { - repositorySession.close(); - } - - if ( repositoryStatistics.isEmpty() ) - { - return BLANK; - } - - return SUCCESS; - } - - /** - * Export report to CSV. - * - * @return action result - */ - public String downloadStatisticsReport() - { - Date startDateInDF; - Date endDateInDF; - - selectedRepositories = parseSelectedRepositories(); - List repositoryStatistics = new ArrayList(); - - StringBuilder input; - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - if ( selectedRepositories.size() > 1 ) - { - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - } - catch ( ParseException e ) - { - addActionError( "Error parsing date(s)." ); - return ERROR; - } - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - input = new StringBuilder( - "Repository,Total File Count,Total Size,Artifact Count,Group Count,Project Count,Plugins,Archetypes," - + "Jars,Wars\n" ); - - // multiple repos - for ( String repo : selectedRepositories ) - { - List stats = null; - try - { - stats = - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repo, startDateInDF, - endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - log.info( "No statistics available for repository '" + repo + "'." ); - // TODO set repo's stats to 0 - continue; - } - - // only the first one - RepositoryStatistics repositoryStats = stats.get( 0 ); - repositoryStatistics.add( repositoryStats ); - - input.append( repo ).append( "," ); - input.append( repositoryStats.getTotalFileCount() ).append( "," ); - input.append( repositoryStats.getTotalArtifactFileSize() ).append( "," ); - input.append( repositoryStats.getTotalArtifactCount() ).append( "," ); - input.append( repositoryStats.getTotalGroupCount() ).append( "," ); - input.append( repositoryStats.getTotalProjectCount() ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-plugin" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-archetype" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "jar" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "war" ) ); - input.append( "\n" ); - } - } - else if ( selectedRepositories.size() == 1 ) - { - repositoryId = selectedRepositories.get( 0 ); - try - { - startDateInDF = getStartDateInDateFormat(); - endDateInDF = getEndDateInDateFormat(); - - if ( startDateInDF != null && endDateInDF != null && startDateInDF.after( endDateInDF ) ) - { - addFieldError( "startDate", "Start Date must be earlier than the End Date" ); - return INPUT; - } - - List stats = null; - try - { - stats = repositoryStatisticsManager.getStatisticsInRange( metadataRepository, repositoryId, - startDateInDF, endDateInDF ); - } - catch ( MetadataRepositoryException e ) - { - log.warn( "Unable to retrieve stats, assuming is empty: " + e.getMessage(), e ); - } - if ( stats == null || stats.isEmpty() ) - { - addActionError( - "No statistics available for repository. Repository might not have been scanned." ); - return ERROR; - } - - input = new StringBuilder( - "Date of Scan,Total File Count,Total Size,Artifact Count,Group Count,Project Count,Plugins," - + "Archetypes,Jars,Wars\n" ); - - for ( RepositoryStatistics repositoryStats : stats ) - { - input.append( repositoryStats.getScanStartTime() ).append( "," ); - input.append( repositoryStats.getTotalFileCount() ).append( "," ); - input.append( repositoryStats.getTotalArtifactFileSize() ).append( "," ); - input.append( repositoryStats.getTotalArtifactCount() ).append( "," ); - input.append( repositoryStats.getTotalGroupCount() ).append( "," ); - input.append( repositoryStats.getTotalProjectCount() ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-plugin" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "maven-archetype" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "jar" ) ).append( "," ); - input.append( repositoryStats.getTotalCountForType( "war" ) ); - input.append( "\n" ); - } - - repositoryStatistics = stats; - } - catch ( ParseException pe ) - { - addActionError( pe.getMessage() ); - return ERROR; - } - } - else - { - addFieldError( "availableRepositories", "Please select a repository (or repositories) from the list." ); - return INPUT; - } - } - finally - { - repositorySession.close(); - } - - if ( repositoryStatistics.isEmpty() ) - { - return BLANK; - } - - // write output stream depending on single or comparison report - StringReader reader = new StringReader( input.toString() ); - - try - { - inputStream = new ByteArrayInputStream( IOUtils.toByteArray( reader ) ); - } - catch ( IOException i ) - { - addActionError( "Error occurred while generating CSV file." ); - return ERROR; - } - - return SEND_FILE; - } - - // hack for parsing the struts list passed as param in - - private List parseSelectedRepositories() - { - List parsedSelectedRepos = new ArrayList(); - - for ( String repo : selectedRepositories ) - { - String[] tokens = StringUtils.split( repo, ',' ); - if ( tokens.length > 1 ) - { - for ( String token : tokens ) - { - parsedSelectedRepos.add( StringUtils.remove( StringUtils.remove( token, '[' ), ']' ).trim() ); - } - } - else - { - parsedSelectedRepos.add( StringUtils.remove( StringUtils.remove( repo, '[' ), ']' ).trim() ); - } - } - return parsedSelectedRepos; - } - - private Date getStartDateInDateFormat() - throws ParseException - { - Date startDateInDF; - if ( startDate == null || "".equals( startDate ) ) - { - startDateInDF = null; - } - else - { - startDateInDF = DateUtils.parseDate( startDate, datePatterns ); - } - return startDateInDF; - } - - private Date getEndDateInDateFormat() - throws ParseException - { - Date endDateInDF; - if ( endDate == null || "".equals( endDate ) ) - { - endDateInDF = null; - } - else - { - endDateInDF = DateUtils.parseDate( endDate, datePatterns ); - - // add a day, since we don't inclue time and want the date to be inclusive - Calendar cal = Calendar.getInstance(); - cal.setTime( endDateInDF ); - cal.add( Calendar.DAY_OF_MONTH, 1 ); - endDateInDF = cal.getTime(); - } - - return endDateInDF; - } - - public String execute() - throws Exception - { - if ( repositoryId == null ) - { - addFieldError( "repositoryId", "You must provide a repository id." ); - return INPUT; - } - - if ( rowCount < 10 ) - { - addFieldError( "rowCount", "Row count must be larger than 10." ); - return INPUT; - } - - List observableRepos = getObservableRepos(); - Collection repoIds; - if ( StringUtils.isEmpty( repositoryId ) || ALL_REPOSITORIES.equals( repositoryId ) ) - { - repoIds = observableRepos; - } - else if ( observableRepos.contains( repositoryId ) ) - { - repoIds = Collections.singletonList( repositoryId ); - } - else - { - repoIds = Collections.emptyList(); - } - - List problemArtifacts = new ArrayList(); - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - MetadataRepository metadataRepository = repositorySession.getRepository(); - for ( String repoId : repoIds ) - { - // TODO: improve performance by navigating into a group subtree. Currently group is property, not part of name of item - for ( String name : metadataRepository.getMetadataFacets( repoId, RepositoryProblemFacet.FACET_ID ) ) - { - RepositoryProblemFacet metadataFacet = - (RepositoryProblemFacet) metadataRepository.getMetadataFacet( repoId, - RepositoryProblemFacet.FACET_ID, - name ); - - if ( StringUtils.isEmpty( groupId ) || groupId.equals( metadataFacet.getNamespace() ) ) - { - problemArtifacts.add( metadataFacet ); - } - } - } - } - finally - { - repositorySession.close(); - } - - // TODO: getting range only after reading is not efficient for a large number of artifacts - int lowerBound = ( page - 1 ) * rowCount; - int upperBound = ( page * rowCount ) + 1; // Add 1 to check if it's the last page or not. - if ( upperBound <= problemArtifacts.size() ) - { - problemArtifacts = problemArtifacts.subList( lowerBound, upperBound ); - } - else - { - problemArtifacts = problemArtifacts.subList( lowerBound, problemArtifacts.size() ); - } - - for ( RepositoryProblemFacet problem : problemArtifacts ) - { - List problemsList; - if ( repositoriesMap.containsKey( problem.getRepositoryId() ) ) - { - problemsList = repositoriesMap.get( problem.getRepositoryId() ); - } - else - { - problemsList = new ArrayList(); - repositoriesMap.put( problem.getRepositoryId(), problemsList ); - } - - problemsList.add( problem ); - } - - // TODO: handling should be improved - if ( problemArtifacts.size() <= rowCount ) - { - lastPage = true; - } - - if ( problemArtifacts.isEmpty() && page == 1 ) - { - return BLANK; - } - else - { - return SUCCESS; - } - } - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - bundle.setRequiresAuthentication( true ); - bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_ACCESS_REPORT, Resource.GLOBAL ); - - return bundle; - } - - public List getRepositoryIds() - { - return repositoryIds; - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getRepositoryId() - { - return repositoryId; - } - - public void setRepositoryId( String repositoryId ) - { - this.repositoryId = repositoryId; - } - - public int getPage() - { - return page; - } - - public void setPage( int page ) - { - this.page = page; - } - - public int getRowCount() - { - return rowCount; - } - - public void setRowCount( int rowCount ) - { - this.rowCount = rowCount; - } - - public void setRepositoriesMap( Map> repositoriesMap ) - { - this.repositoriesMap = repositoriesMap; - } - - public Map> getRepositoriesMap() - { - return repositoriesMap; - } - - public List getSelectedRepositories() - { - return selectedRepositories; - } - - public void setSelectedRepositories( List selectedRepositories ) - { - this.selectedRepositories = selectedRepositories; - } - - public List getAvailableRepositories() - { - return availableRepositories; - } - - public void setAvailableRepositories( List availableRepositories ) - { - this.availableRepositories = availableRepositories; - } - - public String getStartDate() - { - return startDate; - } - - public void setStartDate( String startDate ) - { - this.startDate = startDate; - } - - public String getEndDate() - { - return endDate; - } - - public void setEndDate( String endDate ) - { - this.endDate = endDate; - } - - public List getRepositoryStatistics() - { - return repositoryStatistics; - } - - public void setRepositoryStatistics( List repositoryStatistics ) - { - this.repositoryStatistics = repositoryStatistics; - } - - public boolean isLastPage() - { - return lastPage; - } - - public void setLastPage( boolean lastPage ) - { - this.lastPage = lastPage; - } - - public InputStream getInputStream() - { - return inputStream; - } - - public int getNumPages() - { - return numPages; - } - - public void setRepositoryStatisticsManager( RepositoryStatisticsManager repositoryStatisticsManager ) - { - this.repositoryStatisticsManager = repositoryStatisticsManager; - } - - public ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return managedRepositoryAdmin; - } - - public void setManagedRepositoryAdmin( ManagedRepositoryAdmin managedRepositoryAdmin ) - { - this.managedRepositoryAdmin = managedRepositoryAdmin; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/ViewAuditLogReportAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/ViewAuditLogReportAction.java deleted file mode 100644 index fdf4e9f7f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/reports/ViewAuditLogReportAction.java +++ /dev/null @@ -1,408 +0,0 @@ -package org.apache.archiva.web.action.reports; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Preparable; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.AuditManager; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateUtils; -import org.apache.archiva.security.AccessDeniedException; -import org.apache.archiva.security.ArchivaSecurityException; -import org.apache.archiva.security.PrincipalNotFoundException; -import org.apache.archiva.security.UserRepositories; -import org.apache.archiva.web.action.AbstractActionSupport; -import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.archiva.redback.integration.interceptor.SecureAction; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Controller; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -/** - * - */ -@Controller( "viewAuditLogReport" ) -@Scope( "prototype" ) -public class ViewAuditLogReportAction - extends AbstractActionSupport - implements SecureAction, ServletRequestAware, Preparable -{ - protected HttpServletRequest request; - - @Inject - private UserRepositories userRepositories; - - @Inject - private AuditManager auditManager; - - private String repository; - - private List repositories; - - private String groupId; - - private String artifactId; - - private String startDate; - - private String endDate; - - private int rowCount = 30; - - private int page = 1; - - protected boolean isLastPage = true; - - private List auditLogs; - - private static final String ALL_REPOSITORIES = "all"; - - private String initial = "true"; - - private String headerName; - - private static final String HEADER_LATEST_EVENTS = "Latest Events"; - - private static final String HEADER_RESULTS = "Results"; - - private String[] datePatterns = - new String[]{ "MM/dd/yy", "MM/dd/yyyy", "MMMMM/dd/yyyy", "MMMMM/dd/yy", "dd MMMMM yyyy", "dd/MM/yy", - "dd/MM/yyyy", "yyyy/MM/dd", "yyyy-MM-dd", "yyyy-dd-MM", "MM-dd-yyyy", "MM-dd-yy" }; - - - - public SecureActionBundle getSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = new SecureActionBundle(); - - // TODO: should require this, but for now we trust in the list of repositories -// bundle.setRequiresAuthentication( true ); -// bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_VIEW_AUDIT_LOG ); - - return bundle; - } - - public void setServletRequest( HttpServletRequest request ) - { - this.request = request; - } - - @SuppressWarnings( "unchecked" ) - public void prepare() - throws Exception - { - repositories = new ArrayList(); - repositories.add( ALL_REPOSITORIES ); - List repos = getManagableRepositories(); - repositories.addAll( repos ); - - auditLogs = null; - groupId = ""; - artifactId = ""; - repository = ""; - - if ( Boolean.parseBoolean( initial ) ) - { - headerName = HEADER_LATEST_EVENTS; - } - else - { - headerName = HEADER_RESULTS; - } - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - auditLogs = auditManager.getMostRecentAuditEvents( repositorySession.getRepository(), repos ); - } - finally - { - repositorySession.close(); - } - } - - public String execute() - throws Exception - { - Date startDateInDF = null; - Date endDateInDF = null; - if ( !StringUtils.isEmpty( startDate ) ) - { - startDateInDF = DateUtils.parseDate( startDate, datePatterns ); - } - - if ( !StringUtils.isEmpty( endDate ) ) - { - endDateInDF = DateUtils.parseDate( endDate, datePatterns ); - Calendar cal = Calendar.getInstance(); - cal.setTime( endDateInDF ); - cal.set( Calendar.HOUR, 23 ); - cal.set( Calendar.MINUTE, 59 ); - cal.set( Calendar.SECOND, 59 ); - - endDateInDF = cal.getTime(); - } - - Collection repos = getManagableRepositories(); - if ( !repository.equals( ALL_REPOSITORIES ) ) - { - if ( repos.contains( repository ) ) - { - repos = Collections.singletonList( repository ); - } - else - { - repos = Collections.emptyList(); - } - } - - if ( StringUtils.isEmpty( groupId ) && !StringUtils.isEmpty( artifactId ) ) - { - // Until we store the full artifact metadata in the audit event, we can't query by these individually - addActionError( "If you specify an artifact ID, you must specify a group ID" ); - auditLogs = null; - return INPUT; - } - - String resource = null; - if ( !StringUtils.isEmpty( groupId ) ) - { - String groupIdAsPath = groupId.replace( '.', '/' ); - if ( StringUtils.isEmpty( artifactId ) ) - { - resource = groupIdAsPath; - } - else - { - resource = groupIdAsPath + "/" + artifactId; - } - } - - RepositorySession repositorySession = repositorySessionFactory.createSession(); - try - { - auditLogs = - auditManager.getAuditEventsInRange( repositorySession.getRepository(), repos, resource, startDateInDF, - endDateInDF ); - } - finally - { - repositorySession.close(); - } - - headerName = HEADER_RESULTS; - - if ( auditLogs.isEmpty() ) - { - addActionError( "No audit logs found." ); - initial = "true"; - return SUCCESS; - } - else - { - initial = "false"; - return paginate(); - } - } - - private String paginate() - { - int rowCount = getRowCount(); - int extraPage = ( auditLogs.size() % rowCount ) != 0 ? 1 : 0; - int totalPages = ( auditLogs.size() / rowCount ) + extraPage; - - int currentPage = getPage(); - if ( currentPage > totalPages ) - { - addActionError( - "Error encountered while generating report :: The requested page exceeds the total number of pages." ); - return ERROR; - } - - if ( currentPage == totalPages ) - { - isLastPage = true; - } - else - { - isLastPage = false; - } - - int start = rowCount * ( currentPage - 1 ); - int end = ( start + rowCount ) - 1; - - if ( end >= auditLogs.size() ) - { - end = auditLogs.size() - 1; - } - - auditLogs = auditLogs.subList( start, end + 1 ); - - return SUCCESS; - } - - private List getManagableRepositories() - { - try - { - return userRepositories.getManagableRepositoryIds( getPrincipal() ); - } - catch ( PrincipalNotFoundException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( AccessDeniedException e ) - { - log.warn( e.getMessage(), e ); - } - catch ( ArchivaSecurityException e ) - { - log.warn( e.getMessage(), e ); - } - return Collections.emptyList(); - } - - public String getRepository() - { - return repository; - } - - public void setRepository( String repository ) - { - this.repository = repository; - } - - public List getRepositories() - { - return repositories; - } - - public void setRepositories( List repositories ) - { - this.repositories = repositories; - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public String getArtifactId() - { - return artifactId; - } - - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - public List getAuditLogs() - { - return auditLogs; - } - - public int getRowCount() - { - return rowCount; - } - - public void setRowCount( int rowCount ) - { - this.rowCount = rowCount; - } - - public String getStartDate() - { - return startDate; - } - - public void setStartDate( String startDate ) - { - this.startDate = startDate; - } - - public String getEndDate() - { - return endDate; - } - - public void setEndDate( String endDate ) - { - this.endDate = endDate; - } - - public int getPage() - { - return page; - } - - public void setPage( int page ) - { - this.page = page; - } - - public boolean getIsLastPage() - { - return isLastPage; - } - - public void setIsLastPage( boolean isLastPage ) - { - this.isLastPage = isLastPage; - } - - public String getInitial() - { - return initial; - } - - public void setInitial( String initial ) - { - this.initial = initial; - } - - public String getHeaderName() - { - return headerName; - } - - public void setHeaderName( String headerName ) - { - this.headerName = headerName; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/interceptor/ConfigurationInterceptor.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/interceptor/ConfigurationInterceptor.java deleted file mode 100644 index 4d0c08cdc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/interceptor/ConfigurationInterceptor.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.apache.archiva.web.interceptor; - -/* - * 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. - */ - -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.interceptor.Interceptor; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.struts2.ServletActionContext; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Service; - -import javax.inject.Inject; -import javax.servlet.ServletContext; - -/** - * An interceptor that makes the configuration bits available, both to the application and the webapp. - */ -@Service( "configurationInterceptor" ) -@Scope( "prototype" ) -public class ConfigurationInterceptor - implements Interceptor -{ - - @Inject - private ArchivaConfiguration configuration; - - public String intercept( ActionInvocation actionInvocation ) - throws Exception - { - // populate webapp configuration bits into the session - ServletContext applicationScope = ServletActionContext.getServletContext(); - applicationScope.setAttribute( "uiOptions", configuration.getConfiguration().getWebapp().getUi() ); - - return actionInvocation.invoke(); - } - - public void destroy() - { - // This space left intentionally blank - } - - public void init() - { - // This space left intentionally blank - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java deleted file mode 100644 index faff746c8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java +++ /dev/null @@ -1,232 +0,0 @@ -package org.apache.archiva.web.mapper; - -/* - * 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. - */ - -import com.opensymphony.xwork2.config.ConfigurationManager; -import org.apache.struts2.dispatcher.mapper.ActionMapping; -import org.apache.struts2.dispatcher.mapper.DefaultActionMapper; - -import org.apache.commons.lang.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -/** - * Map alternate URLs to specific actions. Used for the repository browser and the proxy. - * - */ -public class RepositoryActionMapper - extends DefaultActionMapper -{ - private static final String ACTION_BROWSE = "browse"; - - private static final String ACTION_BROWSE_ARTIFACT = "browseArtifact"; - - private static final String ACTION_BROWSE_GROUP = "browseGroup"; - - private static final String ACTION_SHOW_ARTIFACT = "showArtifact"; - - private static final String ACTION_SHOW_ARTIFACT_DEPENDEES = "showArtifactDependees"; - - private static final String ACTION_SHOW_ARTIFACT_DEPENDENCIES = "showArtifactDependencies"; - - private static final String ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE = "showArtifactDependencyTree"; - - private static final String ACTION_SHOW_ARTIFACT_MAILING_LISTS = "showArtifactMailingLists"; - - private static final String BROWSE_PREFIX = "/browse"; - - private static final String METHOD_DEPENDENCIES = "dependencies"; - - private static final String METHOD_DEPENDENCY_TREE = "dependencyTree"; - - private static final String METHOD_MAILING_LISTS = "mailingLists"; - - private static final String METHOD_USEDBY = "usedby"; - - private static final String PARAM_ARTIFACT_ID = "artifactId"; - - private static final String PARAM_GROUP_ID = "groupId"; - - private static final String PARAM_VERSION = "version"; - - private static final String ACTION_EXTENSION = "action"; - - public ActionMapping getMapping( HttpServletRequest httpServletRequest, ConfigurationManager manager ) - { - String path = httpServletRequest.getServletPath(); - - if ("".equals(path)){ - // if JEE 5 spec is correctly implemented, the "/*" pattern implies an empty string in servletpath - path = httpServletRequest.getPathInfo(); - } - - if (StringUtils.isEmpty( path )) - { - // try RequestURI in last at least for StrutsTestCase - path = httpServletRequest.getRequestURI(); - } - - if ( path.startsWith( BROWSE_PREFIX ) ) - { - path = path.substring( BROWSE_PREFIX.length() ); - if ( StringUtils.isBlank( path ) || - StringUtils.equals( path, "/" ) || - StringUtils.equals( path, ".action" ) ) - { - // Return "root" browse. - return createActionMapping( ACTION_BROWSE, "/", "", null ); - } - else - { - Map params = new HashMap(); - - if ( path.charAt( 0 ) == '/' ) - { - path = path.substring( 1 ); - } - - String[] parts = path.split( "/" ); - switch ( parts.length ) - { - case 1: - params.put( PARAM_GROUP_ID, parts[0] ); - return createActionMapping( ACTION_BROWSE_GROUP, "/", "", params ); - - case 2: - params.put( PARAM_GROUP_ID, parts[0] ); - params.put( PARAM_ARTIFACT_ID, parts[1] ); - return createActionMapping( ACTION_BROWSE_ARTIFACT, "/", "", params ); - - case 3: - params.put( PARAM_GROUP_ID, parts[0] ); - params.put( PARAM_ARTIFACT_ID, parts[1] ); - params.put( PARAM_VERSION, parts[2] ); - return createActionMapping( ACTION_SHOW_ARTIFACT, "/", "", params ); - - case 4: - params.put( PARAM_GROUP_ID, parts[0] ); - params.put( PARAM_ARTIFACT_ID, parts[1] ); - params.put( PARAM_VERSION, parts[2] ); - - if ( METHOD_DEPENDENCIES.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_DEPENDENCIES, "/", "", params ); - } - else if ( METHOD_MAILING_LISTS.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_MAILING_LISTS, "/", "", params ); - } - else if ( METHOD_USEDBY.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_DEPENDEES, "/", "", params ); - } - else if ( METHOD_DEPENDENCY_TREE.equals( parts[3] ) ) - { - return createActionMapping( ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE, "/", "", params ); - } - break; - } - } - } - - return super.getMapping( httpServletRequest, manager ); - } - - @SuppressWarnings("unchecked") - @Override - public String getUriFromActionMapping( ActionMapping actionMapping ) - { - Map params = actionMapping.getParams(); - if ( ACTION_BROWSE.equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX; - } - else if ( ACTION_BROWSE_GROUP.equals( actionMapping.getName() ) ) - { - return toUri( params, false, false, null ); - } - else if ( ACTION_BROWSE_ARTIFACT.equals( actionMapping.getName() ) ) - { - return toUri( params, true, false, null ); - } - else if ( ACTION_SHOW_ARTIFACT.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, null ); - } - else if ( ACTION_SHOW_ARTIFACT_DEPENDENCIES.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_DEPENDENCIES ); - } - else if ( ACTION_SHOW_ARTIFACT_MAILING_LISTS.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_MAILING_LISTS ); - } - else if ( ACTION_SHOW_ARTIFACT_DEPENDEES.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_USEDBY ); - } - else if ( ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE.equals( actionMapping.getName() ) ) - { - return toUri( params, true, true, METHOD_DEPENDENCY_TREE ); - } - - return super.getUriFromActionMapping( actionMapping ); - } - - private String toUri( Map params, boolean artifactId, boolean version, String method ) - { - StringBuilder buf = new StringBuilder(); - - buf.append( BROWSE_PREFIX ); - buf.append( '/' ); - buf.append( params.remove( PARAM_GROUP_ID ) ); - - if ( artifactId ) - { - buf.append( '/' ); - buf.append( params.remove( PARAM_ARTIFACT_ID ) ); - - if ( version ) - { - buf.append( '/' ); - buf.append( params.remove( PARAM_VERSION ) ); - - if ( StringUtils.isNotBlank( method ) ) - { - buf.append( '/' ); - buf.append( method ); - } - } - } - - return buf.toString(); - } - - private ActionMapping createActionMapping( String name, String namespace, String method, Map params ) - { - ActionMapping mapping = new ActionMapping( name, namespace, method, params ); - mapping.setExtension( ACTION_EXTENSION ); - - return mapping; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/CopyPasteSnippetTag.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/CopyPasteSnippetTag.java deleted file mode 100644 index 2f3a12137..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/CopyPasteSnippetTag.java +++ /dev/null @@ -1,207 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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. - */ - -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.web.util.ContextUtils; -import org.apache.commons.lang.StringEscapeUtils; -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.TagSupport; -import java.io.IOException; - -/** - * CopyPasteSnippetTag - * - * - */ -@StrutsTag(name = "copy-paste-snippet", tldBodyContent = "empty", tldTagClass = "org.apache.archiva.web.tags.CopyPasteSnippetTag", description = "Render a copy paste snippet for the provided object") -public class CopyPasteSnippetTag - extends TagSupport -{ - private Logger log = LoggerFactory.getLogger( CopyPasteSnippetTag.class ); - - private Object object; - - private String wrapper = PRE; - - public static final String PRE = "pre"; - - public static final String TOGGLE = "toggle"; - - @Override - public void release() - { - object = null; - super.release(); - } - - @Override - public int doEndTag() - throws JspException - { - StringBuilder prefix = new StringBuilder(); - StringBuilder buf = new StringBuilder(); - StringBuilder suffix = new StringBuilder(); - - if ( object == null ) - { - buf.append( "Error generating snippet." ); - log.error( "Unable to generate snippet for null object." ); - } - else if ( object instanceof ManagedRepository ) - { - ManagedRepository repo = (ManagedRepository) object; - - if ( TOGGLE.equals( wrapper ) ) - { - prefix.append( "Show POM Snippet
" ); - prefix.append( "

" );
-        
-                suffix.append( "
" ); - } - else if ( PRE.equals( wrapper ) ) - { - prefix.append( "
" );
-                suffix.append( "
" ); - } - - createSnippet( buf, repo, pageContext ); - } - else - { - buf.append( "Unable to generate snippet for object " ).append( object.getClass().getName() ); - } - - try - { - JspWriter out = pageContext.getOut(); - - out.write( prefix.toString() ); - out.write( StringEscapeUtils.escapeXml( buf.toString() ) ); - out.write( suffix.toString() ); - - out.flush(); - } - catch ( IOException e ) - { - throw new JspException( "Unable to write snippet to output: " + e.getMessage(), e ); - } - - return super.doEndTag(); - } - - @StrutsTagAttribute(description = "The Object to Render", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setObject( Object object ) - { - this.object = object; - } - - @StrutsTagAttribute(description = "The wrapper type to use, can be 'pre' or 'toggle'", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setWrapper( String wrapper ) - { - this.wrapper = wrapper; - } - - private void createSnippet( StringBuilder snippet, ManagedRepository repo, PageContext pageContext ) - { - snippet.append( "\n" ); - snippet.append( " ...\n" ); - snippet.append( " \n" ); - - String distRepoName = "repository"; - if ( repo.isSnapshots() ) - { - distRepoName = "snapshotRepository"; - } - - snippet.append( " <" ).append( distRepoName ).append( ">\n" ); - snippet.append( " " ).append( repo.getId() ).append( "\n" ); - snippet.append( " " ).append( ContextUtils.getBaseURL( pageContext, "repository" ) ); - snippet.append( "/" ).append( repo.getId() ).append( "/" ).append( "\n" ); - - if ( !"default".equals( repo.getLayout() ) ) - { - snippet.append( " " ).append( repo.getLayout() ).append( "" ); - } - - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( "\n" ); - - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " " ).append( repo.getId() ).append( "\n" ); - snippet.append( " " ).append( repo.getName() ).append( "\n" ); - - snippet.append( " " ); - snippet.append( ContextUtils.getBaseURL( pageContext, "repository" ) ); - snippet.append( "/" ).append( repo.getId() ).append( "/" ); - - snippet.append( "\n" ); - - if ( !"default".equals( repo.getLayout() ) ) - { - snippet.append( " " ).append( repo.getLayout() ).append( "\n" ); - } - - snippet.append( " \n" ); - snippet.append( " " ).append( Boolean.valueOf( repo.isReleases() ) ).append( "\n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " " ).append( Boolean.valueOf( repo.isSnapshots() ) ).append( "\n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " " ).append( repo.getId() ).append( "\n" ); - snippet.append( " " ).append( repo.getName() ).append( "\n" ); - - snippet.append( " " ); - snippet.append( ContextUtils.getBaseURL( pageContext, "repository" ) ); - snippet.append( "/" ).append( repo.getId() ).append( "/" ); - - snippet.append( "\n" ); - - if ( !"default".equals( repo.getLayout() ) ) - { - snippet.append( " " ).append( repo.getLayout() ).append( "\n" ); - } - - snippet.append( " \n" ); - snippet.append( " " ).append( Boolean.valueOf( repo.isReleases() ) ).append( "\n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " " ).append( Boolean.valueOf( repo.isSnapshots() ) ).append( "\n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - snippet.append( " \n" ); - - snippet.append( " ...\n" ); - snippet.append( "\n" ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTree.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTree.java deleted file mode 100644 index 7ec3cf3b5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTree.java +++ /dev/null @@ -1,209 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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. - */ - -import com.opensymphony.xwork2.ActionContext; -import org.apache.archiva.common.ArchivaException; -import org.apache.archiva.dependency.tree.maven2.DependencyTreeBuilder; -import org.apache.archiva.model.Keys; -import org.apache.archiva.security.ArchivaXworkUser; -import org.apache.archiva.security.UserRepositories; -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.graph.DependencyNode; -import org.sonatype.aether.graph.DependencyVisitor; -import org.springframework.stereotype.Service; - -import javax.inject.Inject; -import java.util.ArrayList; -import java.util.List; - -/** - * DependencyTree - */ -@Service( "dependencyTree" ) -public class DependencyTree -{ - private Logger log = LoggerFactory.getLogger( DependencyTree.class ); - - - @Inject - private DependencyTreeBuilder dependencyTreeBuilder; - - @Inject - private UserRepositories userRepositories; - - public static class TreeEntry - { - private String pre = ""; - - private String post = ""; - - private Artifact artifact; - - public void setArtifact( Artifact artifact ) - { - this.artifact = artifact; - } - - public Artifact getArtifact() - { - return artifact; - } - - public String getPost() - { - return post; - } - - public String getPre() - { - return pre; - } - - public void appendPre( String string ) - { - this.pre += string; - } - - public void appendPost( String string ) - { - this.post += string; - } - } - - public List gatherTreeList( String groupId, String artifactId, String modelVersion ) - throws ArchivaException - { - if ( StringUtils.isBlank( groupId ) ) - { - String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion ) - + "]: groupId is blank."; - log.error( emsg ); - throw new ArchivaException( emsg ); - } - - if ( StringUtils.isBlank( artifactId ) ) - { - String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion ) - + "]: artifactId is blank."; - log.error( emsg ); - throw new ArchivaException( emsg ); - } - - if ( StringUtils.isBlank( modelVersion ) ) - { - String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion ) - + "]: version is blank."; - log.error( emsg ); - throw new ArchivaException( emsg ); - } - - // TODO Cache the results to disk, in XML format, in the same place as the artifact is located. - - TreeListVisitor visitor = new TreeListVisitor(); - try - { - dependencyTreeBuilder.buildDependencyTree( userRepositories.getObservableRepositoryIds( getPrincipal() ), - groupId, artifactId, modelVersion, visitor ); - } - catch ( Exception e ) - { - throw new ArchivaException( "Unable to build dependency tree: " + e.getMessage(), e ); - } - - return visitor.getList(); - } - - private String getPrincipal() - { - return ArchivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() ); - } - - private static class TreeListVisitor - implements DependencyVisitor - { - private List list; - - private TreeEntry currentEntry; - - boolean firstChild = true; - - private DependencyNode firstNode; - - public TreeListVisitor() - { - this.list = new ArrayList(); - } - - public List getList() - { - return this.list; - } - - public boolean visitEnter( DependencyNode node ) - { - if ( firstNode == null ) - { - firstNode = node; - } - - currentEntry = new TreeEntry(); - - if ( firstChild ) - { - currentEntry.appendPre( "
    " ); - } - - currentEntry.appendPre( "
  • " ); - currentEntry.setArtifact( node.getDependency().getArtifact() ); - currentEntry.appendPost( "
  • " ); - this.list.add( currentEntry ); - - if ( !node.getChildren().isEmpty() ) - { - firstChild = true; - } - - return true; - } - - public boolean visitLeave( org.sonatype.aether.graph.DependencyNode node ) - { - firstChild = false; - - if ( !node.getChildren().isEmpty() ) - { - currentEntry.appendPost( "
" ); - } - - if ( node == firstNode ) - { - currentEntry.appendPost( "" ); - } - - return true; - } - - - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTreeTag.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTreeTag.java deleted file mode 100644 index f97204fe8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/DependencyTreeTag.java +++ /dev/null @@ -1,239 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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. - */ - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.IteratorUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.common.ArchivaException; -import org.apache.archiva.web.tags.DependencyTree.TreeEntry; -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.springframework.beans.BeansException; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Iterator; -import java.util.List; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.IterationTag; -import javax.servlet.jsp.tagext.TagSupport; -import javax.servlet.jsp.tagext.TryCatchFinally; - -/** - * DependencyTreeTag - just here to output the dependency tree to the browser. - * It was easier to do it this way, vs accessing the dependency graph via a JSP. - * - *
- *   
- *     ${node.groupId}:${node.artifactId}:${node.version} (${node.scope})
- *   
- * 
- * - * - */ -@StrutsTag(name = "dependency-tree", tldBodyContent = "JSP", tldTagClass = "org.apache.archiva.web.tags.DependencyTreeTag", description = "Render a dependency tree for the provided project.") -public class DependencyTreeTag - extends TagSupport - implements IterationTag, TryCatchFinally -{ - private String groupId; - - private String artifactId; - - @SuppressWarnings("unused") - private String version; - - private String nodevar; - - private Iterator treeIterator; - - private List tree; - - private TreeEntry currentTreeEntry; - - private String modelVersion; - - public int doAfterBody() - throws JspException - { - if ( currentTreeEntry != null ) - { - out( currentTreeEntry.getPost() ); - } - - if ( treeIterator.hasNext() ) - { - currentTreeEntry = treeIterator.next(); - out( currentTreeEntry.getPre() ); - exposeVariables(); - return EVAL_BODY_AGAIN; - } - - out( "\n" ); - - return SKIP_BODY; - } - - public void doCatch( Throwable t ) - throws Throwable - { - throw t; - } - - public void doFinally() - { - unExposeVariables(); - } - - @SuppressWarnings("unchecked") - public int doStartTag() - throws JspException - { - DependencyTree deptree; - try - { - WebApplicationContext webApplicationContext = - WebApplicationContextUtils.getRequiredWebApplicationContext( pageContext.getServletContext() ); - - deptree = webApplicationContext.getBean( "dependencyTree", DependencyTree.class ); - } - catch ( BeansException e ) - { - throw new JspException( "Unable to lookup DependencyTree: " + e.getMessage(), e ); - } - - if ( deptree == null ) - { - throw new JspException( "Unable to process dependency tree. Component not found." ); - } - - if ( StringUtils.isBlank( nodevar ) ) - { - nodevar = "node"; - } - - out( "
" ); - try - { - this.tree = deptree.gatherTreeList( groupId, artifactId, modelVersion ); - - if ( CollectionUtils.isEmpty( this.tree ) ) - { - return SKIP_BODY; - } - - treeIterator = tree.iterator(); - - currentTreeEntry = treeIterator.next(); - out( currentTreeEntry.getPre() ); - exposeVariables(); - } - catch ( ArchivaException e ) - { - treeIterator = IteratorUtils.EMPTY_LIST_ITERATOR; - - out("
");
-            e.printStackTrace( new PrintWriter( pageContext.getOut() ) );
-            out("
"); - } - - return EVAL_BODY_INCLUDE; - } - - public void release() - { - groupId = ""; - artifactId = ""; - version = ""; - nodevar = ""; - tree = null; - treeIterator = null; - super.release(); - } - - @StrutsTagAttribute(description = "The artifactId", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setArtifactId( String artifactId ) - { - this.artifactId = artifactId; - } - - @StrutsTagAttribute(description = "The groupId", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - @StrutsTagAttribute(description = "The variable name for the node.", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setNodevar( String nodevar ) - { - this.nodevar = nodevar; - } - - @StrutsTagAttribute(description = "The version", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setVersion( String version ) - { - this.version = version; - } - - @StrutsTagAttribute(description = "The version of the project model. Used to verify the dependency graph for generic snapshots not yet in the repo.", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setModelVersion( String modelVersion ) - { - this.modelVersion = modelVersion; - } - - private void exposeVariables() - throws JspException - { - if ( currentTreeEntry == null ) - { - pageContext.removeAttribute( nodevar, PageContext.PAGE_SCOPE ); - } - else - { - pageContext.setAttribute( nodevar, currentTreeEntry.getArtifact() ); - } - } - - private void out( String msg ) - throws JspException - { - try - { - pageContext.getOut().print( msg ); - } - catch ( IOException e ) - { - throw new JspException( "Unable to output to jsp page context." ); - } - } - - private void unExposeVariables() - { - pageContext.removeAttribute( nodevar, PageContext.PAGE_SCOPE ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/ExpressionTool.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/ExpressionTool.java deleted file mode 100644 index cc083222f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/ExpressionTool.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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. - */ - -import org.apache.taglibs.standard.tag.common.core.NullAttributeException; -import org.apache.taglibs.standard.tag.el.core.ExpressionUtil; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.Tag; - -/** - * ExpressionTool - * - * - */ -public class ExpressionTool -{ - private PageContext pageContext; - - private Tag tag; - - private String tagName; - - public ExpressionTool( PageContext pageContext, Tag tag, String tagName ) - { - this.pageContext = pageContext; - this.tag = tag; - this.tagName = tagName; - } - - public boolean optionalBoolean( String propertyName, String expression, boolean defaultValue ) - throws JspException - { - try - { - Boolean ret = (Boolean) ExpressionUtil.evalNotNull( this.tagName, propertyName, expression, Boolean.class, - this.tag, this.pageContext ); - - if ( ret == null ) - { - return defaultValue; - } - - return ret.booleanValue(); - } - catch ( NullAttributeException e ) - { - return defaultValue; - } - } - - public String optionalString( String propertyName, String expression, String defaultValue ) - throws JspException - { - try - { - String ret = (String) ExpressionUtil.evalNotNull( this.tagName, propertyName, expression, String.class, - this.tag, this.pageContext ); - - if ( ret == null ) - { - return defaultValue; - } - - return ret; - } - catch ( NullAttributeException e ) - { - return defaultValue; - } - } - - public String requiredString( String propertyName, String expression ) - throws JspException - { - try - { - String ret = (String) ExpressionUtil.evalNotNull( this.tagName, propertyName, expression, String.class, - this.tag, this.pageContext ); - return ret; - } - catch ( NullAttributeException e ) - { - String emsg = "Required " + this.tagName + " property [" + propertyName + "] is null!"; - - log( emsg, e ); - throw new JspException( emsg ); - } - } - - private void log( String msg, Throwable t ) - { - pageContext.getServletContext().log( msg, t ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLink.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLink.java deleted file mode 100644 index e1661eeae..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLink.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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. - */ - -import org.apache.struts2.StrutsException; -import org.apache.struts2.components.Component; - -import com.opensymphony.xwork2.util.ValueStack; -import java.io.IOException; -import java.io.Writer; -import java.util.StringTokenizer; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * GroupIdLink - * - * - */ -public class GroupIdLink - extends Component -{ - private static final String ACTION = "browseGroup"; - - private static final String NAMESPACE = "/"; - - private static final boolean includeContext = true; - - private static final boolean encode = true; - - private static final String method = null; - - private HttpServletRequest req; - - private HttpServletResponse res; - - private String groupId; - - private boolean includeTop = false; - - public GroupIdLink( ValueStack stack, HttpServletRequest req, HttpServletResponse res ) - { - super( stack ); - this.req = req; - this.res = res; - } - - @Override - public boolean end( Writer writer, String body ) - { - StringBuilder sb = new StringBuilder(); - - sb.append( "" ); - - if ( includeTop ) - { - sb.append( "[top] / " ); // TODO: i18n - } - - StringTokenizer tok = new StringTokenizer( groupId, "." ); - String cumulativeGroup = null; - - while ( tok.hasMoreTokens() ) - { - String token = tok.nextToken(); - - if ( cumulativeGroup == null ) - { - cumulativeGroup = token; - } - else - { - cumulativeGroup += "." + token; - } - sb.append( "" ).append( token ).append( " / " ); - } - - sb.append( "" ); - - try - { - writer.write( sb.toString() ); - } - catch ( IOException e ) - { - throw new StrutsException( "IOError: " + e.getMessage(), e ); - } - - return super.end( writer, body ); - } - - private String determineBrowseActionUrl() - { - return determineActionURL( "browse", NAMESPACE, method, req, res, parameters, req.getScheme(), includeContext, encode, false, false ); - } - - @SuppressWarnings("unchecked") - private String determineBrowseGroupActionUrl( String gid ) - { - parameters.put( "groupId", gid ); - - return determineActionURL( ACTION, NAMESPACE, method, req, res, parameters, req.getScheme(), includeContext, encode, false, false ); - } - - public String getGroupId() - { - return groupId; - } - - public void setGroupId( String groupId ) - { - this.groupId = groupId; - } - - public boolean isIncludeTop() - { - return includeTop; - } - - public void setIncludeTop( boolean includeTop ) - { - this.includeTop = includeTop; - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLinkTag.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLinkTag.java deleted file mode 100644 index 25791c992..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/tags/GroupIdLinkTag.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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. - */ - -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.struts2.components.Component; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.jsp.JspException; - -import org.apache.struts2.views.annotations.StrutsTag; -import org.apache.struts2.views.annotations.StrutsTagAttribute; -import org.apache.struts2.views.jsp.ComponentTagSupport; - -/** - * GroupIdLink - * - * - */ -@StrutsTag(name = "groupIdLink", tldBodyContent = "empty", tldTagClass = "org.apache.archiva.web.tags.GroupIdLinkTag", description = "Render a groupId as a set of Links") -public class GroupIdLinkTag - extends ComponentTagSupport -{ - private String var_; // stores EL-based property - - private String var; // stores the evaluated object. - - private boolean includeTop = false; - - @Override - public Component getBean(ValueStack valueStack, HttpServletRequest request, HttpServletResponse response) { - return new GroupIdLink( valueStack, request, response ); - } - - @Override - public void release() - { - var_ = null; - var = null; - includeTop = false; - - super.release(); - } - - @Override - public int doEndTag() - throws JspException - { - evaluateExpressions(); - - GroupIdLink groupIdLink = (GroupIdLink)component; - - groupIdLink.setGroupId( var ); - groupIdLink.setIncludeTop( includeTop ); - - return super.doEndTag(); - } - - private void evaluateExpressions() - throws JspException - { - ExpressionTool exprTool = new ExpressionTool( pageContext, this, "groupIdLink" ); - - var = exprTool.optionalString( "var", var_, "" ); - } - - @StrutsTagAttribute(description = "The GroupID String", type = "String", defaultValue = "", required = true, rtexprvalue = true) - public void setVar( String value ) - { - this.var_ = value; - } - - @StrutsTagAttribute(description = "Boolean indicating if 'top' link should be created or not.", type = "String", defaultValue = "", required = false, rtexprvalue = true) - public void setIncludeTop( boolean includeTop ) - { - this.includeTop = includeTop; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/util/ContextUtils.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/util/ContextUtils.java deleted file mode 100644 index 914f440f3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/util/ContextUtils.java +++ /dev/null @@ -1,122 +0,0 @@ -package org.apache.archiva.web.util; - -/* - * 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. - */ - -import org.apache.commons.lang.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.jsp.PageContext; - -/** - * ContextUtils - * - * - */ -public class ContextUtils -{ - private static final Map defaultSchemePortMap; - - static - { - defaultSchemePortMap = new HashMap(); - defaultSchemePortMap.put( "http", Integer.valueOf( 80 ) ); - defaultSchemePortMap.put( "https", Integer.valueOf( 443 ) ); - } - - /** - * Using the page context, get the base url. - * - * @param pageContext the page context to use - * @return the base url with module name. - */ - public static String getBaseURL( PageContext pageContext ) - { - return getBaseURL( pageContext, null ); - } - - /** - * Using the page context, get the base url and append an optional resource name to the end of the provided url. - * - * @param pageContext the page context to use - * @param resource the resource name (or null if no resource name specified) - * @return the base url with resource name. - */ - public static String getBaseURL( PageContext pageContext, String resource ) - { - HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); - return getBaseURL( request, resource ); - } - - /** - * Using the http servlet request, get the base url and append an optional resource name to the end of the url. - * - * @param request the request to use - * @param resource the resource name (or null if not resource name should be appended) - * @return the base url with resource name. - */ - public static String getBaseURL( HttpServletRequest request, String resource ) - { - StringBuilder baseUrl = new StringBuilder(); - - baseUrl.append( request.getScheme() ).append( "://" ); - baseUrl.append( getServerName( request ) ); - baseUrl.append( request.getContextPath() ); - - if ( StringUtils.isNotBlank( resource ) ) - { - if ( !baseUrl.toString().endsWith( "/" ) ) - { - baseUrl.append( "/" ); - } - - baseUrl.append( resource ); - } - - return baseUrl.toString(); - } - - private static String getServerName( HttpServletRequest request ) - { - String name = request.getHeader( "X-Forwarded-Host" ); - if ( name == null ) - { - name = request.getServerName(); - int portnum = request.getServerPort(); - - // Only add port if non-standard. - Integer defaultPortnum = (Integer) defaultSchemePortMap.get( request.getScheme() ); - if ( ( defaultPortnum == null ) || ( defaultPortnum.intValue() != portnum ) ) - { - name = name + ":" + String.valueOf( portnum ); - } - return name; - } - else - { - // respect chains of proxies, return first one (as it's the outermost visible one) - String[] hosts = name.split( "," ); - name = hosts[0].trim(); - } - return name; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/CronExpressionValidator.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/CronExpressionValidator.java deleted file mode 100644 index 1fc75d60e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/CronExpressionValidator.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.apache.archiva.web.validator; - -/* - * 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. - */ - -import com.opensymphony.xwork2.validator.ValidationException; -import com.opensymphony.xwork2.validator.ValidatorContext; -import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; - -/** - * Reused from Continuum crontab validator - */ -public class CronExpressionValidator - extends FieldValidatorSupport -{ - public void validate( Object obj ) - throws ValidationException - { - String cron = (String) getFieldValue( "cron", obj ); - - org.apache.archiva.redback.components.scheduler.CronExpressionValidator cronExpressionValidator = - new org.apache.archiva.redback.components.scheduler.CronExpressionValidator(); - - ValidatorContext ctxt = getValidatorContext(); - if ( !cronExpressionValidator.validate( String.valueOf( cron ) ) ) - { - ctxt.addActionError( "Invalid cron expression value(s)" ); - return; - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/IntervalValidator.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/IntervalValidator.java deleted file mode 100644 index 5f58b66ad..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/IntervalValidator.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.apache.archiva.web.validator; - -/* - * 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. - */ - -import com.opensymphony.xwork2.validator.ValidationException; -import com.opensymphony.xwork2.validator.ValidatorContext; -import com.opensymphony.xwork2.validator.validators.ValidatorSupport; - -/** - */ -public class IntervalValidator - extends ValidatorSupport -{ - - public void validate( Object obj ) - throws ValidationException - { - String snapshotsPolicy = (String) getFieldValue( "snapshotsPolicy", obj ); - String releasesPolicy = (String) getFieldValue( "releasesPolicy", obj ); - Integer snapshotsInterval = (Integer) getFieldValue( "snapshotsInterval", obj ); - Integer releasesInterval = (Integer) getFieldValue( "releasesInterval", obj ); - - ValidatorContext ctxt = getValidatorContext(); - - if ( !snapshotsPolicy.equals( "interval" ) ) - { - if ( snapshotsInterval.intValue() != 0 ) - { - ctxt.addActionError( "Snapshots Interval must be set to zero." ); - } - } - - if ( !releasesPolicy.equals( "interval" ) ) - { - if ( releasesInterval.intValue() != 0 ) - { - ctxt.addActionError( "Releases Interval must be set to zero." ); - } - } - - if ( ctxt.hasActionErrors() ) - { - return; - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/SyncedRepositoryValidator.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/SyncedRepositoryValidator.java deleted file mode 100644 index 5efff802b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/validator/SyncedRepositoryValidator.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.apache.archiva.web.validator; - -/* - * 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. - */ - -import com.opensymphony.xwork2.validator.ValidationException; -import com.opensymphony.xwork2.validator.ValidatorContext; -import com.opensymphony.xwork2.validator.validators.ValidatorSupport; - -/** - * Validator for synced repository form. The values to be validated depends on the - * selected sync method to be used. - * - */ -public class SyncedRepositoryValidator - extends ValidatorSupport -{ - - public void validate( Object obj ) - throws ValidationException - { - - String method = (String) getFieldValue( "method", obj ); - ValidatorContext ctxt = getValidatorContext(); - - if ( method.equals( "rsync" ) ) - { - String rsyncHost = (String) getFieldValue( "rsyncHost", obj ); - if ( rsyncHost == null || rsyncHost.equals( "" ) ) - { - ctxt.addActionError( "Rsync host is required." ); - } - - String rsyncDirectory = (String) getFieldValue( "rsyncDirectory", obj ); - if ( rsyncDirectory == null || rsyncDirectory.equals( "" ) ) - { - ctxt.addActionError( "Rsync directory is required." ); - } - - String rsyncMethod = (String) getFieldValue( "rsyncMethod", obj ); - if ( rsyncMethod == null || rsyncMethod.equals( "" ) ) - { - ctxt.addActionError( "Rsync method is required." ); - } - else - { - if ( !rsyncMethod.equals( "anonymous" ) && !rsyncMethod.equals( "ssh" ) ) - { - ctxt.addActionError( "Invalid rsync method" ); - } - } - - String username = (String) getFieldValue( "username", obj ); - if ( username == null || username.equals( "" ) ) - { - ctxt.addActionError( "Username is required." ); - } - - } - else if ( method.equals( "svn" ) ) - { - String svnUrl = (String) getFieldValue( "svnUrl", obj ); - if ( svnUrl == null || svnUrl.equals( "" ) ) - { - ctxt.addActionError( "SVN url is required." ); - } - - String username = (String) getFieldValue( "username", obj ); - if ( username == null || username.equals( "" ) ) - { - ctxt.addActionError( "Username is required." ); - } - } - else if ( method.equals( "cvs" ) ) - { - String cvsRoot = (String) getFieldValue( "cvsRoot", obj ); - if ( cvsRoot == null || cvsRoot.equals( "" ) ) - { - ctxt.addActionError( "CVS root is required." ); - } - } - else if ( method.equals( "file" ) ) - { - String directory = (String) getFieldValue( "directory", obj ); - if ( directory == null || directory.equals( "" ) ) - { - ctxt.addActionError( "Directory is required." ); - } - } - - if ( ctxt.hasActionErrors() ) - { - return; - } - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/spring-context.xml deleted file mode 100755 index d79ebcb5e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/spring-context.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/ehcache.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/ehcache.xml deleted file mode 100644 index 997fbe86c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/ehcache.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/freemarker.properties b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/freemarker.properties deleted file mode 100644 index e2c1805e7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/freemarker.properties +++ /dev/null @@ -1,20 +0,0 @@ -# -# 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. -# -# 1 hour -template_update_delay=3600000 \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/log4j2.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/log4j2.xml deleted file mode 100644 index 45083aa90..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/log4j2.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - ${sys:appserver.base}/logs - - - - - - - %d [%t] %-5p %c %x - %m%n - - - - - - - - - %d{yyyy-MM-dd HH:mm:ss} %m%n - - - - - - - - - %d{yyyy-MM-dd HH:mm:ss} - %X{redback.currentUser} - %m%n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/redback/custom.properties b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/redback/custom.properties deleted file mode 100644 index 01a599137..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/redback/custom.properties +++ /dev/null @@ -1,23 +0,0 @@ -# -# 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. -# - -# text resources within redback can be customized by overriding them here - -#password.reset.success=An email has been sent. -#password.reset.failure=No email was not sent, perhaps the user did not exist as entered. diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/DeleteArtifactAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/DeleteArtifactAction-validation.xml deleted file mode 100644 index bfe08fa1f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/DeleteArtifactAction-validation.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - You must enter a groupId. - - - true - ^[a-zA-Z0-9._-]+$ - Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - You must enter an artifactId. - - - true - ^[a-zA-Z0-9._-]+$ - Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - - You must enter a version. - - - - - - true - ^[a-zA-Z0-9._-]*$ - Repository id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-checksumSearch-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-checksumSearch-validation.xml deleted file mode 100644 index 712e2910a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-checksumSearch-validation.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - You must select a file, or enter the checksum. If the file was given and you receive this message, - there may have been an error generating the checksum. - - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-filteredSearch-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-filteredSearch-validation.xml deleted file mode 100644 index 5f9c89750..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-filteredSearch-validation.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - Invalid entry - - - 1 - Row count must be larger than ${min}. - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-quickSearch-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-quickSearch-validation.xml deleted file mode 100644 index 705f0be19..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/SearchAction-quickSearch-validation.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - You must enter some search terms. - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/UploadAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/UploadAction-validation.xml deleted file mode 100644 index b56cf3757..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/UploadAction-validation.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - You must enter a groupId. - - - - - You must enter an artifactId. - - - - - You must enter a version. - - - - - You must enter a packaging. - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction-validation.xml deleted file mode 100644 index bc3d556a3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/appearance/EditOrganisationInfoAction-validation.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - You must enter a name - - - true - ^([-a-zA-Z0-9._/~:?!&=\\]|\s)+$ - Organisation name must only contain alphanumeric characters, white-spaces(' '), equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-). - - - - - You must enter a URL. - - - - - You must enter a URL for your logo. - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction-validation.xml deleted file mode 100644 index bbf09dd9d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathAction-validation.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - You must enter a legacy path. - - - true - ^[-a-zA-Z0-9._/\\]+$ - Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\), underscores(_), dots(.), and dashes(-). - - - - - You must enter a groupId. - - - true - ^[a-zA-Z0-9._-]+$ - Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - You must enter an artifactId. - - - true - ^[a-zA-Z0-9._-]+$ - Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - You must enter a version. - - - true - ^[a-zA-Z0-9._-]+$ - Version must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - - true - ^[a-zA-Z0-9._-]*$ - Classifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - You must enter a type. - - - true - ^[a-zA-Z0-9._-]+$ - Type must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction-validation.xml deleted file mode 100644 index de8ae0993..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/network/NetworkConfigurationAction-validation.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - 1 - maxTotal must be at least superior to ${min}. - - - - - - - 1 - maxTotalPerHost must be at least superior to ${min}. - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml deleted file mode 100644 index 669b3b102..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyAction-saveNetworkProxy-validation.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - true - You must enter an identifier. - - - 4 - 45 - true - You must enter an identifier of 4 or more than 4 characters. - - - true - ^[a-zA-Z0-9._-]+$ - Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - true - You must enter a protocol. - - - true - ^[-a-zA-Z0-9./:\\]+$ - Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\), dots(.), colons(:), and dashes(-). - - - - - true - You must enter a host. - - - true - ^[-a-zA-Z0-9._/~:?!&=\\]+$ - Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-). - - - - - You must enter an port. - - - 1 - - Port needs to be larger than ${min} - - - true - ^[0-9]+$ - Port must only contain numeric characters. - - - - - - true - ^[-a-zA-Z0-9.@/_\\]*$ - Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\), underscores(_), dots(.), and dashes(-). - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml deleted file mode 100644 index 68ffb6cf7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryAction-validation.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - You must enter a repository identifier. - - - true - ^[a-zA-Z0-9._-]+$ - Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - You must enter a directory. - - - true - ^[-a-zA-Z0-9._/~:?!&=\\]+$ - Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-). - - - - - - true - ^[-a-zA-Z0-9._/~:?!&=\\]*$ - Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-). - - - - - You must enter a repository name. - - - true - ^([a-zA-Z0-9.)/_(-]|\s)+$ - Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-). - - - - - 1 - 100 - Repository Purge By Retention Count needs to be between ${min} and ${max}. - - - - - 0 - Repository Purge By Days Older Than needs to be larger than ${min}. - - - - - Cron expression is required. - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction-validation.xml deleted file mode 100644 index 7902bc532..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryAction-validation.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - You must enter a repository identifier. - - - - - You must enter a url. - - - - - You must enter a repository name. - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml deleted file mode 100644 index 9f82c37bd..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryAction-validation.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - You must enter a repository identifier. - - - true - ^[a-zA-Z0-9._-]+$ - Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - - - You must enter a directory. - - - true - ^[-a-zA-Z0-9._/~:?!&=\\]+$ - Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-). - - - - - - true - ^[-a-zA-Z0-9._/~:?!&=\\]*$ - Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-). - - - - - You must enter a repository name. - - - true - ^([a-zA-Z0-9.)/_(-]|\s)+$ - Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-). - - - - - 1 - 100 - Repository Purge By Retention Count needs to be between ${min} and ${max}. - - - - - 0 - Repository Purge By Days Older Than needs to be larger than ${min}. - - - - - Cron expression is required. - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction-validation.xml deleted file mode 100644 index 7902bc532..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryAction-validation.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - You must enter a repository identifier. - - - - - You must enter a url. - - - - - You must enter a repository name. - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction-addRepositoryGroup-validation.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction-addRepositoryGroup-validation.xml deleted file mode 100644 index ba5c4a94e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsAction-addRepositoryGroup-validation.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - Identifier field is required. - - - true - ^[a-zA-Z0-9._-]+$ - Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-). - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.properties b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.properties deleted file mode 100644 index 0569303ea..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.properties +++ /dev/null @@ -1,46 +0,0 @@ -# -# 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. -# - -#struts.ui.theme=jqboot - -# define our own action mapper here -struts.mapper.class = org.apache.archiva.web.mapper.RepositoryActionMapper - -## TODO olamy check fix for https://issues.apache.org/jira/browse/WW-3460 -## upgrade of struts version or use our own hacked ObjectFactory -struts.objectFactory = org.apache.struts2.spring.StrutsSpringObjectFactory -struts.objectFactory.spring.autoWire = type - -struts.url.includeParams = none - -## freemarker configuration -struts.freemarker.templatesCache=true -struts.freemarker.mru.max.strong.size=1000 -struts.freemarker.templatesCache.updateDelay=3600000 - -#struts.devMode = true -struts.configuration.xml.reload=true -struts.multipart.parser=jakarta -# 50M default -struts.multipart.maxSize=50485760 - -# TODO: package up a theme and share with Continuum. Should contain everything from xhtml, and set templateDir to WEB-INF/themes - -# Localization -struts.custom.i18n.resources=org.apache.archiva.redback.i18n.default,org.apache.archiva.redback.custom diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.xml deleted file mode 100644 index ef83869b0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/struts.xml +++ /dev/null @@ -1,638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dojo\..*,^struts\..* - [a-zA-Z0-9\-\.\]\[\(\)_'\s]+ - - - - input,back,cancel,browse - - - input,back,cancel,browse - - - - - - - - - externalResult - - - false - - - - * - - - - input,back,cancel,browse - - - input,back,cancel,browse - - - - - - - - - - false - - - * - - - input,back,cancel,browse - - - input,back,cancel,browse - - - - - - - - - - - - - - - - - index - index - - index - Account Locked - - index - - login - /security - - - login - /security - - - login - /security - - - login - /security - - index - - login - /security - - - login - /security - - - addadmin - /security - - - password - /security - - - - /WEB-INF/jsp/generalError.jsp - /WEB-INF/jsp/accessToNoRepos.jsp - /WEB-INF/jsp/redback/invalidToken.jsp - - - - - - - - - - browse - - - - /WEB-INF/jsp/quickSearch.jsp - - - - /WEB-INF/jsp/quickSearch.jsp - /WEB-INF/jsp/results.jsp - /WEB-INF/jsp/quickSearch.jsp - - - - /WEB-INF/jsp/quickSearch.jsp - /WEB-INF/jsp/results.jsp - /WEB-INF/jsp/quickSearch.jsp - - - - /WEB-INF/jsp/findArtifact.jsp - - - - /WEB-INF/jsp/upload.jsp - /WEB-INF/jsp/upload.jsp - /WEB-INF/jsp/upload.jsp - - - - - - /WEB-INF/jsp/deleteArtifact.jsp - /WEB-INF/jsp/deleteArtifact.jsp - /WEB-INF/jsp/deleteArtifact.jsp - - doDelete - - - - - /WEB-INF/jsp/findArtifact.jsp - /WEB-INF/jsp/results.jsp - /WEB-INF/jsp/findArtifact.jsp - - /browse/${databaseResults.get(0).getNamespace()}/${databaseResults.get(0).getProject()}/${databaseResults.get(0).getVersion()} - - - - - /WEB-INF/jsp/browse.jsp - - - - /WEB-INF/jsp/browse.jsp - - - - /WEB-INF/jsp/browse.jsp - - - - /WEB-INF/jsp/generalError.jsp - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - /WEB-INF/jsp/showArtifact.jsp - - - - /WEB-INF/jsp/showArtifact.jsp - /WEB-INF/jsp/showArtifact.jsp - - - - - - - - /WEB-INF/jsp/components/companyLogo.jsp - - - - - - - - /WEB-INF/jsp/admin/repositories.jsp - - - - - - /WEB-INF/jsp/admin/repositoryGroups.jsp - - - - /WEB-INF/jsp/admin/repositoryGroups.jsp - /WEB-INF/jsp/admin/repositoryGroups.jsp - repositoryGroups - - * - - - - - /WEB-INF/jsp/admin/deleteRepositoryGroup.jsp - - * - - - - - /WEB-INF/jsp/admin/deleteRepositoryGroup.jsp - /WEB-INF/jsp/admin/deleteRepositoryGroup.jsp - repositoryGroups - - * - - - - - /WEB-INF/jsp/admin/repositoryGroups.jsp - /WEB-INF/jsp/admin/repositoryGroups.jsp - repositoryGroups - - - - - /WEB-INF/jsp/admin/repositoryGroups.jsp - /WEB-INF/jsp/admin/repositoryGroups.jsp - repositoryGroups - - - - - /WEB-INF/jsp/admin/repositoryGroups.jsp - /WEB-INF/jsp/admin/repositoryGroups.jsp - repositoryGroups - - - - - /WEB-INF/jsp/admin/repositoryGroups.jsp - /WEB-INF/jsp/admin/repositoryGroups.jsp - repositoryGroups - - - - - - - /WEB-INF/jsp/admin/repositories.jsp - deleteRepository - - - - repositories - - - - /WEB-INF/jsp/admin/addRepository.jsp - /WEB-INF/jsp/admin/addRepository.jsp - /WEB-INF/jsp/admin/confirmAddRepository.jsp - repositories - - - - - /WEB-INF/jsp/admin/editRepository.jsp - /WEB-INF/jsp/admin/editRepository.jsp - repositories - /WEB-INF/jsp/admin/confirmAddRepository.jsp - - - - - /WEB-INF/jsp/admin/deleteRepository.jsp - - * - - - - - /WEB-INF/jsp/admin/deleteRepository.jsp - /WEB-INF/jsp/admin/deleteRepository.jsp - repositories - - * - - - - - /WEB-INF/jsp/admin/addRemoteRepository.jsp - /WEB-INF/jsp/admin/addRemoteRepository.jsp - repositories - - - - - /WEB-INF/jsp/admin/editRemoteRepository.jsp - /WEB-INF/jsp/admin/editRemoteRepository.jsp - repositories - - - - - /WEB-INF/jsp/admin/deleteRemoteRepository.jsp - - - - - - /WEB-INF/jsp/admin/mergeExcludeConflicts.jsp - /WEB-INF/jsp/admin/mergeResults.jsp - - - - - /WEB-INF/jsp/admin/deleteRemoteRepository.jsp - /WEB-INF/jsp/admin/deleteRemoteRepository.jsp - repositories - - - - - - - /WEB-INF/jsp/admin/proxyConnectors.jsp - - - - /WEB-INF/jsp/admin/addProxyConnector.jsp - proxyConnectors - - - - - /WEB-INF/jsp/admin/editProxyConnector.jsp - proxyConnectors - - - - - /WEB-INF/jsp/admin/editProxyConnector.jsp - proxyConnectors - - - - - /WEB-INF/jsp/admin/editProxyConnector.jsp - proxyConnectors - - - - - /WEB-INF/jsp/admin/deleteProxyConnector.jsp - proxyConnectors - - * - - - - - /WEB-INF/jsp/admin/enableProxyConnector.jsp - proxyConnectors - - - - - /WEB-INF/jsp/admin/disableProxyConnector.jsp - proxyConnectors - - * - - - - - - - - /WEB-INF/jsp/admin/networkProxies.jsp - - - - /WEB-INF/jsp/admin/editNetworkProxy.jsp - networkProxies - - - - - /WEB-INF/jsp/admin/editNetworkProxy.jsp - networkProxies - - - - - /WEB-INF/jsp/admin/editNetworkProxy.jsp - networkProxies - - * - - - - - /WEB-INF/jsp/admin/deleteNetworkProxy.jsp - networkProxies - - * - - - - - - - /WEB-INF/jsp/admin/repositoryScanning.jsp - - repositoryScanning - - - removeFiletypePattern,addFiletypePattern,updateKnownConsumers,updateInvalidConsumers - - - - - - - /WEB-INF/jsp/admin/appearance.jsp - - - - /WEB-INF/jsp/admin/editAppearance.jsp - - - - /WEB-INF/jsp/admin/editAppearance.jsp - - configureAppearance - /admin - - - - - /WEB-INF/jsp/admin/systemStatus.jsp - - - - /WEB-INF/jsp/admin/systemStatus.jsp - - - - - - /WEB-INF/jsp/admin/legacyArtifactPath.jsp - - legacyArtifactPath - - - - - /WEB-INF/jsp/admin/addLegacyArtifactPath.jsp - /WEB-INF/jsp/admin/addLegacyArtifactPath.jsp - legacyArtifactPath - - - - - /WEB-INF/jsp/admin/legacyArtifactPath.jsp - /WEB-INF/jsp/admin/legacyArtifactPath.jsp - legacyArtifactPath - - * - - - - - - /WEB-INF/jsp/admin/networkConfiguration.jsp - /WEB-INF/jsp/admin/networkConfiguration.jsp - - - - - /WEB-INF/jsp/admin/networkConfiguration.jsp - /WEB-INF/jsp/admin/networkConfiguration.jsp - editNetworkConfiguration - - * - - - - - - - - /WEB-INF/jsp/reports/pickReport.jsp - - - - /WEB-INF/jsp/reports/pickReport.jsp - /WEB-INF/jsp/reports/blankReport.jsp - /WEB-INF/jsp/reports/basicReport.jsp - - - - /WEB-INF/jsp/reports/pickReport.jsp - /WEB-INF/jsp/reports/blankReport.jsp - /WEB-INF/jsp/reports/statisticsReport.jsp - - - - - /WEB-INF/jsp/reports/pickReport.jsp - /WEB-INF/jsp/reports/blankReport.jsp - - ${contentType} - attachment; filename="archiva_statistics_report.csv" - - - - - - /WEB-INF/jsp/reports/auditLogReport.jsp - - - - /WEB-INF/jsp/reports/auditLogReport.jsp - /WEB-INF/jsp/reports/auditLogReport.jsp - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/template/xhtml/form-close-validate.ftl b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/template/xhtml/form-close-validate.ftl deleted file mode 100644 index 97898cc88..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/template/xhtml/form-close-validate.ftl +++ /dev/null @@ -1,129 +0,0 @@ -<#-- -/* - * - * 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. - */ ---> -<#-- -START SNIPPET: supported-validators -Only the following validators are supported: -* required validator -* requiredstring validator -* stringlength validator -* regex validator -* email validator -* url validator -* int validator -* double validator -END SNIPPET: supported-validators ---> -<#if ((parameters.validate?default(false) == true) && (parameters.performValidation?default(false) == true))> - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/validators.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/validators.xml deleted file mode 100644 index b24bc71f5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/validators.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml deleted file mode 100644 index dac40913c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]]> - - - - - - - - - - - - true - false - false - false - None - READ_COMMITTED - READ_COMMITTED - JDK_DEFAULT_TIMEZONE - - 255 - - - - - true - ehcacheclassbased - defaultJpox - /ehcache.xml - - - - - - - - - scheduler1 - org.quartz.simpl.SimpleThreadPool - 2 - 4 - org.quartz.simpl.RAMJobStore - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/decorators.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/decorators.xml deleted file mode 100644 index 0148875d6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/decorators.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - /repository/* - /components/* - /restServices/* - - - - /* - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/accessToNoRepos.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/accessToNoRepos.jsp deleted file mode 100644 index 645662614..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/accessToNoRepos.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - You do not have access to any repository - - - - - -
- -
- You do not have access to any repositories. - Please contact your system administrator to request access. -
- -
- -
-
-
- - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp deleted file mode 100644 index e22a517a3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addLegacyArtifactPath.jsp +++ /dev/null @@ -1,115 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Add Legacy Artifact Path - - - - - -

Admin: Add Legacy Artifact Path

- -
- -

- Enter the legacy path to map to a particular artifact reference, then adjust the fields as necessary. -

- - - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
    - -
  • -
    -
-
- -
    - -
  • -
    -
-
- - - - - - - - - - - - - -
- - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addProxyConnector.jsp deleted file mode 100644 index ee84a88d0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addProxyConnector.jsp +++ /dev/null @@ -1,46 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Add Proxy Connector - - - - - -

Admin: Add Proxy Connector

- -
- - - - - - <%@ include file="/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf" %> - - - -
- - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRemoteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRemoteRepository.jsp deleted file mode 100644 index e893893a4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRemoteRepository.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Add Remote Repository - - - - - -

Admin: Add Remote Repository

- -
- - - - - <%@ include file="/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf" %> - - - - - -
- - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp deleted file mode 100644 index 406426de5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/addRepository.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Add Managed Repository - - - - - -

Admin: Add Managed Repository

- -
- <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
    - -
  • -
    -
-
- -
    - -
  • -
    -
-
- - - <%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %> - - - - - - -
- - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp deleted file mode 100644 index cd5438c10..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp +++ /dev/null @@ -1,71 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Configure Appearance - - - - -

Appearance

- -
- Edit -
-

Organization Details

- -

- The logo in the top right of the screen is controlled by the following settings. - Change your appearance -

- -<%-- used c:out in displaying EL's so that they are escaped --%> -

Organization Information

- - - - - - - - - - - - - - - - - - - -
Name
URL - -
Logo URL - -
 
- - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp deleted file mode 100644 index df1c66fc1..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp +++ /dev/null @@ -1,142 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Admin: Add Managed Repository - - - - - -

Admin: Add Managed Repository

- -
-

- WARNING: Repository location already exists. -

-
- -

- Are you sure you want to - - add - update - - the following managed repository? -

- - <%-- used c:out in displaying EL's so that they are escaped --%> -
- - - - - - - - - - - - - - - - - - - - <%--td>${repository.layout} - - - - - - - - - - - - - - - - - - - - - - - - - - -
ID:
Name:
Directory:
Index Directory:
Type: - - - Maven 2.x Repository - - - Maven 1.x Repository - - -
Cron:
Repository Purge By Days Older Than:
Repository Purge By Retention Count:
Releases Included: -
Snapshots Included: -
Scannable: -
Delete Released Snapshots: -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - -
-
- - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp deleted file mode 100644 index 49f1d8458..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Admin: Delete Network Proxy - - - - - -

Admin: Delete Network Proxy

- - <%-- changed the structure of displaying errorMessages in order for them to be escaped. --%> - -
    - -
  • -
    -
-
- -
- -

Delete Network Proxy

- -
- WARNING: This operation can not be undone. -
- <%-- used c:out in displaying EL's for them to be escaped. --%> -

- Are you sure you want to delete network proxy ? -

- - - - - - -
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteProxyConnector.jsp deleted file mode 100644 index fb56d264e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteProxyConnector.jsp +++ /dev/null @@ -1,56 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Delete Proxy Connector - - - - - -

Admin: Delete Proxy Connector

- - - -
- -

Delete Proxy Connector

- -
- WARNING: This operation can not be undone. -
- -

- Are you sure you want to delete proxy connector [ ${source} , ${target} ] ? -

- - - - - - - -
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRemoteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRemoteRepository.jsp deleted file mode 100644 index 9d77aa5d7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRemoteRepository.jsp +++ /dev/null @@ -1,74 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Delete Remote Repository - - - - - -

Admin: Delete Remote Repository

- - - -
- -
-

- WARNING: This operation can not be undone. -

-
- -

- Are you sure you want to delete the following remote repository? -

- -
- - - - - - - - - - - - - -
ID:${repository.id}
Name:${repository.name}
URL:${repository.url}
-
- - - -
- - -
-
-
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp deleted file mode 100644 index def8b68f6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp +++ /dev/null @@ -1,85 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> - - - - Admin: Delete Managed Repository - - - - - -

Admin: Delete Managed Repository

- -<%-- changed the structure of displaying errorMessages in order for them to be escaped. --%> - -
    - -
  • -
    -
-
- -
- -
-

- WARNING: This operation can not be undone. -

-
- -

- Are you sure you want to delete the following managed repository? -

- - <%-- used c:out in displaying EL's so that they are escaped --%> -
- - - - - - - - - - - - - -
ID:
Name:
Directory:
-
- - - - -
- - - -
-
-
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp deleted file mode 100644 index 69bbd0db4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepositoryGroup.jsp +++ /dev/null @@ -1,67 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Delete Repository Group - - - - - -

Admin: Delete Repository Group

- - - -
- -
-

- WARNING: This operation can not be undone. -

-
- -

- Are you sure you want to delete the following repository group? -

- -
- - - - - -
ID:${repositoryGroup.id}
-
- - - -
- - - -
-
-
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp deleted file mode 100644 index 52c69ba8c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp +++ /dev/null @@ -1,52 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Disable Proxy Connector - - - - - -

Admin: Disable Proxy Connector

- - - -
- -

Disable Proxy Connector

- -

- Are you sure you want to disable proxy connector [ ${source} , ${target} ] ? -

- - - - - - - -
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp deleted file mode 100644 index 8df7a210d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp +++ /dev/null @@ -1,54 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - Configure Appearance - - - - -

Appearance

- -

Organization Details

- -

- Enter the details of your organization below. -

- - -<%-- changed the structure of displaying actionMessages in order for them to be escaped. --%> - -
    - -
  • -
    -
-
- - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp deleted file mode 100644 index b970d0616..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp +++ /dev/null @@ -1,88 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - - - - - - - - - - - Admin: ${addedit} Network Proxy - - - - - -

Admin: ${addedit} Network Proxy

- -
- -

${addedit} network proxy:

- - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
    - -
  • -
    -
-
- -
    - -
  • -
    -
-
- - - - - - - - - - - - - - - <%@ include file="/WEB-INF/jsp/admin/include/networkProxyForm.jspf" %> - - - - - -
- - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editProxyConnector.jsp deleted file mode 100644 index 91b42dd34..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editProxyConnector.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Admin : Edit Proxy Connector - - - - - -

Admin : Edit Proxy Connector

- -
- - - - - - <%@ include file="/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf" %> - - - -
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRemoteRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRemoteRepository.jsp deleted file mode 100644 index 0dad94ed4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRemoteRepository.jsp +++ /dev/null @@ -1,75 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> - - - - Admin: Edit Remote Repository - - - - - - -

Admin: Edit Remote Repository

- - - -
- - - - - <%@ include file="/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf" %> - - - -
- - Now:
- Full download:
- - -
-
- - -
- - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp deleted file mode 100644 index 8a2bfed8c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp +++ /dev/null @@ -1,74 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Edit Managed Repository - - - - - -

Admin: Edit Managed Repository

- -<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
    - -
  • -
    -
-
- -
- - -
    - -
  • -
    -
-
- - - - <%@ include file="/WEB-INF/jsp/admin/include/repositoryForm.jspf" %> - - - - - - - - - - - - - - -
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp deleted file mode 100644 index 1516a3a8e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp +++ /dev/null @@ -1,51 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Admin: Enable Proxy Connector - - - - - -

Admin: Enable Proxy Connector

- - - -
- -

Enable Proxy Connector

- -

- Are you sure you want to enable proxy connector [ ${source} , ${target} ] ? -

- - - - - - -
- - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/errorMessages.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/errorMessages.jsp deleted file mode 100644 index 8c09b517e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/errorMessages.jsp +++ /dev/null @@ -1,32 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> - - -

- - Errors: - -

  • - -
  • - - -

    \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/networkProxyForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/networkProxyForm.jspf deleted file mode 100644 index 725eebbc7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/networkProxyForm.jspf +++ /dev/null @@ -1,28 +0,0 @@ -<%-- - ~ 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. - --%> -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf deleted file mode 100644 index 979815805..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/proxyConnectorForm.jspf +++ /dev/null @@ -1,260 +0,0 @@ -<%-- - ~ 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. - --%> -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - -<%-- This hidden 'pattern' field is used by remove (white|black)list scripts --%> - - - - - - - - - - - - - - - - - - - -
    - ${policy.value.name}: - - - - - - -
    - - - - - - - - - - : - - - - - - - - - - - - No properties have been set. - - - - - - - - - - -
    - ${property.key} - - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - No black list patterns have been set. - - - - - - - - - -
    - "/> - "${currentPattern}" - - ', 'removeBlackListPattern')"> - -
    -
    -
    - - - - - - - - - - - - - - - - - - - No white list patterns have been set. - - - - - - - - - -
    - "/> - "${currentPattern}" - - ', 'removeWhiteListPattern')" - theme="simple"> - -
    -
    -
    - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf deleted file mode 100644 index 000578650..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/remoteRepositoryForm.jspf +++ /dev/null @@ -1,40 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf deleted file mode 100644 index 73b9b980f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf +++ /dev/null @@ -1,36 +0,0 @@ -<%-- - ~ 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. - --%> -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp deleted file mode 100644 index d6e17980b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp +++ /dev/null @@ -1,131 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - - Administration - Legacy Support - - - - - -

    Administration - Legacy Artifact Path Resolution

    - -
    - -<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
      - -
    • -
      -
    -
    - -
      - -
    • -
      -
    -
    - -
    -
    - - - - " alt="" width="16" height="16"/> - Add - - -
    -

    Path Mappings

    - - - - <%-- No paths. --%> -

    There are no legacy artifact paths configured yet.

    -
    - - <%-- Display the paths. --%> - - - - - - - - - - - -
    - -
    - <%-- TODO: make some icons --%> - - - - - struts.token - - - - " alt="" width="16" height="16"/> - Delete - - -
    - -<%-- used c:out in displaying EL's so that they would be escaped --%> - - - - - - - - - -
    Path - -
    Artifact - -
    - -
    -
    - -
    -
    - - - -
    - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp deleted file mode 100644 index 8ccbfda68..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeExcludeConflicts.jsp +++ /dev/null @@ -1,114 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Admin: Merge Staging Repository - - - - - -

    Admin: Merge Staging Repository

    - -

    - Are you sure you want to merge the repository? -

    - -
    - - - - -

    No conflicting artifacts

    - - -
    -

    - WARNING: Repository "${repoid}" does not allow to merge snapshots -

    -
    -
    - - - -
    - -
    -
    -
    - -
    - -

    - WARNING: Repository "${repoid}" does not allow to merge snapshots -

    -
    -

    - WARNING: The following are the artifacts in conflict. -

    -
    - -
    - - <%----%> - - - - - - - - -
    Artifact Id :${artifact.id} ${artifact.namespace} ${" "} ${artifact.project} ${" "} ${artifact.version}
    - - -
    - - - - - -
    - - - - -
    - -
    -
    - - - - -
    - -
    -
    -
    -
    -
    -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeResults.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeResults.jsp deleted file mode 100644 index a6adf6ef8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/mergeResults.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%-- - ~ 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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Admin: Merge Staging Repository - - - - -

    Admin: Merge Staging Repository

    - -
    - - - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkConfiguration.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkConfiguration.jsp deleted file mode 100644 index 6cb780414..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkConfiguration.jsp +++ /dev/null @@ -1,51 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Configure NetworkConfiguration - - - - - -

    Admin: Configure NetworkConfiguration

    - -
    - - - - - - - - - - - - -
    - - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp deleted file mode 100644 index e17719cfa..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp +++ /dev/null @@ -1,151 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - -Administration - Network Proxies - - - - - -

    Administration - Network Proxies

    - -
    - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
      - -
    • -
      -
    -
    - -
      - -
    • -
      -
    -
    - -
    -
    - - - - " /> - Add Network Proxy -
    -

    Network Proxies

    - - - - <%-- No Local Repositories. --%> - There are no network proxies configured yet. - - - <%-- Display the repositories. --%> - - - - - - - - - - - -
    - -
    - - - - - - - - struts.token - - - - " /> - Edit Network Proxy - - " /> - Delete Network Proxy -
    - - <%-- used c:out in displaying EL's for them to be escaped. --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Identifier
    Protocol
    Host
    Port
    Username
    Password••••••••
    Use NTLM
    - -
    -
    - -
    -
    -
    - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp deleted file mode 100644 index 0d215d735..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp +++ /dev/null @@ -1,267 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - - Administration - Proxy Connectors - - - - - - - - -

    Administration - Proxy Connectors

    - - - - - - - - - -
    - - - - -
    - - - - - - "/> Add - - - - - "/> - Add (Disabled. No remote repositories) - - -
    - -

    Repository Proxy Connectors

    - - - - No Repository Proxy Connectors Defined. - - - -
    - - - -
    -
    - "/> -

    ${repository.key}

    -

    ${repoMap[repository.key].name}

    -
    - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - struts.token - - - - - - - - - - struts.token - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -

    Proxy Connector

    - -
    - "/> -

    ${connector.targetRepoId}

    -

    ${repoMap[connector.targetRepoId].name}

    -

    ${repoMap[connector.targetRepoId].url}

    -
    - - Settings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Network Proxy: - - - (Direct Connection) - - - - - - - ${connector.proxyId} - - - - -
    Policies: - - - - - - - -
    ${policies.key}${policies.value}
    -
    White List: - -

    "${pattern}"

    -
    -
    Black List: - -

    "${pattern}"

    -
    -
    Properties: - - - - - - - -
    ${prop.key}${prop.value}
    -
    -
    <%-- connector --%> - -
    -
    <%-- proxyConfig --%> -
    -
    <%-- admin --%> -
    -
    - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp deleted file mode 100644 index ae38f9637..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp +++ /dev/null @@ -1,422 +0,0 @@ -<%@ page import="java.io.File" %> -<%-- -~ 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. ---%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - - Administration - Repositories - - - - - - - -

    Administration - Repositories

    - -
    - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
      - -
    • -
      -
    -
    - - -
      - -
    • -
      -
    -
    - -
    -
    - - - - " alt="" width="16" height="16"/> - Add - - -
    -

    Managed Repositories

    - - - - <%-- No Managed Repositories. --%> - There are no managed repositories configured yet. - - -<%-- Display the repositories. --%> - - - - - - - - - - - -
    - -
    - <%-- TODO: make some icons --%> - - - - - - - - struts.token - - - - " alt="" width="16" height="16"/> - Edit - - - " alt="" width="16" height="16"/> - Delete - - - - - - -
    - -<%-- used c:out in displaying EL's for them to be escaped. --%> -
    - " alt="" width="32" height="32"/> -
    - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- TODO: can probably just use layout appended to a key prefix in i18n to simplify this --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- TODO: fix this hard coding - make stage repository configuration more transparent than the actual ManagedRepositoryConfiguration --%> - - - - - - - - - - - - - - - - - -
    Identifier - -
    Name - -
    Directory
    Index Directory
    WebDAV URL//
    Type - - - Maven 2.x Repository - - - Maven 1.x Repository - - -
    Groups - - , - -
    Releases Included
    Snapshots Included
    Delete Released Snapshots
    Repository Purge By Days Older Than
    Repository Purge By Retention Count
    Scanned
    Scanning Cron
    - Actions - - - - - - - - - - - -
    Process All Artifacts
    -
    -
    -
    Stats - - - - No Statistics Available. - - - - - - - - - - - - - - - - - -
    Last Scanned
    Duration ms
    Total File Count -
    New Files Found -
    -
    -
    -
    POM Snippet - -
    - stage repository location - - ${repository.location}${'-stage'} -
    Merge Actions - - - <%----%> - - - - -
    -
    -
    - -
    -
    - -
    -
    - -
    - - - - " alt="" width="16" height="16"/> - Add - - -
    -

    Remote Repositories

    - - - - <%-- No Remote Repositories. --%> - There are no remote repositories configured yet. - - - <%-- Display the repositories. --%> - - - - - - - - - - -
    - -
    - - - - - - " alt="" width="16" height="16"/> - Edit - - - - - struts.token - - - - " alt="" width="16" height="16"/> - Delete - - -
    - -
    - " alt="" width="32" height="32"/> -
    - -

    - - - - - - - - - - - - - - - - - <%-- TODO: can probably just use layout appended to a key prefix in i18n to simplify this --%> - - -
    Identifier - -
    Name - -
    URL
    Type - - - Maven 2.x Repository - - - Maven 1.x Repository - - -
    - -
    -
    -
    -
    - -
    - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryGroups.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryGroups.jsp deleted file mode 100644 index 71a763b68..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryGroups.jsp +++ /dev/null @@ -1,165 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - - Administration - Repository Groups - - - - - -

    Administration - Repository Groups

    - - - - - - - -
    - - - - -
    - - - - - - - -
    - -

    Repository Groups

    - - - - No Repository Groups Defined. - - - -
    - - - -
    -
    - -
    - - - - struts.token - - - - - -
    - - "/> -

    ${repositoryGroup.key}

    -

    ${baseUrl}/${repositoryGroup.key}/

    -
    - - -
    - - - - - -
    -
    - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -

    Repository

    - -
    - "/> -

    ${repository}

    -

    ${managedRepositories[repository].name}

    -

    ${baseUrl}/${managedRepositories[repository].id}

    -
    -
    <%-- repository --%> -
    - -
    <%-- repository group --%> -
    -
    <%-- admin --%> - -
    -
    -
    <%-- content area --%> - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp deleted file mode 100644 index f4ed3a4c0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp +++ /dev/null @@ -1,261 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - -Administration - Repository Scanning - - - - - -

    Administration - Repository Scanning

    - -
    - - - - - - - - - - - -
    -

    Repository Scanning - File Types

    - - - - <%-- No File Types. Eeek! --%> - There are no file types configured. - - - <%-- Display the filetypes. --%> - - - - - - - - - -
    - -
    <%-- Does this even make sense for file types? --%>
    - -

    ${filetypeId}

    - - - - - - - - - - - - - - - - - - - - - - - -
    - ${escapedPattern} - - - - -
    - - - - - -
    - -
    -
    - -
    -
    - -

    Repository Scanning - Consumers of Known Content

    - - - - <%-- No Good Consumers. Eeek! --%> - There are no consumers of known content available. - - - <%-- Display the consumers. --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Enabled?IDDescription
    - checked /> - - - enabled - - - ${consumer.id} - ${consumer.description}
    - -
    -
    - -
    -
    - - -

    Repository Scanning - Consumers of Invalid Content

    - - - - <%-- No Consumers. Eeek! --%> - There are no consumers of invalid content available. - - - <%-- Display the consumers. --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Enabled?IDDescription
    - checked /> - - - enabled - - - ${consumer.id} - ${consumer.description}
    - -
    -
    - -
    -
    -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/systemStatus.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/systemStatus.jsp deleted file mode 100644 index 703af95ac..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/systemStatus.jsp +++ /dev/null @@ -1,146 +0,0 @@ -<%@ page import="java.util.Date" %> -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> - - - - Administration - System Status - - - - - -

    Administration - System Status

    - -
    - - - - -

    Queues

    - - - - - - - - - - - - - -
    QueueSize
    ${queueEntry.key}${fn:length(queue)}
    - -

    Repository Scans Currently in Progress

    - - - - - - - - - - - - - - - - - - - -
    RepositoryFiles processedNew files
    ${scan.repository.name} (${scan.repository.id})${scan.stats.totalFileCount}${scan.stats.newFileCount}
    - - - - - - - - - - - - - - - - -
    NameTotalAverageInvocations
    ${entry.key}${entry.value}msms${total}
    -
    -
    - -

    No scans in progress.

    -
    -
    - -

    Caches

    - - - - - - - - - - - - - - ${cacheEntry.key} - - - - - - - - - - - -
    CacheSizeHitsMissesHit Ratio 
    ${cacheEntry.key}${cacheEntry.value.statistics.size}${cacheEntry.value.statistics.cacheHits}${cacheEntry.value.statistics.cacheMiss}Flush
    - -

    Memory Usage

    - -

    ${memoryStatus}

    - -

    Current Time

    - -

    <%= new Date() %>

    - -

    Version Information

    - - Build number: - Build Timestamp: - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/alert.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/alert.jsp deleted file mode 100644 index 52b9abd57..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/alert.jsp +++ /dev/null @@ -1,46 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Security Alert Page - - - - - -
    - -
    - -
    -
    -
    - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp deleted file mode 100644 index 8d3bf67a0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp +++ /dev/null @@ -1,192 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> - - - - Browse Repository - - - - - - - - - -

    Browse Repository

    - -
    - -

    - - - ${artifactId} - -

    -
    - - -
    -

    Groups

    - -
    -
    - - -
    -

    Artifacts

    - -
    -
    - - - <%-- show shared project information (MRM-1041) TODO - share JSP code with artifactInfo.jspf --%> - - -

    Versions

    -
    - Artifact Info - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Group ID${mavenFacet.groupId}
    Artifact ID${mavenFacet.artifactId}
    Packaging${mavenFacet.packaging}
    Name${sharedModel.name}
    Organisation - - - ${sharedModel.organization.name} - - - ${sharedModel.organization.name} - - -
    Issue Tracker - - - ${sharedModel.issueManagement.system} - - - ${sharedModel.issueManagement.system} - - -
    Continuous Integration - - - ${sharedModel.ciManagement.system} - - - ${sharedModel.ciManagement.system} - - -
    -
    - - -
    - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp deleted file mode 100644 index ec1b77e3c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp +++ /dev/null @@ -1,52 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib uri="/struts-tags" prefix="s" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp deleted file mode 100644 index 057c4cb60..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp +++ /dev/null @@ -1,213 +0,0 @@ - - -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> -<%@ taglib uri="/struts-tags" prefix="s" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> -<%@ page import="java.util.Calendar" %> - - - - Apache Archiva \ - <decorator:title default="Apache Archiva"/> - - - " type="text/css" media="all"/> - " type="text/css" media="all"/> - " type="text/css" media="all"/> - " type="text/css" media="all"/> - " type="text/css" media="print"/> - "/> - - - - -<% - int inceptionYear = 2005; - Calendar cal = Calendar.getInstance(); - int currentYear = cal.get( Calendar.YEAR ); - String copyrightRange = String.valueOf( inceptionYear ); - if ( inceptionYear != currentYear ) - { - copyrightRange = copyrightRange + "-" + String.valueOf( currentYear ); - } - - if ( cal.get( Calendar.MONTH ) == Calendar.SEPTEMBER && cal.get( Calendar.DAY_OF_MONTH ) == 19 ) - { - request.setAttribute( "is19Sep", "true" ); - } -%> - - - - - -" class="composite" - - style="background: url('') no-repeat bottom right" - -> - - - -
    - - - -
    - -
    - -
    - -
    -
    - -
    -
    - -
    -
    -
    - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp deleted file mode 100644 index a742928f5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp +++ /dev/null @@ -1,58 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Delete Artifact - - - - -

    Delete Artifact

    - - <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%> - -
      - -
    • -
      -
    -
    - -
      - -
    • -
      -
    -
    - -
    - - <%@ include file="/WEB-INF/jsp/include/deleteArtifactForm.jspf" %> - - - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/findArtifact.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/findArtifact.jsp deleted file mode 100644 index 7c5d4993f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/findArtifact.jsp +++ /dev/null @@ -1,118 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Find Artifact - - - - - -

    Find Artifact

    - -
    - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/generalError.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/generalError.jsp deleted file mode 100644 index 1ee60eabb..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/generalError.jsp +++ /dev/null @@ -1,37 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Error Occurred - - - - - -

    Error Occurred

    - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactDependencies.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactDependencies.jspf deleted file mode 100644 index afa9a4e74..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactDependencies.jspf +++ /dev/null @@ -1,41 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - -<%-- TODO: paginate [MRM-491] --%> - -

    - - -

    - -

    - -

    -
    - - No results - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactInfo.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactInfo.jspf deleted file mode 100644 index 1cfd8e825..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactInfo.jspf +++ /dev/null @@ -1,235 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -

    - - - - - - - - - ${artifactId} / - ${version} - - <%-- TODO: new versions? - (Newer version available: - 2.0.3) - --%> -

    - - -
    ${model.description}
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- TODO: deployment timestamp - - - - - --%> - <%-- TODO: origin - - - - - --%> -
    Repository${repositoryId}
    Group ID${mavenFacet.groupId}
    Artifact ID${mavenFacet.artifactId}
    Version${model.version}
    Packaging${mavenFacet.packaging}
    Parent - ${mavenFacet.parent.groupId} ${mavenFacet.parent.artifactId} ${mavenFacet.parent.version} - - - - - - - - (View) -
    Deployment Date - 15 Jan 2006, 20:38:00 +1000 -
    Origin - Apache Repository -
    - - -

    POM Snippet

    - - -
    -    <plugin>
    -      <groupId>${mavenFacet.groupId}</groupId>
    -      <artifactId>${mavenFacet.artifactId}</artifactId>
    -      <version>${version}</version>
    -    </plugin>
    -
    -
    - -
    -    <dependency>
    -      <groupId>${mavenFacet.groupId}</groupId>
    -      <artifactId>${mavenFacet.artifactId}</artifactId>
    -      <version>${version}</version>
    -      <type>${mavenFacet.packaging}</type>
    -    </dependency>
    -
    -
    -
    -
    - - - -

    Other Details

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    URL - ${model.url} -
    Organisation - - - ${model.organization.name} - - - ${model.organization.name} - - -
    License - - - ${license.name} - - - ${license.name} - - -
    Issue Tracker - - - ${model.issueManagement.system} - - - ${model.issueManagement.system} - - -
    Continuous Integration - - - ${model.ciManagement.system} - - - ${model.ciManagement.system} - - -
    -
    - - -

    SCM

    - - - - - - - - - - - - - - - - - - - -
    Connection - ${model.scm.connection} -
    Dev. Connection - ${model.scm.developerConnection} -
    Viewer - ${model.scm.url} -
    -
    - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactReports.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactReports.jspf deleted file mode 100644 index 6cce9aea6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/artifactReports.jspf +++ /dev/null @@ -1,39 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - - -

    - ${report.groupId} : ${report.artifactId} : ${report.version} : ${report.classifier} : ${report.type} -

    -
      - -
    • - ${result.reason} -
    • -
      -
    -
    - - No reports for this artifact. - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf deleted file mode 100644 index 8633bc7b4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf +++ /dev/null @@ -1,29 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/dependencyTree.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/dependencyTree.jspf deleted file mode 100644 index f7cde9d46..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/dependencyTree.jspf +++ /dev/null @@ -1,28 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf deleted file mode 100644 index 027cfe849..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf +++ /dev/null @@ -1,102 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - - - - - - - -
    -
    - - -

    - ${mailingList.name} -

    - <%-- TODO: description -

    - Description blah blah blah -

    - --%> - -
    -
    - - - No mailing lists - - -
    diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mergeActionForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mergeActionForm.jspf deleted file mode 100644 index d173f911a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mergeActionForm.jspf +++ /dev/null @@ -1,42 +0,0 @@ -<%-- - ~ 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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectDependees.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectDependees.jspf deleted file mode 100644 index e973042ba..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectDependees.jspf +++ /dev/null @@ -1,40 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> - -<%-- TODO: paginate [MRM-491] --%> - -

    - - -

    - -

    - -

    -
    - - No results - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf deleted file mode 100644 index 67b42a687..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf +++ /dev/null @@ -1,86 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -
    - - -
    -

    Add Property

    - - - - - - - - - - - - - - - - -
    Property NameProperty Value -
    - - - - - -
    -
    -
    -
    - -
    - -

    - No metadata content. -

    -
    - - - - -
    - -
    diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf deleted file mode 100644 index d99dd8055..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf +++ /dev/null @@ -1,34 +0,0 @@ -<%-- - ~ 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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp deleted file mode 100644 index 8f298aa12..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp +++ /dev/null @@ -1,155 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> - - - - Quick Search - - - - - - - <%-- advanced search --%> - - - - -

    ${infoMessage}

    -
    - - - -

    Search

    - -
    - - -
    - Enter your search terms. A variety of data will be searched for your keywords. " /> - - - - - -
    - * To perform a boolean NOT search, use the keyword NOT after your search - term, followed by the term you want to exclude. For example, to exclude artifacts with - a dependency on the artifact you are searching for from showing up in the search results: - myQueryTerm NOT dependency -
    -
    - -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp deleted file mode 100644 index e51402fc2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp +++ /dev/null @@ -1,153 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %> - - - - - Audit Log Report - - - - - - - - - -

    Audit Log Report

    - -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Repository:
    Group ID:
    Artifact ID:
    Start Date:
    End Date:
    Row Count:
    -
    -
    - -

    - -

    - -

    ${headerName}

    -

    - -

    - - - - - - - - - - - - - - - - - - - - -
    EventRepositoryResourceEvent DateUsername
    ${auditLog.action}${auditLog.repositoryId}${auditLog.resource}${auditLog.timestamp}${auditLog.userId}
    - - - - - - - - - - - - - - - - - - - - - - - - - - << - Page: ${page} - - >> - -
    -
    - -
    - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp deleted file mode 100644 index 8a21877f9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp +++ /dev/null @@ -1,79 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - - - - Reports - - - - -

    Reports

    - -
    - - - Repository: ${repository.key} - -

    - - - - - - - - ${report.project} / - ${report.version} -

    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - << - Page: ${page} - - >> - -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/blankReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/blankReport.jsp deleted file mode 100644 index b4d11f96a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/blankReport.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Reports - - - - -

    Reports

    - -
    - - - -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp deleted file mode 100644 index d197a1979..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp +++ /dev/null @@ -1,80 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - - Reports - - - - - - - - - -

    Reports

    - -
    - -

    Repository Statistics

    - - - - - - - - - - - - - -

    Repository Health

    - - - - - - - - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp deleted file mode 100644 index 7a7d2c85f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp +++ /dev/null @@ -1,230 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Reports - - - - -

    Statistics Report

    - - - - - - -
    - - <%-- TODO: fix problem in date format! --%> - - <%-- Pagination - start --%> -

    - - <%-- Set Prev & Next icons --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- Google-style pagination --%> - - - - - 0 - 10 - - - ${(numPages - 1) - 10} - ${numPages - 1} - - - ${page - 5} - ${page + 5} - - - - - 0 - ${numPages - 1} - - - - - - - - - - - - - - - - ${i + 1} - - - ${i + 1} - - - - - - - - - - - - - - -

    - <%-- Pagination - end --%> - - <%-- Export to CSV link --%> - - - - - - Export to CSV - - - - -

    Latest Statistics Comparison Report

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    RepositoryTotal File CountTotal SizeArtifact CountGroup CountProject CountPluginsArchetypesJarsWarsEarsExesDllsZips
    ${selectedRepositories[i.count-1]}${stats.totalFileCount}${stats.totalArtifactFileSize}${stats.totalArtifactCount}${stats.totalGroupCount}${stats.totalProjectCount}${stats.totalCountForType['maven-plugin']}${stats.totalCountForType['maven-archetype']}${stats.totalCountForType['jar']}${stats.totalCountForType['war']}${stats.totalCountForType['ear']}${stats.totalCountForType['exe']}${stats.totalCountForType['dll']}${stats.totalCountForType['zip']}
    -
    - - -

    Statistics for Repository '${repositoryId}'

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Date of ScanTotal File CountTotal SizeArtifact CountGroup CountProject CountPluginsArchetypesJarsWarsEarsExesDllsZips
    ${stats.scanStartTime}${stats.totalFileCount}${stats.totalArtifactFileSize}${stats.totalArtifactCount}${stats.totalGroupCount}${stats.totalProjectCount}${stats.totalCountForType['maven-plugin']}${stats.totalCountForType['maven-archetype']}${stats.totalCountForType['jar']}${stats.totalCountForType['war']}${stats.totalCountForType['ear']}${stats.totalCountForType['exe']}${stats.totalCountForType['dll']}${stats.totalCountForType['zip']}
    - -
    -
    - -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp deleted file mode 100644 index 9b0ce4bec..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp +++ /dev/null @@ -1,366 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib uri="/struts-tags" prefix="s" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="archiva" tagdir="/WEB-INF/tags" %> - - - - Search Results - - - - - - - - - -

    Advanced Search

    -
    - -

    Search

    -
    - - - - - - -
    -
    - - - - - - - - - -
    - * To do a filtered or advanced search, select the criteria from the list below and click the icon. Specify the term you want to be matched in the created text field. -
    - - - - - - - - - - - - - -
    - -
    - -
    -
    -
    - - - - - - - - - - -

    - -

    -
    - -

    Results

    - -
    - - - <%-- search was made from the indices --%> - - ${fn:length(results.hits) + (currentPage * results.limits.pageSize)} - - - - -

    Hits: ${(rowCount * currentPage) + 1} to ${hitsNum} of ${results.totalHitsMapSize}

    -
    - -

    Hits: ${(hitsNum - results.limits.pageSize) + 1} to ${hitsNum} of ${results.totalHitsMapSize}

    -
    -
    -
    - -

    Hits: 1 to ${hitsNum} of ${results.totalHits}

    -
    -
    - - -

    No results

    -
    - - - <%-- Pagination start --%> -

    - <%-- Prev & Next icons --%> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <%-- Google-style pagination --%> - - - - - 0 - 10 - - - ${(totalPages -1) - 10} - ${totalPages - 1} - - - ${currentPage - 5} - ${currentPage + 5} - - - - - 0 - ${totalPages - 1} - - - - - - - - - - - - - - - - ${i + 1} - - - ${i + 1} - - - - - - - - - - - - - - - - - - - - - - - ${i + 1} - - - ${i + 1} - - - - - - - - - - - - - - - -

    - <%-- Pagination end --%> - - - - -

    - -

    -

    - -

    -
    - -

    - - ${record.urlFilename} -

    -
    -
    -
    -
    -
    -
    - - <%-- search was made from the database (find artifact)--%> - -

    Hits: ${fn:length(databaseResults)}

    - - - -

    No results

    -
    - - - - -

    - - -

    -

    - - -

    -
    - -

    - - ${artifactModel.repositoryId} -

    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp deleted file mode 100644 index d75477921..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp +++ /dev/null @@ -1,267 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> -<%@ taglib prefix="redback" uri="/redback/taglib-1.0" %> - - - - Browse Repository - - - - - - - - - - - - - - - - Maven Plugin - - - - POM - - <%-- These types aren't usually set in the POM yet, so we fudge them for the well known ones --%> - - - Maven Archetype - - - - Maven Skin - - <%-- Must be last so that the above get picked up if possible --%> - - - JAR - - - - - - -${packageName} - -

    - - - ${mavenFacet.artifactId} - - - ${model.name} - - -

    - -
    -
    - - - - - - - - - Info - - - - - - - - Dependencies - - - - - - - - Dependency Tree - - - - - - - - Used By - - - - - - - - Mailing Lists - - - - - - - - Metadata - <%-- TODO - - - - - - - - - Reports - - --%> - - -
    - -
    -

    Download

    - -
    - -

    ${v}

    -
    - - - - - - - Maven Plugin - - - - POM - - <%-- These types aren't usually set in the POM yet, so we fudge them for the well known ones --%> - - - Maven Archetype - - - - Maven Skin - - - - Java Sources - - - - JavaDoc Archive - - - - .NET Library - - <%-- TODO: other NPanday types, and move this code into the plugin somehow --%> - <%-- Must be last so that the above get picked up if possible --%> - - - - JAR - - - - JAR - - - - - ${a.type} - - - - - - - - - - -
    - - ${packageName}${a.size}
    -
    -
    -
    -
    - - <%-- TODO: perhaps using ajax? --%> - <%-- TODO: panels? this is ugly as is --%> -
    - - - <%@ include file="/WEB-INF/jsp/include/projectMetadata.jspf" %> - - - <%@ include file="/WEB-INF/jsp/include/artifactDependencies.jspf" %> - - - <%@ include file="/WEB-INF/jsp/include/dependencyTree.jspf" %> - - - <%@ include file="/WEB-INF/jsp/include/projectDependees.jspf" %> - - - <%@ include file="/WEB-INF/jsp/include/mailingLists.jspf" %> - - - <%@ include file="/WEB-INF/jsp/include/artifactReports.jspf" %> - - - <%@ include file="/WEB-INF/jsp/include/artifactInfo.jspf" %> - - - - - -
    - -
    -
    - -
    - -
    -
    -
    -
    - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp deleted file mode 100644 index 2299f9521..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%-- - ~ 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. - --%> - -<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> - -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - - - Upload Artifact - - - - -

    Upload Artifact

    - -
    - - - - - - <%@ include file="/WEB-INF/jsp/include/uploadForm.jspf" %> - - -
    - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/currentWWUrl.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/currentWWUrl.tag deleted file mode 100644 index d8cb7edd0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/currentWWUrl.tag +++ /dev/null @@ -1,60 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ taglib uri="/struts-tags" prefix="s" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ attribute name="action" %> -<%@ attribute name="namespace" %> -<%@ attribute name="linkId" required="false" %> -<%@ attribute name="url" %> -<%@ attribute name="useParams" required="false" %> - - - - - - - - - - - - - - - - - - - - - - - - ${text} - - - - - ${text} - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/displayUpdatePolicy.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/displayUpdatePolicy.tag deleted file mode 100644 index 702d74d76..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/displayUpdatePolicy.tag +++ /dev/null @@ -1,41 +0,0 @@ -<%-- - ~ 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. - --%> - -<%-- TODO: this could perhaps just be a i18n call --%> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ attribute name="policy" required="true" %> -<%@ attribute name="interval" %> - - - - Disabled - - - Updated every request - - - Updated hourly - - - Updated daily - - - Updated every ${interval} minutes - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactLink.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactLink.tag deleted file mode 100644 index 45398f696..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactLink.tag +++ /dev/null @@ -1,77 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ taglib prefix="archiva" uri="/WEB-INF/tld/web-tags.tld" %> - -<%@ attribute name="groupId" required="true" %> -<%@ attribute name="artifactId" %> -<%@ attribute name="version" %> -<%@ attribute name="classifier" %> -<%@ attribute name="scope" %> -<%@ attribute name="versions" type="java.util.List" %> -<%@ attribute name="repositoryId" %> - - - - - - - - - - - ${artifactId} - - | Version(s): - - - - - - - - - - - - ${version} - - - - - - - - - - - ${v} - , - - - - - | Scope: ${scope} - - - | Classifier: ${classifier} - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactTitle.tag b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactTitle.tag deleted file mode 100644 index bfcb5e4d0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tags/showArtifactTitle.tag +++ /dev/null @@ -1,46 +0,0 @@ -<%-- - ~ 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. - --%> - -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> -<%@ attribute name="groupId" required="true" %> -<%@ attribute name="artifactId" %> -<%@ attribute name="version" %> - - - - - - - - - - - - - - - - - - - - <%-- TODO: showing the name and description would be nice, but that would require loading the POMs --%> - ${artifactId} - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tld/web-tags.tld b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tld/web-tags.tld deleted file mode 100644 index 335c6325a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/tld/web-tags.tld +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - Archiva Taglib - 2.2.3 - archiva - /archiva-web-tag - - - copy-paste-snippet - org.apache.archiva.web.tags.CopyPasteSnippetTag - empty - - - object - true - true - - - - wrapper - false - true - - false - - - - dependency-tree - org.apache.archiva.web.tags.DependencyTreeTag - JSP - - - artifactId - true - true - - - - groupId - true - true - - - - modelVersion - false - true - - - - nodevar - false - true - - - - version - true - true - - false - - - - groupIdLink - org.apache.archiva.web.tags.GroupIdLinkTag - empty - - - includeTop - false - true - - - - var - true - true - - false - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 6e7157ea2..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - Apache Archiva - - - webwork-cleanup - org.apache.struts2.dispatcher.ActionContextCleanUp - - - - sitemesh - com.opensymphony.sitemesh.webapp.SiteMeshFilter - - - - struts2 - org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter - - - - encodingFilter - org.springframework.web.filter.CharacterEncodingFilter - - encoding - UTF-8 - - - forceEncoding - true - - - - - encodingFilter - /* - - - - - webwork-cleanup - /* - - - - sitemesh - /* - - - - struts2 - /* - - - - - org.springframework.web.context.ContextLoaderListener - - - - - - org.apache.archiva.web.startup.ArchivaStartup - - - - - net.sf.ehcache.constructs.web.ShutdownListener - - - - - org.apache.archiva.webdav.util.TemporaryGroupIndexSessionCleaner - - - - contextConfigLocation - - classpath*:META-INF/spring-context.xml - /WEB-INF/applicationContext.xml - - - - - RepositoryServlet - - org.apache.archiva.webdav.RepositoryServlet - - - 1 - - - - - RssFeedServlet - - org.apache.archiva.web.rss.RssFeedServlet - - - - - RssFeedServlet - /feeds/* - - - - RepositoryServlet - /repository/* - - - - - - jdbc/users - javax.sql.DataSource - Container - Shareable - - - mail/Session - javax.mail.Session - Container - Shareable - - - - CXFServlet - org.apache.cxf.transport.servlet.CXFServlet - 1 - - - - CXFServlet - /restServices/* - - - - index.jsp - - - - - 30 - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css deleted file mode 100644 index c380a626c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css +++ /dev/null @@ -1,205 +0,0 @@ -/* - * 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. - */ - -body { - margin: 0px; - padding: 0px; -} - -img { - border: none; -} - -table { - padding: 0px; - width: 100%; - margin-left: -2px; - margin-right: -2px; -} - -acronym { - cursor: help; - border-bottom: 1px dotted #feb; -} - -table.bodyTable th, table.bodyTable td { - padding: 2px 4px 2px 4px; - vertical-align: top; -} - -div.clear { - clear: both; - visibility: hidden; -} - -div.clear hr { - display: none; -} - -#bannerLeft, #bannerRight { - font-size: xx-large; - font-weight: bold; -} - -#bannerLeft img, #bannerRight img { - margin: 0px; -} - -.xleft, #bannerLeft img { - float: left; -} - -.xright, #bannerRight img { - float: right; -} - -.composite { -} - -#banner { - padding: 0px; -} - -#banner img { - border: none; -} - -#breadcrumbs { - padding: 3px 10px 3px 10px; -} - -#leftColumn { - width: 170px; - float: left; - overflow: auto; -} - -#bodyColumn { - margin-right: 1.5em; - margin-left: 197px; - min-height: 575px -} - -#legend { - padding: 8px 0 8px 0; -} - -#navcolumn { - padding: 8px 4px 0 8px; -} - -#navcolumn h5 { - margin: 0; - padding: 0; - font-size: small; -} - -#navcolumn ul { - margin: 0; - padding: 0; - font-size: small; -} - -#navcolumn li { - list-style-type: none; - background-image: none; - background-repeat: no-repeat; - background-position: 0 0.4em; - padding-left: 16px; - list-style-position: outside; - line-height: 1.2em; - font-size: smaller; -} - -#navcolumn li.expanded { - background-image: url( ../images/expanded.gif ); -} - -#navcolumn li.collapsed { - background-image: url( ../images/collapsed.gif ); -} - -#poweredBy { - text-align: center; -} - -#navcolumn img { - margin-top: 10px; - margin-bottom: 3px; -} - -#poweredBy img { - display: block; - margin: 20px 0 20px 17px; - border: 1px solid black; - width: 90px; - height: 30px; -} - -#search img { - margin: 0px; - display: block; -} - -#search #q, #search #btnG { - border: 1px solid #999; - margin-bottom: 10px; -} - -#search form { - margin: 0px; -} - -#lastPublished { - font-size: x-small; -} - -.navSection { - margin-bottom: 2px; - padding: 8px; -} - -.navSectionHead { - font-weight: bold; - font-size: x-small; -} - -.section { - padding: 4px; -} - -#footer { - padding: 3px 10px 3px 10px; - font-size: x-small; -} - -#breadcrumbs { - font-size: x-small; - margin: 0pt; -} - -.source { - padding: 12px; - margin: 1em 7px 1em 7px; -} - -.source pre { - margin: 0px; - padding: 0px; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css deleted file mode 100644 index ea4e414f5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css +++ /dev/null @@ -1,350 +0,0 @@ -/* - * 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. - */ - -body { - padding: 0 0 10px 0; -} - -body, td, th, select, input, li { - font-family: Verdana, Helvetica, Arial, sans-serif; - font-size: 9pt; -} - -select, input { - font-size: 0.9em; - border: 1px solid #AAAAAA; -} - -select { - padding-left: 3px; - height: auto; - width: auto; -} - -input { - padding: 2px; -} - -label .required { - color: red; - font-weight: bold; -} - -th { - text-align: right; - padding-right: 1em; - font-size: x-small; - vertical-align: top; -} - -.infoTable th { - width: 15em; -} - -#contentBox h1 { - background-image: url( ../images/arrow.gif ); - background-repeat: no-repeat; - background-position: left bottom; - border-bottom: 1px solid #DFDEDE; - padding: 0 0 1px 23px; - margin-bottom: 0.5em; - color: #333; - voice-family: inherit; - font-size: medium !important; -} - -#contentBox h2 { - border-bottom: 1px solid #DFDEDE; - padding: 0 0 1px 0; - margin-bottom: 0.5em; - color: #333; - voice-family: inherit; - font-size: small !important; -} - -#contentBox h3 { - border-bottom: 1px solid #DFDEDE; - padding: 0 0 1px 0; - margin-bottom: 0.5em; - color: #333; - voice-family: inherit; - font-size: small !important; - margin-left: 2em; -} - -table { - width: auto; -} - -code { - font-family: Courier, monospace; - font-size: 13px; -} - -#legend li.externalLink { - background: url( ../images/external.png ) left top no-repeat; - padding-left: 18px; -} - -a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover { - background: url( ../images/external.png ) right center no-repeat; - padding-right: 18px; -} - -#legend li.newWindow { - background: url( ../images/newwindow.png ) left top no-repeat; - padding-left: 18px; -} - -a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover { - background: url( ../images/newwindow.png ) right center no-repeat; - padding-right: 18px; -} - -p { - line-height: 1.3em; - font-size: small; -} - -#breadcrumbs { - background-image: url(../images/breadcrumbs.jpg); - padding: 2px 8px; -} - -#navcolumn h5 { - color: gray; - font-weight: bold; - font-size: 11px; - padding: 10px 0 1px 19px; -} - -.source { - border: 1px solid #999; -} - -#companyLogo { - display: block; - margin-left: auto; - margin-right: auto; - text-align: center; -} - -dl { - padding: 4px 4px 4px 6px; - border: 1px solid #aaa; - background-color: #ffc; -} - -dt { - color: #900; -} - -#organizationLogo img, #projectLogo img, #projectLogo span { - margin: 8px; -} - -#banner { - border-bottom: 1px solid #fff; - padding: 8px; -} - -#breadcrumbs a:link { - text-decoration: none; -} - -#breadcrumbs a:visited { - text-decoration: none; - color: #333 -} - -#breadcrumbs a:hover { - text-decoration: none; - color: white -} - -.errormark, .warningmark, .donemark, .infomark { - background: url( ../images/icon_error_sml.gif ) no-repeat; -} - -.warningmark { - background-image: url( ../images/icon_warning_sml.gif ); -} - -.donemark { - background-image: url( ../images/icon_success_sml.gif ); -} - -.infomark { - background-image: url( ../images/icon_info_sml.gif ); -} - -.booleanIcon { - padding-left: 20px; - height: 20px; -} - -pre.pom { - font-size: 0.9em; - border: 1px solid #ddddff; - background-color: #f8f8ff; - padding: 5px; -} - -pre.pom code { - font-size: 0.9em; -} - -#leftColumn { - padding: 4px 4px 4px 4px; - overflow: hidden; -} - -#navcolumn { - padding: 6px 0 0 2px; -} - -#navcolumn li { - font-size: 9px; - text-indent: 19px; - line-height: 24px; - height: 25px; - width: 161px; - background-image: url( ../images/super.gif ); - background-position: 0 0; - background-repeat: no-repeat; - display: block; - padding-left: 0; -} - -#navcolumn li li { - padding-left: 16px; - background: none; - display: block; -} - -#navcolumn li li a:hover { - color: black !important; - background: none; - display: block; -} - -#navcolumn li li a:active { - color: red !important; - background: none; - display: block; -} - -#navcolumn li.collapsed { - background-image: url( ../images/super.gif ); -} - -#navcolumn li.expanded { - background-image: url( ../images/super.gif ); - height: inherit; -} - -#navcolumn li a:link { - color: #666; - display: block; -} - -#navcolumn li a:hover { - color: #fff !important; - background: url( ../images/super_hl.gif ) 0 -25px no-repeat; - display: block; -} - -#navcolumn li a:active { - color: #fff !important; - background: url( ../images/super_hl.gif ) 0 -50px no-repeat; - display: block; -} - -#navcolumn li a:visited { - color: #666; - display: block; -} - -#navcolumn li ul li { - color: #333 !important; - text-indent: 30px !important; - line-height: 20px !important; - height: 20px !important; - background-image: url( ../images/supersub.gif ) !important; - font-size: 9px; - width: 161px; - background-repeat: no-repeat; - display: block; - padding-left: 0; -} - -#navcolumn li ul li a:hover { - color: #fff !important; - background: url( ../images/super_hl_sub.gif ) 0 -20px no-repeat; - background-position: right; - width: 161px; - display: block; -} - -#footer { - border-top: 1px solid #CCCCCC; - padding: 14px 4px 12px 4px; - color: #333333; - margin-top: 2em; -} - -a:link, a:visited { - color: #333; -} - -#navcolumn a { - text-decoration: none; -} - -a:active, a:hover { - color: #f30; -} - -blockquote { - border-left: 1px solid #DFDEDE; - padding-left: 1em; -} - -.missing { - background-color: red; - color: white; - font-weight: bold; - padding: 4px; - margin-left: 20px; - margin-right: 20px; - -} - -#searchBox { - margin: 5%; -} - -#searchHint { - margin: 5%; -} - -#topSearchBox { - float: right; - padding: 2px 8px; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index 5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_75_ffffff_40x100.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_flat_75_ffffff_40x100.png deleted file mode 100644 index ac8b229af950c29356abf64a6c4aa894575445f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_55_fbf9ee_1x400.png deleted file mode 100644 index ad3d6346e00f246102f72f2e026ed0491988b394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_65_ffffff_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100755 index 42ccba269b6e91bef12ad0fa18be651b5ef0ee68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_dadada_1x400.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 5a46b47cb16631068aee9e0bd61269fc4e95e5cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png deleted file mode 100644 index 7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_2e83ff_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 45e8928e5284adacea3f9ec07b9b50667d2ac65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_454545_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_454545_256x240.png deleted file mode 100644 index 7ec70d11bfb2f77374dfd00ef61ba0c3647b5a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 k*Kv;w;*%(i9W@fAqs5i2wiq diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_888888_256x240.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/images/ui-icons_888888_256x240.png deleted file mode 100644 index 5ba708c39172a69e069136bd1309c4322c61f571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/jquery.ui-1.8.14.theme.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/jquery.ui-1.8.14.theme.css deleted file mode 100644 index c029f4495..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/no-theme/jquery.ui-1.8.14.theme.css +++ /dev/null @@ -1,247 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/ - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } -.ui-widget-content a { color: #222222/*{fcContent}*/; } -.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } -.ui-widget-header a { color: #222222/*{fcHeader}*/; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } -.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } - -/* Overlays */ -.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/print.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/print.css deleted file mode 100644 index 7f9db33dc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/print.css +++ /dev/null @@ -1,27 +0,0 @@ -/* - * 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. - */ - -#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { - display: none !important; -} - -#bodyColumn, body.docs div.docs { - margin: 0 !important; - border: none !important -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css deleted file mode 100644 index faac56bd5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css +++ /dev/null @@ -1,399 +0,0 @@ -/* - * 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. - */ - -#download { - float: right; -} - -#download a { - text-decoration: none; -} - -#download td.type { - padding-right: 1em; - white-space: nowrap; -} - -#download td.size { - text-align: right; -} - -#contentArea { - /* margin-right: 15em; */ - padding: 1em; -} - -#tabs b { - border: 1px #DFDEDE solid; - padding-left: 1em; - padding-right: 1em; -} - -#tabs a { - border: 1px #DFDEDE solid; - padding-left: 1em; - padding-right: 1em; - text-decoration: none; -} - -#tabArea { - border-top: 1px solid #DFDEDE; - padding: 1em; -} - -#searchTypes { - text-align: right; - font-size: xx-small; -} - -.statusFailed { - color: red; - font-weight: bold; -} - -/* WebWork validation failures */ -.errorMessage { - color: red; - font-weight: bold; -} - -.actionMessage { - font-size: 1.0em; - font-weight: bold; - color: blue; -} - -.errorBullet { - list-style-image: url( "../images/icon_error_sml.gif" ); -} - -.warningBullet { - list-style-image: url( "../images/icon_warning_sml.gif" ); -} - -.infoBullet { - list-style-image: url( "../images/icon_info_sml.gif" ); -} - -.artifact-link { - font-size: x-small; - padding-left: 5em; -} - -.artifact-title { - -} - -ul.dependencyTree { - margin-left: 50px; -} - -ul.dependencyTree span.artifact-link { - padding-left: 0px; -} - -.eXtremeTable tr.filter { - padding: 1px; -} - -.eXtremeTable .tableRegion,.eXtremeTable .statusBar { - width: 100%; -} - -.eXtremeTable .tableRegion .tableHeader { - background-color: None; - background-image: url(../images/breadcrumbs.jpg); - color: gray; -} - -.eXtremeTable .tableRegion .tableHeaderSort { - background-color: #FFBF5F; -} - -.eXtremeTable .compactToolbar td { - white-space: nowrap; -} - -.tools { - border-color: gray !important; -} - -table.tools th.toolHeading -{ - color: gray; -} - -.tools .toolHeading { - padding: 0px 3px 0px 3px; - margin: 0px !important; - font-size: 11px !important; - background-color: red; - background-image: url(../images/breadcrumbs.jpg); -} - -div.repository h3 { - border-bottom: 0px !important; - padding-left: 15px !important; -} - -div.repository { - border-bottom: 1px solid #DFDEDE; -} - -div.proxyConfig, -div.repoGroup { - border: 1px dashed #DFDEDE; - margin-bottom: 15px; - padding: 5px; -} - -div.proxyConfig div.managedRepo, -div.proxyConfig div.remoteRepo, -div.repoGroup div.managedRepo { - border: 1px dotted gray; - padding: 5px; - background-color: white; -} - -div.proxyConfig div.remoteRepo { - margin: 5px; -} - -div.proxyConfig div.managedRepo img, -div.proxyConfig div.remoteRepo img, -div.repoGroup div.managedRepo img { - float: left; - border: 0px; -} - -div.proxyConfig div.managedRepo p, -div.proxyConfig div.remoteRepo p { - margin: 0px; - margin-left: 40px; - padding: 0px; -} - -div.repoGroup div.managedRepo p { - margin: 8px; - margin-left: 40px; - padding: 0px; -} - -div.proxyConfig div.managedRepo p.id, -div.proxyConfig div.remoteRepo p.id, -div.repoGroup div.managedRepo p.id { - font-family: monospace; -} - -div.proxyConfig div.connector, -div.repoGroup div.connector { - border: 1px solid #aaaaff; - margin-top: 10px; - margin-left: 40px !important; -} - -div.proxyConfig a.expand { - font-size: 7pt; - color: gray; -} - -div.proxyConfig div.controls, -div.repoGroup div.controls { - float: right; -} - -div.proxyConfig div.connector h4, -div.repoGroup div.connector h4 { - padding: 3px; - font-size: 8pt; - margin: 0px; -} - -div.proxyConfig div.connector table.settings { - border: 0px; - background-color: transparent; - font-size: 8pt; - margin-left: 10px; -} - -div.proxyConfig div.connector table.settings th, -div.proxyConfig div.connector table.settings td { - font-size: 8pt; -} - -div.proxyConfig div.connector table.settings table.policies { - border: 1px dotted gray; -} - -div.proxyConfig div.connector table p { - margin: 0px; - padding: 0px; -} - -div.repoGroup div.repos { - text-align: right; - padding: 4px 0px 0px 0px; -} - -div.admin div.dark, -div.admin div.lite { - border: 1px solid #aaaaaa; - font-size: 11pt; - margin-left: 15px; - margin-right: 15px; - margin-bottom: 5px; - padding: 5px; -} - -div.admin div.lite { - background-color: white; -} - -div.admin div.dark { - background-color: #eeeeee; -} - -div.admin div.controls { - float: right; - font-size: 8pt !important; -} - -div.admin div.filetype table { - margin-left: 25px; - border: 1px solid gray; -} - -div.filetype table td.controls { - width: 5%; -} - -div.filetype table td.odd, -div.admin table.consumers td.odd { - background-color: #dddddd; -} - -div.filetype table td.even, -div.admin table.consumers td.even { - background-color: white; -} - -div.admin table.consumers { - margin-left: 15px; - border: 1px solid gray; -} - -div.admin table.consumers th { - font-size: 1.0em; - background-color: #cccccc; - text-align: left; -} - -div.admin table.consumers td strong { - font-size: 0.8em; -} - -div.warningbox { - margin: 20px 40px 20px 40px; - border: 1px solid #CC0000; - background-color: #FFCCCC; - color: #000000; - font-size: 15pt; - padding: 20px; -} - -div.infobox { - margin: 20px 40px 20px 40px; - border: 1px solid #0000CC; - background-color: #EEEEFF; - font-size: 9pt; - padding: 20px; -} - -div.buttons { - text-align: center; -} - -div.versions { - border: 1px dashed #DFDEDE; - margin-bottom: 15px; - padding: 5px; -} - -div.versions a.expand { - font-size: 7pt; - color: gray; -} - -#messages { - background-color: yellow; - border: 1px solid orange; - margin-top: 2em; -} - -#messages ul { - list-style-image: url(../images/icon_warning_sml.gif) -} - -#messagesinfo { - background-color: yellow; - border: 1px solid orange; - margin-top: 2em; -} - -#messagesinfo ul { - list-style-image: url(../images/icon_success_sml.gif) -} - -table.auditlogs { - text-align: center; - font-family: Verdana, Geneva, Arial, Helvetica, sans-serif ; - font-weight: normal; - font-size: 11px; - color: #fff; - width: 100%; - background-color: #666; - border: 0px; - border-collapse: collapse; - border-spacing: 0px; -} - -table.auditlogs th { - background-color: #666; - color: #fff; - padding: 4px; - text-align: center; - border-bottom: 2px #fff solid; - font-size: 12px; - font-weight: bold; -} - -table.auditlogs td { - background-color: #CCC; - color: #000; - padding: 4px; - text-align: center; - border: 1px #fff solid; -} - -div.auditLogReportResults { - border: 1px dashed #DFDEDE; - margin-bottom: 15px; - margin-left: 2px; - padding: 5px; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/favicon.ico b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/favicon.ico deleted file mode 100644 index 06714d34afa666e558fb7acad09cfc02891cf5a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3638 zcmeHJdsvOx9)6c1skFhAk&zK1A|h~4`V8xjSHs!a2~90J_-vIU>`Mif z3o9W!Uk8m=54}!{VUbc))V9KYu>{91HbARygR)VF#PoU$St`M`2T!r)a1}NrE7AN+ zhlfwp5Q{|!->X36zDh(NsKV-`DjdF0kJ=_JLcgd$>eWVA%`b(HV)jg<$DnWt9G6H? z-JnHfofhRatthK*g{VS<^)zl%i=O7xLQa0Mq7{p2><=ims}5Ds+|}4{Liy5p{O%)y4A=cV~x2y86b|7j));Ca@b#+XL=InTx#lktkg@$9JR$4E_0g`b}vG7Fj! zL;U98;DETeIAF#@$Ye6)A&O zbfjEqRF`%4<^a z?h1TD`lZwB@l?%efd(13Rq&6KBWk|_n@=lwZkG|a+bk532B|SHObpj3DX&%I*T^t& zoeZZgH)6rga$b*?Bq$Jluo7#D=S?Z@;z|vyXwH~p)v&OzfTg7+G_885)oRioJ-Yck zg1LVwO3O9q6D;EOY3wQ)&RuK5nX65tVfC0pd*F0#1!^h~GIL93&S==}&aq){e5 zB~XwKnfjK(Vs0rc>6|2_rvlouAV37``63j_)UXW{pE*>c%^0;( ziVFoQjEKA}`7xd6x+7JHIZA7yJFce~ z>iD(kDc)^pB|TPi`=m4LM(g9W)YP{GJt!vT{w2INa&HQ0CEY91Rtd$)no4Vm755gf zp|#pl%pcKRwxj>Rj$+e?)?P^WZUCLZz{TQUb@&3E*?GEe?sOKD=&q&Ed7P%qy%Bur zt>GV6j=6N7xOW1l=bRpYPX9{;oz+s({K$O@ETi~F?WY*i|FDwcyoT=Gf1P+X`p2Ia zdFsWM|2`h~Zm`!y#@>0)wnv9Se(S&36)r>Bn29iX?PWY<5Mx0m7;^vz5&&@fog`OoBko}0TwuyfBb9>28w@X3=$a$`-Em-+sTc_a*%uYa&> zA(>x{Wh|ucuFwyb%`U&eHE*Ba@8jzmX}bebSCg;zf^XjDFfO&@Z{1$RseDHA()*10 zZ@gZ*hDV>{e;jyp3poa-#N4ULr1Igo3!TnyIOAJ$(FS$-TRK30j%h87C_%<4R!(Tk-hNpX1vx zu4rFB)w0iR=t{l*{-tEzEAbA_4%OfKcW`#7(jWCt)4$?}SZeV9$lSW<-O=_7wo!dN diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep-logo.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep-logo.png deleted file mode 100644 index cbaf680a537148d519e015cff311d781f09d6daa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13065 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/19Sep.png deleted file mode 100644 index e311868befe6ec99f2cc996bb50135fe8abef23a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109893 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�|(@$ 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%0A19o!TTlck&hS~dIf7PwB_ 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

    r8koW+Db(h zLf=GBbB!vei?n}XHf?%%>*%--?DfJ@!c?H^?>}nl@7ZQ+0x~}c>V#r^01!8|)OnN= zVsi8Zqtv%Sa&)tMJ^;^UeJ!=(1%Fr!%@mgErOde)6uNvLg`m`l#4ldFs8QroQ&V#H zN$DOS@`G&-;f2^@BOsW@N`kQhUY-mKqq&;P74uwJs`*msZEA8DIxfQ)(u|*=&4gaw zt^$v%!v0cC(i*4aD_|k?k}rAo0|Jo~fzzJ6#jG_cmmZ8oivmT?YEO)gM;0c~8$(Sy)JE`~`{E;mNca?fpWepha)Cp#F^Er}gV}k0eqIa@562Iq>7KC-@1PH?_5Dyh^Ay1h%{X4V{H!5* z8kIS9$3<*+b}FPa=kKqZ!<6Z56?Ix}X!P@gr^67OgOoB* zhdyp5XCn4*LSvdX&KIY{f{skmh;CDMSzB9+5By9)9m{aAY7_HDQr*E|P#ce4-01j) z=Xc(L6g#Nz&d$A>O}AM)ZmNq38hd?e z1R-VLR01X$#-u44+3R6Lxs|P;6|fL`89r#~AHne<1$;C3o_KvWk`>iX#WEiB7Dx7bb8|C94^3DH z2M`f8uVV+Vn|XjEbxpf?+L|+}S~wimD07}=c>nv~pB2)U+cMn*O1#@q4_yL?he{Nu z+&G6!@>6(cWaUM=6((n@q2YE-FC-8cSGuA5WL_&4%+6lLCiPM}_Bxf`eum@kfXr!@ zW9W=De_eT(O$PXTlwAWNS0`;!(JHEp z6|fL`nLKA8^7mmXzk`EePMKDKl;<6H?9a(TjMC8-&(PZ(KZH8G4pug`%r_G-QruoQ z56m0dhkj6vet0Fj3VU|C8#K?aEooWrmeMnj|0n-!}(gEg(BDi%U7gQpE#PAzt5 z)`;IUn~v8@yYl{$DBhTjznRJy97EPhri_{jXyquY&1hYLEID^={%aePd3eEldtp@s z5aljFZGMpOVU&erUU5d9XI_bMXPjW0HzDDyt5 zASYPrGBh{u6npl##jRUQc+bd8D-6(S)AaNY!C@IrCnwk0>purFr=f`j)(R*qU?Fs6 zIZB@aGN;k_9XM>p(W&^>)pe+-GCJd!TOm&!1HXSJek&Id0&~+M^!QyQ5;TE>Zxhj@ z6-nF&eBwjPOJWZC&Ee&!SU`XrMz&o<_|KTm8ZrQ40-cR-2cjm_)m3YX+O=T)14oO7 znrdMK;^y@RAn{VfmygY4Cr@c~Uhs)o9d6nc z*y3Nf@_jBq<}S>R?xm9CvP%LmAVgXk@JlU0*FMw2QG#oU#bEOol@IZI1*RBn&XHQN=x4#7H&HSk~Sv2_s-{^Ojy~u-J1v!5m>~LvZNEx}_@3m_~kdqJUS+g_cD$U|3R5eXZEuPy z1?Vr_f+DWK8Z!R_43UJ)+gtnLBicgd#aezwV55Se3@_eDNhQhEwse{%e0vcPrO-h4 zuI%@@9+&vh-d6EcS4+u|Iqzi%u5)EOa{BWB)DZm41JS303xSYw+3o69@`cLK+^xO6 z&#XHyz7t8xv1S#mGHV6Wtw8#%Yr2-!wRKkjzfl^o5}9j;L~?_Uj(tEjB-$+~<_dV+ z-JsG(;#4}7wMH!}T^#Rh5ub(s_~`{WrwK1ZA?%izUtSh-AkRaf&UHKWRL_R4UFptM z_YUWE)CvbY+-)RKlwbsMWxg;rE1p9j95V%Wo4x2 z5s$nF(Y{I%^0J&4oUCYX1CL~uIH}sjoNugk_Rr~4j- z);*N~%_8rey{^j687G09oniq4y>xZ%7lT938i)8@d^7$YtoQXKBF1)B-dch93Ro=n z_)-)ukqVjD)!9T}-w_L$7jCID>dE8j0Rl=OEy{<_BV?%ssaJr=o-SSKlbv?tMEb2b zGryipI(4tby<#&7`Kph221Vz24n$w+k+j3NCykxsg_%vAW7HpjrFrxF87S;4@68aP8!Fnfz;K|NNowv31 zmuxX83TkWHZ5)q^aqY%JD{rkprYm3}^h{T3oq9m#v@@rco1y^6T{tOo3z@I8fJMGc z*(Kvy%RujOlO~E(avdwZc~$_Tegzy3PqLN6>r_r70wKJ?{~c(5F?UiJMXBi z?XJ?_n6}Bh$86jk_@-E9Y-THCm8D$)BbO>|W$R+{3atI`ejitEldn>neOLF9ilodL zd}4OiuOaeCL}hDF2S!D2?=j(Ys)$uyyJDty?%XHl=1yV=N>yVHR8INA;;~MPDAE>W z6aTvzjfIERZ=trPUej2oiRj44X}vh<%y7F64Ywzim!g2r!=%~~n2x*8SJQ{!TA@Go$j(9Fb)$Xs8GnHis+ zEcuyAPhPJ|jnT1)58lEo*xV}+fIoQ|Yz?tZ8aIz_cc*+Qp6158qkV5YzY&SHwgIzY zTR|*X-)FOxvC2}efc3(pT$=SS;0O2HsP#L>nxqJtn_G>=TQVPwE{iEdkb2{dr-jdd z!RRo<^qy@tg_&Vmr^#tR1U$DzIjXQy_kz$g1%?zu67M5?y9a%sIz#z_du(> zPQM&K({o!jJh*KnaFgkFCpnpVKju_96v0M5fGsq(h0t?+m_X+L3QdzVQmJ@V5gy>c zv7VkLMSeo~5e{-`DdBA^-ICHYh#Kb`3XomiamPNeV-p{EMhbfr^7M=&j;!4P9hTg2 zep37&Zv>L;oHz6yD{Sy7c!Z-5dL8U`m!8zln(3lPri80Bg*0yN$^pDP?o!^zwK;j# zM0({gMQaY5Ua4eQ=ka8Z@n5~+V_Jhk8Obvv{wvN>OgV7fF`H49(k%5w2FtVa|6F=*I z!{Y^3qUb9?7p@cFuIOO1r4N5v1tDhN-%|v(HSIC}0lthnLicIDC0z`96%CZba4dgt^TZaJ*cSEKmn%Yj8@5SOb>$#162jvc*b z)BSC;LaWSL0pki-2;I0MDe^$(AHpS4=L&Ro+`Z*(&97Y>6q8d!%6+e8i2MFCB1BE% z%pFbZT6z4`)pZ}VjmvwpL-}QQ_hD>05=wGZup(0Tr|~2=pCZO68Kz%=f?WiZqXorZ zfgix*pA5~-s>@gTTDhmG+hKHBi#a>-{h>VF0&4}*u7HKm(=Jc!B7RJin|I(aD8Y3J zR|@;q47%MERjA26IcbW_p%N~B1Z4h8tPj^^Cl2L(YHjV`Fozx4E-oE>^z=NCgw+52 za3H0PdI;e~Qvv1ak5g;jg7sGb%g9J*Gw`pTEey>rXbOpXJG;GQ({Hd_Tf6n!k-;^R%6=o(W(YG^GJ{8cnh`hLu!@Td5&PVIGf|6jl%FX3@8q>~ZBK3n}Wb{Q`irqW^pYY9zYoH>(+|d%()aQ-MK+1|* z^TA-kjps{~A<>37;yukaxvG_3TY(b@X)4Dl9|ZfHqKt3#Hsk$C|9K*HF1MvK8JC-k zwDeH3x+vkAC#r2CTr(gd^b z8M)9(TPq;1fWjh`FIZ^}S1KHDNo9}wlYjj4hs|4trS-NL`UXp_fJoG3E?v` z)YP@xo7XOHzLT@rBl`OvLQoI8GWpkmY(6=dV8Pc_)hO3jf%!W-_v7CA-A%xgz8NjT zSE9s9aRsQIPOAVT_+f(fd6@sL2T9bqrx%+5;=R;hTO1e8&DWhA1MWO->CP zZ}Aoiek`;6K%MjJ`C+*txfjMTrSkR7lBP_(zyFaW7qJ1z#y<@f{1+!?gpopDUJhvp zrKjs4&WSzF0{HfifUUfmM^rabq7RP+#TUo1IoKk~c1G=V`Q2bNw2J|ioi1O$glk6X zoQ`8sK@C{xjSFWq#4MD+si|5dm)AxE!nyD)ka{TjVu4G@-D-9wDfcn7s`5Q5@UT{Q zn|uYfZSwgSZTf4h_TQEV;77UxtoEcYxm;-rq_4j{in}1AS%IGcnH$LyH)<&FP<#6> z#fP@i!zRnn7dRus(IZ|U0QRf|WDOf(VPRh5+|rHa3bnSUcG2wqfH1ln);R!FkB`XM$oOEO8N{3+U^Nn6n=jtLtzB z+6Q0%*t9Tpsj#Kp_{x2K<3oiZZ}?{tI+!T24nG-%2Rg!&O0jd z!VMCUQxPr>SR#relnoDA)E-ZNyv|lgkW%XG+y@Q#LuM>c)rX_$5wz?{DwATZKn&52k@(a*GFv4kn zSditD7>o$r0&4|KSHME(rpqE)P^<`0$!gzfL05>pdB_k9 z`po>Zzb&)c*Xq-ZhDbdQZg(F(i1F-}N)SQs9(V%!0V`%Z8 zoy;nh+owv;nb^C(;#ZZ)QnfA1a^T{Zr&JC{mva?AxM?xqNg#R7eK5En$lcI^X}af? zVVB1)96+!Qi-W?xI3{e-2~iWhh9dyPdp?OWC!)TqzgI)zazAEizRs-Q*`cz(sVr9t zd3sY*hjCgqY^IfOld*!8uiO<-*rk=b42e6(kA-VO*|`Ecw}6S-!a_*Q&rgd`=sL8q zXXA*Q+QFo(sin>91|Y_tmCM%F$Ss$}`skF4$|_xjjmtJcBw`aQpu%#2s_JS`>-S=< zI>ptiuZy`k<65b^8E$TR?l>d{hfl`WnuO(}2;%a8^*0M!waQ9PHK#y0W=bVrCyJwn z__zC9a`C1}Q#P(r=RlfGv8lsqO}HJfOP6r=v-*8v?Y?5L?RTNR*B%sN8Ak@-1-0D) z1f4Ckw|YcyW)8od#Kh{CuZWfU;&P>EnxN0t|i1j|R2claZ8o2h{m3Lo>6_iIr22Xt`5cTGmp^uu+Tdj254bju7-$KKfoG=pE+(MM ziDi)XLfoUs2%YyiIvWvJZ!RTqH~Kt@e%4DhIh%4q=6b(9U0!kVwIMw#>Q;OrTx5h! z_CI4G7=D)w-F!Vh5i4P>z}gB}2wi#=KzS08(+n#Pn@MXs8eP_uwfBt0Dc37Sni|OUFiEm4`_c@zDypM%+F^?fib!pbSg;L1 z$w}GArD-3#WVbstik(zDLE{2oe4#lgSw#PERDyIvZA2`4n#AaIVksF+grQm=>ul88 zru!FMOs3HF`Y%8^tgq#RqIw;hZM}Z3=O_>{eb?LY#c$e> zsbt5E<4Tp{b1L@%QnYMt?l2Z=$4{q6e$EQdYo1=<1UuGFR55y}hrjeUUH1 z#4H%Rf@2&McEP!DBn_2L@geyD$`r3~^qsw){ja*rMaW_A(y$CfPW$34H!_rm+E)Ey z-gXdP!N{OVK#Wx%LBRqLHj(s_hNQ(U>Ip{hK_}7=jUu zS0yh65EWU-isOcu*7nEBZds_v#u(ny(<5fiU((Lk0d3+&P+0bwD&c@kcs#VI$TJO% z7eNJR9^s^Nmz36$ZuiDg=QXQg(Xen1$Tn!4T0GB>d2Ma2h+^#`k%(BuhhG6u(@r=J ziB<#iLgGTox++Sfof=6i?K8;G(u@{RvM&{eYIWOdg}1?+)Ffpr%bV@CDsiBzQJfx1 z>E}I)c{EdIg;4Lh}kjw?R*&5I}B} z4As%FSgMvw3ZEw1-2tWCPzalc1aJpuA@sz0SShT4h0qhP!EYm3mBuZ5DYQUbXh9Z_)alma8V{qbe)<8L})gsv$ z2W)z{J}vPAB>17(Nd1DE)mb?Ec+nsukIk^9xk=5)n z^u=1M`vlr~94cZpc0*fo84C3~Hgcl4@hb&1HSI7W^xxp`5&Lb!ot9!Y))?iw0v1BY zlfe&z>!3t4B6Uvpi{${+NcZ_J8Gq18QzMPX4_#|Rt!TfkPB?0n{Yg@Ny`Z}VAIF+) z;w<8L8{k7&n_7G{bRjOO0>xBqdm1w?Lth2Y)@2#iw94Q#%FX1RP*5-4SC78 z}y@SO`7# z{C^84g?23mo9g-5Y2lxI4cgR6h&KM#5{b7q*+d5rc{^CQwaQ(@tF4>pcHjfp>M&C3 zMBbf1>VE^IehX>nBPW3DM`ufM<%fyU)D&ggj)k)*R1q;Xkv(pYS~*Rw$>9{c@7g8a zxI6}=ZlJcXmbNOe>cRf41Cp)=m0yPiw$;^WWi?=N6G_{Eq`67R6o|;ae1C`d{8^Cd zYd~i)55qmIF(^r3VMVW^on6itW!l^36g}-wv|AI(lT3T*dKgr?IqP2OB!djK%IOG4 z22#{R2vXydRM4LXXW%-%$=|GnG@x5(&HtqQ{{T}fSI1!^$VbSMximx0@ zPu1(4*`aJFLs<6qCSS-h9f8803{eDbDFxVVh(L$m8!b{KxDDyBl(&)}iw_~=#X9{2 zXDZ^v!3kf}g<@sKJIyd*Umi(v7}5{VUoD`zvxT}^8~nC+iA#gSifsK(co1v#WWG7b zW?WL4L6~8k8JvnYBOCkC@mcX)w<}&|WVySsdDG#uyW8Rjon?ih(j#!KdcrrO52KyC zu-Q8V-Kp$ufmRO1DE?nsxR zbp31<+EEcsw;QM4!~&E?Q*mw9?=e<`vUwSzRm!JBzEs#W_KOUwy0qk%`~8>5+>i^b zbY-tV#Upe)e)9d4fCscYH_FON@tV-=Y<&Ez(L_ZV+KUhRK(ie(@f=BUrMKh^W$Gbl zY>%$VXV+>pqW0=)N--WUhC@5B(i*I&x(q@xgpM z5G)!(=eUo6Z5~=!78l2Z%xW+SIrGVhggIMaL1poJu!+-wN@cz9$TG4fDk&6|{vZ7F zagBD4r758u>d<%)Zg7GQ?s8)zGObTToPknaDun(;IE9gA@Z69b0vkOSpzgyGD1H7; zmY~$Q3~Dt3<-90j*RL!`#WGagZ@~&-8P}Ge>26ef^k1D8z1_KQ)MubI9||S77F3|j z)`vkZ_pP@fLZ6vQyq_qiNX(L>>kDL^Eu}cT14LF5R6(xVE9Hxyqymr6_X8-qjhYUI z&AGU<$qsp?T{tt8i<@?oVc~(+2JtRFj#Hq%BydS-js53v7KeJ3$1zLStX@@=;2aM6 z-Ohh59*-MQ<^q})JjbQI@d7BjxHh%fWb!O~=5Pm)IyO*KbMc;Z*QT^lpO@U8)`3;s zXrOG54Yb7(Iy=y)bT52>=cw`Shlv`s*kzy+noLn2zH7TUH#UoPim}nBF-NvD%F^i( z&L^w%qtmCrGMB{@>mljL(u!DK1_C!h(DEEJNe6;Kh+|qZa`|fPZ)|Yi`K6zqTOiNr5BJ}_fS$rn2sRVV*FSrb((tALqk4jYfh3gCA zn3wvCSpqheCk(DtDW|{3poC_J!r%VxX7Qp#rC)%Y+}o9q-!q^Lqov8v+in+2p*b-$ zgH02Z5Ti>`v6QDWqTGKb={K+V#P0rGS=pp>({Xv^t@uVy8waxUMK~lXC8Us}H((AH zLNDcmDC4mxKdxjTGFLV=Ey=+Uin2bW%E#V(S&WRHHbv&0U`>9R8oln)B6Iy_>FeW2 zYm=T$IyW`7CzX}1Kt^*=^@Tn`p}=lWu(a7{L{&m6)G$gv)aL%~pY@1#IwqIENZsBB zWr^v)w3wQPvgEZX;RCrg?(>Q67O4@E7vBkk4NV=!?BGR2aAUl89mo;*>Vcg}n+RUt z-|N<^Y3JeKf(T1-+PN{1x&qstKGzq(g$jt7**SzHT_`d#$JVFXE>>~KzzxLU563il zx?G+rO}YE!q2ahJUauFf8OS*%fZj*eXWSCq4jVvm@?^MXWh-n26l7Lm_s-i@ejS?D zb_v+Xv$NO4l`H2F=`8W_)YsmHFW-K!yo)6x*T>1^>}jYLd!Uj1x~e3nHFcI?ol?(H zMc~vtc92df093<#Plgp$ge_l6nJj(IX$(W2W?{=0f>2?z~cKwDpv z{o-BN-MT91Rdf!ADJ+G==y=HVQVZ~wPTN8tJ13R{H=XBKb*+s(_qrSXCTVb~uW~#%tSJ9_3Ny zVUZw29j;X?vC3^xpJ)i5)2FUc+7}0h#11ziD7xHGHdB#4pWV$6{1i+F;iq6G-cC=@ zRdA#}dqq9HeLm+8ey{~PHVH*a^!34f`m@?@trbweUR&$l(%uc&?eq-ikSjGqYul6@ zkt^ks##e8A;uUzX@+b9T$H(y=ccbWbmXNoeG>hbd-B6PA!s$joJ^gEu|hv)mGFnU|Mt0V#tOzD%UN0@g9k%%hxM=vKi- zj&P%v<3?Z~7#|lV&5?RKzvVFNjw5u={~YAt*&y_%-%`D}xuLUhgjhHYfM8UBG0uBo zR(IOq&j4I|Y*3Y|iHwGfK}n}U(zi4up8M}2QVoSZ+cH9_UQCRO=W`wU5qNa~ zDpHMSxUA_-q@wc-X`Wid@(Q z`FXKmaWO20ho4W$Uf=J5uj%Syjh=hI{AeF&b3nEljCVrL!tCr-!5HBi0n4=>e4G;_ z2Lkh=qkR>d3?qt3)X6mUw!w28S=&5H1*BpR0I9=4nlRu+c#=y!3xouRtRMd3*Vcs& zVQ5R9O8Z>yX%L8*CUY`8V^Cg`uf@}dFem!~pkMj>1~G97Y;`cNZ1adnjRSPA9j;yv3ABXB)W_+fpP_))9s+VKPgCFD3abI30NgSM7(7N4n#*-;R#VXpx zx7CUkY&m_wMfe6-fmbz`5VtkK(P%9YBM~Xs$~>UWzN$t0trD&7t76EXIw;ao%LTt6aX8%WfSw$_}MlgdvM6RKHKP915D>VRm8 za4GMthD?_P6pn3>18c|^<<+ROhLjVsUtE`b&eu1<%0arF@H!J}@wAAmlRnse$0$(B zu|tc{FR14Rz#JGbMY3cN4k#EtvUi7hWkad{E*OgA+4lAU%^6C(pbQcWb-H4IKrGe; zME%lLQMY;{$w3i!sms+au~Op^%RuJkfXMZwBNNIFw!6XU6eA#7V6A|v;ax%N!5_e{ z%lF&Zm|k8e*UcnNE%u?IzcBvrw5EHZXhsJvn+Yfm7-((~7p4Ut`baoxwkd0o-Nu|4h*F%%%Q>MQOz=ZA2ou&oW3REmY zr+1||I2^8mX>EtY?*N&<0L^FhgVzLev}5pty-9JowpOG=`w_lV_Vs?_#^{DA$E|=G z4%r_P4Uw~PdAj~kb;QoR9cD>(tUuzNAy*}$E6dP~Pi+SsZrHaek-2uSP@3ZV90~=Q z6;xF7ffDaxR4B?#+YDGri$5s#k5Wt;f`= zAw}G_7C@_dQD(e*e_9zp*X+I|H+g=m4$cX89bYj9|UBHKO-hKcqSNFPA z%ejKf)fGqRoaY-eVFjTF;Hvf2sgQCD*#t~c8m?ukA)e?WRc=AiSD>cGZZ-zxBoVU< zR$1k&K*f2A!%mj&UX@@h4GoHanVgu|KxykvVVP3hDhmklV zsbvGpMiM=n##Y_DR-nEoIGJ5>8K_K(-vq^O~qb7UOO{6HG9suL9 zlXXjoz~n2u5GWfHr4>3Yss9*e#seD6tJGj7mAV4N1z1Ij zN^`rb3`E@^3o3jCeysxUUqR?~b=kAh7NFHVGI}Oy=@^-;f0H?kNxF#)3J})<8v9j( z0cCVph|CGv-&;^VE8uYKNI989V6}I+P5pwWY@=LABG6NNqf^>#aE5QJeQ``ULnnZo zN0G|_nH%OzXGYG@N%S*rxKg^TiHM^TiL=rz_$C>t5?=yE*jJmSSF9+I*3i)Nc)aQt ztsk1gcW*&t9$6OR>cXW{ET~!gF03H*Z72+v z$A&0;{QcYE6Ta%!{Dwqd+qO-S9P&{lcGsKj!C3Px*a}o4LO0xV=9I-MKJtUZ&l;6c zL=Qqu?sI2P=@;xN7PzAjkhuS5MEDRkRabn=WQeKh5%J#Q9PE+r7uD69!|N9Bi|p50 zuu^Moy^ZrMN)lS&{7$Y`H;Sd2ono=JqpXyp)_W%O`E3T@Jla(-R=eJRb#-~;lbY3c zgmd8~gte8QZEW@qheK?4yM(Ky5$~<}25tceJrD>8KRgS{p;a|1e_JigCI|GTD9PDm zy$#>Bl1#%Iq|8>J5?=!4p6gQlfX$xM$jFOu=L&6U30k38bf9f(AoHp4vKXF;B!$wH zZg<_}+}yMn96TwyyAPJFlAL}MF*)i*uwMOok;xfhS)+5p#v}43%;9#4NPWM7KV#CY z42tUO>k-JK1%AJ0l-aluvpipj8ayHDp=*iOw?WY?wkZM^Yb{WW5X;;e;h?!&6l+Qj z7tUH9>04|=U<9`q^}kJ9WhtT?#$+ElkduOjdKTB1Ph3ZEbL3OA)QQON?AU?#bbVR4 z-G;zFUa#=D-C|^H98`PaJ79w>p21v}s$1i8DR!bNnRBFk*NQ#9)qi=eKqbBeIgt{6 z-)r!`6;Pfc-MJpwzPatp`Nuhj~P{KR=HO_Q-}E04o3rAsoL@Byd}cn_n>$+ zr(f32OHjTV8agAoI`;{eyHmMVE*V?YCmO=9VLHhaTk1J3fz3K7YF4JjyY?e%L0MAQ zE{7{!T?guwqJ=dOW1 zacOW^@jloPc|$BUln$X|+hm-3PTw_SCsuxQuRzjUvAJ)jIJ2Lfy(Y*`mVtp*=$n1B zgg=$%uBRu!Tfa1YQ-ow&CjH{tnUq(1d%H%Rw6%IfQxmBf_1h7NEJ749BraXLEFq3n zF+Oo#Y^$l+FkkP6TZv~I7Jjg%5EU;{68vb_)`H%{ZYKi0fmK5kwpz$w8yC*NU2tuwhebvlIj^mf>9t8&!2&^+Rd2gKZbf)i044T{?$r@^DJLk7QqurDESinF2i)$vQ2 zi>xexLeG!w9=VlZb(eDPnT|!o&3)&p!CtLT09k zA%Lbnrx+RcX^K&LJvkP;URI9hqL_#)Tm#@v;!hyax*9~a!?_ynXKSjriE3@|Dx_lw zwpz1$2aOBP4N6eX6{`}psE?rJ=qL6`s==m;*W-Zpa=xZ!n>J?rI@+r>gcu$hgTtf5 zCTvHmTMMfjZ?R-h6QxI&y$H!k4yLKH-)vV~{{Khs!C^Jt0m7?zI?@2-gi5hCEx2r=$ z7Q%``lv-osb5+$axsnhHkz8#xpF@Hp3rj4Mhz9x1y%WgoP>x>b@*CN_H5~kkprqTu zO-4t1YP)>%UecFxZJmf~5D3QJbLwN%tOj5S;ZEPMAXgL5vmo7BootB}s6>PwQ=wgZ ze5+uoo5A8DDA~zDJ=;Cv zfd>wX)2GkGn^F6HYHCchwsyzMN|~sEd{btL*VWdEKkU6DV`Q$+^-d^LT^bzGvxzeZ z%sTkjt^!3$`TI7cYl&G&sm4xgV*w4AQK#sss?I>28mQ8$ZQIr;T76hhr5Sj7dp$TJ z0wIV5)_}+^UszsNen#j{+C}8sc>&r-U^~91EU)#}(v;dHEuZ0R^{RNL8ZiS>lL+~Y zv~F94P+7OORbfl6KqVsd|0O@krIm!dS1unNc}31@>4Tm|(V+f*lj@XH!B8+FE`lmI ze!htW`uh6B-aP{_Ys#Lrp2!S6MCT)NeD!+j4y<8F|&-Z3vM>b38Ds3nvoq}sJU`eEJIcF zJt#iPCB;cc*Oc+3-hU;ftz?C+KzaQNOY;yEl6-M7oHQyaNxCwXfzD&Rn?!C7#cXlf zZ%&oFVMlx9@L@R7$X&}+9~7OP_oi!BlxuaX>hpBN zkw~uKXlPIn`Vu~_4Y_u<0qu(6<;@1J#72U~bpR4yTDqleU}OIiGm04e*e9;!ms(m< z>G4%KMJ@%btRyL58d)Z#n1(e*nXN!2BJ_Whp8@5&^Z=(vT%%UI-+xK2qWLVp*Rwf3 z*@1;Dg(Dgb5o2Stgf#W-mZ5(^B)vo}^;;`YJVP!T715Pdv9fv#CWSC3gt_GsHi^3F zSh@kj3;3PmFQ4ab)_=qhzaUy&n)jODDFaa1*MbUPfl5T^Nn6_pg00vanzdKK=evNj z%1}H2R(rmVI7;!J(G+bku#hxVtH+~J*xG^mvGDickSQf$|F*_3w ztvhxKn+f~g>)k25uw(a6PR7T%c5P7eBo{9zNrFf?_UM5I@*1&P);dE^MkgzIbzXwT z5rZjLp@v*qj)>?jBH;v5UI8MGuB?bCknswRWn8}nt?*^cVO6V}-?PYc?nL_6rvjoK zz7z@t+=$4Echn=eRn=0c?$h=YUDK?WDp?e|v>26|tVD$VKaCGN3{7?-^hF@{U{IB{ zdg0o&+*$3^Pdb%?#lCOfUQJe>v(geiy7XZ^hj6i}U}YJsbl-$&?+SLBTw;5HLFKSGWU_+V+xp4c_(dcDcjZBhSqu*oQf6jiivoa$qvTf3ZBjCttD(8kj6o^ z>t%>sZ-Gr5)hJY4M;qOaIhVO)(gu$F6u_P#Z{WtGJb*uA2GF7Gn%>_jUO;|L`#%B zaR`0war_eJI6|k7_J!~)l(&M))9OP=)NmmM%Zl++_O(~boIp7X&MOs%=6D{NQ#A%SFef=xWzP@!R;RC zR}lI;?~KExY+qb=A>Lt;5{uPs!X`%Iy-!XDu!(cy)1MvCYn-m+r?(s$PHa^4vT`~b zE!$So_+H3$-XnL&R`B0QzNef zdz|}!C)F;>9+ba$o zJfPV_>t)%VNtqjwc~4)z*t`EwlHIeX-75|pIU>%UIkh&-l9;|WiMZ$;%CMx;|Nr*h z1~`uEIv2bS7$CsISd)xA3}7OHJu(z9M2G}0P@s?zBc||*equ=_ZZSniinwBmDS0XX zJSlQfk!<6Y!vDEE(1R9ypO`SthH_C8F zz_X5Uxt!k)?BB2ML~MC!0@FFPZlh-21x`ThE9fwx8Z1b zy?MA|7_sj#oS#BW?iNrQako(kosMz*1Nb?+PUlQ& zJG!7@cu-DF$JNDI^B*)5#oT}YVZ~%FrAl&XSsU{;)-wyIxHHc`ul60x*3k8Gd-v^A zS0+Z)LOSL=j4{T6>uKR2A*EzspkEsX&?j$U_Bdn6pkA(0>tyQ=7Oq<-^x`ThbQM1|yeo14U21I;k^&`PLL=8r6eRYkD`9QX zS`WVvUsDU54p&SLZ+1_%3hh7cKL|3fo^vPLVO2hGXbHYSl32#BlN#(;LlQcE{6B?b z+yeUg2D|>=(e3x7c7A3io6PC4`{5%;N^*WPV&H3Q$1H0*pgo7xEQm~h`Hfy0QE|kc z-+TCovS!EP_57&Vv;Q9T!ttlLtCrwMmwY>^dk^HI_07zB zz%sTzj}W$M%1YA~6%E{nTbeB}ByEQ0(F{8}HmKx_(+b@>VBz zJuy@9HCE@!m8PIt2>h{%2M)k;(&_T1K9%(CQqkc5P>C9mIUAh7kd{TPrX$N~*=-aA z8kx|4h)#xnW|m&WoqH``JIBmNED2+DGN-dyrNrm+tARn7soU4b!by53pZ&ZRZe@4h z-M6lf;V;DE=~(IYl6`POGHUoyL>N?C&7q@IH27h)jI}GlSa&RNzlyi7KclPbYgE`e zfr~YUyd2GHHh(jeqsofa!4H~b^Prjqu}6asLfhV}Y3?b4$B>C8^se_~NCi%H_<)NB z4y)PVqv-oPU}CS`2mc~6)7iwJ3!$fbtw<$!|J{UvpcnPliB^|&1TK5);|zV zuwu>rMlwGN&AgIiu0MBEOOxuqxgTEdh(}Lr2H}}0b^3*q>h44L>%}tb{#$NQzB4bT zW7pTz0^+lc$!2JF4~1?}Q&a2S?g=;~Ry!3eU&;%CBg(fpuKX*nVq87TjG1|+HKg-Q zw%iPF=^a(^%+B1nOdA}{H%d8T$dg&Ktr_o7Kijm}thDo^__n%ebmHx7s}~xM8DT^O z0cK)oY>D9UO@!X#Z}ki!SCBR43}#C+icaRC3To!Y`=z#-tR}+^;wZqK5hh*=@BC4nR#tfnJ1QYvIo6z+JCEEuv7K)*TwU}yN zi-OpZqaNAUQsGtswc6AHjcnaQpy|cM>#SU>o8U+$Qh5aCY0)wZt&F0fn=xtF zy+$^wp zeaP#sOB{}6R-1bF4W@4>5c-^6yk={XcCvZ9Ha1F=I>$)4U+-jY2WXPh@s%hvTbreh zZ0_cU*VSGu_J*~+|4Juc>p|IXOavO8(D`OFz1?CJnz+Kv&x;u%K8?tsjczxXmV5a74Q!oF?+;a}l|IFLNxbepJ>CiNL0Y zd}{MUzm45Y*0_0)DV@=_)nG6^3UmLtaLm*?=088U-(v|(G*9)AqPII`^75oMMJGv| zvxmiE^Vl~$hfNZa>o9eyQQufzPN;T6c$^6Y*(nKuO2mjSnfbh=_Q}O51Q?PQiHss2 z!kArXnk`I>*0DVy2OAQBh9`9VLHsAe*WN_$_v*iZznM=~ozVGL$(hrPLXY+%A3Ur$ zcI`Fk?C1cY(?N%C_BHj`Lmz}QdpGi4lcvpY`%O0Ug<$uOk=+5NHUEl%0Tl>zBR)Q)I)Xi_3A2GUlB|>=hJ3XQX8T6M-1@A{_BJ;+0gZedj&4S) zx%nMnz0PL;T{tF$ZUams9uh)Fuj31M1z)<~!{&SSAHmDW&UU1q&Rvz4aAH+Wz$##r zJ;TFlpnpC5%XrQ!+wFl)6QP^ig-I^jeX0$_&7~5ONJQ1l44m?!la5W4%padfaG8Z^ za}>>L0F2>X>QXPlG$mgKV z?&wY%&++5|9RF^Pb8@)B5HSCxH`v2l9+!U<@4@m89-oAkJ`?w=o`BgynCHqZC$1Pr zlNB<+b*T@)tKIA33;5B*Ce_y3f+?Zfq4|Qm+x@Dw&8K{A#LbO`!#U0g#I0Yx@)Asx z;W9w9rkOfv?)3SBs<&sC>JANIf|fE=?U5>)sxY-@CC2GJ0$)kZpe7!TUV$b)k#=q~ zlDKPa+^#K^`C7KSlN|Fr0z&BNE`pZ62rYdUyT7FO+G)&g_K6{LmNWfaxzrAL{N_n>#x( z-+9W)lEl2$vkUVub0Q=#YZ}zl<?Cgd zm9!amWV^8u5JETiKfS!RV9~<)7(PbA9qz8oM=)QKFI&9Y_v{(2N{)8(W0$g*dQrQr zVVO+fLKwy~F>yAhX+4BwHN*J0=dqQ2jcu7r6W`7)z z*hfcSP+eX9nC^9deK^wL$FvGR1cm@EFDBH=wWL~J{;`JF;$l1t>GR{WS;tB_5Q{}h zxjb`i8>~BYj`aJx)aK3I_#g{uq@O9^wGH5&NX)4yon54*-7@|As$~@8D36ewc*Yzqw5XTZj+Hzq3 z2UHB2``NQ+)!CO`!i(AHoTRkz&O{=jcI>#nX1V715On%mUXCLYAOXk8IK20<#@zG_ z^;=q6gl3HyyqC;A7`6{z2M75aTw=&sJ~NYQu;1T_539T2$QY{m6Rpe-RkgRI1IvUUTJyh+&T66XP?Cf#Zu;0)YNzHzON|LFUPU3UOf*-scBQ4naWGp z2*QHo_cg1{SO@(i=VsLb;tt}N&)1?l1Fb61-hwi4L@VJw)wq)N}>*UQN9+z)I5s}a}k9Sfv znpgQZV>OqjfQb?4r_TKM3H9(pK4z|_>o#!ji>;fGy0%EjYvsY{nm zX6kX%@-}cw$7UZ$*{3@Et*SHFrfx{DJAyv7xeiF$&GV8<`@8+xqIN5Feln^aI6j)G zB8tgM3KF`eZ7;&-U;)+;CTvQmlV#6C3h~{19?< zd)oB=I!^DxqTxhE;VGnNeRu%gwpTW`J3K@F)Qj6pVP`gRv~ft*8~KGoaN zuDUz@svE@Jjbi~2b|cF$k~@*)b&8E+9Gm_I%XAQ2rUP9Z79BbX(%*nuchW@KcII*& zPkS=g&(_tN5Qzu^@@1FrHvm#+Z2C7)=4LEf!WnAT&p>NJ*~`3k$vepL_aqWgjmueCPENgE!x- zK78beI`-s~nS)G1!whwy?tVvUW7lj#^bQV(RBu;6^>p~vOe0$3uhH9Gku@ehIe+1TI`h@9Wwg-w`FV8_PGy|G z{lMM(Rp<4=%&kfM(|SBo=4kc?HS;e#_cT5ZZpuDc<9H zO}8y@B;&djlaw%#N;8tDG--)dS};cYR^~cxeC6maH4s|I#B@@2vJki){s3?#%sQSr zfaEs~!Pz+;Uk(cb1_XrA4PfNjq{9hFomgdDt2xc;v5AO!aG=Z8nEHjNSv%jht-4`2 zxt_6@>X{SAp{<5(FK6-=CT@8@^3vb2Z!f&3TcO2s6eGWI%$#O+FOa$3(vLj+ zpc=#TSVP))o~GNBNu8!&{R(|;G#ICjwb4~v#4!SXIQfYP0)jwc1ccBFW2BV;sn3Aa ze-=BOl}!_x-#O*!;oeTw>oDg#L*R@O>h3b`*3EVdWPa?}F*R=rKg(`DO`+$`pGQ3T zB`s;r$jH~T3t5hQ;uD{!$(XsN8K&K!KcEgDx>r5*%yHB4!aLdOV|x){Uxn|JU1Dh! zNnCmRYpZH$HI0aiUO#PG!`f~N!Qn~f z9IrQ7gPHxQXFs1s=6$`rY5-%-Z(O~q#$cj03N_moUUfBNPatXnGxjYkE~!OEP^{8o zko_T{H=3UFnt&)Z`$3MWQ0=PVwM`^8GB14(9k7Q@MOQJ9iFgT5!HH z)^p)VL`}l1AC1i;n^zp;)u{-A7HF58bKQr8F+IrbzO^R=6F%lXFCm7V$!GTO->;4z zcdMnFTiuHBb|*5A-_xs?XVqjFaoKOgwFE4@jtYKDT5DYa>$-iLXNWqp;iNUGGTJ2= zZqh~;v|;Vk7(>(4dYkl*2_MG3heCd}XYdB~{=u%AX!p*aOiBs@^^brMdJ%mHQvV)E zeG!-b29}H(GL4K^pN0l?JG6DX30=a_pp2rKF&)0#jn~zBd*szuO-;D_zyT2PA=9w| zIK+MFi(gbP!QB4*^UoL5YB?*~(W8%{j>135neZFx?3u4>W7>4UD=0`3L+R}7RCnEe zyLvye!O?_XjJ*H-?^h>IoXF!)lS2A3)k)9t1KPW_hY>oLWHYKf=>q z#PUPqQ}g9}W+tXSJ{DCIF|$TK3$v(EI7V4-5}A!+MyYiY?Z%M7;rkEUJ_fbneMr#q z*I)UHI(YCP#%bGZ%kkjR2Ok8<`g5M=iLuvTM~1lv)CcbQ-_===w6Ps|FHE0g`Qs-~ zs^9y)4``FIa57N0!Zy--zgY2Q?A^I*c>g2kH8N)jE1BoM%DZPYGd(>2i-PcnbAJ=_~Yt}FvT+q8-+yv zKR)si6K2L8#(sa`10PW5VY)B3Fs$wm|LFfvk=a>SRqJhcby2#o6Ais7Jw9Gc{hquA z&(r4MLnc?->EtJp7Xcykyzn&6$-)Dcje|u=PYP213C7h&QOSF;FdIs(1J>Yw8&|pPfE)#(Ju( z`!vIU2%7&F|NPHYaPwwIbu$xQvC`&X9sp|bNyDTt#oo(H*A;LZ$lKI-ym3By^8%6k zq!4;;Y#Qo}Xy|3^ZcSJJ=}*I`^6#)vYcDuRYYp!zV{NdR|7dW`Nxnyz0zc^-=C!Z$R|Ik_z~emID|k4yJDo(!PK8^8_niUlX+7yXfb9U zp?a3w4aL>8p|27`-_YIb{NaSqonz&=B#3<#3&+*}7R$e2;aIz^oP%@M%o{Vd=e&CG z!2bOh=QY2f89Md{fB1)*vzmkNn4FJBGN;DO)UnkRwx4ey4qF?L!XFR&hv`V&ulO6{`oPUkSf@BP6asPpOg z@4Vm`P98t`7p}Bq!=+`}42Q#tixc7GF~vx`gYYdMGOukUp?Qjv))XVNv7E-OVyfGS z*NAq$5qq`BXWCeAjv_&*=4BxDBV zjlB_5vq)M~btyrAj9GFwRK4xqzu~`ozlqYqY9SzmUM-|8_W`j-KbW}Evj`e~Bl zlTSUPg>&7#|1QNj!M!fQV2748#z^RTn@2&AQ&UswVI+dqY@ zQm1=tC`wUbAcDGR8JCf;o`+i z;V44JPPuSK%UoEYjg*z4aQNB^CQd0vz`q5BvFc8p!h@Xl%%Skt6H7QVxgWXnCfi6e zpD#0Yfy29|inSGYnR+9d{Q>Ce#*I<a(~NCkvmm-jdUG z9zXfKdgxC+t}a}7Rjt-gW2d#?JUsG0ia7D{iAifyxu2H}NthqQ2MSZUCb9h`kh#+j z0=t`4;#krFS=(6}oV2CY!IYxSZJ=|9*@YL7!~g&w07*naRN|JMSUmV6HUpjm5B7XR45kOQ?D(1r z|H=8B+S^h00yJ)7=wzaw`FZCN6vxg?swWN(z?`4*=I3X?E90~3*{@Amp2*p5lY@jh z)|$feaqFQ5+{dR-Q;XWVb%*Nh-Hq*L^mh`WoeXo$2pwyG1MiKC>32xxglsex0)^i$ zjfICNo)&+UZ}X26jp@eHgXQP2WQ3;pvuDp~OJ8rV8oK#rH8?b=e8t)|Gc{*##9&&# zcNNVLb!PO94nLaIC10xho9)>Iyc)!}OsGy*vjPTl(c z$Iin+uSs?I+cZttsdjI7hhnnd(KEl1r42t8eh~MBcBm#pZi3#PVfd`f;5QgH!ozn2 zN&PjvKb)Cij91I{hCo0F-J{)zKg$0^)4q#8(C=YQt@lPOSsqPO)6&*=}bhP1-``@KbVbZobGjzqDWZ$5yJ>}N4t zW$K#%D)<#F-_-k0){TXL5W2_v8)V5b=@}5_n^<>Y31P{ExnWxqYP-{z+LQ~YGok6Y zqoYH0LgVZ}-tk~Z5ZaqhOWE3la~#u5BokV^_~K$x#TVjgc5Y75%bON}0z&6KrnG&N z?L*tx9)56Sg!k|7-;>$rMss_++Oy}6)y&Kora`5)?mb0f`}P4-o9%Y4T)k>{*wL{T zXuO4_8Q$pV&Z323X@$G6=<18Qu)Wp&t0o*R&hfCQ2G;DN6p06e-5~M-5P3g7g4+wW zroBC&1_$m&isTd4vhT&;V*-DdR0KpC3<39lWeo<9R~{FCpv(wGjh)0!HS(9RY{rsF zOoQ!=(9z6I=CjO&`8TMM^Zt=^d-T%Gf@5N;o}S$q?OZRUuX}oiG%e)y*H2r`hI)~j zt@F*xt~YAp@@0L~_1f=%*ouwWcHJ0{Ul5KI{IK-+6J$4!z7D$2LuY57+OlOE{uZ|8 z{9DPcVf{$QmLBb+*)pEa0>6g$#J}TjG`3z^wi*EeA@n-yW&Dx;6iuehnr3deL#s|K z@5VxNn=QHHcqu|%kuL^*@h{-^916$?+Q1KsVCDcee7+#Y{%$iK%G#!ev3vIswYs{D zB?&WpRK4-W#kBKWN^8lwsKN)jySp(gKqE+QS-Q4TQm*+{WY;SsPGZ#y)#0`CZJP=| zx3SF$jQP(y46!p_=e2E}z}c=~Fr5PzGa z_KUNO4Qe%D-f4o17HA(&Y^qTHh#q=*f80ZeoiDbCMa39-z z(diG0Z75?BhSoTB)TYB6m-hA`w3Y2@aS^8f*$G$|#$Yz)7;5#%eb4Z2({tGEj9p^8 ziq{;O+@+8d;}Kq{&RU;$`g_pZIW7n&6L_9#|xHrZb_6 z#J3F>l0Svx^BfQ7hXL0dv`nI|ys_jcqsy;h!=!qJLPHq459#M!uc^6H>qu!HZ-Lk+ zR5Uu7cK%7dEL~UX-~##=?7wqg!ICeZKVPs+t^z)cpYsU{NiiPbh3c&Jc_$w-#x~B( z7XQ&?tfz9@=u3o?t*vnsN5T0AcS5kYRV{GA-h<7w}YTIjT{N`o6KOzWx0gbc+8hLkNh^fP|MauY$<=m#j>8(2stC0&Q zG9MY~`hOnl0sOs=<9$Huo5%)6KnQ&UcW$K~4KD|3{Whld1BjO`9F|o~yZrtjw4mFd zx!;Bt)+)$-S}iPuHFDR(;8HK%l*Z)d9-W8+xbNNr1ur>u>Quop`3gAIylGBpbh$bg zuQCK?jhnwEW@aO4`+S=<(&lfF79_8VA8ozmmb>xMdD7a%4jkBu zO50|eNZNGbY;W(>*4!q6w?pHtN8#UKKdfYvljp3>XL{IWDCys|o{;^GgMjI!ym1~& zo}_{ZFmZ+7SU<-P2L^689;)g#37+HjTsZblp>rKQ=ab2Kko+9h_VM)x4`S~50e+w4 zm*dBe<0GMj;BZtw?a++e=GKEOf75Gz*6nP8S0W6ma4*!VDf+lJw@KKotpRP_))vIJ zA0KZZaeqLy<9M~kx!IO#39VRkC=G{4t+(t0sV{-lGk!MK0`U@ zK$}_X4AP{AhVIt1X2ZdnZ_+fHGLLRU2EAn@;CLP{IkVQcXU`sW|j;l}IJ)oKkkoNz2daruu#OrE&rZ{pl-m_NQ)XVt^bo(tKS524-oBN3u+mSVs z7d1D5pncb&udhckrBw1HlC}@y+)fg-xN2A(6&@V8OA80J31?$^SUSo5sE!^-n(7dN zcZi>aL!=tK7+wOu00?$sF~z#~_wR#NY)RqnA*|?3cj*$z+)RwScJ5S9eC9K%c~kyx zTF$CQEuJ&p86`DdzizrUo-4E+>h!D6-8ZQEFwb})IddtjPP{UsW-(KmPLPGJspWaL zkqxCWV^@EtIy@ZG=23UkrUy=psq+)FnM*?5{cu9-(Xt=5wzgv;I-hEV=DiWa`!Ww* zh7Aryjf^~N4QFG`jA&tudiIx78SX1p)D8h5^x9!xH+Ke^)6?x%ESvx$BcafM8XUYk zv+uPHrkI_aeA#4zWgGYI-J>4;5 zpmJE+;Y_IO6;)u1j((|UM&cCYkiWS%sCM)P)$VPZ5xP~JgXAp_y=fUeiufXvA@RKXekk`d;f z-nHv~Pijfj$}e9&tIbH2X>fYu@S%h1@FAMn^K0fTe*EMY)C(`1;$}t$2M-|M_F!h; zb_0aFwzjO6SC`baYpWQ~kEyAt5j#yug*tue;k)|P?tVHV7Z!daRjban*L`x znoxTm8!;Zz(wpkO5vCKe;|Kx%J-qtrar9r7LjDs}Kuz5?ag?LVrI4o(5JLAu!`fsk#^bf#W*S-MwYG5v!kDU0{m=jTsM>k+PDjmr;mcoE zbc8cXH%z}nL-!gFIo}2sPS1QD?W3oBHsub4g3#7)QbRq?h+V%iYl^@eKa07}BS@7x zhwVsg858d;VOdiN%(S+Oy#9r>c@F9OFedHCEN#@R{k}~aK?nTJIM$+qSa${dsv935 zEK^Qln%9xb^J)ZEh>Mf+SyeMtD$@ju6puh6K4%xB&I&n}&M8-&CX*_@5pre45fDPJ zIK=gN1CTk#%9#m{x!MiVq=tv@*Ro<64%T#&V}&y_m!Jh-ur+u0_xGz$J^H9N>ztE@ z+L1Xu`GRT=mFt?;;?C z?%lqrY0JRpeP}?)+K8P)2i2DDRQ$K~T($S9k%wnSF=zWFJ9DDuM0MYN_o;jKBe#5k z@p87EW9CmmD?fAQjOkGr`ZT=j!SY!oz^4wSV5^~Jb2neBjx_heMIFR{`xNBBg*M4Y6wRB9Pw{Cd$HIVpaTjw$zsh*x5_22^! zI7$}7YhsDGdg1vO)Y+F_!pA|%6s^}qGdm}}V4m!9%J}$cjPtL1&NGqB?YDHp{EXx` z1qQq6L^lM&yLnru8iaX1PzFb|Ql5>7aSZ<|2zv&JbFM^xtlkJGR19PIPKBQGJ9;)F z%njc0+q*K)^n1rHstJQReh3bU-Gv+yo!+#;%S}#v4L%(g?NInONd4P(C*+v-5fDQ6 zejin>g&^}@-0UXn4SRZafgta&9cD{mYA=$-6f&>Vv_3U`1tfkB z-oLNHT%S!ojC~#efs{Med2S9S&(Rk$?dHbO1O4jI?jAU>EvwTPBkJ^MM9qUFod`|y z+d=F%A*Malfn{?m*1ocjjmKazr`8>TSN&{!Nxijz{WwTG?Pc$zt;RAzf1BFX*8u|W zR67yoW|wH^+*m|?^!fDBPI57u<8sL32neBj zyo0LIJPa$d#v~4bf|-a`>ltoy8r5h;~=X^T$l%{X2U*)n7iysK9lh z);oG7s?LJgU!6wWc>%3`{mS(%#)NMUASEt{v!%6JwIig>2k-Rewie}sMIe=5eGL|Y z)HTbnPOL0lQ_FBLjKe$r?ZlFbFRsE<9(nSyU8?xdo*{gA3?feb77%$)u<+0UEhfM7 zvGZ!)aDOlPaFmKkt*^KHxJ!i+F1#0N(>PO7;?PVP=H{SBqS5G1~emZl= z50ZQ3f8L7lu-xRf3R1g(WHO(6@vSy%)g&B41^kn8KsHN|L zmM&xI8Ax1jEHcvK^2_)w<{U166NG-*b;WW)%@NpC^A<=0YK8#FoS8s=6U%khMlcK9 zz`)%#Cv&!IVBk(IQA;GU{$jVb*SJsZJC_D-ET?aGc81ipZF?#jipQ*VMl$EUKXG7N zUNUDHnxd1?l&xdZK73@gLhFtdp}n)-atRa9bl}6J)7PwSXh*ENuSK1i!NeeliPvQc zW9kWImIBS#ai<~S~g zJ&u5A=pOH&N;MB;9zfl{fyI>0mG|RRsGQuPD3yv8R7mKv#`x{oS!kSR z$5uS+5awAA7F&&@>zFC-l~{d@79xQl0!@Yj@;}^6nPo?}IJPS}eQu zCSlz8*jU7LxEm(+zj=aMx_fia^CQsG&#ZsUX^D-Xr8hU1o|(?n$PK!)y1EFjb`tq( zc*2}N3TBHVkw>7NOXymi{uYGL>$KyFZ8nIU5g1 z2)nE(yYk$i47E&8kC@1uRet6WW)E{f=HoLd$2em%{Lq;13Kb@EUZZ_3;Gfh8Jy|== z+{Owkw0%2b=O-4BXWpO?o`C6m-w-~gTz)A~tA7|D10Os-nrSW5`-Vc>D>_V)xmlfU zBoa|IgWp}a@DSCH@n|G+@o2BJKF-x#=IRz{00cnhOyT-FShC2RCQPPtttT?Chc09O z?8&L~rluYo4ym2JS^kHnGTfn7`q-&;GqYY`KjO79TegQz6hk~#ePx9d}IA)gwQuue`Y-mi2P@< zFfNLo>{(R6i7zgPpj{x(_UmE+8sRAa2Il7MqlEU)b*RHCt#bn)wap=Kd zVKaT<+N)DyxC;}x&}+^hU%G(sL5DH+hRd|g$L<+O%_^5ZK?k`h%LkM7nvK4nn#Tb1 z$DjXGEl>OWd^q1DFX7}rVYvVzXK0#?mFGjN4$ldp*I}o*Y%*s{yWZ{^CX8WP({g7* zv%6QL9h;bV8BTlamQ03OJ#*g>!mZ2%XNOA|g!dP(Oq))@A59&&$*iH83V3h_;qU6s zkl7$ajr!P^CW>k;W7m(|Y5pMMkVZV7m&A&?m)9?%S$%x`tLp68Pim9>Bog!an#_=c zf5t*0|DF(eKB(&ZoDh0__g~)DLo=t-n=P5|+<92b{^o#R^4>#EW+M=tn}H+JsOiK5 zclN1XWOH*OkH0Ws8hhq7doU(lN6LBTF?V#ds&0g}8D(@jrp`^w8V@<%KC~yK`Ybq( zjh#|-klg4(ZJhHLTtK2F&8&{!*xDME?ws;A&in(GuY<(j!Xg6{IicDZCxp;9MnBp< zMfyuTZav8{^I)*sdRX?$fWR7vWn%KQsU}XYa{r!Q)3IDTXD@}-*vz_S&vKn0#NklN zwJq0mUOs-HC)t`K83fi6UA27;163;yM(vVjD#`84-sQUVizQ8W}kbi_cggZJZ%zZ(tb#f&U|xf88ip$a6SH zKnUGAR&`ktf7rT5t4ST=m>W%ZLh9w~R_4aGh6+8rzfW~J$Xm`<9Q*3ktOPQQIcEZy zdY8LkrC@eDqnt#-82SqoBL{Z%AoEg>74kPPO$$q&Qy zuwY*`QxLbm|25qI%N{zE+1H?WwzT1o2s`eyeoq?K%-lsLh<24gu$G;^IF!7FDyB$#R}MGNkqtk>{N~H4{y! z-#d1}G><&f`VJ3&#Jj0sLA|sj%+8NvJ#CtOFVC-!ALDec_#PIHiwlA00jp6@386Pw z&x6!|5sy5G#bljnYHCxr+;SkDd9A@fDe-Z`;c+-EnH}Mnr=9uQoyarir`7SZ=JDiS znCTzvH*2){>f+mdDz>bSPtL1;T+8_HU{kYd^KDWAgfeiS>0J4LJ_1HM_;e2VHKdCL zgW$k4=0Bg9Ph@%Cvpt-q^;1I~j>q`J@l|zfV%GF1OojV*pB=WH6WvrW$BuR0bQWWN zgfgS;VYRJyPc^fI)-}*H?_PN2^B}vW%yaA+=u*$!Ka|r$n#wIJo3DcS*#I^0(fwr+0iXe69#p)8XzIy0>P(Ws-O_dIgr7NvvnwkT@TMDfh=g;`K9rU<6;bYl1-53%w?- zkegN&0lXw)AoWYQ>2G2&&9*i*l}gkxG<3+jCd;a#mFH%7VNbk%+C=6-KQz|6&B;&l z)SwFg7)!DH~<}f|q$D5H|uZokn(6NnXbl!V*cBYVLdZw)~pjdwgEjamanF6vQ2sl8% zWOj8>UW#lG1VHMHt$Gy;CulGU(?>FKMZAtZhD{Gtp`B^W%RP^2T#fR?-2;v%A0hdS zA<2qSiitU=ZrpDP3p3VPscp9P=zw!`yWS4E74W0QC`(XhKlVIk1v4IWx%~vf19$eC zJ>Qw&hv8q96y_da!k0^MY-6nW=;#aBpDak`TEF1~hQ1P?-5t_~N-XU(gJd}=yMllf z0WrB-5oxe}XzD+UN2a6PX1ho4!QANm1Gjr-EYhxxwK$eY#1J81p5uH!%;faEb|Sgv zIe!@D`X0n>7b6#Dlj^kP1HnN(oCn(|{5@m|J?{Gh%q8zry+yXqTInZk9ORxj*su0G zj0~{W$NeOxhozI;%Z6iZ{ucJgi#ID!sq6uU{aq!oz6Z*Na9<8;Q+AQ zzS-lpFm3EYAa#1Z-;`cV9`Jl}dJPW^?UxB$2nK{> zqa!1qSBb=I>Hz*_toi@*_^@hg<}16fJo4g%I%5e_b2`s?;o5VT_`?yCMPU_$@rtoD zehU8``x#RIB4&rHl!Oy-kQ-mekoWPybN+8W<19KLSG!_J(DT22@}gq$8l#j->dc=W zjgr8pv!=u~-p9I4p9tom@81j(&l42@pGNhF`8NR*tq+K{uFW-VBy;{;K8HEZos#(kV$Q8(UX7S@ z@SIgh7*=7a457!d$Ei>&AxxMvjJ)h4k#%i4xwNDne{oWM0ikTg3PT0|>gW#j`^PXO zVjy)Uo}oC^)KlZ(Gnxh-i%pp_02XQ+$HaR<-~%A?K7Xs?L^Xwk5sDnfm|qX;<5fS8 zMI7S_fhXrR1ccD#hmb)4y#7OwI>*&X>epvZq&GMo$roF1&oIaxFI;EJsI{89-nX6O z9215NggP8O7h}#J0byBXUlry#U(PlQ=OXlX>g`Lctb))Tu#tX&%k^I5d8b2P%-|U~ zGC8ZxjdiHK@SZPLx?s}&tA|1APiB+)+RBRB){jUI8)1^A`S~eL6JJ<(tKc}eu?qSI zZcCH+R<)q3{wAlJpFsHY{g>wjc5~L zAYb`R_>$`HyF+zs>1i0CXlfrDGsl~UI+0i0;T-1#>cn}ZJGF#tG3I9YtiD=-bIv3hM=_bu2SXj6UY!&1L-w<0G0yjr(d;3k`~d@Jk5 zazGHULBRB~wmC0{8W4fB3I4kv_60nCKbCh{Vc?7J;^+z0+1abMZ@*Ld{TtsQcXINp z$hE#sJgGU(2k{bj_8Mp2@{^VcNjScGPnG65kMoPfEGF_!pE4bbF}qBKr5{Ad$y-JZ zA38~xoj>*$6Y4KNyhyv1PyhfR07*naRHLN3lhpt6;ak-`Prizh)Z{OKgK3^gV?v|r#94@A$&74qo!xN-^Co~yzsFXvSZG7BYdk0 z%DL9=WHO7KP2`<^xOLXUfh6Lpt08yw1l1cLT%+lIbZTCmzBJ=FAAYWO23j|%-TfWv z^hJ|HAkxK}G~ryAYoBZMOy34)g1+l9^)Sr}6%u|L_P}gEY52IoA!_LnEFywHUIc{D z^TH!1)7p9j#2y72H({YEKFbrHakpGLJ9|_Q#@IVLLK_A=I!BF7oH9L6f5@*Ma5%>~ zFFXTc8n>C}{Prr&b8bVN*+&+eu!IXXz7`%cUp4A+N2MVEQ!6FA7ARvV903<1b zY1)4JQ>LQ)CW!sJSW{cK^#Wr|E*HPQOZD~b2C;8P410YeI5F|E$-}t~FZ(AB4LLNl z!=p)?=X@p$glf-o9?KpNH<5R`fu>_Nf8fNJ`oA8{9}+kp zM-2YOh`Mkk3Lk}p7Fy`GT_I%o+Zt$B+k$N>sC#GfDrnI@8ZflAc&nWmx~~Fdc*Z#$qIAh zo#}8yuVOBpm;q}`_kilgq!~@kSy~8-drD|(pRkzPY5qO9n~&>EE>1?(`H5LmVVZOA z2vz^%CT<`}G>FMcOytc*qF-0hryOk8-VN2%(0Tu6EQc}P{pr`jrrhQu@Phx{N6xE3 zI1r9aMNMAoyw0hRC_#msT7G9{m+u(F(AaoZ0MJz(-g@9}D^Frti{sSoW@j(Dg zM$XAzm;mE_SUPjn$-L)W#>da9uC6|{rK4AMV%_Xfa-W!Z$z*D0h|=efFWl(}!V*l} zABT2smAk7Db8fvS6U3Np1Zoj|$Am(5LbH22PteB8gf!LEUg>mpcVDMEX$fWH%yeAb zh!$1`Q~Gu|wS}mK^NXPlgjR#|82>lOW^7Lx_GMEL$U;B}Jqr>!Pz(a#hJVF%;~;h) z);D5#H#%!zjVZMEa?j6+@`f`BaoIbOK7W#ynCP!IvU zaHvB4GhRMdux1P!L*8u1*>PNx7_@dS)MYv59`JXoK(HI+egnw9tLhWOLE9uE28$p;rJ@sZtw@|V36 zB{d&kgjf5Lt(Wya#9CJ>FS?FZuJ!!#x~i8hlh1Zd4Lu|Am8|&n%(+T$9PSUQr^eS* z*pL*4J_z(kAA+@{*c7XkZg)BAXV~0Cc04+xOhg0$TLgsAZDEmvKp+HncMt9s+=GOTy9al-;7;(31}C_?yOZFWGo1H5f8o3O=6as) zs-88~U9zf$Pc&=yv>qK=OLMdjRp@z2d#aHw{4ejl$RSnFT1C0+Kq(RW+!anO+$NrDo75Xh_amU=}9yKv@Q%f>4pWc1fz&P|Ggwo>) zC>QRq-cKBMX>q4W#wRlh&Jz>p`1xaaP(5Sl@t0#jk!uPp55ayT3Wp{Pc_A zE1+dny_z$S4UK0FO!%DYZ`3v;BUV)RZlgtRn4xGlkh#Rjl2skSWS;!KA9^qjT^>N_!l-!em})YQes@NE+T}A_UHlG@4==hZ1VzW( z)gI@ZpDAnY>C-)8&E)J-nf-;GXn*Yz9b+v^6B{K(PAbRMiH!bV{SW)U{kquWfotb_ z=CqDy>yye+Ah8Ubl)wTK)oLCeq;Yag23RuFv)Pm{P1f3bn(|*Wvfpu=!+tlhO);1l z;mY=VW8cWIJg@y*84dl;2x{?O4I^3`HgXhkiIZMv4;j5H^L(~e-(;@g>T;h*XnyLc zJ6^P|&3wC&x_}-*v}Fz!^c0noncb9Zn&Um-@%aV;mI|0$lHIiR2;5A9TbSYovs9fG z>yPC|K#R$hC0v4g%k$Lgbeg_ZU@Vig-11%az4O>(dU~Fj!xU@seY(gL(`bZPlL3tl zA92M%_rwk3U#j7b)sGEV|GKezYnO)1+}0&=Zf0amyXDdcq!$qW=^3RKU~a}+Gy;36 zJ*>FvhiE@5l&nK0V+CepJ^0zR36I>E{!Yn%Tst9B0kVQoD6(>{yKG6Mt;Gj-tv7#979XWFFj{S?sgH$l3H7K z=KFQxI3AFK z-CkZCrLg<%JSSkrg!U~A7Fnu7hRlc?o9w^;u~1?ipVT}iNItqj zD%_j}3~{@T^ssj%_|vj_ubUBRfsZZd&@gy5swS~sp?n~cXZl^;EpB1n_>)#gqwG;6 zG5)mQ-x2O2ztOo7lja?wL-Y+|&0%Aau1KJ2jsShJ90YQcVfi&;#zxNfTCMm zw7q!gp^>Lgbc$ypEn|bE6Akjvfn`g=h8zl9N_32>X%R@5?rKGLzpkYGV5T|HPY!q1w&g4`f zVfOy{pW8EOF{#e4jScG@df&k?g=c;BMGdJ;V++wyH3C?QWp$gWcp^sbq|qscl0v(3 zPbMwmt_c1(0IdGXmGFSb(S->A5NXwaqBjYAV1XTY$p{F0<|Iuz6$N{t205Yy8DkXn zKJtbI%wb9e_#BG-s+{ZgWHDJG$y?ejY-%jdzDa9152n{ua=jU5hguY6XG<*|F#)!* zeU=P$nJ^ZyXR*<^<=0zK&tynmB{~G*H`bbYrSFf^>BPsAyNcNrL8PBy&E6VUa^U$Z z?dok)wh^Uu%lp|%Ztm4$p`Jloz2O&gwmlKVUZkrSs^jo!PuZ4!G2koyd03fNLIExM zzcFx_m!`H*ZE_7<;1fB?uU!@?;KA+St}{}Q?_NCn81N~Abvs{)*YUa9m}M6u7M*GN z<0q1xiGe<8m8{SP>QH3R=zHo*-09$-RA3zcSJqDM5KWQ@Os`1vLLiMpHx*_Hd0F1Ft-%R)C}^Foo{JTQ%;}lKd+$U(Tt}EPfp>uLtpMUDr)DVFkD54bIjcSbO&5;( zcJx~5jQTr4Y#((|Z2McvjT0w?AggZ{?gU}^`HMyq7WE}hZ<8}Wo(o3Cpul@sVVwJzu)W6_dpg_Ot`#>AKz<3&RYxRZwT{9kVOd>~gL*27hs8 zUs(^l+{5~B$zhxpA}PfXB3c9$oX*kf1Lbwpxb}4SH3R2^^At4K4OFHF$2e8}7*WQ% z31;5)Jb7aT(Q9_($uDwEI0!O|2)QcLe`e=34j?KBZrxwtvEzGI0(pO%bQ5kw@K*s07BhlCOQS8= z@7;mKC^cKv=&2%+hy@g*zK=9EToatlaK%4z5Z4=#t_`m&jNK%km3IEevaC?X8?Eg-d_$RiPLp7BiT`-Mp?SgqzK>R(;ae0(%kg1) zH;2Wg!W$Hq@|SEh>^Iesqb1w>v{3`y2V6t5_Tu7=a<3MU`fg{-i9B}h@4>45+wTlg ztM^B_jU5C9Qz9zAh>uA+6w0to4a2E9>r4A{-N$=q1d`i|_EJ)2b;C@4{*fJ@H_bK~ zVWrbb>-kHC0UB-0#=4@zhX1o2S!R_n-CrvN&HDxERu^1|M0nnG=z}6$PH7J6jD!9A zIGj62@(dYO$MC#@FzWy4FSpLxTW-G)vn2W6jkt3-kP4AW+$Q08f37iB$;|^6&!Ob( zX0ImzCctu$$-s&voCYSpc-|Gpy1lbSrh%QK-1VfX-cH2>%s)(kDD-RI+UhV}woJVN zoG)EfQ3{XNKd-T3x$64q^W%$%M_$^TGqwG^C8^jttF^z$DGd@7jygtA#IT;Sq!yv< zQ!{Dc?PwY5@m{h*(I(DKu%OI2hwW49b1k$C>mXr=0WZ_ASId=t%~C*LG(014hmVS{X|Opve*4Cm zx0W8YdyO})rV@;5NYsDJ_rx%R6#6^b?+8ghW|Lr*bGr>z#;eWiVK~L8Wz*t|y4^1}2j4453YjriW5TeX%TgI#l#`s%LDNzT-h=bCN9eFydV9*Xf8a2Qdp z|Fp{*EG2VDTV)e%n$XKrNqY3eoJqW|aHlg^LLB4$2S9(bU{wa^?=S{;oe?$%1gq}} zc|-A1+fNmmv}SGGul`h8K8_!s`nvu5Oq(btv}YQ%>Cn(tUy-b_S?rf(#*NpFq|a1c zRboS~RDQRiRh&K-73*^+2A^y8xZ$?{gUTr_u@)&~_Y;gJ(}1Za#(QMY zap%oXHM%4)XbiLKdp30kg4~Z-o?n}FQ*!Nbrg-QX6j!QLnlmta>JYiIudbR*M3~50=I4s0K z*{$#|2<-N|wOv?u*fD+Y=H5w7P3fCo?+aXiD%XTLTD2uBFGu;)>FCi*JKRGaRDZh7 z=VmI=*+ z{oTsn{y2$C?9~ykMOHqLx)x2WqsZZ4!j}aA0;(G&XJ}z|4QJK4tcDdTv%940c1Gdz zD~zLluu>rd!Dy4($>%`-H3~L3+k{$NXb0Rr$#cKK%F)DDW!YIBcXFv~OhWSSpwVf; z#apa?1E6YFSoJ&Lq%M*I2tS~twQr6VfIkXPl8%|rxAYd*#ErF$++sO&MN2y zUV2b;>(-^?uKi$GWfJN2I3_9@ydF_XV7awvsTX`{v)Ql9M)%m6>r2zI5*A^ri3?PS zmUT06QGwj@RQZp}FnjB(HE3^o>l_#$uYp>GIvPUg&jeEqv_+Rd#1_1oFUHYd~sbA)DFS z`60^d?lwc6xus$bbGpB5=|hG)pl|X5Kha-cfZE! zPcsEZ=a&kWmScz8-4m9GE!9Qj`>}dW8M9JzgO>#(=XDF=2Iv~XT^iV)PCaHljO?H% zT;u?DP!|q&Jxtqd;Y!Mhkhdf6bhor>l{2=GYbL?OF_|=5_n8Rcb#RC16gphCOvHDn zFN|Zx25z*0i{~kP|!8 zn6yN-N?4TPW@VP8_qZ8B@L{NSjg+{;FhNRm901qh_MXaiqe;fjQ{hsNIe6mvD^yoR z;EkBDVvJWM?B5vj&tmX92zp`{$A@!n%ACd&;cPx$e0cFZ5_Fd{*-thSe$Lrcze=T( zFa}M1@=Coq?aLSV>}BctXPMaQ?7P=tD?va2X&(dVTjQ+1RrzLfSE9Q}a%{w&xCsY@ z2u2GQ!}wwk0c)g1u=w&;NZQzs?ZC>P)R zf8m1QU)e&X(}z$XxXK4#78kJ@EUmsn%P645E%_11Sfgkrq%}tLR3(;6Hxgn?eJM;^ zIlLdEX*t6k=tRugm9zSx_W_(p0!tvq%vW%&PcfLeY0()NoVN1*%NM21&m)~Enm-ox z3!vbMv8v5%Y0BASUIP5tx4y06oiYb~t)uv}pcZM2uYi?=vSkwH;|xAY@*g;u7+XeT zxLdW4;rq7LGwd8uV&;ZaMde+3AhH$gwxgQNpmsxw!Z%U(O;s^U=mE%Z1g{fuA;wKR z-*Qb5j`>MovI3L;?(B`FP@|lc@*{-a5bZ5Y>V=!%l5Z^>vN&LbOK|y7WUK+F-&Hv2}$@#51x4oSTP+6!|lhd;NEa%A7o@IlHOi}mzVcZ62I58CCgc`H8^#x z8F}{%n=psoS-?dQmoWjlHuQDULJ-rY+XRCo9y(bC$g@wAe$6UW5-8njQCiK`tj+|6 z>t5}!YS$iA9mRDA2p3|;;(HWg-e^6OUmA)gys5=0OoF(&mND}`*8|N3atE?UR7W@0 zXIuRm9H%gpIBH-C6I>(ZwEKS`uP`Zs(so$Wj%i$&;DT-4kbs0I^R;B~GAQ7%o5`m= zb(#HF%Rya^x2X5y^18;Y?+%sqItc_vRe?&sCl94)7`GG^WF@M!>eT^X$47GPHF#)` zfdxJE+sw3m3*rzHX6>6rc{o~oXFA4mnLo&n^R~3}<+rBVzb@gTNdes^^G35CJXjrJ zdziEJz=Y)9AIqX@lYv%AUJ4m6>{z;Ld~(hD7+F&Nr>A?oh0VM)PF72&Nmmz;XGK~7!^j(;aM3!Ft zpUW033w>k*3zflp2zBiNyk@WJYfWky-|zKzu}B=@x;4#bHqi;b2XY|6msXQSQUcR*POq zZ4GO3knBFH-#|Mtw!=z`nb3-aw)h7GK*Hc4_;*7dnYwDiSBX7DbmGrSfg{U*V|g<8 z>rD_fDT6V|UpjS~Qxo5_fe7YZ-(-%aY#gp_+BAf8Y!aQ4V0|~(LrXZ4eGL$>Kk<8V z7;vH}nY6W(3z8BNfA+lzX5N_{;TgXg8Hr3!%f30e^sF$Zz8XEiz6q7S#*p@e7R&F( ziT8ufp}?&)%0lC*YZ7vhr~mXA3G#$gAZ-0Nfj>p<0F*qsm zz;fvy}G*VraevZIXudN^N@FgCQpBsHG_;<%oY=@OM7e##i zFmaFQ<@#XdVVW5K5i&kk#(68AGZfgHAK|xx#4|pOqzOK#J*;{d zoFyr!!Ss(T_N;&}=GJ&8>_iY4J3-_03nt8Vjuh6tbfyFS_f$ZAX;#|CUA`lYlGj-s z4|botl0vD_!v>=MEM4#=W!H;4UGiC5;f`qwMy^RF9#pdK(JQmHPsZZYhagpOJNNtD zvbV2fI0_@1&!WV7#cB1XH?<#_LIT&*}YmkFSOWC@Gt-TL_)*y%=uJI)3rG*bH?JDajJ> zlvEHE!!HGcOjA1|W*CzQF{R6Q4l~baQdc#rCwo?@GcKA2b`*dekPhRk0!+4L1ABKw z7w0i-@#F1^caz;@VIj@+WQ?FGAQ4oGd||Et?FK=89lDsT<3R`B#9y7K)od2_V=J?~ zoUWeOG1#fFX*=861^*m9EXba^Q*P4I)^iELsbmCUg&JskeK6nyZ|*xLK=7S^R8=X? z&is_|l&P$!D4E?gO9~rMr%Y3$Q_5Dmyu9pF`!N3wxEK3TfxQd{x&sWoAu!HfKNOBp~DF;H(F_GGgpg`IKpu5AcuT(B602HAe4 z?4!uVzPBTHa!#D~@P4%admJbE_oAt^F`2d@R+@o#R3Ug>BV{dhdgSsr-3u@6@*}kiOA9s<=6?^k@1dBw zj%LbBJm>G~)9}NI^WT2It1ZD|x z2s&&zjAaPQV%Hid&Y6k%Rh?S-=F!^CHNdl9Pg5lv-8Y=z^xGLZhBPbB&Dnc|8!E2W%1gr3lqUDT^`doD@k$jY+99#=VD*Nw&t0*|&a@6od~LD~ww< zcCvVHMD1dI*y$IHebi>AX%L+hB>XTu#QjEbYVLT%cEitypE>Rr--)UAe{%{&uW4wU zmw5XZK|TF?*D=0MCu8{SFuStS2K9SRW6sh&bKLMCIcv2adMgM?UJytt;gK{?Ym4`p zkxjx`L@B+4m@UJCTr8InDA({9y$@W_>s^rZ613k1yeHYtWzNL=g*fHA@@VQ zt%ON*+7lnVwM-7SPNLiu^NV&&B6n$wje9#~C@xy?AH98Uxdw)_seRz^D4cIETA=xe zYvWBW4do)Kv#4#sPBU#2QsrwVC>)! ziV68;^JcScGCHjFLA_t1?gFGRrZcfsUByuBbtvCe#nVjYIN7$$BlIZN`qbL(XYvaY z5}>G{dZabY_BE`Zg7L57(B=5l+)$~ zX^a{e(VY3{0*ubiW!qA%?=96kxuOb3$^~H%n_#({lco#oy;Fx4em+=p=k1N^v>4c; z5v7Ri&0oR&tOA3q61atmfA1su|GsO|N~`XQ=ps+DHwFBw<8p|VJw81ato2rVhRlZG zES$oM!ipP9Q{>0$GByY5$d=`6>ylZ=O}G0BpU-nZLWfNLj{F6(;*Vy#i-YA+n0fkp zQL(ff76|iIS1Ycm7>-tY+oau@eE_$Sq1m@j^bVJ0?7Hz|-Sb%PB+Gy8pZXV(<%@;g ziWy&K%U0~!f|P~I{Nsnd`q$VD+t0586`17d$9_L3{IGY!?=2Y%6DtH<9VV1TA=C_?`F=Fml}AAO6%C-E6E z`Rg^Q$QdwrJ)Q2+y(`ZV~*%|WXCSqoK{MEa&Ma=+WSaQ-LtbR6)J`4Ool(0AZ5JGGO3Ye!*Nlv`q&~S^Gk1Y5$(w1e z{Kx_d1(ATI7MMi6CyGPUw3(MXyjPUA6Z^#Cti6h-rYUmfK*4?# zb(fwlH;4X9_1IiA1%@+KCkZ>p#pI+l(@NvpNrd*Lx*&or^REKI@R(x$?i2z1_$i~{$UAxaHTdAUIXPS|zA=x5j z^tz{PqN*~Z9>q3eIbB`qk`~ui>`tozv7JOv1LZD?a{YnEa(n1WjOgL}zt)m;@sD+d zJiX0$eG@_s{xhASp3ZN-yx85>eBwd5Iuwm`_JHbI9I=TQ{^_Vv=#T7rnMtb&6<)h3U zPZ$3#Y;1d&3Sl_2U$05DOy-_;x}nUD^TwNaXc##;7!2ZgHMB(+d>!|EQ8ddLvZgL3 zW~k87)IUS_xEzP_*mSZp2k(^`jboeT^YedE`~$iy`e_0`^R2AXjwNFM19x3|_^)TX zDLbBx-|nem$dUM+#7bqQck!x1p!nvhD5)9+JH57a=X^#wcvz9#WH6X*2Fu&xwqs0Z z1n3B@BYxvA%w1d7{U;GmFo92FB_ippTzIQUicLnZU%T@CPzNBT8$hsj8UH4u5%{jE zC?V2yia9bH0gLefsLhmIScAmd95GpL-IGi!s2|+1ij5E_yT`h9tBJY-6AEKoa07c2 z={Y%j3>#0{7t@qp1UclPj9?N0(5UWoZCocHYd+%W;UFyN2g0BXfRaKYYO z>CL3#*~RVD_e|986?}1&4RB-5KGa{0!_rfN3$px1y(>Tc4EShoXXM+TDYkinp^Rnup`lpTX#asc|LKB{ zlmJcwxG_8!mo?xVlN@dXCN8<;teOpi$xj zVp%#zXFF;;-rCpJp|4*Y2gq!;!w6q{5Sl8XrVt7s<-m_~$Yg8pH%~;2d4FUtN-&kf zO>b?Pz*I1lp3{?Fp|+s4rLeMDp7==vMmPG89-kQiycJS5`&TL1JUvMBa9Db0C=Ge* z_Y`TbaBDo1k()mg4@dlWMm2(0zYFeT6ZWebub^P?7v>qMNU}_sp?_WVSFymLkH8NH zflbE2{lB-`A^^Ln=_$EH^M5ZjzmjSYv{cl9G5&-5S2+w$39M57cL-pl4G@4gd?Oj< z|D6bUsjK`IFAWw2`v09Lzz-R)`}%$~5(xj11|GH=IH{b?X2-cA{eNNpU#*P)KQd1B VJ*A+&6h|1~k&#douM#y1_#a%(<$wSH diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archetype.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archetype.gif deleted file mode 100755 index fc84feff59773f806174bcebf6efd7a232f155cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2149 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 AL;wH) diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-world.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/archiva-world.png deleted file mode 100644 index 8afb6cc93071dfdc63ed93acdbd6a26b71d1f72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1936 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.gif deleted file mode 100755 index ce00e3d0c077d68b72cb7a7d8b41c30e2c79288e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmZ?wbhEHb6k*_Fn8?KN|NsA)GiL%x1_lPjpDc_F3``6W)6ejlbLO|UsOK2dgXKH^Izw_{|jbdum%7=A0wUs diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.left.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/arrow.left.png deleted file mode 100644 index 93085aaaa86a42abe02bf445922b5a946812c3b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y>0U`~puh;=8mUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z9paj_=LCu>Hq)#FTFYcE|A4k666>B zpW*3t11}&?-P6S}q~camLP`n)hXR`$8(RZI5(85M1Ct^UZ)9ZZVANm}NMK+{VPFrq S6l4w5!r0U`~puh;=8mUKs7M+S!VC(K#9UIO`&C9V-A z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z9paj_=LCu>Hq)#FTFYcE|A4k666>B zpW*3t11}&?-P6S}q~camLP81)hXNZLn_B||QxY4HPz2(Qj7%II5{yhd3=A<0?4cd& RGJskbJYD@<);T3K0RY=JE`9(2 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/breadcrumbs.jpg b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/breadcrumbs.jpg deleted file mode 100644 index 1385fa0bd685e83319d5a1fa2360e4c022f29951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmex=PKf)jm@&Y5o ztx%GMl>;atF94L`M3G@+Vqp~#4GNijF%hUh6kQ(!1IR!zK@4$5q5roSc$gW1wlWJc l*fYG8AEIVp#wGCIC~HHBbNm diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/collapsed.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/collapsed.gif deleted file mode 100644 index 6e710840640c1bfd9dd76ce7fef56f1004092508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 ycmZ?wbhEHbWM^P!XkdT>#h)yUTnvm1Iv_qshJlI4r7uBZ*YkPFU8d4p4Aua}2?(?R diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/dl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/dl.gif deleted file mode 100755 index 710e7b848e343f9fe07a6d53e36216a16f54de2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388 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 RPrLvC002ovPDHLkV1lJ&%&!0d diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-maven-plugin.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-maven-plugin.png deleted file mode 100644 index 3f27ddb6df54facd5152a3d2b0d2aea4c2772d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4779 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-pom.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-pom.png deleted file mode 100644 index 7ed1db58311e6c07f38ec922e08182907637a3b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4762 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-skin.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download-type-skin.png deleted file mode 100644 index 0671e09561cf1738dda9c9e4a5438a60300592bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4861 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 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.bl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.bl.gif deleted file mode 100644 index c59ba00625d1d780296edeb67b43a9b2af222fd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmZ?wbhEHb+{eJh@R*BX=FFM1X3m&1Yudb7Q`gV$IJT_(^On#vXU@EO_3G!(pZ_s{ z;!hSvE(U%E9R?r(nZdx4ATYyo^>tmS`m|^g3B)xUIkO*kt3DwEYiml~f6^aNOHar7P7h*v_2bxBm9~ UAA9P~zyJNep|PpCT9CmS09~G5zyJUM diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.br.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.br.gif deleted file mode 100644 index d80f62ee803cca59c365386fb34c909633454f09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmZ?wbhEHbP;kap}`Lo?pxuKZ!PN5#j9d&%3_1)z0Fq~5vT*5JdHOB?;yGJx zRrB84^P9h|S8dv}&Sm^7x4q+b&hfdv&Eo#AbL;=|vpj1$vM4LVN6Yra($AWj3=Gx) DxKk|} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.mr.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.mr.gif deleted file mode 100644 index ded125be9ecd16b046cdc27c52fb21c2e0e08cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62 zcmZ?wbhEHb>1|0?<0Le2j@%Pj>te*WZA!CBo M=_gkfFfdpH0J7f}TmS$7 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/download.tl.gif deleted file mode 100644 index b4a8e97d3fc499efeb8ad674860a3b264854a6ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmZ?wbhEHb+{eJh@R*BX=FFM1X3m&1Yudb7Q`gV$IJT_(^On#vXU@EO_3G!(pZ_s{ z;!hSvE(U%E9R?r(nZdx45OA{d9HYhSv%CK%X!NCI&eO2aY!?t{RXkskd%t4c`BQNIHFki;O04I HK?Z98qcb{v diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/expanded.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/expanded.gif deleted file mode 100644 index 0fef3d89e0df1f8bc49a0cd827f2607c7d7fd2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52 xcmZ?wbhEHbWM^P!XkdT>#h)yUTnvm1Iv_qshJlH@g}+fUi&t{amUB!D)&R0C2fzRT diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/external.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/external.png deleted file mode 100644 index 3f999fc88b360074e41f38c3b4bc06ccb3bb7cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^+(699!3-oX?^2ToQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%@dWsUxR#cd{{R1fCIbVIy!atN z8e~{WkY6y6%iy53@(Yk3;OXKRQgJIOfsI*BO@UFsfhWLBc>*(#PB?Jn2*(o!76E4F z2oaVU3``tH+Kgs0GI5+@Tg}d)z%jd%F@?{8!SRZ5b1yT80-FZIMn)zc2Ca66y`pzY R*nws2|yPkE-3> z-8b(3_?ov1cYiV%432IDm|3sa>)kUm%nWx2;PmwLe!t&8>~uQMm(4k6LI`Cz9Dc0p zx&Tx;XIE7wlL@7i6(oef_V#uMc)NrGOsCVTl=7;s>w_zRjH+U0Ymj!k-P+vTq}6H> zV^0g%)=c>R8-N-3GD0!|F@>GqJ z%4)bdf_Rm4wwyD#6GYg!0ieZcvQf+lK>!v2)x`$$R0x3iqPe(Z=9oKK7jS;E^w*b55oWe`mg~7=)i^mlj0C%nT8s$wuo= zb!&(s!bMVmQn@?FCx!@o{yMsKc&XWJj=)i68(aN%$9JEC^W*#Yp8+C_MZ$~UM;0NT T9Al?300000NkvXXu0mjfM@0T3 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/footerborder.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/footerborder.gif deleted file mode 100644 index 958ce7ae39747d1afd90702aa3b6bdd4081d9a21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZ?wbhEHbWMoign8?KNc}wW4t6Ts7|Ifg{p!k!8k%57UK?lfY0Le2jv9lJMCn#OVEqF*oew~oaAu*+mN;-=y?VHT3tIe$XQqrDo-uB_a z!$aaK`z6))OKGn34?nwc^SuifkIL#EmDgV_qjg-#8v*0u4q4%1moUw{LZ54UeCgzNF^jX`uv-XK+9g@yFrG9?@ z!9&5&Tgk*j(b!GF&{N4I-Owl3GNQ;Kslp@APSw&&&ux9d>WxL~{EYoKm2KHvv3+ax zZUYB?Ae*8JnchZheXeEaa>@87?_fB*jV>(`erUx0B6j@wa!KnN)QWMO1rn9HC8 zQU}Tt3>@bftT|;oHYhlHH8T8tc{qL2LBC1&wnQeg^-S05<#H=J%;q~&KX!$OXH$lP zifQJ#9>L8|xhAVRHT-xPa*}7JK>(A*!AmL!CQC~j>707p+C5b#ib-SZ5@wfn#-0y8 zor_pb3M^%mkXhlduwjw4dk@RWhYZ<*tSUAV9x3eYyi#^d39lH{872xT#>g14FgCZb z+Lvv}DClhGVU*`8y(Qe}(9I>Lw<6->0~Q`zX3oMH2272dBARI`0wDzxS_G8b_H+a` TZ#n2*^y*Bf^Krq04Gh)*dSnrT diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_info_sml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_info_sml.gif deleted file mode 100644 index c6cb9ad7ce438a798426703e86a7ffc197d51dbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmZ?wbhEHb!Rj)7jHhhdgsOUdoQoueZi?7 z>>gViTe&E#V48n=mrru5S3;v}WQB8hiDz7$TU2Fg8RZkU)J)l4H+4sO@7jjxJ4?G(<~7c1nYFul=C0P+d#d`@bj{yi z-npcE!T#Qb2PP~z)H;3B%r(bntUlH>Y2~CvyV|C%UbyM>vTf&9?!2&e&!siHFV0_c zVB`KP8}?n^dg$7Yqc`@PxOMQ%-NWbZ9Xfk=)1K2OFF!hV;r{6>kIr6ua^~ve%eS9j zy7lbD`I|4_et!J??bq+WzI^-n`RfmdkOIfh!pgqYwSCK`t~@$#!^!1aj_y2mzyI{@?vuB79>2N$==JkApPs$`_~ygc*YCf)diVLp z{pXKfy#M&+`?nvze*gIk#Q*;N0|qHLXbBUFKUo+V7>XElKuSSz!oa?}p{S|3rL`#` zEj=M8CWV#D$GthOu#hRgfH^NPHz`Z6or!6tudIJkhF|)EqL_SUmH;#E=*;vU)ut4d z*}1MJ+3|6yK5|W*0YQlwY}}E_93D;*P3)($(!#iHyj&dYc$?gAB*f@)n?~7Mn)5Ze zB*b!gs&gB@F*e|Da`5(ac688Lp~TGAEh5PBlHo`4aV}w%hy?;49h(#+>`NXTD0aLHUh^4-IaSR_}CU{9yu9PC)l<~L1Nko32)a+5&TTv{OQH>ECg6toYktNorHPV dSzT1+Wt~O1Io;%41o^$(T?D-5&UIw41^{6*mtFt> diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page_disabled.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_next_page_disabled.gif deleted file mode 100644 index 99c292f6218f1f9cc52db66eff0a2cfe50877d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80 zcmZ?wbhEHb*ihh8CoU}`S8316&QovS dB$wyP$t~h6E8ptGALl&P+g`wP&H_gUYXH0To!$Td diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page_disabled.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_prev_page_disabled.gif deleted file mode 100644 index 79c241b37e84a745a000bee27b5b8bb6ae832d37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHb diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_success_sml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_success_sml.gif deleted file mode 100644 index 52e85a430af9da4dfb217d71b4d6f3a1d4a4b571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmZ?wbhEHbBjy;4ci{C-1K14rU#4Xoa9{m6qopA9n0cn|!>ecYkij zwyX=!4*mH3EoqLqSGiVbyFqxD(bS8XSDu{6U1jZO70Ic@{~t&7=B^ zBD)NOoAkU&Gy^LQJ5PtV?u{&65}4ZUmfYbweP{LTy^YnAGv=AGa7*6wj}%~b0?7r5!@qH7P%p1*$L z@#{ODxoUwG+WsY)zWExj-aqxpQS(e!bx&6L`u)?tfB$~}{{8*?cVO&*V`-G2NeC$Z zWMO1r=w{FXnGVVm3>>=|#5rX=HY{-DP?VFNPL-%m%>B+*~5-k^-+4*MLFr;tQ0}^rlS-^!^Q`Mx1hrB$jwn&hk~Xk=#Nl+_9Nu|Y$D G!5RQ;-6)O# diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_warning_sml.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icon_warning_sml.gif deleted file mode 100644 index 873bbb52cb9768103c27fbb9a9bac16ac615fce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmZ?wbhEHbB!Sy%bj7w z8LP{2I!WYbmF&-Ixi?j6tD|K1XR2M#l>Aw*aXL%wXS3nYW}{zi=4WzsU5r%E6qx+# za{AThd85YVOsT`KDUrWsBtGknIa3>Sy(4;AS@f^Dxt>-=XPXm#FD(1Lr2hBv=9?3X zZS^!XrNw@)>eiN((2|w-y>{aB1+99DGMA?}+UTggT+(Z*rf8+5x~aWVOGcurtl;&U zIa)H3I&#vwvQjJBn`YHj9iKlB7`)(M#!e{yWMO1rC}Yq8NrU2qfqia6SyOXMYa1sM zM_a34eqyRfcQbQJY;^IYGTuzaxglKLqNQEA}OiQec+sQ#rUUjLqg_MpsPmY43 zsgmVV8EHK$eV-B~6*UcAW2+w%1e4o&9#aAczLGF}PmMg|6J0Ey4q A)Bpeg diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-down.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-down.png deleted file mode 100644 index 7ced90cd251aa0056eff0762c1a6372ba9980d79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLlHK)@j7&Flsg^7eFb45_%)(;v;%;J|a_R^P{e?qS>c zT?EYLE0(0c{gY7Lw1~A%XO6vM(1M*0g_j5vZf>d)>o$n9o~P0**A{xgDa7FN(zoYh bnRpn^+OoPc@A;AgG?u~B)z4*}Q$iB}OZ!!; diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-left.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-left.png deleted file mode 100644 index 9e37b41284490f8e1fe7c8fc49b6ccea00e6aad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLlVJLn>}fId9IypuoZG&~xO!{mr%} zzgfEG0ZU>g$}8|IxW2fsYE|Bhs|T|hrlgBCxK*?D9Gd3X`LWN>LZ9{CywyxR3|CZH VZ7;lW1iF}k!PC{xWt~$(699IHQ7!-g diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-right.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/arrow-right.png deleted file mode 100644 index 00a443dbe512f343ef3c515b977fc858f2e10c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLlv;~`X`IF z7)1S;-tQ>zmorttSRjGzDoe{Me}U#1It#YU{NNNVdxLp?&A}IucMR5lyCaamaBnfI V`(|CnZ9wxFJYD@<);T3K0RYhHQ*HnN diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/box.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/box.png deleted file mode 100644 index 4d62e48ec9db42cd212595fc26a5bf270e31117d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLlqTPWy@0^|Jj~!;g{jE_GCMUd+*dXow{~MJ@UMWimJ<=3Ef<5n&vJO>>pS$ t=maVAI|r&hd+B-VtEI!vg!9S=7)o}tO_-;^9}TpC!PC{xWt~$(699>HK)@j7&Flsg^73?X45_#^rQcJCL4b#)z2m=qVab=`lFvmYpNmUxXz4%DF}bf}d|cDunVH>FGrOY- z+D{EEKZPcINzVS9ob?$uHn=&y~n$8D`1 z2l;<(sQc1T_xQ+>|Ns9p5DgT6vM@3*7&7R9bb$QCz*ci$MuCTpRKNR-^bncK1eb^v zqDfrti^MpzbSB1VUt0b}aql73M;xvKD|}WtK1fk5iV!?;_@hVR1O_f%UNKGv4?_+f zX(=fl4i6boi78XK>s@7pr?3jKN=S;#aFP{YATA>-vrJN4*4aRuZH4n{cJUaejfxA_gcK(+xq`Oplq9?fU9B0wZdiD&sMF8xgvG$ZOwdF25SHo{3V^UUYY#HgTdI?_`o#% z*+4@Yr3$?m{{R1f<9g(4pfb*qAirQB7YrDJ{VRlkfO-F_yT!0FAu@)cfU$A8|w;gM3p5q0xK-GY=ksO<{5B^qIqf@MB!J7B~ z{1GGdO(JJlY>(S>+p)MWkN!DNTij+{X0d=z+l>R4+9k^sW?20dnqBs4=k)^%lBaqF zJcuija{4fLRmMk&bN6)3w@+ShdqbR}&bdxX2)52S7_dP^L~n(_ en*UX0I~Y=|e<^0m*@goHiNVv=&t;ucLK6V|@{~3J diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/on-symbol.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/on-symbol.png deleted file mode 100644 index 4bcccd5a0bea1b5e934f2dcec97029de5367aa39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iOP{ z1u+$H`JPz-00D7HL_t(I%Z<~$OI%S91@PZKLNJ6aB#)r2B*fBwi6LNJELOKyivAyJig^et-*vylg1z86k%)M_u&YU^7W5Vjj z5Q%!&m6U%zvW82&*|ctQ)h~$0MxesoE&4L7^PnY+wIId#m{o)hlM`~q_9%Os$iItf2LTl|2K~FRncke{&ro$ z9EQJ8H=az(tQ(K97{~J}6b29Qd0I#Gi!B^gK}u^Iu`2i(>pjKyLgt%A{BEnnZ+IV< zSFx%=E7ySCkK}H|9pq%SEzre}2`P_o7UV7#u;B#DIk_kwQ#a(fHigFne8|bgf3LA9 n^fKVCV7_HL$llHAmUM6f)7fL{URfie00000NkvXXu0mjf$Dr7# diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/rss-feed.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/rss-feed.png deleted file mode 100644 index 6652d3e57122747cd8efd84bfaa335552031c9de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmV+*1K<3KP)kSg<7Msw^-nF(yVsj7t_q zQW;~33nbN0TIjS>O#jThdH3GKV%i#nlbn2a^Sk#uU+xirsqxC#w(aF}29pSg7!V`v z77zohpH1y?v+Oa(sr!UFWcx9}&Z`VY+@BjpCEST6}Bf&hO#R|p>St#;Pb^55> z`Q(NBtTcL~@>6t;j1rdT3HNT|=l;N0eIhKTt+l&;K8hlnI3VsRvt{IMHcHp(w5nHd zH!dUEcno%FAlDHmMnP;WXtPfG`wzG~RR|s_mdGD`kK#L5uzf?1!9ESBSCP5XFRC;f zkIZa4w~^a>nB4HYNTC~o!(BTIw}0G(T^eYGJVr#Yk&x@(NB0Nc(Rt)N@iQa%o8ORr zIZBwF1QQXxbb?SmunGG#5WHf<(0)0NFg<-lgCi7P`;?BiE@Qe9+|`fJxk)gV_?6Rm zikp|9v>lj8(8XIczWtDFaso}4k)8o^Z+wm|4bZxJ5?xzFI=YFUAH$`AkSQT3hII#` z4RrQ8?$--sUyq`-KOrt+4xPcRuF|~r1ptMiBWQ^5nW6!V2%F)>``#pX=oFGG;(z`a zZ9G7>?!@eVo#t=fqgjd+IW1l@tH2gm9-#S_KD*&S1uad2- z(Yk#dfVl5DLZ+yK5rc{qBwd2m3IKj-2A>96fBgc0O`axXid&cgz-;X$I0Z#z_Os#p zrR~xyMlf9op|FGO?;E((6G9#{a1iy%>f}$D@*q*ULbh;^wOdtkJGacs)OcmAe}847 zkZ(TnNj5ZOiq90^T2J078kCM5C6*RvkIKe6mv$xR;(U}45cNv%?UXhAPf=AHYRe1t eV|y-6UwQ}$m0mqBbbp2xW7TuJ&zS0$bu?+ca%K2>T guKw7c^^-+{Vf|X37q@5M1bLUi)78&qol`;+0Ag8wng9R* diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-lock.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/security-lock.png deleted file mode 100644 index be4d4da0362732f356cc89da3479999cec666ab6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl9%d# zR;^lf<;s=Yw{Jgw{CLBL4XFB03@7@NkufZDj_Dnnsk0)|XR?%__ Q2U^46>FVdQ&MBb@02fMkQvd(} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/up.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/up.gif deleted file mode 100644 index 61942d6d1c232805f932d3894fa3efb41dbc31f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmZ?wbhEHbxA_gcI@yYfX-VUD6>PlTrkbJWT=7sA|g@8>OlZzIIWU=08SOCy~C diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/user.png b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/icons/user.png deleted file mode 100644 index 7f4c6d7394380376b7a74dfd76a4afb41da2824f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl?_b&5v3m9Fef!>=T0eQ~)^}$%?0@v=|IaTw zwy%BvFVdQ&MBb@0FvOTNB{r; diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/jar.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/jar.gif deleted file mode 100755 index 63dcb611a348bfaeaec3d6aa638507f7be54989c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1964 zcmcgr`BzhS7Jn}Z5LN@C1rs(|M8_piR49xSgbs+O7M;^pTgC!fMw#Q3qEf83hQ$g( zr-1a7P}C^P;8rjwQY#q3mSB+8pb}yT34}oQ^(F7U@6h=p=JUfn=bn4dx##ow+)v8B zzsAO8?S=M2RtN$BjL+%&M9U8bC9_LrFh8-RHr8_{reD7l3Wb+%4d9~>7Zw%_R!nWg zR4Nsi8E|yfC>0{0Q!eVTH#`K#ajR8fK`>yqKCmv}7;3Rt^m;vlAPy800x%;7K*-W) zG@>amw+wI`jJ#RF5k05vuHKAc7+&5uh~YSf10fLJd_2|AF^RMm;sCIOV0ElDVPXZa zBlbltsJcB2SUGR{5Q7ElpIG1wNl?4JqG=GtRyP4Y-Z`rPhy%a=aAHiXK~Yqx0~Q-@ zv|Y!1Rh0!P|Og@KJUL|1FL=a#+H-*P2PmirI!OXuz$mDV9*U zv}BR0taiIyYeH8Hz=~i!0!hDUc}`{)4{hZ$R`GjNLh5w_{o}W=C-cikpq5MGb~3rVSQUYjj{J z=0L%7iA`_C@r75N@=g@P9T=`Rqlg_1*!R;5?0U`txiDYEHw_R1Fiv3rqcN>AMJ+beV8xO9 zOoIg|HNb)ZqZV->78~Md>k&c!7la_B|J~X8NBtuc5E(!)nU>nl?kyp&-IBp?zu9-0 z5}MYK`ry_;h2OimV*Z21p&x^juF&>z!V=x7zxqXI`Eb7{(2or_?CW6CXjvaaCl2Np zeRzXXjMLIg|M)5K*BWRnE;^~mgSz#2UE0~=kLr`xo!TE=qTmy}*E1sNA*zqa?#X3P zT7jyRKq<2k_TG_`$X{lC+D(1f_IZ7BG#n-Pd8^ywb8}Z-ezq&==-)^4>MA=!_mcd* zr|x`k*I#*<<(|-8li}mk5)ggpv!f$V&K`a)Vmir0212p#W*?{7=td6_k zOxVpQl~Dy185esl22s}C^W5Pc5fzzEm-gnnN`DRol+gw&w1ci|I#>E_(MJkq$*k~JARZs}j{9lR1+S=LleaLMEb zI|pX8_d2J4Ax$izonhaC1N<@}m_&w%(UXv$Pn28w7*uijhZDU&Mt;joBzpNG8!KT_ zFvH_Q`b5bmf!$v-h`y9erVI6gF41%638cuyGfyfbI@7s~8UmTl*da(gMoQfo8O$KU zlrh+4)Ah36>*syqT3DmaaZIm0WDY4cBr}Uigy}kli)UdWd?P7e3OS_^hBNA;(yNDV z2D!2sL{dx|$Kzr-r?NGxjlDzDO5%U+&%dumdEojI%L(LAfCx3CGFqDTbpz5t7mwA zJQvCx%;Rwbj_8U8PHxO>Y20viN&7tTVuGF@_$bfNMTmWDc(LZG$LZgLTrL!E+j*Xu zfBHS`igC1fcx9VU*y)G75gM8O%W(X=?PqSwcWvwNN_{0ApGw*EOOr_6a;>vJx{v*S z$g#iOkKmL4GqQ79{GxjqqPGHla=`l+6TTcfdFNE2Bq%74yJiogh#$Fg`MqXIPSEwo zlCe*{U40+0eH1RYzG3g4y>$25z3D4Kna+`4G$ejddz`|C8V}q!YJJm~V!=Zy9I&+-x#j4J(?r7EeV(q6#rk`B{=~A diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/mavenplugin.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/mavenplugin.gif deleted file mode 100755 index 4e335e3f2360f6bc39b9dc4b7a868714767e262a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2336 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 FngH~|K)3(^ diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/other.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/other.gif deleted file mode 100755 index 9b01e3e2c7d360e498e9d9ada79d6fdd973b5987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2160 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 Tj?RV*w~WfF6HVw;0Py)64Wl`m diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super.gif deleted file mode 100644 index c8ee24344c2c70ae295bcf67d04860ce27091117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212 zcmZ?wbhEHbT*x5F@SOn!?%%uj|Nnn5bCehjfsqvgia%Kx85sUE=zzQp$`cG6cNqS2 z%4h^M9Bk$g)`~f?Vd3F+0cEc_9vhV$n>d&=?wr`T_;|m9bC-FJ}Z4;fFn={1ou2!0?y}dmaJvl9+oqSIx*!cN*VeM!(-&-$|7cULg&RKPN%d6|o z(X-|L{xa}eBpLkb-r3#T-`|%JWMg5lc3v_gjcXKBjKUt^AXlSw^;N7m+u!hO(Z;o}VatbFg9pL=* zOk0&r>&k5|25Xnq@3#v~d6}=+UeWOU!2NjwOmoxal$?2aBoaPK9+gO6^YNHW`J0c& V720(^olucJ(7+<9BE-R94FFh;)q4N{ diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl.gif deleted file mode 100644 index d90b8f0f8735504b57cd9208091f3a86cdbe3093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212 zcmdUsi8tE^9Ke6X5!a*#<UZkOuk$HjD7xs&*y!<_x{e+EuswZMON_$0PM1Y z;F0%|P;7|eEQe}6%TCIk1BJ3%SMBPwI0CL3M zXe!9JRkLLPYTz)BHm8)_`*3`?+j0#QGB`Q}^$`rV!`wKmEyK^gkRE$H-wX%)K)nw~ z`=FA+I$y2+M=|hJE$mRsMKH_%F9-QwVXe~AKoC6Q_|f{~6GRsX_~evi(^ioFI@8uPhRn;|RI;ccX(v9XQ;o6H~D5Noi;xGw_qAI`*u;tUsw`}dzU3^>y-J9A?f>_&HC*fg+!LW zt2|uXC#sH+N~MM3GY0oIO54O^c=B4Wje&(vvC>)8PsznbE}ZwZ9m>eThG=q2>KCxM2d9C*ZCZxo#4qUj6 z%YEcitwG`FwHKXfw!ZWP*JMNbSa> zM%`UuC;A^0giU;jW*TgX#bY=_GFo-;*G*2WO%F6#N^Ao4!Q_Cda~AD&2KhQE+Ukk% zaOFFDa)G}fWvlY_H{qVSJzrHLN^@kdizv?L7&x6XcG*ET*wYMg zy2swSI0L71L6UjdG**)3WtxbBU{9uhudW%|Y9;q-aO?{8dQ|O7-i=4nmHco&Zw)~ZaF!AOL(7fz z^2{GoxrY6@1kZ|sDE(UP{_6~BHA7yAxSS-$ZPX^L;;xj}us7oJFqj<9E7mNQquDf9 z=TO(SadESO^K{O^p+_g)v7+y0z!sBlN^`X4U2^z?KJiKK21_uQs_Ei%dvm+U0~5$? zl{8$?aQTAa|GpzMn2@8pHAu17I~A$P(UY$_*y~_t=JgTx%dd7?F}c!v)}$oD8fS@) r(JYBRXX9yPXcjIrA25rqmknAz-jWSjksRg2b`~6hmWka-G~)g*ocv2a diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl_sub.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/super_hl_sub.gif deleted file mode 100755 index 0b35f7a261dc4e8824360a9e6b7047b5f012fde7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcmdUs`%jV!9EaaRO{EoDD=Sy8S`Do=Yt=lnvp}t+vg6LFENe5ew(he$Q>ta$Nv<2V=; zo*uE+ssiUYxLt5%FT85U@gLxsa%!@{>w-QL^t^#D!xmx{L z^WtTb>Q!e~N1MUa&DX#E@b>-3Pn|uz{aWL|(4fVt>>II3bzlCL)SD;178=JUF|KOd z>2bG;eK;Tl{Ln`hQ^N^d5OY}HAlBuRqIQZHBwpma$W%(8y0Q9oA)3e!r#01d3dw)u z{Yhf0#pv9bNFqRAtCzGh2>AE{(mh_B!wR^Dq1E!HDnqpQk1QZ ze)+*DX%*ugZ?>94T(PG^J~g5juE{WUT+CX!n8qkVs}#ni;rSispo36!v`Lc5(zW zBq?_IT9{&o#(znUU7Q;q?jGi?3~oUDS4ny!h>?%%N4cnF(kck%T=3<^VS_mAB@X)8S; Xsk4=xX&twfXRgko7IFP%Bk}(L(L2(p diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/supersub.gif b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/images/supersub.gif deleted file mode 100755 index 3f28dbce5ffba1ccd9d4f28bc07cf3046894f70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmV;<05ShZNk%w1VW9vN0FeR!|NsBr-roQJ{{R30A^8LW00062EC2ui0HFXB0007? zl#i*v?GK}zwAzcacB*^f1mZ}R=82~2%C_#ia^Gw)psMf_wg-wpZr|Sjfd^ zXQ&7!*haVrdDK|;7-_jP>4kO4sndlBQrS65K?NErN~+qh1ZuOn8asq_8Uk~Ro2$E< I>remyJ5b?Zz5oCK diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.jsp deleted file mode 100644 index 77a2bd6a9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.jsp +++ /dev/null @@ -1,20 +0,0 @@ -<%-- - ~ 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. - --%> - -<%response.sendRedirect( request.getContextPath() + "/index.action" );%> \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-1.6.1.min.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-1.6.1.min.js deleted file mode 100644 index b2ac1747f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-1.6.1.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu May 12 15:04:36 2011 -0400 - */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
    a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="

    ",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
    t
    ",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem -)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument|| -b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
    ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.8.14.custom.min.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.8.14.custom.min.js deleted file mode 100644 index f9e4f1e84..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.8.14.custom.min.js +++ /dev/null @@ -1,789 +0,0 @@ -/*! - * jQuery UI 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.14", -keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus(); -b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this, -"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection", -function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth, -outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b); -return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e= -0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= -false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); -;/* - * jQuery UI Position 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, -left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= -k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= -m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= -d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= -a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), -g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); -;/* - * jQuery UI Draggable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Draggables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== -"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= -this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options;this.helper= -this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); -this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true}, -_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b= -false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, -10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle|| -!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&& -a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= -this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"), -10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"), -10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, -(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!= -"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"), -10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+ -this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&& -!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.leftg[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.topg[3])?h:!(h-this.offset.click.topg[2])?e:!(e-this.offset.click.left=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= -i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), -top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= -this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", -nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== -String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); -this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); -var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a= -false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"}); -this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff= -{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis]; -if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false}, -_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f, -{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight: -Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(cb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left= -null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ -a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+ -c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]); -b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.14"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(), -10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top- -f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType? -e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a= -e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing, -step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= -e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset; -var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left: -a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top- -d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition, -f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, -display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b= -e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height= -d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); -;/* - * jQuery UI Selectable 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), -selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, -c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", -c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= -this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable"); -this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a=== -"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&& -!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top, -left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; -this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= -document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); -return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0], -e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset(); -c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): -this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null, -dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")}, -toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith(); -if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), -this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= -this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= -d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| -0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", -a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- -f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- -this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, -this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", -a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); -a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); -if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", -function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a= -this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); -this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); -b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); -a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ -c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; -if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); -if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), -e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| -e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", -"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.14", -animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/); -f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", -paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); -;/* - * jQuery UI Autocomplete 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g= -false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!= -a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)}; -this.menu=d("
      ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&& -a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); -d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&& -b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source= -this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, -"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); -(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", --1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); -this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b, -this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("");e.secondary&&a.append("");if(!this.options.text){d.push(f?"ui-button-icons-only": -"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")=== -"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); -b.Widget.prototype.destroy.call(this)}})})(jQuery); -;/* - * jQuery UI Dialog 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, -position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
      ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ -b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), -h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", -e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); -a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== -b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+= -1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== -f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
      ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, -function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", -handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, -originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", -f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): -[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); -if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): -e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= -this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- -b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), -height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); -b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(a.range==="min"||a.range==="max"?" ui-slider-range-"+a.range:""))}for(var j=c.length;j"); -this.handles=c.add(d(e.join("")).appendTo(b.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle", -g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!b.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");i=b._start(g,l);if(i===false)return}break}m=b.options.step;i=b.options.values&&b.options.values.length? -(h=b.values(l)):(h=b.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=b._valueMin();break;case d.ui.keyCode.END:h=b._valueMax();break;case d.ui.keyCode.PAGE_UP:h=b._trimAlignValue(i+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(i-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===b._valueMax())return;h=b._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===b._valueMin())return;h=b._trimAlignValue(i- -m);break}b._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(g,k);b._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy(); -return this},_mouseCapture:function(b){var a=this.options,c,f,e,j,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(a.range===true&&this.values(1)===a.min){g+=1;e=d(this.handles[g])}if(this._start(b,g)===false)return false; -this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();a=e.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-e.width()/2,top:b.pageY-a.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(b){var a= -this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;if(this.orientation==="horizontal"){a= -this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a); -c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var f;if(this.options.values&&this.options.values.length){f=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>f||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, -_refreshValue:function(){var b=this.options.range,a=this.options,c=this,f=!this._animateOff?a.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},a.animate); -if(h===1)c.range[f?"animate":"css"]({width:e-g+"%"},{queue:false,duration:a.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},a.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:a.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, -1)[f?"animate":"css"]({width:e+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.14"})})(jQuery); -;/* - * jQuery UI Tabs 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
      ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& -e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= -d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| -(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); -this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= -this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); -if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); -this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ -g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", -function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; -this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= --1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; -d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= -d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, -e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); -j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); -if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, -this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, -load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, -"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, -url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.14"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k'))}function N(a){return a.bind("mouseout",function(b){b= -d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");b.addClass("ui-state-hover"); -b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.14"}});var A=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){H(this._defaults, -a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0, -selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('
      '))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]= -h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c= -this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f==""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a, -"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker", -function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput); -a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left", -this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus", -this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b= -b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5", -cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a); -d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c= -d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c= -{left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover"); -if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv); -J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"); -a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]|| -c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+ -i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b= -this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute", -left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&& -d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth= -b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear= -!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a); -a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a)); -d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()% -100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=B+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y", -TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= -a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), -b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= -this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+s+"":f?"":''+s+"";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
      '+(c?h:"")+(this._isInRange(a,s)?'":"")+(c?"":h)+"
      ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),B= -this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right": -"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='
      '+(/all|left/.test(t)&&x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,B,v)+'
      ';var z=j?'": -"";for(t=0;t<7;t++){var r=(t+h)%7;z+="=5?' class="ui-datepicker-week-end"':"")+'>'+q[r]+""}y+=z+"";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q";var R=!j?"":'";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&ro;R+='";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+""}g++;if(g>11){g=0;m++}y+="
      '+this._get(a,"weekHeader")+"
      '+ -this._get(a,"calculateWeek")(r)+""+(F&&!D?" ":L?''+r.getDate()+"":''+ -r.getDate()+"")+"
      "+(l?""+(i[0]>0&&G==i[1]-1?'
      ':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"), -l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
      ',o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()): -g;for(a.yearshtml+='";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
      ";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c== -"Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear"); -if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); -c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, -"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= -function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker, -[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.14";window["DP_jQuery_"+A]=d})(jQuery); -;/* - * jQuery UI Progressbar 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
      ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); -this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* -this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); -;/* - * jQuery UI Effects 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/ - */ -jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, -0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, -211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})}; -f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this, -[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.14",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}); -c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c, -a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments); -a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%", -"pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d* -((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/= -e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/= -e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ -e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); -;/* - * jQuery UI Effects Fade 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fade - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Fold 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fold - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], -10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Highlight 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Pulsate 1.8.14 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Pulsate - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); -b.dequeue()})})}})(jQuery); -; \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/md5.js b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/md5.js deleted file mode 100644 index 46d2aab7d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/md5.js +++ /dev/null @@ -1,256 +0,0 @@ -/* - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ - -/* - * Configurable variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - */ -var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ -var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ -var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ - -/* - * These are the functions you'll usually want to call - * They take string arguments and return either hex or base-64 encoded strings - */ -function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));} -function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));} -function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));} -function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); } -function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); } -function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); } - -/* - * Perform a simple self-test to see if the VM is working - */ -function md5_vm_test() -{ - return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; -} - -/* - * Calculate the MD5 of an array of little-endian words, and a bit length - */ -function core_md5(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << ((len) % 32); - x[(((len + 64) >>> 9) << 4) + 14] = len; - - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - - a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); - d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); - c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); - b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); - a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); - d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); - c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); - b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); - a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); - d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); - c = md5_ff(c, d, a, b, x[i+10], 17, -42063); - b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); - a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); - d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); - c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); - b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); - - a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); - d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); - c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); - b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); - a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); - d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); - c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); - b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); - a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); - d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); - c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); - b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); - a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); - d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); - c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); - b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); - - a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); - d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); - c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); - b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); - a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); - d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); - c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); - b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); - a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); - d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); - c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); - b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); - a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); - d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); - c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); - b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); - - a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); - d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); - c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); - b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); - a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); - d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); - c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); - b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); - a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); - d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); - c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); - b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); - a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); - d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); - c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); - b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - } - return Array(a, b, c, d); - -} - -/* - * These functions implement the four basic operations the algorithm uses. - */ -function md5_cmn(q, a, b, x, s, t) -{ - return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); -} -function md5_ff(a, b, c, d, x, s, t) -{ - return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); -} -function md5_gg(a, b, c, d, x, s, t) -{ - return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); -} -function md5_hh(a, b, c, d, x, s, t) -{ - return md5_cmn(b ^ c ^ d, a, b, x, s, t); -} -function md5_ii(a, b, c, d, x, s, t) -{ - return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); -} - -/* - * Calculate the HMAC-MD5, of a key and some data - */ -function core_hmac_md5(key, data) -{ - var bkey = str2binl(key); - if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz); - - var ipad = Array(16), opad = Array(16); - for(var i = 0; i < 16; i++) - { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); - return core_md5(opad.concat(hash), 512 + 128); -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function bit_rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -/* - * Convert a string to an array of little-endian words - * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. - */ -function str2binl(str) -{ - var bin = Array(); - var mask = (1 << chrsz) - 1; - for(var i = 0; i < str.length * chrsz; i += chrsz) - bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); - return bin; -} - -/* - * Convert an array of little-endian words to a string - */ -function binl2str(bin) -{ - var str = ""; - var mask = (1 << chrsz) - 1; - for(var i = 0; i < bin.length * 32; i += chrsz) - str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); - return str; -} - -/* - * Convert an array of little-endian words to a hex string. - */ -function binl2hex(binarray) -{ - var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i++) - { - str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + - hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); - } - return str; -} - -/* - * Convert an array of little-endian words to a base-64 string - */ -function binl2b64(binarray) -{ - var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i += 3) - { - var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) - | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) - | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); - for(var j = 0; j < 4; j++) - { - if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; - else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); - } - } - return str; -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java deleted file mode 100644 index cd0036a65..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.apache.archiva.configuration; - -/* - * 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. - */ - -import org.apache.archiva.redback.components.registry.RegistryListener; - -import java.util.ArrayList; -import java.util.List; - -public class TestConfiguration - implements ArchivaConfiguration -{ - private Configuration configuration = new Configuration(); - - private List configurationListeners = new ArrayList(); - - public Configuration getConfiguration() - { - return configuration; - } - - public void save( Configuration configuration ) - throws org.apache.archiva.redback.components.registry.RegistryException, IndeterminateConfigurationException - { - this.configuration = configuration; - } - - public boolean isDefaulted() - { - return false; - } - - public void addListener( ConfigurationListener listener ) - { - configurationListeners.add( listener ); - } - - public void removeListener( ConfigurationListener listener ) - { - configurationListeners.remove( listener ); - } - - public void addChangeListener( RegistryListener listener ) - { - //noop - } - - public void reload() - { - // no op - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractActionTestCase.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractActionTestCase.java deleted file mode 100644 index 9767d93d4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractActionTestCase.java +++ /dev/null @@ -1,238 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.config.Configuration; -import com.opensymphony.xwork2.config.ConfigurationManager; -import com.opensymphony.xwork2.config.providers.XWorkConfigurationProvider; -import com.opensymphony.xwork2.inject.Container; -import com.opensymphony.xwork2.util.ValueStack; -import com.opensymphony.xwork2.util.ValueStackFactory; -import org.apache.archiva.metadata.generic.GenericMetadataFacet; -import org.apache.archiva.metadata.model.CiManagement; -import org.apache.archiva.metadata.model.IssueManagement; -import org.apache.archiva.metadata.model.License; -import org.apache.archiva.metadata.model.Organization; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.model.Scm; -import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet; -import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectParent; -import org.apache.archiva.security.UserRepositoriesStub; -import org.apache.archiva.webtest.memory.TestMetadataResolver; -import org.apache.jackrabbit.api.JackrabbitRepository; -import org.apache.struts2.StrutsSpringTestCase; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.After; -import org.junit.Before; -import org.junit.runner.RunWith; -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public abstract class AbstractActionTestCase - extends StrutsSpringTestCase -{ - protected static final String TEST_REPO = "test-repo"; - - protected TestMetadataResolver metadataResolver; - - protected static final String TEST_GROUP_ID = "groupId"; - - protected static final String TEST_ARTIFACT_ID = "artifactId"; - - protected static final String TEST_PACKAGING = "packaging"; - - protected static final String TEST_ISSUE_URL = "http://jira.codehaus.org/browse/MRM"; - - protected static final String TEST_ISSUE_SYSTEM = "jira"; - - protected static final String TEST_CI_SYSTEM = "continuum"; - - protected static final String TEST_CI_URL = "http://vmbuild.apache.org/"; - - protected static final String TEST_URL = "url"; - - protected static final String TEST_NAME = "name"; - - protected static final String TEST_DESCRIPTION = "description"; - - protected static final String TEST_PARENT_GROUP_ID = "parentGroupId"; - - protected static final String TEST_PARENT_ARTIFACT_ID = "parentArtifactId"; - - protected static final String TEST_PARENT_VERSION = "parentVersion"; - - protected static final String TEST_ORGANIZATION_NAME = "organizationName"; - - protected static final String TEST_ORGANIZATION_URL = "organizationUrl"; - - protected static final String TEST_LICENSE_URL = "licenseUrl"; - - protected static final String TEST_LICENSE_NAME = "licenseName"; - - protected static final String TEST_LICENSE_URL_2 = "licenseUrl_2"; - - protected static final String TEST_LICENSE_NAME_2 = "licenseName_2"; - - protected static final String TEST_SCM_CONNECTION = "scmConnection"; - - protected static final String TEST_SCM_DEV_CONNECTION = "scmDevConnection"; - - protected static final String TEST_SCM_URL = "scmUrl"; - - protected static final String TEST_GENERIC_METADATA_PROPERTY_NAME = "rating"; - - protected static final String TEST_GENERIC_METADATA_PROPERTY_VALUE = "5 stars"; - - @Override - protected String[] getContextLocations( ) - { - return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" }; - } - - protected void setObservableRepos( List repoIds ) - { - UserRepositoriesStub repos = applicationContext.getBean( "userRepositories", UserRepositoriesStub.class ); - repos.setObservableRepositoryIds( repoIds ); - } - - protected void assertDefaultModel( ProjectVersionMetadata model, String version ) - { - assertDefaultModel( model, TEST_GROUP_ID, TEST_ARTIFACT_ID, version ); - } - - protected void assertDefaultModel( ProjectVersionMetadata model, String groupId, String artifactId, String version ) - { - assertEquals( version, model.getVersion( ) ); - assertEquals( TEST_URL, model.getUrl( ) ); - assertEquals( TEST_NAME, model.getName( ) ); - assertEquals( TEST_DESCRIPTION, model.getDescription( ) ); - assertEquals( TEST_ORGANIZATION_NAME, model.getOrganization( ).getName( ) ); - assertEquals( TEST_ORGANIZATION_URL, model.getOrganization( ).getUrl( ) ); - assertEquals( 2, model.getLicenses( ).size( ) ); - License l = model.getLicenses( ).get( 0 ); - assertEquals( TEST_LICENSE_NAME, l.getName( ) ); - assertEquals( TEST_LICENSE_URL, l.getUrl( ) ); - l = model.getLicenses( ).get( 1 ); - assertEquals( TEST_LICENSE_NAME_2, l.getName( ) ); - assertEquals( TEST_LICENSE_URL_2, l.getUrl( ) ); - assertEquals( TEST_ISSUE_SYSTEM, model.getIssueManagement( ).getSystem( ) ); - assertEquals( TEST_ISSUE_URL, model.getIssueManagement( ).getUrl( ) ); - assertEquals( TEST_CI_SYSTEM, model.getCiManagement( ).getSystem( ) ); - assertEquals( TEST_CI_URL, model.getCiManagement( ).getUrl( ) ); - assertEquals( TEST_SCM_CONNECTION, model.getScm( ).getConnection( ) ); - assertEquals( TEST_SCM_DEV_CONNECTION, model.getScm( ).getDeveloperConnection( ) ); - assertEquals( TEST_SCM_URL, model.getScm( ).getUrl( ) ); - - MavenProjectFacet mavenFacet = (MavenProjectFacet) model.getFacet( MavenProjectFacet.FACET_ID ); - assertEquals( groupId, mavenFacet.getGroupId( ) ); - assertEquals( artifactId, mavenFacet.getArtifactId( ) ); - assertEquals( TEST_PACKAGING, mavenFacet.getPackaging( ) ); - assertEquals( TEST_PARENT_GROUP_ID, mavenFacet.getParent( ).getGroupId( ) ); - assertEquals( TEST_PARENT_ARTIFACT_ID, mavenFacet.getParent( ).getArtifactId( ) ); - assertEquals( TEST_PARENT_VERSION, mavenFacet.getParent( ).getVersion( ) ); - } - - protected ProjectVersionMetadata createProjectModel( String version ) - { - return createProjectModel( TEST_GROUP_ID, TEST_ARTIFACT_ID, version ); - } - - protected ProjectVersionMetadata createProjectModel( String groupId, String artifactId, String version ) - { - ProjectVersionMetadata model = new ProjectVersionMetadata( ); - model.setId( version ); - model.setUrl( TEST_URL ); - model.setName( TEST_NAME ); - model.setDescription( TEST_DESCRIPTION ); - CiManagement ci = new CiManagement( ); - ci.setSystem( TEST_CI_SYSTEM ); - ci.setUrl( TEST_CI_URL ); - model.setCiManagement( ci ); - IssueManagement issue = new IssueManagement( ); - issue.setSystem( TEST_ISSUE_SYSTEM ); - issue.setUrl( TEST_ISSUE_URL ); - model.setIssueManagement( issue ); - Organization organization = new Organization( ); - organization.setName( TEST_ORGANIZATION_NAME ); - organization.setUrl( TEST_ORGANIZATION_URL ); - model.setOrganization( organization ); - License l = new License( ); - l.setName( TEST_LICENSE_NAME ); - l.setUrl( TEST_LICENSE_URL ); - model.addLicense( l ); - l = new License( ); - l.setName( TEST_LICENSE_NAME_2 ); - l.setUrl( TEST_LICENSE_URL_2 ); - model.addLicense( l ); - Scm scm = new Scm( ); - scm.setConnection( TEST_SCM_CONNECTION ); - scm.setDeveloperConnection( TEST_SCM_DEV_CONNECTION ); - scm.setUrl( TEST_SCM_URL ); - model.setScm( scm ); - - MavenProjectFacet mavenProjectFacet = new MavenProjectFacet( ); - mavenProjectFacet.setGroupId( groupId ); - mavenProjectFacet.setArtifactId( artifactId ); - mavenProjectFacet.setPackaging( TEST_PACKAGING ); - MavenProjectParent parent = new MavenProjectParent( ); - parent.setGroupId( TEST_PARENT_GROUP_ID ); - parent.setArtifactId( TEST_PARENT_ARTIFACT_ID ); - parent.setVersion( TEST_PARENT_VERSION ); - mavenProjectFacet.setParent( parent ); - model.addFacet( mavenProjectFacet ); - - GenericMetadataFacet genericMetadataFacet = new GenericMetadataFacet( ); - Map props = new HashMap( ); - props.put( TEST_GENERIC_METADATA_PROPERTY_NAME, TEST_GENERIC_METADATA_PROPERTY_VALUE ); - genericMetadataFacet.setAdditionalProperties( props ); - model.addFacet( genericMetadataFacet ); - - return model; - } - - @Override - @Before - public void setUp( ) - throws Exception - { - super.setUp( ); - - ConfigurationManager configurationManager = new ConfigurationManager( ); - configurationManager.addContainerProvider( new XWorkConfigurationProvider( ) ); - Configuration config = configurationManager.getConfiguration( ); - Container container = config.getContainer( ); - - ValueStack stack = container.getInstance( ValueStackFactory.class ).createValueStack( ); - stack.getContext( ).put( ActionContext.CONTAINER, container ); - ActionContext.setContext( new ActionContext( stack.getContext( ) ) ); - } - - @Override - @After - public void tearDown( ) - throws Exception - { - super.tearDown( ); - applicationContext.getBean( JackrabbitRepository.class ).shutdown( ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractWebworkTestCase.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractWebworkTestCase.java deleted file mode 100644 index f1cdc70e4..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AbstractWebworkTestCase.java +++ /dev/null @@ -1,138 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.ActionSupport; -import org.apache.commons.lang.StringUtils; -import org.apache.struts2.StrutsSpringTestCase; - -import java.lang.reflect.Method; -import java.util.Collection; -import java.util.List; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.runner.RunWith; -/** - * AbstractWebworkTestCase - * - * - */ -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public abstract class AbstractWebworkTestCase - extends StrutsSpringTestCase -{ - - - @Override - protected String[] getContextLocations() - { - return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" }; - } - - /** - * This is a conveinence method for mimicking how the webwork interceptors - * operate on an action, before the request is processed. - * - * Call this before each major request to the action to be sure you mimic the webwork process correctly. - */ - protected void preRequest( ActionSupport action ) - { - action.clearErrorsAndMessages(); - } - - /** - * Tests the action to ensure that it has errors. - * - * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action! - */ - protected void assertHasErrors( ActionSupport action ) - { - assertNotNull( action.getActionErrors() ); - assertTrue( "Expected an error to occur.", action.getActionErrors().size() > 0 ); - } - - /** - * Tests the action to ensure that it has messages. - * - * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action! - */ - protected void assertHasMessages( ActionSupport action ) - { - assertNotNull( action.getActionMessages() ); - assertTrue( "Expected an message to be set.", action.getActionMessages().size() > 0 ); - } - - /** - * Tests the action to ensure that it has NO errors. - * - * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action! - */ - @SuppressWarnings("unchecked") - protected void assertNoErrors( ActionSupport action ) - { - List errors = (List) action.getActionErrors(); - - assertNotNull( errors ); - if ( errors.size() > 0 ) - { - StringBuilder msg = new StringBuilder(); - msg.append( "Should have had no errors. but found the following errors." ); - - for ( String error : errors ) - { - msg.append( "\n " ).append( error ); - } - fail( msg.toString() ); - } - } - - @SuppressWarnings("unchecked") - protected void assertRequestStatus( ActionSupport action, String expectedStatus, String methodName ) - throws Exception - { - action.clearErrorsAndMessages(); - - Method method = action.getClass().getDeclaredMethod( methodName, (Class[]) null ); - Object actualStatus = method.invoke( action, (Object[]) null ); - assertTrue( "return should be of type String", actualStatus instanceof String ); - - if ( !StringUtils.equals( expectedStatus, (String) actualStatus ) ) - { - StringBuilder msg = new StringBuilder(); - msg.append( "Unexpected status returned from method <" ); - msg.append( methodName ).append( "> on action <" ); - String clazzname = action.getClass().getName(); - msg.append( clazzname.substring( clazzname.lastIndexOf( '.' ) ) ); - msg.append( ">: expected:<" ).append( expectedStatus ).append( "> but was:<" ); - msg.append( (String) actualStatus ).append( ">. (see attached action messages and errors below)" ); - - for ( String message : (Collection) action.getActionMessages() ) - { - msg.append( "\n [MESSAGE]: " ).append( message ); - } - - for ( String error : (Collection) action.getActionErrors() ) - { - msg.append( "\n [ERROR]: " ).append( error ); - } - - fail( msg.toString() ); - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AuditEventArgumentsMatcher.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AuditEventArgumentsMatcher.java deleted file mode 100644 index 54396b2f8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/AuditEventArgumentsMatcher.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import org.apache.archiva.audit.AuditEvent; -import org.easymock.ArgumentsMatcher; - -import java.util.Arrays; - -public class AuditEventArgumentsMatcher - implements ArgumentsMatcher -{ - public boolean matches( Object[] objects, Object[] objects1 ) - { - if ( objects.length != 1 || objects1.length != 1 ) - { - return false; - } - else - { - AuditEvent o1 = (AuditEvent) objects[0]; - AuditEvent o2 = (AuditEvent) objects1[0]; - o2.setTimestamp( o1.getTimestamp() ); // effectively ignore the timestamp - return o1.equals( o2 ); - } - } - - public String toString( Object[] objects ) - { - return Arrays.asList( objects ).toString(); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/BrowseActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/BrowseActionTest.java deleted file mode 100644 index 29b5517d5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/BrowseActionTest.java +++ /dev/null @@ -1,432 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.google.common.collect.Lists; -import com.opensymphony.xwork2.Action; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.webtest.memory.TestMetadataResolver; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.apache.archiva.scheduler.indexing.DefaultDownloadRemoteIndexScheduler; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import org.junit.Test; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class BrowseActionTest - extends AbstractActionTestCase -{ - private static final String ACTION_HINT = "browseAction"; - - private BrowseAction action; - - private static final List GROUPS = - Arrays.asList( "org.apache.archiva", "commons-lang", "org.apache.maven", "com.sun", "com.oracle", - "repeat.repeat" ); - - private static final String OTHER_TEST_REPO = "other-repo"; - - @Override - public void setUp() - throws Exception - { - super.setUp(); - setObservableRepos( Lists.newArrayList( "test-repo" ) ); - action = (BrowseAction) getActionProxy( "/browse.action" ).getAction(); - metadataResolver = new TestMetadataResolver(); - RepositorySession repositorySession = mock( RepositorySession.class ); - when( repositorySession.getResolver() ).thenReturn( metadataResolver ); - TestRepositorySessionFactory factory = - applicationContext.getBean( "repositorySessionFactory#test", TestRepositorySessionFactory.class ); - factory.setRepositorySession( repositorySession ); - } - - @Override - public void tearDown() - throws Exception - { - super.tearDown(); - applicationContext.getBean( DefaultDownloadRemoteIndexScheduler.class ).shutdown(); - setObservableRepos( Lists.newArrayList( "test-repo" ) ); - } - - @Test - public void testInstantiation() - { - assertFalse( action == getActionProxy( "/browse.action" ).getAction() ); - } - - @Test - public void testBrowse() - throws Exception - { - metadataResolver.setNamespaces( TEST_REPO, GROUPS ); - - String result = action.browse(); - assertSuccessResult( result ); - - assertEquals( Arrays.asList( "com", "commons-lang", "org.apache", "repeat.repeat" ), action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - - assertNull( action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseNoObservableRepos() - throws Exception - { - setObservableRepos( Collections.emptyList() ); - - String result = action.browse(); - assertNoAccessResult( result ); - - assertNoOutputVariables(); - } - - @Test - public void testBrowseGroupNoObservableRepos() - throws Exception - { - setObservableRepos( Collections.emptyList() ); - String selectedGroupId = "org"; - - action.setGroupId( selectedGroupId ); - String result = action.browseGroup(); - assertNoAccessResult( result ); - - assertEquals( selectedGroupId, action.getGroupId() ); - assertNull( action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseArtifactNoObservableRepos() - throws Exception - { - setObservableRepos( Collections.emptyList() ); - String selectedGroupId = "org.apache"; - String selectedArtifactId = "apache"; - - action.setGroupId( selectedGroupId ); - action.setArtifactId( selectedArtifactId ); - String result = action.browseArtifact(); - assertNoAccessResult( result ); - - assertEquals( selectedGroupId, action.getGroupId() ); - assertEquals( selectedArtifactId, action.getArtifactId() ); - assertNull( action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseGroupNoGroupId() - throws Exception - { - String result = action.browseGroup(); - assertErrorResult( result ); - assertNoOutputVariables(); - } - - @Test - public void testBrowseGroupNoArtifacts() - throws Exception - { - String selectedGroupId = "org"; - List groups = Arrays.asList( "org.apache.archiva", "org.apache.maven" ); - - metadataResolver.setNamespaces( TEST_REPO, groups ); - action.setGroupId( selectedGroupId ); - String result = action.browseGroup(); - assertSuccessResult( result ); - - assertEquals( Collections.singletonList( "org.apache" ), action.getNamespaces() ); - assertEquals( Collections.emptyList(), action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - - assertEquals( selectedGroupId, action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseGroupWithArtifacts() - throws Exception - { - String artifacts = "apache"; - String selectedGroupId = "org.apache"; - List groups = Arrays.asList( "org.apache.archiva", "org.apache.maven" ); - - metadataResolver.setNamespaces( TEST_REPO, groups ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, artifacts, new ProjectVersionMetadata() ); - action.setGroupId( selectedGroupId ); - String result = action.browseGroup(); - assertSuccessResult( result ); - - assertEquals( groups, action.getNamespaces() ); - assertEquals( Collections.singletonList( artifacts ), action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - - assertEquals( selectedGroupId, action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseWithCollapsedGroupsAndArtifacts() - throws Exception - { - List groups = Arrays.asList( "org.apache.archiva", "org.apache" ); - - metadataResolver.setNamespaces( TEST_REPO, groups ); - // add an artifact in the tree to make sure "single" is not collapsed - metadataResolver.setProjectVersion( TEST_REPO, "org.apache", "apache", new ProjectVersionMetadata() ); - - String result = action.browse(); - assertSuccessResult( result ); - - assertEquals( Collections.singletonList( "org.apache" ), action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - - assertNull( action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseWithCollapsedGroupsAndArtifactsAcrossRepositories() - throws Exception - { - setObservableRepos( Arrays.asList( TEST_REPO, OTHER_TEST_REPO ) ); - - metadataResolver.setNamespaces( TEST_REPO, Arrays.asList( "org.apache.archiva", "org.apache" ) ); - metadataResolver.setNamespaces( OTHER_TEST_REPO, Arrays.asList( "org.codehaus.plexus", "org.codehaus" ) ); - - // add an artifact in the tree to make sure "single" is not collapsed - metadataResolver.setProjectVersion( TEST_REPO, "org.apache", "apache", new ProjectVersionMetadata() ); - - String result = action.browse(); - assertSuccessResult( result ); - - assertEquals( Collections.singletonList( "org" ), action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - - assertNull( action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseGroupWithCollapsedGroupsAndArtifacts() - throws Exception - { - String artifacts = "apache"; - String selectedGroupId = "org.apache"; - List groups = Arrays.asList( "org.apache.archiva", "org.apache" ); - - metadataResolver.setNamespaces( TEST_REPO, groups ); - // add an artifact in the tree to make sure "single" is not collapsed - metadataResolver.setProjectVersion( TEST_REPO, "org.apache", "apache", new ProjectVersionMetadata() ); - - action.setGroupId( selectedGroupId ); - String result = action.browseGroup(); - assertSuccessResult( result ); - - assertEquals( Collections.singletonList( "org.apache.archiva" ), action.getNamespaces() ); - assertEquals( Collections.singletonList( artifacts ), action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - - assertEquals( selectedGroupId, action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseArtifactNoGroupId() - throws Exception - { - String selectedArtifactId = "apache"; - - action.setArtifactId( selectedArtifactId ); - String result = action.browseArtifact(); - assertErrorResult( result ); - - assertNull( action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - assertNull( action.getGroupId() ); - assertEquals( selectedArtifactId, action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseArtifactNoArtifactId() - throws Exception - { - String selectedGroupId = "org.apache"; - - action.setGroupId( selectedGroupId ); - String result = action.browseArtifact(); - assertErrorResult( result ); - - assertNull( action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - assertEquals( selectedGroupId, action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - @Test - public void testBrowseArtifact() - throws Exception - - { - String selectedGroupId = "org.apache"; - String selectedArtifactId = "apache"; - - List versions = Arrays.asList( "1", "2", "3", "4" ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "1" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "2" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "3" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "4" ) ); - - action.setGroupId( selectedGroupId ); - action.setArtifactId( selectedArtifactId ); - String result = action.browseArtifact(); - assertSuccessResult( result ); - - assertEquals( selectedGroupId, action.getGroupId() ); - assertEquals( selectedArtifactId, action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - - assertNull( action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertEquals( versions, action.getProjectVersions() ); - - ProjectVersionMetadata model = action.getSharedModel(); - assertDefaultModel( model, selectedGroupId, selectedArtifactId, null ); - } - - @Test - public void testBrowseArtifactWithSnapshots() - throws Exception - - { - String selectedGroupId = "org.apache"; - String selectedArtifactId = "apache"; - - List versions = Arrays.asList( "1", "2", "3", "4-SNAPSHOT", "4", "5-SNAPSHOT" ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "1" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "2" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "3" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "4-SNAPSHOT" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "4" ) ); - metadataResolver.setProjectVersion( TEST_REPO, selectedGroupId, selectedArtifactId, - createProjectModel( selectedGroupId, selectedArtifactId, "5-SNAPSHOT" ) ); - - action.setGroupId( selectedGroupId ); - action.setArtifactId( selectedArtifactId ); - String result = action.browseArtifact(); - assertSuccessResult( result ); - - assertEquals( selectedGroupId, action.getGroupId() ); - assertEquals( selectedArtifactId, action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - - assertNull( action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertEquals( versions, action.getProjectVersions() ); - - ProjectVersionMetadata model = action.getSharedModel(); - assertDefaultModel( model, selectedGroupId, selectedArtifactId, null ); - } - - // TODO: test with restricted observable repos - // TODO: current behaviour is to ignore values that differ between models - instead, pick the latest and use that. - // Need to update the tests to verify this as models are currently the same - - private void assertNoAccessResult( String result ) - { - assertEquals( GlobalResults.ACCESS_TO_NO_REPOS, result ); - assertEquals( 0, action.getActionErrors().size() ); - assertEquals( 0, action.getActionMessages().size() ); - } - - private void assertSuccessResult( String result ) - { - assertEquals( Action.SUCCESS, result ); - assertEquals( 0, action.getActionErrors().size() ); - assertEquals( 0, action.getActionMessages().size() ); - } - - private void assertErrorResult( String result ) - { - assertEquals( Action.ERROR, result ); - assertEquals( 1, action.getActionErrors().size() ); - assertEquals( 0, action.getActionMessages().size() ); - } - - private void assertNoOutputVariables() - { - assertNull( action.getNamespaces() ); - assertNull( action.getProjectIds() ); - assertNull( action.getProjectVersions() ); - assertNull( action.getGroupId() ); - assertNull( action.getArtifactId() ); - assertNull( action.getRepositoryId() ); - assertNull( action.getSharedModel() ); - } - - -} \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/DeleteArtifactActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/DeleteArtifactActionTest.java deleted file mode 100644 index 3e3f2050f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/DeleteArtifactActionTest.java +++ /dev/null @@ -1,187 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import net.sf.beanlib.provider.replicator.BeanReplicator; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.repository.RepositoryContentFactory; -import org.apache.archiva.repository.content.ManagedDefaultRepositoryContent; -import org.apache.archiva.rest.services.DefaultRepositoriesService; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.apache.commons.lang.StringUtils; -import org.apache.struts2.StrutsSpringTestCase; -import org.easymock.MockControl; -import org.easymock.classextension.MockClassControl; - -import java.io.File; -import java.util.ArrayList; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class DeleteArtifactActionTest - extends StrutsSpringTestCase -{ - private DeleteArtifactAction action; - - private ArchivaConfiguration configuration; - - private MockControl configurationControl; - - private RepositoryContentFactory repositoryFactory; - - private MockControl repositoryFactoryControl; - - private MetadataRepository metadataRepository; - - private MockControl metadataRepositoryControl; - - private static final String REPOSITORY_ID = "test-repo"; - - private static final String GROUP_ID = "org.apache.archiva"; - - private static final String ARTIFACT_ID = "npe-metadata"; - - private static final String VERSION = "1.0"; - - private static final String REPO_LOCATION = "target/test-classes/test-repo"; - - @Override - protected String[] getContextLocations() - { - return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" }; - } - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (DeleteArtifactAction) getActionProxy( "/deleteArtifact.action" ).getAction(); - action.setPrincipal( "admin" ); - assertNotNull( action ); - - configurationControl = MockControl.createControl( ArchivaConfiguration.class ); - configuration = (ArchivaConfiguration) configurationControl.getMock(); - - repositoryFactoryControl = MockClassControl.createControl( RepositoryContentFactory.class ); - repositoryFactory = (RepositoryContentFactory) repositoryFactoryControl.getMock(); - - metadataRepositoryControl = MockControl.createControl( MetadataRepository.class ); - metadataRepository = (MetadataRepository) metadataRepositoryControl.getMock(); - - RepositorySession repositorySession = mock( RepositorySession.class ); - when( repositorySession.getRepository() ).thenReturn( metadataRepository ); - - TestRepositorySessionFactory repositorySessionFactory = - applicationContext.getBean( "repositorySessionFactory#test", TestRepositorySessionFactory.class ); - - repositorySessionFactory.setRepositorySession( repositorySession ); - - ( (DefaultManagedRepositoryAdmin) ( (DefaultRepositoriesService) action.getRepositoriesService() ).getManagedRepositoryAdmin() ).setArchivaConfiguration( - configuration ); - ( (DefaultRepositoriesService) action.getRepositoriesService() ).setRepositoryFactory( repositoryFactory ); - } - - @Override - @After - public void tearDown() - throws Exception - { - action = null; - - super.tearDown(); - } - - - @Test - public void testNPEInDeleteArtifact() - throws Exception - { - action.setGroupId( GROUP_ID ); - action.setArtifactId( ARTIFACT_ID ); - action.setVersion( VERSION ); - action.setRepositoryId( REPOSITORY_ID ); - - Configuration config = createConfiguration(); - - ManagedRepositoryContent repoContent = new ManagedDefaultRepositoryContent(); - repoContent.setRepository( - new BeanReplicator().replicateBean( config.findManagedRepositoryById( REPOSITORY_ID ), - ManagedRepository.class ) ); - - configurationControl.expectAndReturn( configuration.getConfiguration(), config ); - repositoryFactoryControl.expectAndReturn( repositoryFactory.getManagedRepositoryContent( REPOSITORY_ID ), - repoContent ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getArtifacts( REPOSITORY_ID, GROUP_ID, ARTIFACT_ID, VERSION ), - new ArrayList() ); - - configurationControl.replay(); - repositoryFactoryControl.replay(); - metadataRepositoryControl.replay(); - - assertEquals( Action.SUCCESS, action.doDelete() ); - - String artifactPath = - REPO_LOCATION + "/" + StringUtils.replace( GROUP_ID, ".", "/" ) + "/" + StringUtils.replace( ARTIFACT_ID, - ".", "/" ) - + "/" + VERSION + "/" + ARTIFACT_ID + "-" + VERSION; - - assertFalse( new File( artifactPath + ".jar" ).exists() ); - assertFalse( new File( artifactPath + ".jar.sha1" ).exists() ); - assertFalse( new File( artifactPath + ".jar.md5" ).exists() ); - - assertFalse( new File( artifactPath + ".pom" ).exists() ); - assertFalse( new File( artifactPath + ".pom.sha1" ).exists() ); - assertFalse( new File( artifactPath + ".pom.md5" ).exists() ); - } - - private Configuration createConfiguration() - { - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( REPOSITORY_ID ); - managedRepo.setName( "Test Repository" ); - - managedRepo.setLocation( REPO_LOCATION ); - managedRepo.setReleases( true ); - - Configuration config = new Configuration(); - config.addManagedRepository( managedRepo ); - - return config; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/SearchActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/SearchActionTest.java deleted file mode 100644 index 38c0305cc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/SearchActionTest.java +++ /dev/null @@ -1,543 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.indexer.search.RepositorySearch; -import org.apache.archiva.indexer.search.SearchFields; -import org.apache.archiva.indexer.search.SearchResultHit; -import org.apache.archiva.indexer.search.SearchResultLimits; -import org.apache.archiva.indexer.search.SearchResults; -import org.apache.archiva.indexer.util.SearchUtil; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.security.UserRepositories; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.easymock.MockControl; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import org.junit.Test; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * - */ -public class SearchActionTest - extends AbstractActionTestCase -{ - private SearchAction action; - - private MockControl userReposControl; - - private UserRepositories userRepos; - - private MockControl searchControl; - - private MockControl repoAdminControl; - - private ManagedRepositoryAdmin managedRepositoryAdmin; - - private RepositorySearch search; - - private static final String TEST_CHECKSUM = "afbcdeaadbcffceabbba1"; - - private static final String TEST_REPO = "test-repo"; - - private static final String GUEST = "guest"; - - private RepositorySession session; - - @Override - public void setUp() - throws Exception - { - super.setUp(); - - action = new SearchAction(); - - session = mock(RepositorySession.class); - //TestRepositorySessionFactory factory = (TestRepositorySessionFactory) lookup( RepositorySessionFactory.class ); - TestRepositorySessionFactory factory = new TestRepositorySessionFactory(); - factory.setRepositorySession(session); - action.setRepositorySessionFactory(factory); - - MockControl archivaConfigControl = MockControl.createControl(ArchivaConfiguration.class); - ArchivaConfiguration archivaConfig = (ArchivaConfiguration) archivaConfigControl.getMock(); - - userReposControl = MockControl.createControl(UserRepositories.class); - userRepos = (UserRepositories) userReposControl.getMock(); - - searchControl = MockControl.createControl(RepositorySearch.class); - searchControl.setDefaultMatcher(MockControl.ALWAYS_MATCHER); - search = (RepositorySearch) searchControl.getMock(); - - repoAdminControl = MockControl.createControl(ManagedRepositoryAdmin.class); - managedRepositoryAdmin = (ManagedRepositoryAdmin) repoAdminControl.getMock(); - - //( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( archivaConfig ); - - action.setManagedRepositoryAdmin(managedRepositoryAdmin); - action.setUserRepositories(userRepos); - action.setNexusSearch(search); - } - - // quick search... - - @Test - public void testQuickSearch() - throws Exception - { - action.setQ("archiva"); - action.setCurrentPage(0); - action.setSearchResultsOnly(false); - action.setCompleteQueryString(""); - - List selectedRepos = new ArrayList(); - selectedRepos.add("internal"); - selectedRepos.add("snapshots"); - - SearchResultLimits limits = new SearchResultLimits(action.getCurrentPage()); - limits.setPageSize(30); - - SearchResultHit hit = new SearchResultHit(); - hit.setGroupId("org.apache.archiva"); - hit.setArtifactId("archiva-configuration"); - hit.setUrl("url"); - hit.addVersion("1.0"); - hit.addVersion("1.1"); - - SearchResults results = new SearchResults(); - results.setLimits(limits); - results.setTotalHits(1); - results.addHit(SearchUtil.getHitId("org.apache.archiva", "archiva-configuration", null, "jar"), hit); - results.setTotalHitsMapSize( results.getHitsMap().values().size() ); - - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds("user"), selectedRepos); - - searchControl.expectAndReturn(search.search("user", selectedRepos, "archiva", limits, null), results); - - userReposControl.replay(); - searchControl.replay(); - - action.setPrincipal("user"); - String result = action.quickSearch(); - - assertEquals(Action.SUCCESS, result); - assertEquals("total pages not 1", 1, action.getTotalPages()); - assertEquals("totol hits not 1", 1, action.getResults().getTotalHits()); - - userReposControl.verify(); - searchControl.verify(); - } - - @Test - public void testSearchWithinSearchResults() - throws Exception - { - action.setQ("archiva"); - action.setCurrentPage(0); - action.setSearchResultsOnly(true); - action.setCompleteQueryString("org;apache"); - - List parsed = new ArrayList(); - parsed.add("org"); - parsed.add("apache"); - - List selectedRepos = new ArrayList(); - selectedRepos.add("internal"); - selectedRepos.add("snapshots"); - - SearchResultLimits limits = new SearchResultLimits(action.getCurrentPage()); - limits.setPageSize(30); - - SearchResultHit hit = new SearchResultHit(); - hit.setGroupId("org.apache.archiva"); - hit.setArtifactId("archiva-configuration"); - hit.setUrl("url"); - hit.addVersion("1.0"); - hit.addVersion("1.1"); - - SearchResults results = new SearchResults(); - results.setLimits(limits); - results.setTotalHits(1); - results.addHit(SearchUtil.getHitId("org.apache.archiva", "archiva-configuration", null, "jar"), hit); - results.setTotalHitsMapSize( results.getHitsMap().values().size() ); - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds("user"), selectedRepos); - - searchControl.expectAndReturn(search.search("user", selectedRepos, "archiva", limits, parsed), results); - - userReposControl.replay(); - searchControl.replay(); - - action.setPrincipal("user"); - String result = action.quickSearch(); - - assertEquals(Action.SUCCESS, result); - assertEquals("org;apache;archiva", action.getCompleteQueryString()); - assertEquals(1, action.getTotalPages()); - assertEquals(1, action.getResults().getTotalHits()); - - userReposControl.verify(); - searchControl.verify(); - } - - @Test - public void testQuickSearchUserHasNoAccessToAnyRepository() - throws Exception - { - action.setQ("archiva"); - action.setCurrentPage(0); - - List selectedRepos = new ArrayList(); - - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds("user"), selectedRepos); - - userReposControl.replay(); - - action.setPrincipal("user"); - String result = action.quickSearch(); - - assertEquals(GlobalResults.ACCESS_TO_NO_REPOS, result); - - userReposControl.verify(); - } - - @Test - public void testQuickSearchNoSearchHits() - throws Exception - { - action.setQ("archiva"); - action.setCurrentPage(0); - action.setSearchResultsOnly(false); - action.setCompleteQueryString(""); - - List selectedRepos = new ArrayList(); - selectedRepos.add("internal"); - selectedRepos.add("snapshots"); - - SearchResultLimits limits = new SearchResultLimits(action.getCurrentPage()); - limits.setPageSize(30); - - SearchResults results = new SearchResults(); - - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds("user"), selectedRepos); - - searchControl.expectAndReturn(search.search("user", selectedRepos, "archiva", limits, null), results); - - userReposControl.replay(); - searchControl.replay(); - - action.setPrincipal("user"); - String result = action.quickSearch(); - - assertEquals(Action.INPUT, result); - - userReposControl.verify(); - searchControl.verify(); - } - - // advanced/filtered search... - - @Test - public void testAdvancedSearchOneRepository() - throws Exception - { - List managedRepos = new ArrayList(); - managedRepos.add("internal"); - managedRepos.add("snapshots"); - - action.setRepositoryId("internal"); - action.setManagedRepositoryList(managedRepos); - action.setCurrentPage(0); - action.setRowCount(30); - action.setGroupId("org"); - - SearchResultLimits limits = new SearchResultLimits(action.getCurrentPage()); - limits.setPageSize(30); - - SearchResultHit hit = new SearchResultHit(); - hit.setGroupId("org.apache.archiva"); - hit.setArtifactId("archiva-configuration"); - hit.setUrl("url"); - hit.addVersion("1.0"); - hit.addVersion("1.1"); - - SearchResults results = new SearchResults(); - results.setLimits(limits); - results.setTotalHits(1); - results.addHit(SearchUtil.getHitId("org.apache.archiva", "archiva-configuration", null, "jar"), hit); - - List selectedRepos = new ArrayList(); - selectedRepos.add("internal"); - selectedRepos.add("snapshots"); - - SearchFields searchFields = new SearchFields("org", null, null, null, null, selectedRepos); - - searchControl.expectAndReturn(search.search("user", searchFields, limits), results); - - searchControl.replay(); - - String result = action.filteredSearch(); - - assertEquals(Action.SUCCESS, result); - assertEquals(1, action.getTotalPages()); - assertEquals(1, action.getResults().getTotalHits()); - - searchControl.verify(); - } - - @Test - public void testAdvancedSearchAllRepositories() - throws Exception - { - List managedRepos = new ArrayList(); - managedRepos.add("internal"); - managedRepos.add("snapshots"); - - action.setRepositoryId("all"); - action.setManagedRepositoryList(managedRepos); - action.setCurrentPage(0); - action.setRowCount(30); - action.setGroupId("org"); - - SearchResultLimits limits = new SearchResultLimits(action.getCurrentPage()); - limits.setPageSize(30); - - SearchResultHit hit = new SearchResultHit(); - hit.setGroupId("org.apache.archiva"); - hit.setArtifactId("archiva-configuration"); - hit.setUrl("url"); - hit.addVersion("1.0"); - hit.addVersion("1.1"); - - SearchResults results = new SearchResults(); - results.setLimits(limits); - results.setTotalHits(1); - results.addHit(SearchUtil.getHitId("org.apache.archiva", "archiva-configuration", null, "jar"), hit); - - List selectedRepos = new ArrayList(); - selectedRepos.add("internal"); - - SearchFields searchFields = new SearchFields("org", null, null, null, null, selectedRepos); - - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds("user"), selectedRepos); - - searchControl.expectAndReturn(search.search("user", searchFields, limits), results); - - searchControl.replay(); - userReposControl.replay(); - - action.setPrincipal("user"); - String result = action.filteredSearch(); - - assertEquals(Action.SUCCESS, result); - assertEquals(1, action.getTotalPages()); - assertEquals(1, action.getResults().getTotalHits()); - - searchControl.verify(); - userReposControl.verify(); - } - - @Test - public void testAdvancedSearchNoSearchHits() - throws Exception - { - List managedRepos = new ArrayList(); - managedRepos.add("internal"); - managedRepos.add("snapshots"); - - action.setRepositoryId("internal"); - action.setManagedRepositoryList(managedRepos); - action.setCurrentPage(0); - action.setRowCount(30); - action.setGroupId("org"); - - SearchResultLimits limits = new SearchResultLimits(action.getCurrentPage()); - limits.setPageSize(30); - - SearchResults results = new SearchResults(); - - List selectedRepos = new ArrayList(); - selectedRepos.add("internal"); - selectedRepos.add("snapshots"); - - SearchFields searchFields = new SearchFields("org", null, null, null, null, selectedRepos); - - searchControl.expectAndReturn(search.search("user", searchFields, limits), results); - - searchControl.replay(); - - String result = action.filteredSearch(); - - assertEquals(Action.INPUT, result); - assertFalse(action.getActionErrors().isEmpty()); - assertEquals("No results found", (String) action.getActionErrors().iterator().next()); - - searchControl.verify(); - } - - @Test - public void testAdvancedSearchUserHasNoAccessToAnyRepository() - throws Exception - { - List managedRepos = new ArrayList(); - - action.setGroupId("org.apache.archiva"); - action.setManagedRepositoryList(managedRepos); - - String result = action.filteredSearch(); - - assertEquals(GlobalResults.ACCESS_TO_NO_REPOS, result); - } - - @Test - public void testAdvancedSearchNoSpecifiedCriteria() - throws Exception - { - List managedRepos = new ArrayList(); - - action.setManagedRepositoryList(managedRepos); - - String result = action.filteredSearch(); - - assertEquals(Action.INPUT, result); - assertFalse(action.getActionErrors().isEmpty()); - assertEquals("Advanced Search - At least one search criteria must be provided.", - (String) action.getActionErrors().iterator().next()); - } - - // find artifact.. - @Test - public void testFindArtifactWithOneHit() - throws Exception - { - action.setQ(TEST_CHECKSUM); - - MockControl control = MockControl.createControl(MetadataRepository.class); - MetadataRepository metadataRepository = (MetadataRepository) control.getMock(); - when(session.getRepository()).thenReturn(metadataRepository); - - ArtifactMetadata artifact = createArtifact("archiva-configuration", "1.0"); - control.expectAndReturn(metadataRepository.getArtifactsByChecksum(TEST_REPO, TEST_CHECKSUM), - Collections.singletonList(artifact)); - - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds(GUEST), - Collections.singletonList(TEST_REPO)); - - control.replay(); - userReposControl.replay(); - - String result = action.findArtifact(); - assertEquals("artifact", result); - assertEquals(1, action.getDatabaseResults().size()); - assertEquals(artifact, action.getDatabaseResults().get(0)); - - control.verify(); - userReposControl.verify(); - } - - @Test - public void testFindArtifactWithMultipleHits() - throws Exception - { - action.setQ(TEST_CHECKSUM); - - MockControl control = MockControl.createControl(MetadataRepository.class); - MetadataRepository metadataRepository = (MetadataRepository) control.getMock(); - when(session.getRepository()).thenReturn(metadataRepository); - - List artifacts = - Arrays.asList(createArtifact("archiva-configuration", "1.0"), createArtifact("archiva-indexer", "1.0")); - control.expectAndReturn(metadataRepository.getArtifactsByChecksum(TEST_REPO, TEST_CHECKSUM), artifacts); - - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds(GUEST), - Collections.singletonList(TEST_REPO)); - - control.replay(); - userReposControl.replay(); - - String result = action.findArtifact(); - assertEquals("results", result); - assertFalse(action.getDatabaseResults().isEmpty()); - assertEquals(2, action.getDatabaseResults().size()); - - control.verify(); - userReposControl.verify(); - } - - @Test - public void testFindArtifactNoChecksumSpecified() - throws Exception - { - String result = action.findArtifact(); - - assertEquals(Action.INPUT, result); - assertFalse(action.getActionErrors().isEmpty()); - assertEquals("Unable to search for a blank checksum", (String) action.getActionErrors().iterator().next()); - } - - @Test - public void testFindArtifactNoResults() - throws Exception - { - action.setQ(TEST_CHECKSUM); - - MockControl control = MockControl.createControl(MetadataRepository.class); - MetadataRepository metadataRepository = (MetadataRepository) control.getMock(); - when(session.getRepository()).thenReturn(metadataRepository); - - control.expectAndReturn(metadataRepository.getArtifactsByChecksum(TEST_REPO, TEST_CHECKSUM), - Collections.emptyList()); - - userReposControl.expectAndReturn(userRepos.getObservableRepositoryIds(GUEST), - Collections.singletonList(TEST_REPO)); - - control.replay(); - userReposControl.replay(); - - String result = action.findArtifact(); - assertEquals(Action.INPUT, result); - assertFalse(action.getActionErrors().isEmpty()); - assertEquals("No results found", (String) action.getActionErrors().iterator().next()); - - control.verify(); - userReposControl.verify(); - } - - private ArtifactMetadata createArtifact(String project, String version) - { - ArtifactMetadata metadata = new ArtifactMetadata(); - metadata.setNamespace("org.apache.archiva"); - metadata.setProject(project); - metadata.setProjectVersion(version); - metadata.setVersion(version); - metadata.setRepositoryId(TEST_REPO); - metadata.setId(project + "-" + version + ".jar"); - return metadata; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/ShowArtifactActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/ShowArtifactActionTest.java deleted file mode 100644 index e6add3fac..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/ShowArtifactActionTest.java +++ /dev/null @@ -1,762 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import net.sf.beanlib.provider.replicator.BeanReplicator; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.metadata.model.ArtifactMetadata; -import org.apache.archiva.metadata.model.Dependency; -import org.apache.archiva.metadata.model.MailingList; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.model.ProjectVersionReference; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.maven2.model.Artifact; -import org.apache.archiva.webtest.memory.TestMetadataResolver; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet; -import org.apache.archiva.reports.RepositoryProblemFacet; -import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.repository.RepositoryContentFactory; -import org.apache.archiva.repository.content.ManagedDefaultRepositoryContent; - -import java.io.File; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.junit.Before; -import org.junit.Test; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class ShowArtifactActionTest - extends AbstractActionTestCase -{ - private static final String ACTION_HINT = "showArtifactAction"; - - private static final String TEST_VERSION = "version"; - - private static final String TEST_SNAPSHOT_VERSION = "1.0-SNAPSHOT"; - - private static final String TEST_TS_SNAPSHOT_VERSION = "1.0-20091120.111111-1"; - - private static final String TEST_NAMESPACE = "namespace"; - - private static final String OTHER_TEST_REPO = "first-repo"; - - private ShowArtifactAction action; - - private static final List TEST_SNAPSHOT_ARTIFACTS = - Arrays.asList( createArtifact( TEST_TS_SNAPSHOT_VERSION ), - createArtifact( "1.0-20091120.222222-2", "20091120.222222", 2 ), - createArtifact( "1.0-20091123.333333-3", "20091123.333333", 3 ) ); - - private static final long TEST_SIZE = 12345L; - - private static final String TEST_TYPE = "jar"; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - action = (ShowArtifactAction) getActionProxy( "/showArtifact.action" ).getAction(); - - metadataResolver = new TestMetadataResolver(); - MetadataRepository repo = mock( MetadataRepository.class ); - RepositorySession repositorySession = mock( RepositorySession.class ); - when( repositorySession.getResolver() ).thenReturn( metadataResolver ); - when( repositorySession.getRepository() ).thenReturn( repo ); - TestRepositorySessionFactory repositorySessionFactory = - applicationContext.getBean( "repositorySessionFactory#test", TestRepositorySessionFactory.class ); - repositorySessionFactory.setRepositorySession( repositorySession ); - - RepositoryContentFactory factory = mock( RepositoryContentFactory.class ); - - action.setRepositoryFactory( factory ); - - ManagedRepository config = new ManagedRepository(); - config.setId( TEST_REPO ); - config.setLocation( new File( "target/test-repo" ).getAbsolutePath() ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - content.setRepository( config ); - when( factory.getManagedRepositoryContent( TEST_REPO ) ).thenReturn( content ); - - ArchivaConfiguration archivaConfig = mock( ArchivaConfiguration.class ); - - Configuration configuration = new Configuration(); - configuration.addManagedRepository( - new BeanReplicator().replicateBean( config, ManagedRepositoryConfiguration.class ) ); - when( archivaConfig.getConfiguration() ).thenReturn( configuration ); - - when( factory.getArchivaConfiguration() ).thenReturn( archivaConfig ); - - } - - @Test - public void testInstantiation() - { - assertFalse( action == getActionProxy( "/showArtifact.action" ).getAction() ); - } - - @Test - public void testGetArtifactUniqueRelease() - { - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_VERSION ) ); - - setActionParameters(); - - String result = action.artifact(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testGetArtifactUniqueSnapshot() - { - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_SNAPSHOT_VERSION ) ); - metadataResolver.setArtifacts( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_SNAPSHOT_VERSION, - TEST_SNAPSHOT_ARTIFACTS ); - - action.setGroupId( TEST_GROUP_ID ); - action.setArtifactId( TEST_ARTIFACT_ID ); - action.setVersion( TEST_SNAPSHOT_VERSION ); - - String result = action.artifact(); - - assertActionSuccess( action, result ); - - assertEquals( TEST_GROUP_ID, action.getGroupId() ); - assertEquals( TEST_ARTIFACT_ID, action.getArtifactId() ); - assertEquals( TEST_SNAPSHOT_VERSION, action.getVersion() ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model, TEST_SNAPSHOT_VERSION ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - - assertArtifacts( TEST_SNAPSHOT_ARTIFACTS, action.getArtifacts() ); - - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - } - - @Test - public void testGetArtifactUniqueSnapshotTimestamped() - { - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_SNAPSHOT_VERSION ) ); - metadataResolver.setArtifacts( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_SNAPSHOT_VERSION, - TEST_SNAPSHOT_ARTIFACTS ); - - action.setGroupId( TEST_GROUP_ID ); - action.setArtifactId( TEST_ARTIFACT_ID ); - action.setVersion( TEST_TS_SNAPSHOT_VERSION ); - - String result = action.artifact(); - assertError( result ); - assertNoOutputFields(); - } - - @Test - public void testGetMissingProject() - { - setActionParameters(); - - String result = action.artifact(); - assertError( result ); - - assertActionParameters( action ); - assertNoOutputFields(); - } - - @Test - public void testGetArtifactNoObservableRepos() - { - setObservableRepos( Collections.emptyList() ); - - setActionParameters(); - - String result = action.artifact(); - - // Actually, it'd be better to have an error: - assertError( result ); - assertActionParameters( action ); - assertNoOutputFields(); - } - - @Test - public void testGetArtifactNotInObservableRepos() - { - metadataResolver.setProjectVersion( OTHER_TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_VERSION ) ); - - setActionParameters(); - - String result = action.artifact(); - assertError( result ); - - assertActionParameters( action ); - assertNoOutputFields(); - } - - @Test - public void testGetArtifactOnlySeenInSecondObservableRepo() - { - setObservableRepos( Arrays.asList( OTHER_TEST_REPO, TEST_REPO ) ); - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_VERSION ) ); - - setActionParameters(); - - String result = action.artifact(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testGetArtifactSeenInBothObservableRepo() - { - setObservableRepos( Arrays.asList( TEST_REPO, OTHER_TEST_REPO ) ); - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_VERSION ) ); - metadataResolver.setProjectVersion( OTHER_TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_VERSION ) ); - - setActionParameters(); - - String result = action.artifact(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testGetArtifactCanOnlyObserveInOneOfTwoRepos() - { - setObservableRepos( Arrays.asList( TEST_REPO ) ); - metadataResolver.setProjectVersion( OTHER_TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_VERSION ) ); - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, - createProjectModel( TEST_VERSION ) ); - - setActionParameters(); - - String result = action.artifact(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testGetArtifactNoMavenFacet() - { - ProjectVersionMetadata versionMetadata = new ProjectVersionMetadata(); - versionMetadata.setId( TEST_VERSION ); - versionMetadata.setUrl( TEST_URL ); - versionMetadata.setName( TEST_NAME ); - versionMetadata.setDescription( TEST_DESCRIPTION ); - - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, versionMetadata ); - - setActionParameters(); - - String result = action.artifact(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertEquals( TEST_VERSION, model.getVersion() ); - assertEquals( TEST_URL, model.getUrl() ); - assertEquals( TEST_NAME, model.getName() ); - assertEquals( TEST_DESCRIPTION, model.getDescription() ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testMetadataHasRepositoryFacetProblem() - { - String errMsg = "Error in resolving artifact's parent POM file: Sample Parent POM not found"; - ProjectVersionMetadata metaData = createProjectModel( TEST_SNAPSHOT_VERSION ); - metaData.addFacet( - createRepositoryProblemFacet( TEST_REPO, errMsg, TEST_GROUP_ID, TEST_SNAPSHOT_VERSION, TEST_NAMESPACE ) ); - - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, metaData ); - - metadataResolver.setArtifacts( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_SNAPSHOT_VERSION, - TEST_SNAPSHOT_ARTIFACTS ); - - action.setGroupId( TEST_GROUP_ID ); - action.setArtifactId( TEST_ARTIFACT_ID ); - action.setVersion( TEST_SNAPSHOT_VERSION ); - - String result = action.artifact(); - - assertEquals( Action.SUCCESS, result ); - - assertTrue( action.hasActionErrors() ); - assertFalse( action.hasActionMessages() ); - assertEquals( "Artifact metadata is incomplete: " + errMsg, action.getActionErrors().toArray()[0].toString() ); - } - - @Test - public void testMetadataIncomplete() - { - ProjectVersionMetadata metaData = createProjectModel( TEST_SNAPSHOT_VERSION ); - metaData.setIncomplete( true ); - - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, metaData ); - - metadataResolver.setArtifacts( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_SNAPSHOT_VERSION, - TEST_SNAPSHOT_ARTIFACTS ); - - action.setGroupId( TEST_GROUP_ID ); - action.setArtifactId( TEST_ARTIFACT_ID ); - action.setVersion( TEST_SNAPSHOT_VERSION ); - - String result = action.artifact(); - - assertEquals( Action.SUCCESS, result ); - - assertTrue( action.hasActionErrors() ); - assertFalse( action.hasActionMessages() ); - - assertEquals( "Artifact metadata is incomplete.", action.getActionErrors().toArray()[0].toString() ); - } - - @Test - public void testGetMailingLists() - { - ProjectVersionMetadata versionMetadata = createProjectModel( TEST_VERSION ); - MailingList ml1 = createMailingList( "Users List", "users" ); - MailingList ml2 = createMailingList( "Developers List", "dev" ); - versionMetadata.setMailingLists( Arrays.asList( ml1, ml2 ) ); - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, versionMetadata ); - - setActionParameters(); - - String result = action.mailingLists(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model ); - - assertNotNull( action.getMailingLists() ); - assertMailingList( action.getMailingLists().get( 0 ), "Users List", "users" ); - assertMailingList( action.getMailingLists().get( 1 ), "Developers List", "dev" ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testGetDependencies() - { - ProjectVersionMetadata versionMetadata = createProjectModel( TEST_VERSION ); - Dependency dependency1 = createDependencyBasic( "artifactId1" ); - Dependency dependency2 = createDependencyExtended( "artifactId2" ); - versionMetadata.setDependencies( Arrays.asList( dependency1, dependency2 ) ); - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, versionMetadata ); - - setActionParameters(); - - String result = action.dependencies(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model ); - - assertNotNull( action.getDependencies() ); - assertDependencyBasic( action.getDependencies().get( 0 ), "artifactId1" ); - assertDependencyExtended( action.getDependencies().get( 1 ), "artifactId2" ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - assertNull( action.getDependees() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testGetDependees() - throws Exception - { - setObservableRepos( Arrays.asList( TEST_REPO ) ); - ProjectVersionMetadata versionMetadata = createProjectModel( TEST_VERSION ); - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, versionMetadata ); - ProjectVersionReference dependee1 = createReference( "artifactId1" ); - ProjectVersionReference dependee2 = createReference( "artifactId2" ); - metadataResolver.setProjectReferences( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_VERSION, - Arrays.asList( dependee1, dependee2 ) ); - - setActionParameters(); - - String result = action.dependees(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - ProjectVersionMetadata model = action.getModel(); - assertDefaultModel( model ); - - assertNotNull( action.getDependees() ); - assertCoordinate( action.getDependees().get( 0 ), "artifactId1" ); - assertCoordinate( action.getDependees().get( 1 ), "artifactId2" ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testGetProjectMetadata() - { - ProjectVersionMetadata versionMetadata = createProjectModel( TEST_VERSION ); - - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, versionMetadata ); - - setActionParameters(); - - String result = action.projectMetadata(); - - assertActionSuccess( action, result ); - - assertActionParameters( action ); - - Map genericMetadata = action.getGenericMetadata(); - assertNotNull( genericMetadata.get( TEST_GENERIC_METADATA_PROPERTY_NAME ) ); - assertEquals( genericMetadata.get( TEST_GENERIC_METADATA_PROPERTY_NAME ), - TEST_GENERIC_METADATA_PROPERTY_VALUE ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - assertNotNull( action.getModel() ); - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - @Test - public void testAddAndDeleteMetadataProperty() - { - ProjectVersionMetadata versionMetadata = createProjectModel( TEST_VERSION ); - - metadataResolver.setProjectVersion( TEST_REPO, TEST_GROUP_ID, TEST_ARTIFACT_ID, versionMetadata ); - - setActionParameters(); - action.setPropertyName( "foo" ); - action.setPropertyValue( "bar" ); - action.setRepositoryId( TEST_REPO ); - - String result = action.addMetadataProperty(); - - assertActionSuccess( action, result ); - assertActionParameters( action ); - - Map genericMetadata = action.getGenericMetadata(); - assertNotNull( genericMetadata.get( TEST_GENERIC_METADATA_PROPERTY_NAME ) ); - assertEquals( genericMetadata.get( TEST_GENERIC_METADATA_PROPERTY_NAME ), - TEST_GENERIC_METADATA_PROPERTY_VALUE ); - - assertNotNull( genericMetadata.get( "foo" ) ); - assertEquals( "bar", genericMetadata.get( "foo" ) ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - assertNotNull( action.getModel() ); - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - - // test delete property - setActionParameters(); - action.setDeleteItem( "foo" ); - - result = action.deleteMetadataEntry(); - - assertEquals( Action.SUCCESS, result ); - assertActionParameters( action ); - assertTrue( !action.getActionMessages().isEmpty() ); - assertTrue( action.getActionMessages().contains( "Property successfully deleted." ) ); - - genericMetadata = action.getGenericMetadata(); - assertNotNull( genericMetadata.get( TEST_GENERIC_METADATA_PROPERTY_NAME ) ); - assertEquals( genericMetadata.get( TEST_GENERIC_METADATA_PROPERTY_NAME ), - TEST_GENERIC_METADATA_PROPERTY_VALUE ); - - assertNull( genericMetadata.get( "foo" ) ); - - assertEquals( TEST_REPO, action.getRepositoryId() ); - assertNotNull( action.getModel() ); - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - private void assertArtifacts( List expectedArtifacts, - Map> artifactMap ) - { - // assuming only one of each version at this point - assertEquals( expectedArtifacts.size(), artifactMap.size() ); - for ( ArtifactMetadata artifact : expectedArtifacts ) - { - assertTrue( artifactMap.containsKey( artifact.getVersion() ) ); - List list = artifactMap.get( artifact.getVersion() ); - Artifact actual = list.get( 0 ); - assertEquals( artifact.getNamespace(), actual.getGroupId() ); - assertEquals( artifact.getId(),actual.getId() ); - // olamy test has no more sense as we reuse an other object now - //assertEquals( artifact.getProject(), actual.getGroupId() ); - assertEquals( artifact.getRepositoryId(), actual.getRepositoryId() ); - assertEquals( artifact.getVersion(), actual.getVersion() ); - assertEquals( TEST_TYPE, actual.getPackaging() ); - assertEquals( "12.06 K", actual.getSize() ); - // FIXME url path test - //assertEquals( artifact.getNamespace() + "/" + artifact.getProject() + "/" + TEST_SNAPSHOT_VERSION + "/" - // + artifact.getId(), actual.getPath() ); - } - } - - private static ArtifactMetadata createArtifact( String version ) - { - return createArtifact( version, null, 0 ); - } - - private static ArtifactMetadata createArtifact( String version, String timestamp, int buildNumber ) - { - ArtifactMetadata metadata = new ArtifactMetadata(); - metadata.setProject( TEST_ARTIFACT_ID ); - metadata.setId( TEST_ARTIFACT_ID + "-" + version + ".jar" ); - metadata.setNamespace( TEST_GROUP_ID ); - metadata.setRepositoryId( TEST_REPO ); - metadata.setSize( TEST_SIZE ); - metadata.setProjectVersion( VersionUtil.getBaseVersion( version ) ); - metadata.setVersion( version ); - - MavenArtifactFacet facet = new MavenArtifactFacet(); - facet.setType( "jar" ); - facet.setTimestamp( timestamp ); - facet.setBuildNumber( buildNumber ); - metadata.addFacet( facet ); - - return metadata; - } - - private ProjectVersionReference createReference( String projectId ) - { - ProjectVersionReference reference = new ProjectVersionReference(); - reference.setNamespace( "groupId" ); - reference.setProjectId( projectId ); - reference.setProjectVersion( "version" ); - reference.setReferenceType( ProjectVersionReference.ReferenceType.DEPENDENCY ); - return reference; - } - - private void assertCoordinate( ProjectVersionReference dependee, String artifactId ) - { - assertEquals( artifactId, dependee.getProjectId() ); - assertEquals( "groupId", dependee.getNamespace() ); - assertEquals( "version", dependee.getProjectVersion() ); - } - - private void assertDependencyBasic( Dependency dependency, String artifactId ) - { - assertEquals( artifactId, dependency.getArtifactId() ); - assertEquals( "groupId", dependency.getGroupId() ); - assertEquals( "version", dependency.getVersion() ); - } - - private void assertDependencyExtended( Dependency dependency, String artifactId ) - { - assertDependencyBasic( dependency, artifactId ); - assertEquals( true, dependency.isOptional() ); - assertEquals( "classifier", dependency.getClassifier() ); - assertEquals( "type", dependency.getType() ); - assertEquals( "scope", dependency.getScope() ); - assertEquals( "systemPath", dependency.getSystemPath() ); - } - - private Dependency createDependencyExtended( String artifactId ) - { - Dependency dependency = createDependencyBasic( artifactId ); - dependency.setClassifier( "classifier" ); - dependency.setOptional( true ); - dependency.setScope( "scope" ); - dependency.setSystemPath( "systemPath" ); - dependency.setType( "type" ); - return dependency; - } - - private Dependency createDependencyBasic( String artifactId ) - { - Dependency dependency = new Dependency(); - dependency.setArtifactId( artifactId ); - dependency.setGroupId( "groupId" ); - dependency.setVersion( "version" ); - return dependency; - } - - private void assertMailingList( MailingList mailingList, String name, String prefix ) - { - assertEquals( name, mailingList.getName() ); - assertEquals( prefix + "-post@", mailingList.getPostAddress() ); - assertEquals( prefix + "-subscribe@", mailingList.getSubscribeAddress() ); - assertEquals( prefix + "-unsubscribe@", mailingList.getUnsubscribeAddress() ); - assertEquals( prefix + "-archive-url", mailingList.getMainArchiveUrl() ); - assertEquals( Arrays.asList( "other-" + prefix + "-archive-url-1", "other-" + prefix + "-archive-url-2" ), - mailingList.getOtherArchives() ); - } - - private MailingList createMailingList( String name, String prefix ) - { - MailingList ml1 = new MailingList(); - ml1.setName( name ); - ml1.setPostAddress( prefix + "-post@" ); - ml1.setSubscribeAddress( prefix + "-subscribe@" ); - ml1.setUnsubscribeAddress( prefix + "-unsubscribe@" ); - ml1.setMainArchiveUrl( prefix + "-archive-url" ); - ml1.setOtherArchives( - Arrays.asList( "other-" + prefix + "-archive-url-1", "other-" + prefix + "-archive-url-2" ) ); - return ml1; - } - - private void assertNoOutputFields() - { - assertNull( action.getModel() ); - assertNull( action.getDependees() ); - assertNull( action.getDependencies() ); - assertNull( action.getMailingLists() ); - assertTrue( action.getArtifacts().isEmpty() ); - } - - private void assertError( String result ) - { - assertEquals( Action.ERROR, result ); - assertEquals( 1, action.getActionErrors().size() ); - } - - private void assertDefaultModel( ProjectVersionMetadata model ) - { - assertDefaultModel( model, TEST_VERSION ); - } - - private void setActionParameters() - { - action.setGroupId( TEST_GROUP_ID ); - action.setArtifactId( TEST_ARTIFACT_ID ); - action.setVersion( TEST_VERSION ); - } - - private void assertActionParameters( ShowArtifactAction action ) - { - assertEquals( TEST_GROUP_ID, action.getGroupId() ); - assertEquals( TEST_ARTIFACT_ID, action.getArtifactId() ); - assertEquals( TEST_VERSION, action.getVersion() ); - } - - private void assertActionSuccess( ShowArtifactAction action, String result ) - { - assertEquals( Action.SUCCESS, result ); - assertTrue( action.getActionErrors().isEmpty() ); - assertTrue( action.getActionMessages().isEmpty() ); - } - - private RepositoryProblemFacet createRepositoryProblemFacet( String repoId, String errMsg, String projectId, - String projectVersion, String namespace ) - { - RepositoryProblemFacet repoProblemFacet = new RepositoryProblemFacet(); - repoProblemFacet.setRepositoryId( repoId ); - repoProblemFacet.setId( repoId ); - repoProblemFacet.setMessage( errMsg ); - repoProblemFacet.setProblem( errMsg ); - repoProblemFacet.setProject( projectId ); - repoProblemFacet.setVersion( projectVersion ); - repoProblemFacet.setNamespace( namespace ); - return repoProblemFacet; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/UploadActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/UploadActionTest.java deleted file mode 100644 index cdb8788ba..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/UploadActionTest.java +++ /dev/null @@ -1,866 +0,0 @@ -package org.apache.archiva.web.action; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import net.sf.beanlib.provider.replicator.BeanReplicator; -import org.apache.archiva.admin.model.admin.ArchivaAdministration; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.AuditListener; -import org.apache.archiva.checksum.ChecksumAlgorithm; -import org.apache.archiva.checksum.ChecksummedFile; -import org.apache.archiva.common.utils.FileUtil; -import org.apache.archiva.maven2.metadata.MavenMetadataReader; -import org.apache.archiva.model.ArchivaRepositoryMetadata; -import org.apache.archiva.model.SnapshotVersion; -import org.apache.archiva.repository.ManagedRepositoryContent; -import org.apache.archiva.repository.RepositoryContentFactory; -import org.apache.archiva.repository.RepositoryNotFoundException; -import org.apache.archiva.repository.content.ManagedDefaultRepositoryContent; -import org.apache.archiva.repository.metadata.MetadataTools; -import org.apache.archiva.scheduler.ArchivaTaskScheduler; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.StringUtils; -import org.easymock.MockControl; -import org.easymock.classextension.MockClassControl; - -import java.io.File; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.TimeZone; -import org.junit.Test; - -/** - * UploadActionTest - */ -public class UploadActionTest - extends AbstractActionTestCase -{ - private UploadAction uploadAction; - - private RepositoryContentFactory repoFactory; - - private MockControl repoFactoryControl; - - private MockControl managedRepoAdminControl; - - private ManagedRepositoryAdmin managedRepositoryAdmin; - - private MockControl archivaAdminControl; - - private ArchivaAdministration archivaAdministration; - - private static final String REPOSITORY_ID = "test-repo"; - - - private ManagedRepository managedRepository; - - @Override - public void setUp() - throws Exception - { - super.setUp(); - - MockControl schedulerControl = MockControl.createControl( ArchivaTaskScheduler.class ); - ArchivaTaskScheduler scheduler = (ArchivaTaskScheduler) schedulerControl.getMock(); - - repoFactoryControl = MockClassControl.createControl( RepositoryContentFactory.class ); - repoFactory = (RepositoryContentFactory) repoFactoryControl.getMock(); - - managedRepoAdminControl = MockControl.createControl( ManagedRepositoryAdmin.class ); - managedRepositoryAdmin = (ManagedRepositoryAdmin) managedRepoAdminControl.getMock(); - - archivaAdminControl = MockControl.createControl( ArchivaAdministration.class ); - archivaAdministration = (ArchivaAdministration) archivaAdminControl.getMock(); - - uploadAction = new UploadAction(); - uploadAction.setScheduler( scheduler ); - uploadAction.setManagedRepositoryAdmin( managedRepositoryAdmin ); - uploadAction.setArchivaAdministration( archivaAdministration ); - - uploadAction.setRepositoryFactory( repoFactory ); - - File testRepo = new File( FileUtil.getBasedir(), "target/test-classes/test-repo" ); - testRepo.mkdirs(); - - assertTrue( testRepo.exists() ); - - managedRepository = new ManagedRepository(); - managedRepository.setId( REPOSITORY_ID ); - managedRepository.setLayout( "default" ); - managedRepository.setLocation( testRepo.getPath() ); - managedRepository.setName( REPOSITORY_ID ); - managedRepository.setBlockRedeployments( true ); - - } - - @Override - public void tearDown() - throws Exception - { - File testRepo = new File( this.managedRepository.getLocation() ); - FileUtils.deleteDirectory( testRepo ); - - assertFalse( testRepo.exists() ); - - super.tearDown(); - } - - private void setUploadParameters( String version, String classifier, File artifact, File pomFile, - boolean generatePom ) - { - uploadAction.setRepositoryId( REPOSITORY_ID ); - uploadAction.setGroupId( "org.apache.archiva" ); - uploadAction.setArtifactId( "artifact-upload" ); - uploadAction.setVersion( version ); - uploadAction.setPackaging( "jar" ); - - uploadAction.setClassifier( classifier ); - uploadAction.setArtifact( artifact ); - uploadAction.setPom( pomFile ); - uploadAction.setGeneratePom( generatePom ); - } - - private void assertAllArtifactsIncludingSupportArtifactsArePresent( String repoLocation, String artifact, - String version ) - { - assertTrue( new File( repoLocation, - "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".jar" ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact - + ".jar.sha1" ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact - + ".jar.md5" ).exists() ); - - assertTrue( new File( repoLocation, - "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".pom" ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact - + ".pom.sha1" ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact - + ".pom.md5" ).exists() ); - - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA - + ".sha1" ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA - + ".md5" ).exists() ); - } - - private void verifyVersionMetadataChecksums( String repoLocation, String version ) - throws IOException - { - ChecksummedFile checksum = new ChecksummedFile( new File( repoLocation, - "/org/apache/archiva/artifact-upload/" + version + "/" - + MetadataTools.MAVEN_METADATA ) ); - String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 ); - String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 ); - - String contents = FileUtils.readFileToString( new File( repoLocation, - "/org/apache/archiva/artifact-upload/" + version + "/" - + MetadataTools.MAVEN_METADATA + ".sha1" ) ); - assertTrue( StringUtils.contains( contents, sha1 ) ); - - contents = FileUtils.readFileToString( new File( repoLocation, - "/org/apache/archiva/artifact-upload/" + version + "/" - + MetadataTools.MAVEN_METADATA + ".md5" ) ); - assertTrue( StringUtils.contains( contents, md5 ) ); - } - - private void verifyProjectMetadataChecksums( String repoLocation ) - throws IOException - { - ChecksummedFile checksum = new ChecksummedFile( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ) ); - String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 ); - String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 ); - - String contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA + ".sha1" ) ); - assertTrue( StringUtils.contains( contents, sha1 ) ); - - contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA + ".md5" ) ); - assertTrue( StringUtils.contains( contents, md5 ) ); - } - - private void verifyPomChecksums( String repoLocation, String artifact, String version ) - throws IOException - { - ChecksummedFile checksum; - String sha1; - String md5; - String contents; - checksum = new ChecksummedFile( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".pom" ) ); - sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 ); - md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 ); - - contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".pom.sha1" ) ); - assertTrue( StringUtils.contains( contents, sha1 ) ); - - contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".pom.md5" ) ); - assertTrue( StringUtils.contains( contents, md5 ) ); - } - - private void verifyArtifactChecksums( String repoLocation, String artifact, String version ) - throws IOException - { - ChecksummedFile checksum = new ChecksummedFile( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".jar" ) ); - String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 ); - String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 ); - - String contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".jar.sha1" ) ); - assertTrue( StringUtils.contains( contents, sha1 ) ); - - contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + version + "/" + artifact + ".jar.md5" ) ); - assertTrue( StringUtils.contains( contents, md5 ) ); - } - - private String getTimestamp( String[] artifactsList, int startIndex, int index ) - { - int endIndex = -1; - String timestamp; - - if ( artifactsList[index].contains( "jar" ) ) - { - endIndex = artifactsList[index].indexOf( ".jar" ); - } - else - { - endIndex = artifactsList[index].indexOf( ".pom" ); - } - - timestamp = artifactsList[index].substring( startIndex, endIndex ); - - return timestamp; - } - - private MockControl mockAuditLogs( List resources ) - { - return mockAuditLogs( AuditEvent.UPLOAD_FILE, resources ); - } - - private MockControl mockAuditLogs( String action, List resources ) - { - MockControl control = MockControl.createControl( AuditListener.class ); - AuditListener listener = (AuditListener) control.getMock(); - boolean matcherSet = false; - for ( String resource : resources ) - { - listener.auditEvent( new AuditEvent( REPOSITORY_ID, "guest", resource, action ) ); - if ( !matcherSet ) - { - control.setMatcher( new AuditEventArgumentsMatcher() ); - matcherSet = true; - } - } - control.replay(); - - uploadAction.setAuditListeners( Collections.singletonList( listener ) ); - return control; - } - - @Test - public void testArtifactUploadWithPomSuccessful() - throws Exception - { - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - new File( FileUtil.getBasedir(), "target/test-classes/upload-artifact-test/pom.xml" ), - false ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - content.setRepository( getManagedRepository() ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - getManagedRepository(), 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - repoFactoryControl.replay(); - - MockControl control = mockAuditLogs( - Arrays.asList( "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar", - "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) ); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - String repoLocation = getManagedRepository().getLocation(); - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" ); - - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyProjectMetadataChecksums( repoLocation ); - } - - @Test - public void testArtifactUploadWithClassifier() - throws Exception - { - setUploadParameters( "1.0", "tests", new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - new File( FileUtil.getBasedir(), "target/test-classes/upload-artifact-test/pom.xml" ), - false ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - content.setRepository( getManagedRepository() ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - getManagedRepository(), 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - MockControl control = mockAuditLogs( - Arrays.asList( "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar", - "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) ); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - String repoLocation = getManagedRepository().getLocation(); - assertTrue( new File( repoLocation, - "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar" ).exists() ); - assertTrue( new File( repoLocation, - "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.sha1" ).exists() ); - assertTrue( new File( repoLocation, - "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0-tests.jar.md5" ).exists() ); - - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ).exists() ); - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1" ).exists() ); - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ).exists() ); - - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA - + ".sha1" ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA - + ".md5" ).exists() ); - - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-tests", "1.0" ); - verifyProjectMetadataChecksums( repoLocation ); - } - - @Test - public void testArtifactUploadGeneratePomSuccessful() - throws Exception - { - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - content.setRepository( getManagedRepository() ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - getManagedRepository(), 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - MockControl control = mockAuditLogs( - Arrays.asList( "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar", - "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) ); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - String repoLocation = getManagedRepository().getLocation(); - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" ); - - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyProjectMetadataChecksums( repoLocation ); - } - - @Test - public void testArtifactUploadNoPomSuccessful() - throws Exception - { - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, false ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - content.setRepository( getManagedRepository() ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - getManagedRepository(), 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - MockControl control = - mockAuditLogs( Arrays.asList( "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ) ); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - String repoLocation = getManagedRepository().getLocation(); - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ).exists() ); - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1" ).exists() ); - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5" ).exists() ); - - assertFalse( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ).exists() ); - assertFalse( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.sha1" ).exists() ); - assertFalse( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom.md5" ).exists() ); - - assertTrue( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA - + ".sha1" ).exists() ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA - + ".md5" ).exists() ); - - // verify checksums of jar file - ChecksummedFile checksum = new ChecksummedFile( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ) ); - String sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 ); - String md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 ); - - String contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.sha1" ) ); - assertTrue( StringUtils.contains( contents, sha1 ) ); - - contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar.md5" ) ); - assertTrue( StringUtils.contains( contents, md5 ) ); - - // verify checksums of metadata file - checksum = new ChecksummedFile( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ) ); - sha1 = checksum.calculateChecksum( ChecksumAlgorithm.SHA1 ); - md5 = checksum.calculateChecksum( ChecksumAlgorithm.MD5 ); - - contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA + ".sha1" ) ); - assertTrue( StringUtils.contains( contents, sha1 ) ); - - contents = FileUtils.readFileToString( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA + ".md5" ) ); - assertTrue( StringUtils.contains( contents, md5 ) ); - } - - @Test - public void testArtifactUploadFailedRepositoryNotFound() - throws Exception - { - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, false ); - - repoFactoryControl.expectAndThrow( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), - new RepositoryNotFoundException() ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - getManagedRepository(), 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.ERROR, returnString ); - - repoFactoryControl.verify(); - - String repoLocation = getManagedRepository().getLocation(); - assertFalse( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar" ).exists() ); - - assertFalse( - new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ).exists() ); - - assertFalse( - new File( repoLocation, "/org/apache/archiva/artifact-upload/" + MetadataTools.MAVEN_METADATA ).exists() ); - } - - @Test - public void testArtifactUploadSnapshots() - throws Exception - { - setUploadParameters( "1.0-SNAPSHOT", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - content.setRepository( getManagedRepository() ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - getManagedRepository(), 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2, 5 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - SimpleDateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); - fmt.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); - String timestamp = fmt.format( new Date() ); - MockControl control = mockAuditLogs( Arrays.asList( - "org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + "-1.jar", - "org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + "-1.pom" ) ); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - String repoLocation = getManagedRepository().getLocation(); - String[] artifactsList = new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list(); - Arrays.sort( artifactsList ); - - assertEquals( 9, artifactsList.length ); - assertTrue( new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" - + MetadataTools.MAVEN_METADATA ).exists() ); - assertTrue( new File( repoLocation, - "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" + MetadataTools.MAVEN_METADATA - + ".sha1" ).exists() ); - assertTrue( new File( repoLocation, - "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" + MetadataTools.MAVEN_METADATA - + ".md5" ).exists() ); - - int startIndex = "artifact-upload-1.0-".length(); - String timestampPath = getTimestamp( artifactsList, startIndex, 0 ); - - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0-" + timestampPath, - "1.0-SNAPSHOT" ); - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" + timestampPath, "1.0-SNAPSHOT" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0-" + timestampPath, "1.0-SNAPSHOT" ); - verifyProjectMetadataChecksums( repoLocation ); - verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" ); - - // verify build number - File metadataFile = new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" - + MetadataTools.MAVEN_METADATA ); - ArchivaRepositoryMetadata artifactMetadata = MavenMetadataReader.read( metadataFile ); - - SnapshotVersion snapshotVersion = artifactMetadata.getSnapshotVersion(); - assertEquals( "Incorrect build number set in artifact metadata.", 1, snapshotVersion.getBuildNumber() ); - - String timestampPart = StringUtils.substringBeforeLast( timestampPath, "-" ); - assertEquals( "Incorrect timestamp set in artifact metadata.", timestampPart, snapshotVersion.getTimestamp() ); - - String buildnumber = StringUtils.substringAfterLast( timestampPath, "-" ); - assertEquals( "Incorrect build number in filename.", "1", buildnumber ); - - repoFactoryControl.reset(); - control.reset(); - - control.setDefaultMatcher( MockControl.ALWAYS_MATCHER ); - - // MRM-1353 - // upload snapshot artifact again and check if build number was incremented - setUploadParameters( "1.0-SNAPSHOT", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - repoFactoryControl.replay(); - - fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); - fmt.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); - timestamp = fmt.format( new Date() ); - - control = mockAuditLogs( Arrays.asList( - "org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + "-2.jar", - "org/apache/archiva/artifact-upload/1.0-SNAPSHOT/artifact-upload-1.0-" + timestamp + "-2.pom" ) ); - - returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - artifactsList = new File( repoLocation, "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" ).list(); - Arrays.sort( artifactsList ); - - assertEquals( 15, artifactsList.length ); - - timestampPath = getTimestamp( artifactsList, startIndex, 6 ); - - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0-" + timestampPath, - "1.0-SNAPSHOT" ); - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0-" + timestampPath, "1.0-SNAPSHOT" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0-" + timestampPath, "1.0-SNAPSHOT" ); - verifyProjectMetadataChecksums( repoLocation ); - verifyVersionMetadataChecksums( repoLocation, "1.0-SNAPSHOT" ); - - // verify build number set in metadata and in filename - metadataFile = new File( repoLocation, - "/org/apache/archiva/artifact-upload/1.0-SNAPSHOT/" + MetadataTools.MAVEN_METADATA ); - artifactMetadata = MavenMetadataReader.read( metadataFile ); - - snapshotVersion = artifactMetadata.getSnapshotVersion(); - assertEquals( "Incorrect build number set in artifact metadata.", 2, snapshotVersion.getBuildNumber() ); - - timestampPart = StringUtils.substringBeforeLast( timestampPath, "-" ); - assertEquals( "Incorrect timestamp set in artifact metadata.", timestampPart, snapshotVersion.getTimestamp() ); - - buildnumber = StringUtils.substringAfterLast( timestampPath, "-" ); - assertEquals( "Incorrect build number in filename.", "2", buildnumber ); - } - - @Test - public void testChecksumIsCorrectWhenArtifactIsReUploaded() - throws Exception - { - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - ManagedRepository repoConfig = getManagedRepository(); - repoConfig.setBlockRedeployments( false ); - content.setRepository( repoConfig ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - repoConfig, 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2, 5 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - - repoFactoryControl.reset(); - - String repoLocation = getManagedRepository().getLocation(); - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" ); - - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyProjectMetadataChecksums( repoLocation ); - - // RE-upload artifact - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-reuploaded.jar" ), - null, true ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content ); - - repoFactoryControl.replay(); - - // TODO: track modifications? -// MockControl control = mockAuditLogs( AuditEvent.MODIFY_FILE, Arrays.asList( - MockControl control = mockAuditLogs( - Arrays.asList( "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar", - "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) ); - - returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - repoLocation = getManagedRepository().getLocation(); - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" ); - - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyProjectMetadataChecksums( repoLocation ); - } - - @Test - public void testUploadArtifactAlreadyExistingRedeploymentsBlocked() - throws Exception - { - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - content.setRepository( getManagedRepository() ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 1, 8 ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - getManagedRepository(), 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2, 5 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - MockControl control = mockAuditLogs( Collections.emptyList() ); - - returnString = uploadAction.doUpload(); - assertEquals( Action.ERROR, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - String repoLocation = getManagedRepository().getLocation(); - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" ); - - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyProjectMetadataChecksums( repoLocation ); - } - - @Test - public void testUploadArtifactAlreadyExistingRedeploymentsAllowed() - throws Exception - { - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - ManagedRepositoryContent content = new ManagedDefaultRepositoryContent(); - ManagedRepository repoConfig = getManagedRepository(); - repoConfig.setBlockRedeployments( false ); - content.setRepository( repoConfig ); - - repoFactoryControl.expectAndReturn( repoFactory.getManagedRepositoryContent( REPOSITORY_ID ), content, 1, 8 ); - - managedRepoAdminControl.expectAndReturn( managedRepositoryAdmin.getManagedRepository( REPOSITORY_ID ), - repoConfig, 1, 8 ); - - archivaAdminControl.expectAndReturn( archivaAdministration.getKnownContentConsumers(), new ArrayList(), - 2, 5 ); - - managedRepoAdminControl.replay(); - archivaAdminControl.replay(); - - repoFactoryControl.replay(); - - String returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - setUploadParameters( "1.0", null, new File( FileUtil.getBasedir(), - "target/test-classes/upload-artifact-test/artifact-to-be-uploaded.jar" ), - null, true ); - - // TODO: track modifications? -// MockControl control = mockAuditLogs( AuditEvent.MODIFY_FILE, Arrays.asList( - MockControl control = mockAuditLogs( - Arrays.asList( "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.jar", - "org/apache/archiva/artifact-upload/1.0/artifact-upload-1.0.pom" ) ); - - returnString = uploadAction.doUpload(); - assertEquals( Action.SUCCESS, returnString ); - - repoFactoryControl.verify(); - control.verify(); - - String repoLocation = getManagedRepository().getLocation(); - assertAllArtifactsIncludingSupportArtifactsArePresent( repoLocation, "artifact-upload-1.0", "1.0" ); - - verifyArtifactChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyPomChecksums( repoLocation, "artifact-upload-1.0", "1.0" ); - verifyProjectMetadataChecksums( repoLocation ); - } - - ManagedRepository getManagedRepository() - { - return new BeanReplicator().replicateBean( this.managedRepository, ManagedRepository.class ); - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/AbstractOrganizationInfoActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/AbstractOrganizationInfoActionTest.java deleted file mode 100644 index 9597b5e1a..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/AbstractOrganizationInfoActionTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.apache.archiva.web.action.admin.appearance; - -/* - * 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. - */ - -import org.apache.archiva.admin.repository.admin.DefaultArchivaAdministration; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.easymock.MockControl; -import org.junit.Before; - -/** - */ -public abstract class AbstractOrganizationInfoActionTest - extends AbstractWebworkTestCase -{ - protected MockControl archivaConfigurationControl; - - protected ArchivaConfiguration configuration; - - protected AbstractAppearanceAction action; - - protected Configuration config; - - protected abstract AbstractAppearanceAction getAction(); - - @Before - @Override - public void setUp() - throws Exception - { - super.setUp(); - - config = new Configuration(); - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - configuration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - configuration.getConfiguration(); - archivaConfigurationControl.setReturnValue( config, 1, 5 ); - - configuration.save( config ); - archivaConfigurationControl.setVoidCallable( 1, 4 ); - - archivaConfigurationControl.replay(); - - DefaultArchivaAdministration defaultArchivaAdministration = new DefaultArchivaAdministration(); - defaultArchivaAdministration.setArchivaConfiguration( configuration ); - getAction().setArchivaAdministration( defaultArchivaAdministration ); - } - - protected void reloadAction() - { - action = getAction(); - ( (DefaultArchivaAdministration) action.getArchivaAdministration() ).setArchivaConfiguration( configuration ); - - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java deleted file mode 100644 index 5a709eb4d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java +++ /dev/null @@ -1,223 +0,0 @@ -package org.apache.archiva.web.action.admin.appearance; - -/* - * 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. - */ - -import com.opensymphony.xwork2.validator.ActionValidatorManager; -import org.apache.archiva.web.validator.utils.ValidatorUtil; -import org.apache.archiva.configuration.OrganisationInformation; -import org.apache.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.Before; -import org.junit.Test; - -/** - */ -public class EditOrganizationInfoActionTest - extends AbstractOrganizationInfoActionTest -{ - private static final String EMPTY_STRING = ""; - - // valid inputs - private static final String ORGANISATION_NAME_VALID_INPUT = "abcXYZ0129. _/\\~ :?!&=-"; - - private static final String ORGANISATION_URL_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\""; - - private static final String ORGANISATION_LOGO_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\""; - - // invalid inputs - private static final String ORGANISATION_NAME_INVALID_INPUT = "<>~+[ ]'\""; - - private static final String ORGANISATION_URL_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\""; - - private static final String ORGANISATION_LOGO_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\""; - - // testing requisite - private ActionValidatorManager actionValidatorManager; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory(); - - actionValidatorManager = factory.createDefaultActionValidatorManager(); - } - - @Test - public void testOrganisationInfoSaves() - throws Exception - { - config.setOrganisationInfo( new OrganisationInformation() ); - OrganisationInformation orginfo = config.getOrganisationInfo(); - orginfo.setLogoLocation( "LOGO" ); - orginfo.setName( "NAME" ); - orginfo.setUrl( "URL" ); - - configuration.save( config ); - - reloadAction(); - - action.prepare(); - - assertEquals( "LOGO", action.getOrganisationLogo() ); - assertEquals( "NAME", action.getOrganisationName() ); - assertEquals( "URL", action.getOrganisationUrl() ); - - action.setOrganisationLogo( "LOGO1" ); - action.setOrganisationName( "NAME1" ); - action.setOrganisationUrl( "URL1" ); - - action.execute(); - - orginfo = config.getOrganisationInfo(); - - assertEquals( "LOGO1", orginfo.getLogoLocation() ); - assertEquals( "NAME1", orginfo.getName() ); - assertEquals( "URL1", orginfo.getUrl() ); - } - - @Test - public void testStruts2ValidationFrameworkWithNullInputs() - throws Exception - { - // prep - action = getAction(); - populateOrganisationValues( action, null, null, null ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a name" ); - expectedFieldErrors.put( "organisationName", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithBlankInputs() - throws Exception - { - // prep - action = getAction(); - populateOrganisationValues( action, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a name" ); - expectedFieldErrors.put( "organisationName", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithInvalidInputs() - throws Exception - { - // prep - action = getAction(); - populateOrganisationValues( action, ORGANISATION_NAME_INVALID_INPUT, ORGANISATION_URL_INVALID_INPUT, - ORGANISATION_LOGO_INVALID_INPUT ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Organisation name must only contain alphanumeric characters, white-spaces(' '), equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." ); - expectedFieldErrors.put( "organisationName", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a URL." ); - expectedFieldErrors.put( "organisationUrl", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a URL for your logo." ); - expectedFieldErrors.put( "organisationLogo", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithValidInputs() - throws Exception - { - // prep - action = getAction(); - populateOrganisationValues( action, ORGANISATION_NAME_VALID_INPUT, ORGANISATION_URL_VALID_INPUT, - ORGANISATION_LOGO_VALID_INPUT ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertFalse( action.hasFieldErrors() ); - } - - private void populateOrganisationValues( AbstractAppearanceAction abstractAppearanceAction, String name, String url, - String logo ) - { - abstractAppearanceAction.setOrganisationName( name ); - abstractAppearanceAction.setOrganisationUrl( url ); - abstractAppearanceAction.setOrganisationLogo( logo ); - } - - @Override - protected AbstractAppearanceAction getAction() - { - return (EditOrganisationInfoAction) getActionProxy( "/admin/editAppearance.action" ).getAction(); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/OrganizationInfoActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/OrganizationInfoActionTest.java deleted file mode 100644 index 242906924..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/appearance/OrganizationInfoActionTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.apache.archiva.web.action.admin.appearance; - -/* - * 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. - */ - -import org.apache.archiva.configuration.OrganisationInformation; -import org.junit.Test; - -/** - */ -public class OrganizationInfoActionTest - extends AbstractOrganizationInfoActionTest -{ - @Test - public void testOrganisationInfoLoads() - throws Exception - { - config.setOrganisationInfo( new OrganisationInformation() ); - OrganisationInformation orginfo = config.getOrganisationInfo(); - orginfo.setLogoLocation( "LOGO" ); - orginfo.setName( "NAME" ); - orginfo.setUrl( "URL" ); - - configuration.save( config ); - - reloadAction(); - - action.prepare(); - - assertEquals( "URL", action.getOrganisationUrl() ); - assertEquals( "NAME", action.getOrganisationName() ); - assertEquals( "LOGO", action.getOrganisationLogo() ); - } - - @Override - protected AbstractAppearanceAction getAction() - { - return (OrganisationInfoAction) getActionProxy( "/components/companyInfo.action" ).getAction(); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java deleted file mode 100644 index 839c39c1c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/AddProxyConnectorActionTest.java +++ /dev/null @@ -1,437 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.policies.CachedFailuresPolicy; -import org.apache.archiva.policies.ChecksumPolicy; -import org.apache.archiva.policies.PropagateErrorsDownloadPolicy; -import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy; -import org.apache.archiva.policies.ReleasesPolicy; -import org.apache.archiva.policies.SnapshotsPolicy; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; - -import java.util.List; -import java.util.Map; -import org.junit.Before; -import org.junit.Test; - -/** - * AddProxyConnectorActionTest - * - * - */ -public class AddProxyConnectorActionTest - extends AbstractWebworkTestCase -{ - private AddProxyConnectorAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (AddProxyConnectorAction) getActionProxy( "/admin/addProxyConnector.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testAddBlackListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.prepare(); - ProxyConnector connector = action.getConnector(); - populateProxyConnector( connector ); - - // Perform Test w/no values. - preRequest( action ); - String status = action.addBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no blacklist pattern added. - assertHasErrors( action ); - assertEquals( 0, connector.getBlackListPatterns().size() ); - - // Try again, but now with a pattern to add. - action.setBlackListPattern( "**/*-javadoc.jar" ); - preRequest( action ); - status = action.addBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 blacklist pattern added. - assertNoErrors( action ); - assertEquals( 1, connector.getBlackListPatterns().size() ); - } - - @Test - public void testAddProperty() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.prepare(); - ProxyConnector connector = action.getConnector(); - populateProxyConnector( connector ); - - // Perform Test w/no values. - preRequest( action ); - String status = action.addProperty(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no property pattern added. - assertHasErrors( action ); - assertEquals( 0, connector.getProperties().size() ); - - // Try again, but now with a property key/value to add. - action.setPropertyKey( "eat-a" ); - action.setPropertyValue( "gramov-a-bits" ); - preRequest( action ); - status = action.addProperty(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 property added. - assertNoErrors( action ); - assertEquals( 1, connector.getProperties().size() ); - } - - @SuppressWarnings( "unchecked" ) - @Test - public void testAddProxyConnectorCommit() - throws Exception - { - expectConfigurationRequests( 9 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.prepare(); - ProxyConnector connector = action.getConnector(); - populateProxyConnector( connector ); - // forms will use an array - //connector.getProperties().put( "eat-a", new String[] { "gramov-a-bits" } ); - // FIXME olamy check the array mode !!! - connector.getProperties().put( "eat-a", "gramov-a-bits" ); - - // Create the input screen. - assertRequestStatus( action, Action.SUCCESS, "commit" ); - assertNoErrors( action ); - - // Test configuration. - List proxyConfigs = archivaConfiguration.getConfiguration().getProxyConnectors(); - assertNotNull( proxyConfigs ); - assertEquals( 1, proxyConfigs.size() ); - - ProxyConnectorConfiguration actualConnector = proxyConfigs.get( 0 ); - - assertNotNull( actualConnector ); - // The use of "(direct connection)" should result in a proxyId which is . - assertNull( actualConnector.getProxyId() ); - assertEquals( "corporate", actualConnector.getSourceRepoId() ); - assertEquals( "central", actualConnector.getTargetRepoId() ); - assertEquals( "gramov-a-bits", actualConnector.getProperties().get( "eat-a" ) ); - } - - @Test - public void testAddProxyConnectorInitialPage() - throws Exception - { - expectConfigurationRequests( 3 ); - archivaConfigurationControl.replay(); - - action.prepare(); - ProxyConnector configuration = action.getConnector(); - assertNotNull( configuration ); - assertNull( configuration.getProxyId() ); - assertNull( configuration.getSourceRepoId() ); - assertNull( configuration.getTargetRepoId() ); - assertTrue( configuration.getPolicies().isEmpty() ); - assertTrue( configuration.getProperties().isEmpty() ); - assertTrue( configuration.getBlackListPatterns().isEmpty() ); - assertTrue( configuration.getWhiteListPatterns().isEmpty() ); - - String status = action.input(); - assertEquals( Action.INPUT, status ); - } - - @Test - public void testAddWhiteListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.prepare(); - ProxyConnector connector = action.getConnector(); - populateProxyConnector( connector ); - - // Perform Test w/no values. - preRequest( action ); - String status = action.addWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no whitelist pattern added. - assertHasErrors( action ); - assertEquals( 0, connector.getWhiteListPatterns().size() ); - - // Try again, but now with a pattern to add. - action.setWhiteListPattern( "**/*.jar" ); - preRequest( action ); - status = action.addWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 whitelist pattern added. - assertNoErrors( action ); - assertEquals( 1, connector.getWhiteListPatterns().size() ); - } - - @Test - public void testRemoveBlackListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.prepare(); - ProxyConnector connector = action.getConnector(); - populateProxyConnector( connector ); - - // Add some arbitrary blacklist patterns. - connector.addBlackListPattern( "**/*-javadoc.jar" ); - connector.addBlackListPattern( "**/*.war" ); - - // Perform Test w/no pattern value. - preRequest( action ); - String status = action.removeBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no blacklist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getBlackListPatterns().size() ); - - // Perform test w/invalid (non-existant) pattern value to remove. - preRequest( action ); - action.setPattern( "**/*oops*" ); - status = action.removeBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no blacklist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getBlackListPatterns().size() ); - - // Try again, but now with a valid pattern to remove. - action.setPattern( "**/*-javadoc.jar" ); - preRequest( action ); - status = action.removeBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 blacklist pattern left. - assertNoErrors( action ); - assertEquals( 1, connector.getBlackListPatterns().size() ); - assertEquals( "Should have left 1 blacklist pattern", "**/*.war", connector.getBlackListPatterns().get( 0 ) ); - } - - @Test - public void testRemoveProperty() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.prepare(); - ProxyConnector connector = action.getConnector(); - populateProxyConnector( connector ); - - // Add some arbitrary properties. - connector.addProperty( "username", "general-tso" ); - connector.addProperty( "password", "chicken" ); - - // Perform Test w/no property key. - preRequest( action ); - String status = action.removeProperty(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no properties removed. - assertHasErrors( action ); - assertEquals( 2, connector.getProperties().size() ); - - // Perform test w/invalid (non-existant) property key to remove. - preRequest( action ); - action.setPropertyKey( "slurm" ); - status = action.removeProperty(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no properties removed. - assertHasErrors( action ); - assertEquals( 2, connector.getProperties().size() ); - - // Try again, but now with a valid property to remove. - preRequest( action ); - action.setPropertyKey( "password" ); - status = action.removeProperty(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 property left. - assertNoErrors( action ); - assertEquals( 1, connector.getProperties().size() ); - assertEquals( "Should have left 1 property", "general-tso", connector.getProperties().get( "username" ) ); - } - - @Test - public void testRemoveWhiteListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.prepare(); - ProxyConnector connector = action.getConnector(); - populateProxyConnector( connector ); - - // Add some arbitrary whitelist patterns. - connector.addWhiteListPattern( "javax/**/*" ); - connector.addWhiteListPattern( "com/sun/**/*" ); - - // Perform Test w/no pattern value. - preRequest( action ); - String status = action.removeWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no whitelist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getWhiteListPatterns().size() ); - - // Perform test w/invalid (non-existant) pattern value to remove. - preRequest( action ); - action.setPattern( "**/*oops*" ); - status = action.removeWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no whitelist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getWhiteListPatterns().size() ); - - // Try again, but now with a valid pattern to remove. - action.setPattern( "com/sun/**/*" ); - preRequest( action ); - status = action.removeWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 whitelist pattern left. - assertNoErrors( action ); - assertEquals( 1, connector.getWhiteListPatterns().size() ); - assertEquals( "Should have left 1 whitelist pattern", "javax/**/*", connector.getWhiteListPatterns().get( 0 ) ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - expectConfigurationRequests( 3 ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( "corporate" ); - managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" ); - managedRepo.setReleases( true ); - - config.addManagedRepository( managedRepo ); - - RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( "central" ); - remoteRepo.setUrl( "http://repo1.maven.org/maven2/" ); - - config.addRemoteRepository( remoteRepo ); - - return config; - } - - private void expectConfigurationRequests( int requestConfigCount ) - throws org.apache.archiva.redback.components.registry.RegistryException, IndeterminateConfigurationException - { - Configuration config = createInitialConfiguration(); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( config, requestConfigCount, requestConfigCount + 1 ); - archivaConfiguration.save( config ); - } - - @SuppressWarnings( "unchecked" ) - private void populateProxyConnector( ProxyConnector connector ) - { - connector.setProxyId( AbstractProxyConnectorFormAction.DIRECT_CONNECTION ); - connector.setSourceRepoId( "corporate" ); - connector.setTargetRepoId( "central" ); - - // TODO: Set these options programatically via list of available policies. - Map policies = connector.getPolicies(); - policies.put( "releases", new ReleasesPolicy().getDefaultOption() ); - policies.put( "snapshots", new SnapshotsPolicy().getDefaultOption() ); - policies.put( "checksum", new ChecksumPolicy().getDefaultOption() ); - policies.put( "cache-failures", new CachedFailuresPolicy().getDefaultOption() ); - policies.put( "propagate-errors", new PropagateErrorsDownloadPolicy().getDefaultOption() ); - policies.put( "propagate-errors-on-update", new PropagateErrorsOnUpdateDownloadPolicy().getDefaultOption() ); - } - - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorActionTest.java deleted file mode 100644 index 8616d47f5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DeleteProxyConnectorActionTest.java +++ /dev/null @@ -1,238 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; -import org.junit.Before; -import org.junit.Test; -/** - * DeleteProxyConnectorActionTest - * - * - */ -public class DeleteProxyConnectorActionTest - extends AbstractWebworkTestCase -{ - private static final String TEST_TARGET_ID = "central"; - - private static final String TEST_SOURCE_ID = "corporate"; - - private DeleteProxyConnectorAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (DeleteProxyConnectorAction) getActionProxy( "/admin/deleteProxyConnector.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testConfirmDelete() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - // Show the confirm the delete of proxy connector screen. - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - String status = action.confirmDelete(); - assertEquals( Action.INPUT, status ); - assertNoErrors( action ); - } - - @Test - public void testConfirmDeleteBadSourceOrTarget() - throws Exception - { - expectConfigurationRequests( 4 ); - archivaConfigurationControl.replay(); - - // Attempt to show the confirm delete screen, but provide - // a bad source id or target id to actually delete - - preRequest( action ); - action.setSource( "bad-source" ); // id doesn't exist. - action.setTarget( "bad-target" ); // id doesn't exist. - String status = action.confirmDelete(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( "bad" ); // Bad doesn't exist. - action.setTarget( TEST_TARGET_ID ); - status = action.confirmDelete(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( "bad" ); // Bad doesn't exist. - status = action.confirmDelete(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - } - - @Test - public void testConfirmDeleteNoSourceOrTarget() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - // Attempt to show the confirm delete screen, but don't provide - // the source id or target id to actually delete - - preRequest( action ); - action.setSource( null ); // No source Id. - action.setTarget( null ); // No target Id. - String status = action.confirmDelete(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( null ); // No target Id. - status = action.confirmDelete(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( null ); // No source Id. - action.setTarget( TEST_TARGET_ID ); - status = action.confirmDelete(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - } - - @Test - public void testDelete() - throws Exception - { - expectConfigurationRequests( 5 ); - archivaConfigurationControl.replay(); - - // Show the confirm the delete of proxy connector screen. - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - String status = action.confirmDelete(); - assertEquals( Action.INPUT, status ); - assertNoErrors( action ); - - // Perform the delete. - preRequest( action ); - status = action.delete(); - assertEquals( Action.SUCCESS, status ); - assertNoErrors( action ); - assertHasMessages( action ); - - // Test the configuration. - assertEquals( 0, archivaConfiguration.getConfiguration().getProxyConnectors().size() ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( TEST_SOURCE_ID ); - managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" ); - managedRepo.setReleases( true ); - - config.addManagedRepository( managedRepo ); - - RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( TEST_TARGET_ID ); - remoteRepo.setUrl( "http://repo1.maven.org/maven2/" ); - - config.addRemoteRepository( remoteRepo ); - - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( TEST_SOURCE_ID ); - connector.setTargetRepoId( TEST_TARGET_ID ); - - config.addProxyConnector( connector ); - - return config; - } - - private void expectConfigurationRequests( int requestConfigCount ) - throws org.apache.archiva.redback.components.registry.RegistryException, IndeterminateConfigurationException - { - Configuration config = createInitialConfiguration(); - - for ( int i = 0; i < requestConfigCount; i++ ) - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( config ); - } - - archivaConfiguration.save( config ); - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorActionTest.java deleted file mode 100644 index c5ca57865..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorActionTest.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright 2008 jdumay. - * - * Licensed 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. - * under the License. - */ - -package org.apache.archiva.web.action.admin.connectors.proxy; - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.apache.archiva.redback.components.registry.RegistryException; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; -import org.junit.Before; -import org.junit.Test; - -public class DisableProxyConnectorActionTest - extends AbstractWebworkTestCase -{ - private static final String TEST_TARGET_ID = "central"; - - private static final String TEST_SOURCE_ID = "corporate"; - - private DisableProxyConnectorAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (DisableProxyConnectorAction) getActionProxy( "/admin/disableProxyConnector.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( archivaConfiguration ); - } - - @Test - public void testConfirmDisableBadSourceOrTarget() - throws Exception - { - expectConfigurationRequests( 4 ); - archivaConfigurationControl.replay(); - - // Attempt to show the confirm disable screen, but provide - // a bad source id or target id to actually delete - - preRequest( action ); - action.setSource( "bad-source" ); // id doesn't exist. - action.setTarget( "bad-target" ); // id doesn't exist. - String status = action.confirmDisable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( "bad" ); // Bad doesn't exist. - action.setTarget( TEST_TARGET_ID ); - status = action.confirmDisable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( "bad" ); // Bad doesn't exist. - status = action.confirmDisable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - } - - @Test - public void testConfirmDisableNoSourceOrTarget() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - // Attempt to show the confirm disable screen, but don't provide - // the source id or target id to actually delete - - preRequest( action ); - action.setSource( null ); // No source Id. - action.setTarget( null ); // No target Id. - String status = action.confirmDisable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( null ); // No target Id. - status = action.confirmDisable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( null ); // No source Id. - action.setTarget( TEST_TARGET_ID ); - status = action.confirmDisable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - } - - @Test - public void testDelete() - throws Exception - { - expectConfigurationRequests( 5 ); - archivaConfigurationControl.replay(); - - // Show the confirm the disable of proxy connector screen. - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - String status = action.confirmDisable(); - assertEquals( Action.INPUT, status ); - assertNoErrors( action ); - - // Perform the disable. - preRequest( action ); - status = action.disable(); - assertEquals( Action.SUCCESS, status ); - assertNoErrors( action ); - assertHasMessages( action ); - - // Test the configuration. - assertEquals( 1, archivaConfiguration.getConfiguration().getProxyConnectors().size() ); - ProxyConnectorConfiguration config = - (ProxyConnectorConfiguration) archivaConfiguration.getConfiguration().getProxyConnectors().get( 0 ); - assertTrue( config.isDisabled() ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testConfirmEnable() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - // Show the confirm the disable of proxy connector screen. - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - String status = action.confirmDisable(); - assertEquals( Action.INPUT, status ); - assertNoErrors( action ); - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( TEST_SOURCE_ID ); - managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" ); - managedRepo.setReleases( true ); - - config.addManagedRepository( managedRepo ); - - RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( TEST_TARGET_ID ); - remoteRepo.setUrl( "http://repo1.maven.org/maven2/" ); - - config.addRemoteRepository( remoteRepo ); - - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( TEST_SOURCE_ID ); - connector.setTargetRepoId( TEST_TARGET_ID ); - - connector.setDisabled( false ); - - config.addProxyConnector( connector ); - - return config; - } - - private void expectConfigurationRequests( int requestConfigCount ) - throws RegistryException, IndeterminateConfigurationException - { - Configuration config = createInitialConfiguration(); - - for ( int i = 0; i < requestConfigCount; i++ ) - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( config ); - } - - archivaConfiguration.save( config ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java deleted file mode 100644 index 76df7c6f3..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EditProxyConnectorActionTest.java +++ /dev/null @@ -1,485 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.beans.ProxyConnector; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.policies.CachedFailuresPolicy; -import org.apache.archiva.policies.ChecksumPolicy; -import org.apache.archiva.policies.PropagateErrorsDownloadPolicy; -import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy; -import org.apache.archiva.policies.ReleasesPolicy; -import org.apache.archiva.policies.SnapshotsPolicy; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.apache.archiva.redback.components.registry.RegistryException; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; - -import java.util.List; -import java.util.Map; -import org.junit.Before; -import org.junit.Test; - -/** - * EditProxyConnectorActionTest - * - * - */ -public class EditProxyConnectorActionTest - extends AbstractWebworkTestCase -{ - private static final String TEST_TARGET_ID = "central"; - - private static final String TEST_SOURCE_ID = "corporate"; - - private EditProxyConnectorAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (EditProxyConnectorAction) getActionProxy( "/admin/editProxyConnector.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - - - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - private void expectConfigurationRequests( int requestConfigCount ) - throws org.apache.archiva.redback.components.registry.RegistryException, IndeterminateConfigurationException - { - expectConfigurationRequests( requestConfigCount, 1 ); - } - - private void expectConfigurationRequests( int requestConfigCount, int saveRequestCount ) - throws RegistryException, IndeterminateConfigurationException - { - Configuration config = createInitialConfiguration(); - - archivaConfigurationControl.expectAndReturn( archivaConfiguration.getConfiguration(), config, - requestConfigCount , 20); - //archivaConfiguration.getConfiguration(); - //archivaConfigurationControl.setReturnValue( config, requestConfigCount ); - - for ( int i = 0; i <= saveRequestCount; i++ ) - { - archivaConfiguration.save( config ); - } - - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testAddBlackListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - - // Perform Test w/no values. - preRequest( action ); - String status = action.addBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no blacklist pattern added. - assertHasErrors( action ); - assertEquals( 0, connector.getBlackListPatterns().size() ); - - // Try again, but now with a pattern to add. - action.setBlackListPattern( "**/*-javadoc.jar" ); - preRequest( action ); - status = action.addBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 blacklist pattern added. - assertNoErrors( action ); - assertEquals( 1, connector.getBlackListPatterns().size() ); - } - - @Test - public void testAddProperty() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - - // Perform Test w/no values. - preRequest( action ); - String status = action.addProperty(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no property pattern added. - assertHasErrors( action ); - assertEquals( 0, connector.getProperties().size() ); - - // Try again, but now with a property key/value to add. - action.setPropertyKey( "eat-a" ); - action.setPropertyValue( "gramov-a-bits" ); - preRequest( action ); - status = action.addProperty(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 property added. - assertNoErrors( action ); - assertEquals( 1, connector.getProperties().size() ); - assertEquals( "gramov-a-bits", connector.getProperties().get( "eat-a" ) ); - } - - @Test - public void testAddWhiteListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - - // Perform Test w/no values. - preRequest( action ); - String status = action.addWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no whitelist pattern added. - assertHasErrors( action ); - assertEquals( 0, connector.getWhiteListPatterns().size() ); - - // Try again, but now with a pattern to add. - action.setWhiteListPattern( "**/*.jar" ); - preRequest( action ); - status = action.addWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 whitelist pattern added. - assertNoErrors( action ); - assertEquals( 1, connector.getWhiteListPatterns().size() ); - } - - @SuppressWarnings( "unchecked" ) - @Test - public void testEditProxyConnectorCommit() - throws Exception - { - expectConfigurationRequests( 9, 2 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - // forms will use an array - //connector.getProperties().put( "eat-a", new String[]{ "gramov-a-bits" } ); - // FIXME check the array mode - connector.getProperties().put( "eat-a", "gramov-a-bits" ); - - // Create the input screen. - assertRequestStatus( action, Action.SUCCESS, "commit" ); - assertNoErrors( action ); - - // Test configuration. - List proxyConfigs = archivaConfiguration.getConfiguration().getProxyConnectors(); - assertNotNull( proxyConfigs ); - assertEquals( 1, proxyConfigs.size() ); - - ProxyConnectorConfiguration actualConnector = proxyConfigs.get( 0 ); - - assertNotNull( actualConnector ); - // The use of "(direct connection)" should result in a proxyId which is . - assertNull( actualConnector.getProxyId() ); - assertEquals( "corporate", actualConnector.getSourceRepoId() ); - assertEquals( "central", actualConnector.getTargetRepoId() ); - - } - - @Test - public void testEditProxyConnectorInitialPage() - throws Exception - { - expectConfigurationRequests( 3 ); - archivaConfigurationControl.replay(); - - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - - String status = action.input(); - assertEquals( Action.INPUT, status ); - } - - @Test - public void testRemoveBlackListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - - // Add some arbitrary blacklist patterns. - connector.addBlackListPattern( "**/*-javadoc.jar" ); - connector.addBlackListPattern( "**/*.war" ); - - // Perform Test w/no pattern value. - preRequest( action ); - String status = action.removeBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no blacklist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getBlackListPatterns().size() ); - - // Perform test w/invalid (non-existant) pattern value to remove. - preRequest( action ); - action.setPattern( "**/*oops*" ); - status = action.removeBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no blacklist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getBlackListPatterns().size() ); - - // Try again, but now with a valid pattern to remove. - action.setPattern( "**/*-javadoc.jar" ); - preRequest( action ); - status = action.removeBlackListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 blacklist pattern left. - assertNoErrors( action ); - assertEquals( 1, connector.getBlackListPatterns().size() ); - assertEquals( "Should have left 1 blacklist pattern", "**/*.war", connector.getBlackListPatterns().get( 0 ) ); - } - - @Test - public void testRemoveProperty() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - - // Add some arbitrary properties. - connector.addProperty( "username", "general-tso" ); - connector.addProperty( "password", "chicken" ); - - // Perform Test w/no property key. - preRequest( action ); - String status = action.removeProperty(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no properties removed. - assertHasErrors( action ); - assertEquals( 2, connector.getProperties().size() ); - - // Perform test w/invalid (non-existant) property key to remove. - preRequest( action ); - action.setPropertyKey( "slurm" ); - status = action.removeProperty(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no properties removed. - assertHasErrors( action ); - assertEquals( 2, connector.getProperties().size() ); - - // Try again, but now with a valid property to remove. - preRequest( action ); - action.setPropertyKey( "password" ); - status = action.removeProperty(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 property left. - assertNoErrors( action ); - assertEquals( 1, connector.getProperties().size() ); - assertEquals( "Should have left 1 property", "general-tso", connector.getProperties().get( "username" ) ); - } - - @Test - public void testRemoveWhiteListPattern() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Prepare Test. - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - action.prepare(); - ProxyConnector connector = action.getConnector(); - assertInitialProxyConnector( connector ); - - // Add some arbitrary whitelist patterns. - connector.addWhiteListPattern( "javax/**/*" ); - connector.addWhiteListPattern( "com/sun/**/*" ); - - // Perform Test w/no pattern value. - preRequest( action ); - String status = action.removeWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no whitelist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getWhiteListPatterns().size() ); - - // Perform test w/invalid (non-existant) pattern value to remove. - preRequest( action ); - action.setPattern( "**/*oops*" ); - status = action.removeWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have returned an error, with no whitelist pattern removed. - assertHasErrors( action ); - assertEquals( 2, connector.getWhiteListPatterns().size() ); - - // Try again, but now with a valid pattern to remove. - action.setPattern( "com/sun/**/*" ); - preRequest( action ); - status = action.removeWhiteListPattern(); - assertEquals( Action.INPUT, status ); - - // Should have no error, and 1 whitelist pattern left. - assertNoErrors( action ); - assertEquals( 1, connector.getWhiteListPatterns().size() ); - assertEquals( "Should have left 1 whitelist pattern", "javax/**/*", connector.getWhiteListPatterns().get( 0 ) ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - /* Configuration will be requested at least 3 times. */ - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration(), 3 ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - private void assertInitialProxyConnector( ProxyConnector connector ) - { - assertNotNull( connector ); - assertNotNull( connector.getBlackListPatterns() ); - assertNotNull( connector.getWhiteListPatterns() ); - assertNotNull( connector.getProperties() ); - - assertEquals( TEST_SOURCE_ID, connector.getSourceRepoId() ); - assertEquals( TEST_TARGET_ID, connector.getTargetRepoId() ); - } - - @SuppressWarnings( "unchecked" ) - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( TEST_SOURCE_ID ); - managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" ); - managedRepo.setReleases( true ); - - config.addManagedRepository( managedRepo ); - - RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( TEST_TARGET_ID ); - remoteRepo.setUrl( "http://repo1.maven.org/maven2/" ); - - config.addRemoteRepository( remoteRepo ); - - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( TEST_SOURCE_ID ); - connector.setTargetRepoId( TEST_TARGET_ID ); - - // TODO: Set these options programatically via list of available policies. - Map policies = connector.getPolicies(); - policies.put( "releases", new ReleasesPolicy().getDefaultOption() ); - policies.put( "snapshots", new SnapshotsPolicy().getDefaultOption() ); - policies.put( "checksum", new ChecksumPolicy().getDefaultOption() ); - policies.put( "cache-failures", new CachedFailuresPolicy().getDefaultOption() ); - policies.put( "propagate-errors", new PropagateErrorsDownloadPolicy().getDefaultOption() ); - policies.put( "propagate-errors-on-update", new PropagateErrorsOnUpdateDownloadPolicy().getDefaultOption() ); - - config.addProxyConnector( connector ); - - return config; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorActionTest.java deleted file mode 100644 index cac2a6ac7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorActionTest.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright 2008 jdumay. - * - * Licensed 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. - * under the License. - */ - -package org.apache.archiva.web.action.admin.connectors.proxy; - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; -import org.junit.Before; -import org.junit.Test; - -public class EnableProxyConnectorActionTest - extends AbstractWebworkTestCase -{ - private static final String TEST_TARGET_ID = "central"; - - private static final String TEST_SOURCE_ID = "corporate"; - - private EnableProxyConnectorAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - action = (EnableProxyConnectorAction) getActionProxy( "/admin/enableProxyConnector.action" ).getAction(); - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( archivaConfiguration ); - } - - private void expectConfigurationRequests( int requestConfigCount ) - throws org.apache.archiva.redback.components.registry.RegistryException, IndeterminateConfigurationException - { - Configuration config = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( config, requestConfigCount ); - archivaConfiguration.save( config ); - } - - @Test - public void testConfirmDeleteBadSourceOrTarget() - throws Exception - { - expectConfigurationRequests( 4 ); - archivaConfigurationControl.replay(); - - // Attempt to show the confirm enable screen, but provide - // a bad source id or target id to actually enable - - preRequest( action ); - action.setSource( "bad-source" ); // id doesn't exist. - action.setTarget( "bad-target" ); // id doesn't exist. - String status = action.confirmEnable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( "bad" ); // Bad doesn't exist. - action.setTarget( TEST_TARGET_ID ); - status = action.confirmEnable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( "bad" ); // Bad doesn't exist. - status = action.confirmEnable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - } - - @Test - public void testConfirmEnableNoSourceOrTarget() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - // Attempt to show the confirm enable screen, but don't provide - // the source id or target id to actually delete - - preRequest( action ); - action.setSource( null ); // No source Id. - action.setTarget( null ); // No target Id. - String status = action.confirmEnable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( null ); // No target Id. - status = action.confirmEnable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - - preRequest( action ); - action.setSource( null ); // No source Id. - action.setTarget( TEST_TARGET_ID ); - status = action.confirmEnable(); - // Should have resulted in an error. - assertEquals( Action.ERROR, status ); - assertHasErrors( action ); - } - - @Test - public void testEnable() - throws Exception - { - expectConfigurationRequests( 5 ); - archivaConfigurationControl.replay(); - - // Show the confirm the enable of proxy connector screen. - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - String status = action.confirmEnable(); - assertEquals( Action.INPUT, status ); - assertNoErrors( action ); - - // Perform the delete. - preRequest( action ); - status = action.enable(); - assertEquals( Action.SUCCESS, status ); - assertNoErrors( action ); - assertHasMessages( action ); - - // Test the configuration. - assertEquals( 1, archivaConfiguration.getConfiguration().getProxyConnectors().size() ); - ProxyConnectorConfiguration config = - (ProxyConnectorConfiguration) archivaConfiguration.getConfiguration().getProxyConnectors().get( 0 ); - assertFalse( config.isDisabled() ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testConfirmEnable() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - // Show the confirm the enable of proxy connector screen. - preRequest( action ); - action.setSource( TEST_SOURCE_ID ); - action.setTarget( TEST_TARGET_ID ); - String status = action.confirmEnable(); - assertEquals( Action.INPUT, status ); - assertNoErrors( action ); - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( TEST_SOURCE_ID ); - managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" ); - managedRepo.setReleases( true ); - - config.addManagedRepository( managedRepo ); - - RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( TEST_TARGET_ID ); - remoteRepo.setUrl( "http://repo1.maven.org/maven2/" ); - - config.addRemoteRepository( remoteRepo ); - - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( TEST_SOURCE_ID ); - connector.setTargetRepoId( TEST_TARGET_ID ); - connector.setDisabled( true ); - - config.addProxyConnector( connector ); - - return config; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java deleted file mode 100644 index f9d93a196..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/ProxyConnectorsActionTest.java +++ /dev/null @@ -1,159 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.apache.archiva.redback.components.registry.RegistryException; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; -import org.junit.Before; -import org.junit.Test; - -/** - * ProxyConnectorsActionTest - * - * - */ -public class ProxyConnectorsActionTest - extends AbstractWebworkTestCase -{ - private static final String JAVAX = "javax"; - - private static final String CENTRAL = "central"; - - private static final String CORPORATE = "corporate"; - - private ProxyConnectorsAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (ProxyConnectorsAction) getActionProxy( "/admin/proxyConnectors.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - expectConfigurationRequests( 5 ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testExecute() - throws Exception - { - expectConfigurationRequests( 5 ); - archivaConfigurationControl.replay(); - - action.prepare(); - - String status = action.execute(); - assertEquals( Action.SUCCESS, status ); - assertNoErrors( action ); - - assertNotNull( action.getProxyConnectorMap() ); - assertNotNull( action.getRepoMap() ); - - assertEquals( 1, action.getProxyConnectorMap().size() ); - assertEquals( 3, action.getRepoMap().size() ); - } - - private void expectConfigurationRequests( int requestConfigCount ) - throws RegistryException, IndeterminateConfigurationException - { - Configuration config = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( config, requestConfigCount + 1 ); - - archivaConfiguration.save( config ); - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( CORPORATE ); - managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" ); - managedRepo.setReleases( true ); - - config.addManagedRepository( managedRepo ); - - RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( CENTRAL ); - remoteRepo.setUrl( "http://repo1.maven.org/maven2/" ); - - config.addRemoteRepository( remoteRepo ); - - remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( JAVAX ); - remoteRepo.setUrl( "http://download.java.net/maven/2/" ); - - config.addRemoteRepository( remoteRepo ); - - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( CORPORATE ); - connector.setTargetRepoId( CENTRAL ); - - config.addProxyConnector( connector ); - - connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( CORPORATE ); - connector.setTargetRepoId( JAVAX ); - - config.addProxyConnector( connector ); - - return config; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java deleted file mode 100644 index b59e2a4bd..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/connectors/proxy/SortProxyConnectorsActionTest.java +++ /dev/null @@ -1,264 +0,0 @@ -package org.apache.archiva.web.action.admin.connectors.proxy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.proxyconnector.DefaultProxyConnectorAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.commons.lang.StringUtils; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.configuration.functors.ProxyConnectorConfigurationOrderComparator; -import org.apache.archiva.web.action.AbstractWebworkTestCase; -import org.apache.archiva.redback.components.registry.RegistryException; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; - -import java.util.Collections; -import java.util.List; -import org.junit.Before; -import org.junit.Test; - -/** - * SortProxyConnectorsActionTest - * - * - */ -public class SortProxyConnectorsActionTest - extends AbstractWebworkTestCase -{ - private static final String JAVAX = "javax"; - - private static final String CENTRAL = "central"; - - private static final String CORPORATE = "corporate"; - - private static final String CODEHAUS = "codehaus"; - - private SortProxyConnectorsAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (SortProxyConnectorsAction) getActionProxy( "/admin/sortUpProxyConnector.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultProxyConnectorAdmin) action.getProxyConnectorAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - private void expectConfigurationRequests( int requestConfigCount ) - throws RegistryException, IndeterminateConfigurationException - { - Configuration config = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( config, requestConfigCount ); - - archivaConfiguration.save( config ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - expectConfigurationRequests( 1 ); - archivaConfigurationControl.replay(); - - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testSortDown() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - action.setSource( CORPORATE ); - action.setTarget( CENTRAL ); - String status = action.sortDown(); - assertEquals( Action.SUCCESS, status ); - - assertOrder( new String[]{ JAVAX, CENTRAL, CODEHAUS } ); - } - - @Test - public void testSortDownPastEnd() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Ask the last connector to sort down (essentially a no-op) - action.setSource( CORPORATE ); - action.setTarget( CODEHAUS ); - String status = action.sortDown(); - assertEquals( Action.SUCCESS, status ); - - // No order change. - assertOrder( new String[]{ CENTRAL, JAVAX, CODEHAUS } ); - } - - @Test - public void testSortUp() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - action.setSource( CORPORATE ); - action.setTarget( CODEHAUS ); - String status = action.sortUp(); - assertEquals( Action.SUCCESS, status ); - - assertOrder( new String[]{ CENTRAL, CODEHAUS, JAVAX } ); - } - - @Test - public void testSortUpPastBeginning() - throws Exception - { - expectConfigurationRequests( 7 ); - archivaConfigurationControl.replay(); - - // Ask the first connector to sort up (essentially a no-op) - action.setSource( CORPORATE ); - action.setTarget( CENTRAL ); - String status = action.sortUp(); - assertEquals( Action.SUCCESS, status ); - - // No order change. - assertOrder( new String[]{ CENTRAL, JAVAX, CODEHAUS } ); - } - - private void assertOrder( String[] targetRepoOrder ) - { - List connectors = archivaConfiguration.getConfiguration().getProxyConnectors(); - Collections.sort( connectors, ProxyConnectorConfigurationOrderComparator.getInstance() ); - - for ( ProxyConnectorConfiguration connector : connectors ) - { - assertEquals( "All connectors in list should have the same source id (in this test)", CORPORATE, - connector.getSourceRepoId() ); - } - - assertEquals( targetRepoOrder.length, connectors.size() ); - - int orderFailedAt = ( -1 ); - for ( int i = 0; i < targetRepoOrder.length; i++ ) - { - if ( !StringUtils.equals( targetRepoOrder[i], connectors.get( i ).getTargetRepoId() ) ) - { - orderFailedAt = i; - break; - } - } - - if ( orderFailedAt >= 0 ) - { - StringBuilder msg = new StringBuilder(); - - msg.append( "Failed expected order of the proxy connectors <" ); - msg.append( StringUtils.join( targetRepoOrder, ", " ) ); - msg.append( ">, actual <" ); - - boolean needsComma = false; - for ( ProxyConnectorConfiguration proxy : connectors ) - { - if ( needsComma ) - { - msg.append( ", " ); - } - msg.append( proxy.getTargetRepoId() ); - needsComma = true; - } - msg.append( "> failure at index <" ).append( orderFailedAt ).append( ">." ); - - fail( msg.toString() ); - } - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration(); - managedRepo.setId( CORPORATE ); - managedRepo.setLayout( "${java.io.tmpdir}/archiva-test/managed-repo" ); - managedRepo.setReleases( true ); - config.addManagedRepository( managedRepo ); - - RemoteRepositoryConfiguration remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( CENTRAL ); - remoteRepo.setUrl( "http://repo1.maven.org/maven2/" ); - config.addRemoteRepository( remoteRepo ); - - remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( JAVAX ); - remoteRepo.setUrl( "http://download.java.net/maven/2/" ); - config.addRemoteRepository( remoteRepo ); - - remoteRepo = new RemoteRepositoryConfiguration(); - remoteRepo.setId( CODEHAUS ); - remoteRepo.setUrl( "http://repository.codehaus.org/" ); - config.addRemoteRepository( remoteRepo ); - - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( CORPORATE ); - connector.setTargetRepoId( CENTRAL ); - connector.setOrder( 1 ); - config.addProxyConnector( connector ); - - connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( CORPORATE ); - connector.setTargetRepoId( JAVAX ); - connector.setOrder( 2 ); - config.addProxyConnector( connector ); - - connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( CORPORATE ); - connector.setTargetRepoId( CODEHAUS ); - connector.setOrder( 3 ); - config.addProxyConnector( connector ); - - return config; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java deleted file mode 100644 index e43db473b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java +++ /dev/null @@ -1,265 +0,0 @@ -package org.apache.archiva.web.action.admin.legacy; - -/* - * 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. - */ - -import com.opensymphony.xwork2.validator.ActionValidatorManager; -import junit.framework.TestCase; -import org.apache.archiva.admin.model.beans.LegacyArtifactPath; -import org.apache.archiva.web.validator.utils.ValidatorUtil; -import org.apache.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class AddLegacyArtifactPathActionTest - extends TestCase -{ - private static final String EMPTY_STRING = ""; - - // valid inputs - private static final String LEGACY_ARTIFACT_PATH_PATH_VALID_INPUT = "-abcXYZ0129._/\\"; - - private static final String GROUP_ID_VALID_INPUT = "abcXYZ0129._-"; - - private static final String ARTIFACT_ID_VALID_INPUT = "abcXYZ0129._-"; - - private static final String VERSION_VALID_INPUT = "abcXYZ0129._-"; - - private static final String CLASSIFIER_VALID_INPUT = "abcXYZ0129._-"; - - private static final String TYPE_VALID_INPUT = "abcXYZ0129._-"; - - // invalid inputs - private static final String LEGACY_ARTIFACT_PATH_PATH_INVALID_INPUT = "<> ~+[ ]'\""; - - private static final String GROUP_ID_INVALID_INPUT = "<> \\/~+[ ]'\""; - - private static final String ARTIFACT_ID_INVALID_INPUT = "<> \\/~+[ ]'\""; - - private static final String VERSION_INVALID_INPUT = "<> \\/~+[ ]'\""; - - private static final String CLASSIFIER_INVALID_INPUT = "<> \\/~+[ ]'\""; - - private static final String TYPE_INVALID_INPUT = "<> \\/~+[ ]'\""; - - // testing requisite - private AddLegacyArtifactPathAction addLegacyArtifactPathAction; - - private ActionValidatorManager actionValidatorManager; - - @Override - @Before - public void setUp() - throws Exception - { - addLegacyArtifactPathAction = new AddLegacyArtifactPathAction(); - - DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory(); - - actionValidatorManager = factory.createDefaultActionValidatorManager(); - } - - @Test - public void testStruts2ValidationFrameworkWithNullInputs() - throws Exception - { - // prep - LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath( null ); - populateAddLegacyArtifactPathActionFields( addLegacyArtifactPathAction, legacyArtifactPath, null, null, null, - null, null ); - - // test - actionValidatorManager.validate( addLegacyArtifactPathAction, EMPTY_STRING ); - - // verify - assertTrue( addLegacyArtifactPathAction.hasFieldErrors() ); - - Map> fieldErrors = addLegacyArtifactPathAction.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a legacy path." ); - expectedFieldErrors.put( "legacyArtifactPath.path", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a groupId." ); - expectedFieldErrors.put( "groupId", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter an artifactId." ); - expectedFieldErrors.put( "artifactId", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a version." ); - expectedFieldErrors.put( "version", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a type." ); - expectedFieldErrors.put( "type", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithBlankInputs() - throws Exception - { - // prep - LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath( EMPTY_STRING ); - populateAddLegacyArtifactPathActionFields( addLegacyArtifactPathAction, legacyArtifactPath, EMPTY_STRING, - EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING ); - - // test - actionValidatorManager.validate( addLegacyArtifactPathAction, EMPTY_STRING ); - - // verify - assertTrue( addLegacyArtifactPathAction.hasFieldErrors() ); - - Map> fieldErrors = addLegacyArtifactPathAction.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a legacy path." ); - expectedFieldErrors.put( "legacyArtifactPath.path", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a groupId." ); - expectedFieldErrors.put( "groupId", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter an artifactId." ); - expectedFieldErrors.put( "artifactId", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a version." ); - expectedFieldErrors.put( "version", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a type." ); - expectedFieldErrors.put( "type", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithInvalidInputs() - throws Exception - { - // prep - LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath( LEGACY_ARTIFACT_PATH_PATH_INVALID_INPUT ); - populateAddLegacyArtifactPathActionFields( addLegacyArtifactPathAction, legacyArtifactPath, - GROUP_ID_INVALID_INPUT, ARTIFACT_ID_INVALID_INPUT, - VERSION_INVALID_INPUT, CLASSIFIER_INVALID_INPUT, - TYPE_INVALID_INPUT ); - - // test - actionValidatorManager.validate( addLegacyArtifactPathAction, EMPTY_STRING ); - - // verify - assertTrue( addLegacyArtifactPathAction.hasFieldErrors() ); - - Map> fieldErrors = addLegacyArtifactPathAction.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "legacyArtifactPath.path", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "groupId", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "artifactId", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Version must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "version", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Classifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "classifier", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Type must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "type", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithValidInputs() - throws Exception - { - // prep - LegacyArtifactPath legacyArtifactPath = createLegacyArtifactPath( LEGACY_ARTIFACT_PATH_PATH_VALID_INPUT ); - populateAddLegacyArtifactPathActionFields( addLegacyArtifactPathAction, legacyArtifactPath, - GROUP_ID_VALID_INPUT, ARTIFACT_ID_VALID_INPUT, VERSION_VALID_INPUT, - CLASSIFIER_VALID_INPUT, TYPE_VALID_INPUT ); - - // test - actionValidatorManager.validate( addLegacyArtifactPathAction, EMPTY_STRING ); - - // verify - assertFalse( addLegacyArtifactPathAction.hasFieldErrors() ); - } - - private LegacyArtifactPath createLegacyArtifactPath( String path ) - { - LegacyArtifactPath legacyArtifactPath = new LegacyArtifactPath(); - legacyArtifactPath.setPath( path ); - return legacyArtifactPath; - } - - private void populateAddLegacyArtifactPathActionFields( AddLegacyArtifactPathAction addLegacyArtifactPathAction, - LegacyArtifactPath legacyArtifactPath, String groupId, - String artifactId, String version, String classifier, - String type ) - { - addLegacyArtifactPathAction.setLegacyArtifactPath( legacyArtifactPath ); - addLegacyArtifactPathAction.setGroupId( groupId ); - addLegacyArtifactPathAction.setArtifactId( artifactId ); - addLegacyArtifactPathAction.setVersion( version ); - addLegacyArtifactPathAction.setClassifier( classifier ); - addLegacyArtifactPathAction.setType( type ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java deleted file mode 100644 index 937000b99..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java +++ /dev/null @@ -1,230 +0,0 @@ -package org.apache.archiva.web.action.admin.networkproxies; - -/* - * 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. - */ - -import com.opensymphony.xwork2.validator.ActionValidatorManager; -import junit.framework.TestCase; -import org.apache.archiva.admin.model.beans.NetworkProxy; -import org.apache.archiva.web.validator.utils.ValidatorUtil; -import org.apache.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class ConfigureNetworkProxyActionTest extends TestCase -{ - private static final String EMPTY_STRING = ""; - - private static final String VALIDATION_CONTEXT = "saveNetworkProxy"; - - // valid inputs - private static final String PROXY_ID_VALID_INPUT = "abcXYZ0129._-"; - - private static final String PROXY_PROTOCOL_VALID_INPUT = "-abcXYZ0129./:\\"; - - private static final String PROXY_HOST_VALID_INPUT = "abcXYZ0129._/\\~:?!&=-"; - - private static final int PROXY_PORT_VALID_INPUT = 8080; - - private static final String PROXY_USERNAME_VALID_INPUT = "abcXYZ0129.@/_-\\"; - - // invalid inputs - private static final String PROXY_ID_INVALID_INPUT = "<> \\/~+[ ]'\""; - - private static final String PROXY_PROTOCOL_INVALID_INPUT = "<> ~+[ ]'\""; - - private static final String PROXY_HOST_INVALID_INPUT = "<> ~+[ ]'\""; - - private static final int PROXY_PORT_INVALID_INPUT = 0; - - private static final String PROXY_USERNAME_INVALID_INPUT = "<> ~+[ ]'\""; - - // testing requisite - private ConfigureNetworkProxyAction configureNetworkProxyAction; - - private ActionValidatorManager actionValidatorManager; - - @Override - @Before - public void setUp() - throws Exception - { - configureNetworkProxyAction = new ConfigureNetworkProxyAction(); - - DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory(); - - actionValidatorManager = factory.createDefaultActionValidatorManager(); - } - - @Test - public void testStruts2ValidationFrameworkWithNullInputs() throws Exception - { - // prep - NetworkProxy networkProxy = createNetworkProxy(null, null, null, null); - configureNetworkProxyAction.setProxy(networkProxy); - - // test - actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT); - - // verify - assertTrue(configureNetworkProxyAction.hasFieldErrors()); - - Map> fieldErrors = configureNetworkProxyAction.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("You must enter an identifier."); - expectedFieldErrors.put("proxy.id", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("You must enter a protocol."); - expectedFieldErrors.put("proxy.protocol", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("You must enter a host."); - expectedFieldErrors.put("proxy.host", expectedErrorMessages); - - ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); - } - - @Test - public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception - { - // prep - NetworkProxy networkProxy = createNetworkProxy(EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING); - configureNetworkProxyAction.setProxy(networkProxy); - - // test - actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT); - - // verify - assertTrue(configureNetworkProxyAction.hasFieldErrors()); - - Map> fieldErrors = configureNetworkProxyAction.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("You must enter an identifier."); - expectedFieldErrors.put("proxy.id", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("You must enter a protocol."); - expectedFieldErrors.put("proxy.protocol", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("You must enter a host."); - expectedFieldErrors.put("proxy.host", expectedErrorMessages); - - ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); - } - - @Test - public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception - { - // prep - NetworkProxy networkProxy = createNetworkProxy( PROXY_ID_INVALID_INPUT, PROXY_HOST_INVALID_INPUT, - PROXY_PORT_INVALID_INPUT, PROXY_PROTOCOL_INVALID_INPUT, - PROXY_USERNAME_INVALID_INPUT ); - configureNetworkProxyAction.setProxy(networkProxy); - - // test - actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT); - - // verify - assertTrue(configureNetworkProxyAction.hasFieldErrors()); - - Map> fieldErrors = configureNetworkProxyAction.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)."); - expectedFieldErrors.put("proxy.id", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), dots(.), colons(:), and dashes(-)."); - expectedFieldErrors.put("proxy.protocol", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)."); - expectedFieldErrors.put("proxy.host", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("Port needs to be larger than 1"); - expectedFieldErrors.put("proxy.port", expectedErrorMessages); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add("Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)."); - expectedFieldErrors.put("proxy.username", expectedErrorMessages); - - ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors); - } - - @Test - public void testStruts2ValidationFrameworkWithValidInputs() throws Exception - { - // prep - NetworkProxy networkProxy = createNetworkProxy(PROXY_ID_VALID_INPUT, PROXY_HOST_VALID_INPUT, PROXY_PORT_VALID_INPUT, PROXY_PROTOCOL_VALID_INPUT, PROXY_USERNAME_VALID_INPUT); - configureNetworkProxyAction.setProxy(networkProxy); - - // test - actionValidatorManager.validate(configureNetworkProxyAction, VALIDATION_CONTEXT); - - // verify - assertFalse(configureNetworkProxyAction.hasFieldErrors()); - } - - private NetworkProxy createNetworkProxy(String id, String host, int port, String protocol, String username) - { - NetworkProxy networkProxy = new NetworkProxy(); - networkProxy.setId( id ); - networkProxy.setHost( host ); - networkProxy.setPort( port ); - networkProxy.setProtocol( protocol ); - networkProxy.setUsername( username ); - return networkProxy; - } - - // over-loaded - // for simulating empty/null form purposes; excluding primitive data-typed values - private NetworkProxy createNetworkProxy(String id, String host, String protocol, String username) - { - NetworkProxy networkProxy = new NetworkProxy(); - networkProxy.setId( id ); - networkProxy.setHost( host ); - networkProxy.setProtocol( protocol ); - networkProxy.setUsername( username ); - return networkProxy; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java deleted file mode 100644 index d25abd434..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java +++ /dev/null @@ -1,150 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.validator.ActionValidatorManager; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.struts2.StrutsSpringTestCase; - -import java.io.File; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.Before; -import org.junit.runner.RunWith; -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public abstract class AbstractManagedRepositoryActionTest - extends StrutsSpringTestCase -{ - protected static final String EMPTY_STRING = ""; - - // valid inputs; validation testing - protected static final String REPOSITORY_ID_VALID_INPUT = "abcXYZ0129._-"; - - protected static final String REPOSITORY_LOCATION_VALID_INPUT = "abcXYZ0129._/\\~:?!&=-"; - - protected static final String REPOSITORY_INDEX_DIR_VALID_INPUT = "abcXYZ0129._/\\~:?!&=-"; - - protected static final String REPOSITORY_NAME_VALID_INPUT = "abcXYZ 0129.)/ _(-"; - - protected static final int REPOSITORY_RETENTION_COUNT_VALID_INPUT = 1; - - protected static final int REPOSITORY_DAYS_OLDER_VALID_INPUT = 1; - - // invalid inputs; validation testing - protected static final String REPOSITORY_ID_INVALID_INPUT = "<> \\/~+[ ]'\""; - - protected static final String REPOSITORY_LOCATION_INVALID_INPUT = "<> ~+[ ]'\""; - - protected static final String REPOSITORY_INDEX_DIR_INVALID_INPUT = "<> ~+[ ]'\""; - - protected static final String REPOSITORY_NAME_INVALID_INPUT = "<>\\~+[]'\""; - - protected static final int REPOSITORY_RETENTION_COUNT_INVALID_INPUT = 101; - - protected static final int REPOSITORY_DAYS_OLDER_INVALID_INPUT = -1; - - // testing requisite; validation testing - protected ActionValidatorManager actionValidatorManager; - - protected static final String REPO_ID = "repo-ident"; - - protected File location; - - @Override - protected String[] getContextLocations() - { - return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" }; - } - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - DefaultActionValidatorManagerFactory defaultActionValidatorManagerFactory = - new DefaultActionValidatorManagerFactory(); - - actionValidatorManager = defaultActionValidatorManagerFactory.createDefaultActionValidatorManager(); - } - - protected void populateRepository( ManagedRepository repository ) - { - repository.setId( REPO_ID ); - repository.setName( "repo name" ); - repository.setLocation( location.getAbsolutePath() ); - repository.setLayout( "default" ); - repository.setCronExpression( "* 0/5 * * * ?" ); - repository.setDaysOlder( 31 ); - repository.setRetentionCount( 20 ); - repository.setReleases( true ); - repository.setSnapshots( false ); - repository.setScanned( false ); - repository.setDeleteReleasedSnapshots( true ); - } - - protected ManagedRepository createManagedRepository( String id, String name, String location ) - { - ManagedRepository managedRepositoryConfiguration = new ManagedRepository(); - - managedRepositoryConfiguration.setId( id ); - managedRepositoryConfiguration.setName( name ); - managedRepositoryConfiguration.setLocation( location ); - - return managedRepositoryConfiguration; - } - - // over-loaded - // for simulating empty/null form purposes; excluding primitive data-typed values - protected ManagedRepository createManagedRepository( String id, String name, String location, - String indexDir ) - { - ManagedRepository managedRepositoryConfiguration = new ManagedRepository(); - - managedRepositoryConfiguration.setId( id ); - managedRepositoryConfiguration.setName( name ); - managedRepositoryConfiguration.setLocation( location ); - managedRepositoryConfiguration.setIndexDirectory( indexDir ); - - return managedRepositoryConfiguration; - } - - protected ManagedRepository createManagedRepository( String id, String name, String location, String indexDir, - int daysOlder, int retentionCount ) - { - ManagedRepository managedRepositoryConfiguration = new ManagedRepository(); - - managedRepositoryConfiguration.setId( id ); - managedRepositoryConfiguration.setName( name ); - managedRepositoryConfiguration.setLocation( location ); - managedRepositoryConfiguration.setIndexDirectory( indexDir ); - managedRepositoryConfiguration.setDaysOlder( daysOlder ); - managedRepositoryConfiguration.setRetentionCount( retentionCount ); - - return managedRepositoryConfiguration; - } - - - protected ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return applicationContext.getBean( ManagedRepositoryAdmin.class ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java deleted file mode 100644 index 15dd9f78c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java +++ /dev/null @@ -1,398 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.repository.DefaultRepositoryCommonValidator; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.apache.archiva.redback.role.RoleManager; -import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.validator.utils.ValidatorUtil; -import org.apache.commons.io.FileUtils; -import org.easymock.MockControl; -import org.easymock.classextension.MockClassControl; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.Before; -import org.junit.Test; - -/** - * AddManagedRepositoryActionTest - * - * - */ -public class AddManagedRepositoryActionTest - extends AbstractManagedRepositoryActionTest -{ - private AddManagedRepositoryAction action; - - private RoleManager roleManager; - - private MockControl roleManagerControl; - - private MockControl archivaConfigurationControl; - - private org.apache.archiva.redback.components.registry.Registry registry; - - private MockControl registryControl; - - private ArchivaConfiguration archivaConfiguration; - - private MockControl repositoryTaskSchedulerControl; - - private RepositoryArchivaTaskScheduler repositoryTaskScheduler; - - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = new AddManagedRepositoryAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - roleManagerControl = MockControl.createControl( RoleManager.class ); - roleManager = (RoleManager) roleManagerControl.getMock(); - - registryControl = MockControl.createControl( org.apache.archiva.redback.components.registry.Registry.class ); - registry = (org.apache.archiva.redback.components.registry.Registry) registryControl.getMock(); - //action.setRegistry( registry ); - - repositoryTaskSchedulerControl = MockClassControl.createControl( RepositoryArchivaTaskScheduler.class ); - repositoryTaskScheduler = (RepositoryArchivaTaskScheduler) repositoryTaskSchedulerControl.getMock(); - - location = new File( System.getProperty( "basedir" ), "target/test/location" ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setArchivaConfiguration( archivaConfiguration ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRoleManager( roleManager ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRegistry( registry ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositoryTaskScheduler( - repositoryTaskScheduler ); - - DefaultRepositoryCommonValidator defaultRepositoryCommonValidator = new DefaultRepositoryCommonValidator(); - defaultRepositoryCommonValidator.setArchivaConfiguration( archivaConfiguration ); - defaultRepositoryCommonValidator.setRegistry( registry ); - - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositoryCommonValidator( - defaultRepositoryCommonValidator ); - - action.setRepositoryCommonValidator( defaultRepositoryCommonValidator ); - - action.setManagedRepositoryAdmin( getManagedRepositoryAdmin() ); - - } - - @Test - public void testSecureActionBundle() - throws SecureActionException - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testAddRepositoryInitialPage() - throws Exception - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - ManagedRepository configuration = action.getRepository(); - assertNotNull( configuration ); - assertNull( configuration.getId() ); - // check all booleans are false - assertFalse( configuration.isDeleteReleasedSnapshots() ); - assertFalse( configuration.isScanned() ); - assertFalse( configuration.isReleases() ); - assertFalse( configuration.isSnapshots() ); - - String status = action.input(); - assertEquals( Action.INPUT, status ); - - // check defaults - assertFalse( configuration.isDeleteReleasedSnapshots() ); - assertTrue( configuration.isScanned() ); - assertTrue( configuration.isReleases() ); - assertFalse( configuration.isSnapshots() ); - } - - @Test - public void testAddRepository() - throws Exception - { - FileUtils.deleteDirectory( location ); - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManagerControl.setVoidCallable(); - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.setVoidCallable(); - - roleManagerControl.replay(); - - registry.getString( "appserver.base", "${appserver.base}" ); - registryControl.setReturnValue( "target/test", 1, 3 ); - registry.getString( "appserver.home", "${appserver.home}" ); - registryControl.setReturnValue( "target/test", 1, 3 ); - - registryControl.replay(); - - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( REPO_ID ); - repositoryTaskScheduler.isProcessingRepositoryTask( REPO_ID ); - repositoryTaskSchedulerControl.setReturnValue( false ); - repositoryTaskScheduler.queueTask( task ); - repositoryTaskSchedulerControl.setVoidCallable(); - repositoryTaskSchedulerControl.replay(); - - Configuration configuration = new Configuration(); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfiguration.save( configuration ); - - archivaConfigurationControl.replay(); - - action.prepare(); - ManagedRepository repository = action.getRepository(); - populateRepository( repository ); - - assertFalse( location.exists() ); - String status = action.commit(); - assertEquals( Action.SUCCESS, status ); - assertTrue( location.exists() ); - - assertEquals( Collections.singletonList( repository ), getManagedRepositoryAdmin().getManagedRepositories() ); - assertEquals( location.getCanonicalPath(), new File( repository.getLocation() ).getCanonicalPath() ); - - roleManagerControl.verify(); - archivaConfigurationControl.verify(); - registryControl.verify(); - } - - - @Test - public void testAddRepositoryExistingLocation() - throws Exception - { - if ( !location.exists() ) - { - location.mkdirs(); - } - - registry.getString( "appserver.base", "${appserver.base}" ); - registryControl.setReturnValue( "target/test" ); - registry.getString( "appserver.home", "${appserver.home}" ); - registryControl.setReturnValue( "target/test" ); - - registryControl.replay(); - - action.prepare(); - ManagedRepository repository = action.getRepository(); - populateRepository( repository ); - - assertTrue( location.exists() ); - String status = action.commit(); - assertEquals( AddManagedRepositoryAction.CONFIRM, status ); - assertEquals( location.getCanonicalPath(), new File( repository.getLocation() ).getCanonicalPath() ); - registryControl.verify(); - } - - @Test - public void testStruts2ValidationFrameworkWithNullInputs() - throws Exception - { - // prep - // 0 is the default value for primitive int; null for objects - ManagedRepository managedRepositoryConfiguration = createManagedRepository( null, null, null, null ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository identifier." ); - expectedFieldErrors.put( "repository.id", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a directory." ); - expectedFieldErrors.put( "repository.location", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository name." ); - expectedFieldErrors.put( "repository.name", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithBlankInputs() - throws Exception - { - // prep - // 0 is the default value for primitive int - ManagedRepository managedRepositoryConfiguration = - createManagedRepository( EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository identifier." ); - expectedFieldErrors.put( "repository.id", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a directory." ); - expectedFieldErrors.put( "repository.location", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository name." ); - expectedFieldErrors.put( "repository.name", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithInvalidInputs() - throws Exception - { - // prep - ManagedRepository managedRepositoryConfiguration = - createManagedRepository( REPOSITORY_ID_INVALID_INPUT, REPOSITORY_NAME_INVALID_INPUT, - REPOSITORY_LOCATION_INVALID_INPUT, REPOSITORY_INDEX_DIR_INVALID_INPUT, - REPOSITORY_DAYS_OLDER_INVALID_INPUT, REPOSITORY_RETENTION_COUNT_INVALID_INPUT ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "repository.id", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." ); - expectedFieldErrors.put( "repository.location", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "repository.name", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." ); - expectedFieldErrors.put( "repository.indexDirectory", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "Repository Purge By Retention Count needs to be between 1 and 100." ); - expectedFieldErrors.put( "repository.retentionCount", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "Repository Purge By Days Older Than needs to be larger than 0." ); - expectedFieldErrors.put( "repository.daysOlder", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithValidInputs() - throws Exception - { - // prep - ManagedRepository managedRepositoryConfiguration = - createManagedRepository( REPOSITORY_ID_VALID_INPUT, REPOSITORY_NAME_VALID_INPUT, - REPOSITORY_LOCATION_VALID_INPUT, REPOSITORY_INDEX_DIR_VALID_INPUT, - REPOSITORY_DAYS_OLDER_VALID_INPUT, REPOSITORY_RETENTION_COUNT_VALID_INPUT ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertFalse( action.hasFieldErrors() ); - } - - // TODO: test errors during add, other actions -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryActionTest.java deleted file mode 100644 index c51fd8bd8..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/AddRemoteRepositoryActionTest.java +++ /dev/null @@ -1,139 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.web.action.AbstractActionTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.easymock.MockControl; - -import java.util.Collections; -import org.junit.Before; -import org.junit.Test; - -/** - * AddRemoteRepositoryActionTest - * - * - */ -public class AddRemoteRepositoryActionTest - extends AbstractActionTestCase -{ - private AddRemoteRepositoryAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - private static final String REPO_ID = "remote-repo-ident"; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (AddRemoteRepositoryAction) getActionProxy( "/admin/addRemoteRepository.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testSecureActionBundle() - throws Exception - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testAddRemoteRepositoryInitialPage() - throws Exception - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - RemoteRepository configuration = action.getRepository(); - assertNotNull( configuration ); - assertNull( configuration.getId() ); - - String status = action.input(); - assertEquals( Action.INPUT, status ); - } - - @Test - public void testAddRemoteRepository() - throws Exception - { - Configuration configuration = new Configuration(); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 2 ); - - archivaConfiguration.save( configuration ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 1 ); - - archivaConfigurationControl.replay(); - - action.prepare(); - RemoteRepository repository = action.getRepository(); - populateRepository( repository ); - - assertEquals( "url ", repository.getUrl() ); - - String status = action.commit(); - assertEquals( Action.SUCCESS, status ); - - assertEquals( Collections.singletonList( repository ), - action.getRemoteRepositoryAdmin().getRemoteRepositories() ); - - assertEquals( "url", repository.getUrl() ); - - archivaConfigurationControl.verify(); - } - - private void populateRepository( RemoteRepository repository ) - { - repository.setId( REPO_ID ); - repository.setName( "repo name" ); - repository.setUrl( "url " ); - repository.setLayout( "default" ); - } - - // TODO: test errors during add, other actions -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java deleted file mode 100644 index 6ad924b09..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java +++ /dev/null @@ -1,115 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.DefaultTextProvider; -import com.opensymphony.xwork2.ObjectFactory; -import com.opensymphony.xwork2.TextProvider; -import com.opensymphony.xwork2.conversion.ObjectTypeDeterminer; -import com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer; -import com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter; -import com.opensymphony.xwork2.conversion.impl.XWorkConverter; -import com.opensymphony.xwork2.inject.Container; -import com.opensymphony.xwork2.inject.ContainerBuilder; -import com.opensymphony.xwork2.inject.Scope; -import com.opensymphony.xwork2.ognl.OgnlReflectionProvider; -import com.opensymphony.xwork2.ognl.OgnlUtil; -import com.opensymphony.xwork2.ognl.OgnlValueStackFactory; -import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor; -import com.opensymphony.xwork2.util.CompoundRoot; -import com.opensymphony.xwork2.util.ValueStack; -import com.opensymphony.xwork2.util.ValueStackFactory; -import com.opensymphony.xwork2.util.reflection.ReflectionProvider; -import com.opensymphony.xwork2.validator.ActionValidatorManager; -import com.opensymphony.xwork2.validator.DefaultActionValidatorManager; -import com.opensymphony.xwork2.validator.DefaultValidatorFactory; -import com.opensymphony.xwork2.validator.DefaultValidatorFileParser; -import ognl.PropertyAccessor; - -import java.util.HashMap; - -/** - * Factory for creating the DefaultActionValidatorManager to be used for the validation tests. - */ -public class DefaultActionValidatorManagerFactory -{ - - // ObjectFactory.setObjectFactory(..) was removed in struts 2.1, so we have to workaround with this - // to make the validation tests work - public ActionValidatorManager createDefaultActionValidatorManager() - throws ClassNotFoundException - { - Container container = createBootstrapContainer(); - - ActionContext context = new ActionContext( new HashMap() ); - context.setValueStack( createValueStack( container ) ); - ActionContext.setContext( context ); - - OgnlReflectionProvider reflectionProvider = new OgnlReflectionProvider(); - - reflectionProvider.setOgnlUtil( container.getInstance( OgnlUtil.class ) ); - - ObjectFactory objectFactory = new ObjectFactory(); - objectFactory.setReflectionProvider( reflectionProvider ); - - DefaultValidatorFileParser fileParser = new DefaultValidatorFileParser(); - fileParser.setObjectFactory( objectFactory ); - - DefaultValidatorFactory validatorFactory = new DefaultValidatorFactory( objectFactory, fileParser ); - - DefaultActionValidatorManager defaultValidatorManager = new DefaultActionValidatorManager(); - defaultValidatorManager.setValidatorFactory( validatorFactory ); - defaultValidatorManager.setValidatorFileParser( fileParser ); - - return defaultValidatorManager; - } - - private ValueStack createValueStack( Container container ) - throws ClassNotFoundException - { - OgnlValueStackFactory stackFactory = new OgnlValueStackFactory(); - - stackFactory.setXWorkConverter( container.getInstance( XWorkConverter.class ) ); - stackFactory.setContainer( container ); - stackFactory.setTextProvider( container.getInstance( TextProvider.class ) ); - - ValueStack stack = stackFactory.createValueStack(); - - return stack; - } - - private Container createBootstrapContainer() - { - ContainerBuilder builder = new ContainerBuilder(); - builder.factory( ObjectFactory.class, Scope.SINGLETON ); - builder.factory( ReflectionProvider.class, OgnlReflectionProvider.class, Scope.SINGLETON ); - builder.factory( ValueStackFactory.class, OgnlValueStackFactory.class, Scope.SINGLETON ); - builder.factory( XWorkConverter.class, Scope.SINGLETON ); - builder.factory( XWorkBasicConverter.class, Scope.SINGLETON ); - builder.factory( TextProvider.class, "system", DefaultTextProvider.class, Scope.SINGLETON ); - builder.factory( ObjectTypeDeterminer.class, DefaultObjectTypeDeterminer.class, Scope.SINGLETON ); - builder.factory( PropertyAccessor.class, CompoundRoot.class.getName(), CompoundRootAccessor.class, Scope.SINGLETON ); - builder.factory( OgnlUtil.class, Scope.SINGLETON ); - builder.constant( "devMode", "false" ); - - return builder.create( true ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java deleted file mode 100644 index 33370b7b7..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteManagedRepositoryActionTest.java +++ /dev/null @@ -1,483 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import net.sf.beanlib.provider.replicator.BeanReplicator; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.audit.AuditEvent; -import org.apache.archiva.audit.AuditListener; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.configuration.RepositoryGroupConfiguration; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.redback.components.registry.RegistryException; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.apache.archiva.redback.role.RoleManager; -import org.apache.archiva.redback.role.RoleManagerException; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.action.AbstractActionTestCase; -import org.apache.archiva.web.action.AuditEventArgumentsMatcher; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.easymock.MockControl; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import org.junit.Before; -import org.junit.Test; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * DeleteManagedRepositoryActionTest - * - * - */ -public class DeleteManagedRepositoryActionTest - extends AbstractActionTestCase -{ - private DeleteManagedRepositoryAction action; - - private RoleManager roleManager; - - private MockControl roleManagerControl; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - private static final String REPO_ID = "repo-ident"; - - private File location; - - private MockControl repositoryStatisticsManagerControl; - - private RepositoryStatisticsManager repositoryStatisticsManager; - - private MetadataRepository metadataRepository; - - private RepositorySession respositorySession; - - private MockControl metadataRepositoryControl; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - // TODO use getAction .?? - action = new DeleteManagedRepositoryAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - roleManagerControl = MockControl.createControl( RoleManager.class ); - roleManager = (RoleManager) roleManagerControl.getMock(); - //action.setRoleManager( roleManager ); - location = new File( System.getProperty( "basedir" ), "target/test/location" ); - - repositoryStatisticsManagerControl = MockControl.createControl( RepositoryStatisticsManager.class ); - repositoryStatisticsManager = (RepositoryStatisticsManager) repositoryStatisticsManagerControl.getMock(); - - metadataRepositoryControl = MockControl.createControl( MetadataRepository.class ); - metadataRepository = (MetadataRepository) metadataRepositoryControl.getMock(); - metadataRepository.removeRepository( REPO_ID ); - - respositorySession = mock( RepositorySession.class ); - when( respositorySession.getRepository() ).thenReturn( metadataRepository ); - - TestRepositorySessionFactory factory = new TestRepositorySessionFactory(); - factory.setRepositorySession( respositorySession ); - action.setRepositorySessionFactory( factory ); - - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setArchivaConfiguration( archivaConfiguration ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRoleManager( roleManager ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositoryStatisticsManager( - repositoryStatisticsManager ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositorySessionFactory( factory ); - action.setManagedRepositoryAdmin( getManagedRepositoryAdmin() ); - - metadataRepositoryControl.replay(); - } - - @Test - public void testSecureActionBundle() - throws SecureActionException, RepositoryAdminException - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testDeleteRepositoryAndReposUnderRepoGroup() - throws Exception - { - repositoryStatisticsManager.deleteStatistics( metadataRepository, REPO_ID ); - repositoryStatisticsManagerControl.replay(); - - Configuration configuration = prepDeletionTest( createRepository(), 6 ); - List repoIds = new ArrayList(); - repoIds.add( REPO_ID ); - configuration.addRepositoryGroup( createRepoGroup( repoIds, "repo.group" ) ); - - prepareRoleManagerMock(); - - assertEquals( 1, configuration.getRepositoryGroups().size() ); - - MockControl control = mockAuditListeners(); - when( respositorySession.getRepository() ).thenReturn( metadataRepository ); - String status = action.deleteContents(); - assertEquals( Action.SUCCESS, status ); - - assertTrue( configuration.getManagedRepositories().isEmpty() ); - assertEquals( 0, configuration.getRepositoryGroups().get( 0 ).getRepositories().size() ); - - assertFalse( location.exists() ); - - repositoryStatisticsManagerControl.verify(); - control.verify(); - metadataRepositoryControl.verify(); - } - - @Test - public void testDeleteRepositoryConfirmation() - throws Exception - { - ManagedRepository originalRepository = createRepository(); - Configuration configuration = createConfigurationForEditing( originalRepository ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration ); - - Configuration stageRepoConfiguration = new Configuration(); - stageRepoConfiguration.addManagedRepository( createStagingRepository() ); - archivaConfigurationControl.setReturnValue( stageRepoConfiguration ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - ManagedRepository repository = action.getRepository(); - assertNotNull( repository ); - assertRepositoryEquals( repository, createRepository() ); - - String status = action.execute(); - assertEquals( Action.SUCCESS, status ); - - repository = action.getRepository(); - assertRepositoryEquals( repository, createRepository() ); - assertEquals( Collections.singletonList( originalRepository ), - action.getManagedRepositoryAdmin().getManagedRepositories() ); - } - - @Test - public void testDeleteRepositoryKeepContent() - throws Exception - { - // even when we keep the content, we don't keep the metadata at this point - repositoryStatisticsManager.deleteStatistics( metadataRepository, REPO_ID ); - repositoryStatisticsManagerControl.replay(); - - prepareRoleManagerMock(); - - Configuration configuration = prepDeletionTest( createRepository(), 4 ); - - MockControl control = mockAuditListeners(); - - when( respositorySession.getRepository() ).thenReturn( metadataRepository ); - - String status = action.deleteEntry(); - - assertEquals( Action.SUCCESS, status ); - - assertTrue( configuration.getManagedRepositories().isEmpty() ); - - assertTrue( location.exists() ); - - repositoryStatisticsManagerControl.verify(); - control.verify(); - metadataRepositoryControl.verify(); - } - - private MockControl mockAuditListeners() - { - MockControl control = MockControl.createControl( AuditListener.class ); - AuditListener listener = (AuditListener) control.getMock(); - listener.auditEvent( new AuditEvent( REPO_ID, "guest", null, AuditEvent.DELETE_MANAGED_REPO ) ); - control.setMatcher( new AuditEventArgumentsMatcher() ); - control.replay(); - action.setAuditListeners( Arrays.asList( listener ) ); - - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setAuditListeners( Arrays.asList( listener ) ); - return control; - } - - @Test - public void testDeleteRepositoryDeleteContent() - throws Exception - { - repositoryStatisticsManager.deleteStatistics( metadataRepository, REPO_ID ); - repositoryStatisticsManagerControl.replay(); - - prepareRoleManagerMock(); - - Configuration configuration = prepDeletionTest( createRepository(), 4 ); - - MockControl control = mockAuditListeners(); - - when( respositorySession.getRepository() ).thenReturn( metadataRepository ); - - String status = action.deleteContents(); - - assertEquals( Action.SUCCESS, status ); - - assertTrue( configuration.getManagedRepositories().isEmpty() ); - - assertFalse( location.exists() ); - - repositoryStatisticsManagerControl.verify(); - control.verify(); - metadataRepositoryControl.verify(); - } - - @Test - public void testDeleteRepositoryAndAssociatedProxyConnectors() - throws Exception - { - repositoryStatisticsManager.deleteStatistics( metadataRepository, REPO_ID ); - repositoryStatisticsManagerControl.replay(); - - Configuration configuration = prepDeletionTest( createRepository(), 5 ); - configuration.addRemoteRepository( createRemoteRepository( "codehaus", "http://repository.codehaus.org" ) ); - configuration.addRemoteRepository( createRemoteRepository( "java.net", "http://dev.java.net/maven2" ) ); - configuration.addProxyConnector( createProxyConnector( REPO_ID, "codehaus" ) ); - - prepareRoleManagerMock(); - - assertEquals( 1, configuration.getProxyConnectors().size() ); - - MockControl control = mockAuditListeners(); - when( respositorySession.getRepository() ).thenReturn( metadataRepository ); - String status = action.deleteContents(); - - assertEquals( Action.SUCCESS, status ); - - assertTrue( configuration.getManagedRepositories().isEmpty() ); - assertEquals( 0, configuration.getProxyConnectors().size() ); - - assertFalse( location.exists() ); - - repositoryStatisticsManagerControl.verify(); - control.verify(); - metadataRepositoryControl.verify(); - } - - @Test - public void testDeleteRepositoryCancelled() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - - ManagedRepository originalRepository = createRepository(); - Configuration configuration = prepDeletionTest( originalRepository, 3 ); - - String status = action.execute(); - assertEquals( Action.SUCCESS, status ); - - ManagedRepository repository = action.getRepository(); - assertRepositoryEquals( repository, createRepository() ); - assertEquals( Collections.singletonList( originalRepository ), - action.getManagedRepositoryAdmin().getManagedRepositories() ); - - assertTrue( location.exists() ); - - repositoryStatisticsManagerControl.verify(); - } - - - private Configuration prepDeletionTest( ManagedRepository originalRepository, int expectCountGetConfig ) - throws RegistryException, IndeterminateConfigurationException, RepositoryAdminException - { - - //Configuration originalConfiguration = - // ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).getArchivaConfiguration().getConfiguration(); - - location.mkdirs(); - - Configuration configuration = createConfigurationForEditing( originalRepository ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, expectCountGetConfig ); - - Configuration stageRepoConfiguration = new Configuration(); - stageRepoConfiguration.addManagedRepository( createStagingRepository() ); - archivaConfigurationControl.setReturnValue( stageRepoConfiguration ); - - archivaConfiguration.save( configuration ); - - // save for staging repo delete - archivaConfiguration.save( configuration ); - - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - ManagedRepository repository = action.getRepository(); - assertNotNull( repository ); - assertRepositoryEquals( repository, createRepository() ); - - assertTrue( location.exists() ); - return configuration; - } - - private void assertRepositoryEquals( ManagedRepository expectedRepository, ManagedRepository actualRepository ) - { - assertEquals( expectedRepository.getDaysOlder(), actualRepository.getDaysOlder() ); - assertEquals( expectedRepository.getId(), actualRepository.getId() ); - assertEquals( expectedRepository.getIndexDirectory(), actualRepository.getIndexDirectory() ); - assertEquals( expectedRepository.getLayout(), actualRepository.getLayout() ); - assertEquals( expectedRepository.getLocation(), actualRepository.getLocation() ); - assertEquals( expectedRepository.getName(), actualRepository.getName() ); - assertEquals( expectedRepository.getCronExpression(), actualRepository.getCronExpression() ); - assertEquals( expectedRepository.getRetentionCount(), actualRepository.getRetentionCount() ); - assertEquals( expectedRepository.isDeleteReleasedSnapshots(), actualRepository.isDeleteReleasedSnapshots() ); - assertEquals( expectedRepository.isScanned(), actualRepository.isScanned() ); - assertEquals( expectedRepository.isReleases(), actualRepository.isReleases() ); - assertEquals( expectedRepository.isSnapshots(), actualRepository.isSnapshots() ); - } - - private Configuration createConfigurationForEditing( ManagedRepository repositoryConfiguration ) - { - Configuration configuration = new Configuration(); - ManagedRepositoryConfiguration managedRepositoryConfiguration = - new BeanReplicator().replicateBean( repositoryConfiguration, ManagedRepositoryConfiguration.class ); - managedRepositoryConfiguration.setRefreshCronExpression( repositoryConfiguration.getCronExpression() ); - configuration.addManagedRepository( managedRepositoryConfiguration ); - return configuration; - } - - private ManagedRepository createRepository() - { - ManagedRepository r = new ManagedRepository(); - r.setId( REPO_ID ); - r.setName( "repo name" ); - r.setLocation( location.getAbsolutePath() ); - r.setLayout( "default" ); - r.setCronExpression( "* 0/5 * * * ?" ); - r.setDaysOlder( 0 ); - r.setRetentionCount( 0 ); - r.setReleases( true ); - r.setSnapshots( true ); - r.setScanned( false ); - r.setDeleteReleasedSnapshots( false ); - return r; - } - - private ManagedRepositoryConfiguration createStagingRepository() - { - ManagedRepositoryConfiguration r = new ManagedRepositoryConfiguration(); - r.setId( REPO_ID + "-stage" ); - r.setName( "repo name" ); - r.setLocation( location.getAbsolutePath() ); - r.setLayout( "default" ); - r.setRefreshCronExpression( "* 0/5 * * * ?" ); - r.setDaysOlder( 0 ); - r.setRetentionCount( 0 ); - r.setReleases( true ); - r.setSnapshots( true ); - r.setScanned( false ); - r.setDeleteReleasedSnapshots( false ); - return r; - } - - private RemoteRepositoryConfiguration createRemoteRepository( String id, String url ) - { - RemoteRepositoryConfiguration r = new RemoteRepositoryConfiguration(); - r.setId( id ); - r.setUrl( url ); - r.setLayout( "default" ); - - return r; - } - - private ProxyConnectorConfiguration createProxyConnector( String managedRepoId, String remoteRepoId ) - { - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( managedRepoId ); - connector.setTargetRepoId( remoteRepoId ); - - return connector; - } - - private RepositoryGroupConfiguration createRepoGroup( List repoIds, String repoGroupId ) - { - RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration(); - repoGroup.setId( repoGroupId ); - repoGroup.setRepositories( repoIds ); - - return repoGroup; - } - - private void prepareRoleManagerMock() - throws RoleManagerException - { - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManagerControl.setReturnValue( true ); - roleManager.removeTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.setReturnValue( true ); - roleManager.removeTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.replay(); - } - - protected ManagedRepositoryAdmin getManagedRepositoryAdmin() - { - return applicationContext.getBean( ManagedRepositoryAdmin.class ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java deleted file mode 100644 index a0c2cde5c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRemoteRepositoryActionTest.java +++ /dev/null @@ -1,225 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.IndeterminateConfigurationException; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.ProxyConnectorConfiguration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.archiva.web.action.AbstractActionTestCase; -import org.easymock.MockControl; - -import java.util.Collections; -import org.junit.Before; -import org.junit.Test; - -/** - * DeleteRemoteRepositoryActionTest - * - * - */ -public class DeleteRemoteRepositoryActionTest - extends AbstractActionTestCase -{ - private static final String REPO_ID = "remote-repo-ident"; - - private DeleteRemoteRepositoryAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - //action = (DeleteRemoteRepositoryAction) lookup( Action.class.getName(), "deleteRemoteRepositoryAction" ); - action = (DeleteRemoteRepositoryAction) getActionProxy( "/admin/deleteRemoteRepository.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testDeleteRemoteRepositoryConfirmation() - throws Exception - { - RemoteRepository originalRepository = createRepository(); - Configuration configuration = createConfigurationForEditing( originalRepository ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 3, 4 ); - - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - RemoteRepository repository = action.getRepository(); - assertNotNull( repository ); - assertRepositoryEquals( repository, createRepository() ); - - String status = action.confirmDelete(); - assertEquals( Action.INPUT, status ); - repository = action.getRepository(); - assertRepositoryEquals( repository, createRepository() ); - assertEquals( Collections.singletonList( originalRepository ), - action.getRemoteRepositoryAdmin().getRemoteRepositories() ); - } - - @Test - public void testDeleteRemoteRepository() - throws org.apache.archiva.redback.components.registry.RegistryException, IndeterminateConfigurationException, RepositoryAdminException - { - Configuration configuration = createConfigurationForEditing( createRepository() ); - configuration.addManagedRepository( createManagedRepository( "internal", "target/repo/internal" ) ); - configuration.addManagedRepository( createManagedRepository( "snapshots", "target/repo/snapshots" ) ); - configuration.addProxyConnector( createProxyConnector( "internal", REPO_ID ) ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4 ); - - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - RemoteRepository repository = action.getRepository(); - assertNotNull( repository ); - assertRepositoryEquals( repository, createRepository() ); - - assertEquals( 1, configuration.getProxyConnectors().size() ); - - String status = action.delete(); - assertEquals( Action.SUCCESS, status ); - - assertTrue( configuration.getRemoteRepositories().isEmpty() ); - assertEquals( 0, configuration.getProxyConnectors().size() ); - } - - @Test - public void testDeleteRemoteRepositoryCancelled() - throws Exception - { - RemoteRepository originalRepository = createRepository(); - Configuration configuration = createConfigurationForEditing( originalRepository ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4 ); - - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - RemoteRepository repositoryConfiguration = action.getRepository(); - assertNotNull( repositoryConfiguration ); - assertRepositoryEquals( repositoryConfiguration, createRepository() ); - - String status = action.execute(); - assertEquals( Action.SUCCESS, status ); - - RemoteRepository repository = action.getRepository(); - assertRepositoryEquals( repository, createRepository() ); - assertEquals( Collections.singletonList( originalRepository ), - action.getRemoteRepositoryAdmin().getRemoteRepositories() ); - } - - private Configuration createConfigurationForEditing( RemoteRepository repositoryConfiguration ) - { - Configuration configuration = new Configuration(); - RemoteRepositoryConfiguration conf = new RemoteRepositoryConfiguration(); - conf.setId( repositoryConfiguration.getId() ); - conf.setLayout( repositoryConfiguration.getLayout() ); - conf.setUrl( repositoryConfiguration.getUrl() ); - conf.setName( repositoryConfiguration.getName() ); - configuration.addRemoteRepository( conf ); - return configuration; - } - - private RemoteRepository createRepository() - { - RemoteRepository r = new RemoteRepository(); - r.setId( REPO_ID ); - populateRepository( r ); - return r; - } - - private void assertRepositoryEquals( RemoteRepository expectedRepository, RemoteRepository actualRepository ) - { - assertEquals( expectedRepository.getId(), actualRepository.getId() ); - assertEquals( expectedRepository.getLayout(), actualRepository.getLayout() ); - assertEquals( expectedRepository.getUrl(), actualRepository.getUrl() ); - assertEquals( expectedRepository.getName(), actualRepository.getName() ); - } - - private ManagedRepositoryConfiguration createManagedRepository( String string, String testPath ) - { - ManagedRepositoryConfiguration r = new ManagedRepositoryConfiguration(); - r.setId( REPO_ID ); - r.setName( "repo name" ); - r.setLocation( testPath ); - r.setLayout( "default" ); - r.setRefreshCronExpression( "* 0/5 * * * ?" ); - r.setDaysOlder( 0 ); - r.setRetentionCount( 0 ); - r.setReleases( true ); - r.setSnapshots( true ); - r.setScanned( false ); - r.setDeleteReleasedSnapshots( false ); - return r; - } - - private ProxyConnectorConfiguration createProxyConnector( String managedRepoId, String remoteRepoId ) - { - ProxyConnectorConfiguration connector = new ProxyConnectorConfiguration(); - connector.setSourceRepoId( managedRepoId ); - connector.setTargetRepoId( remoteRepoId ); - - return connector; - } - - private void populateRepository( RemoteRepository repository ) - { - repository.setId( REPO_ID ); - repository.setName( "repo name" ); - repository.setUrl( "url" ); - repository.setLayout( "default" ); - } - - // TODO: what about removing proxied content if a proxy is removed? -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java deleted file mode 100644 index 81ef1b95b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java +++ /dev/null @@ -1,168 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RepositoryGroup; -import org.apache.archiva.admin.repository.group.DefaultRepositoryGroupAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.RepositoryGroupConfiguration; -import org.apache.archiva.web.action.AbstractActionTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.easymock.MockControl; - -import java.util.Collections; -import org.junit.Before; -import org.junit.Test; - -/** - * DeleteRepositoryGroupActionTest - */ -public class DeleteRepositoryGroupActionTest - extends AbstractActionTestCase -{ - private static final String REPO_GROUP_ID = "repo-group-ident"; - - private DeleteRepositoryGroupAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = (DeleteRepositoryGroupAction) getActionProxy( "/admin/deleteRepositoryGroup.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - ( (DefaultRepositoryGroupAdmin) action.getRepositoryGroupAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testSecureActionBundle() - throws SecureActionException, RepositoryAdminException - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testDeleteRepositoryGroupConfirmation() - throws Exception - { - RepositoryGroupConfiguration origRepoGroup = createRepositoryGroup(); - Configuration configuration = createConfigurationForEditing( origRepoGroup ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 2 ); - archivaConfigurationControl.replay(); - - action.setRepoGroupId( REPO_GROUP_ID ); - - action.prepare(); - assertEquals( REPO_GROUP_ID, action.getRepoGroupId() ); - RepositoryGroup repoGroup = action.getRepositoryGroup(); - assertNotNull( repoGroup ); - assertEquals( repoGroup.getId(), action.getRepoGroupId() ); - assertEquals( Collections.singletonList( origRepoGroup ), configuration.getRepositoryGroups() ); - } - - @Test - public void testDeleteRepositoryGroup() - throws Exception - { - Configuration configuration = createConfigurationForEditing( createRepositoryGroup() ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 7 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.setRepoGroupId( REPO_GROUP_ID ); - - action.prepare(); - assertEquals( REPO_GROUP_ID, action.getRepoGroupId() ); - RepositoryGroup repoGroup = action.getRepositoryGroup(); - assertNotNull( repoGroup ); - assertEquals( Collections.singletonList( repoGroup ), - action.getRepositoryGroupAdmin().getRepositoriesGroups() ); - - String status = action.delete(); - assertEquals( Action.SUCCESS, status ); - assertTrue( configuration.getRepositoryGroups().isEmpty() ); - } - - @Test - public void testDeleteRepositoryGroupCancelled() - throws Exception - { - RepositoryGroupConfiguration origRepoGroup = createRepositoryGroup(); - Configuration configuration = createConfigurationForEditing( origRepoGroup ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4 ); - - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.setRepoGroupId( REPO_GROUP_ID ); - - action.prepare(); - assertEquals( REPO_GROUP_ID, action.getRepoGroupId() ); - RepositoryGroup repoGroup = action.getRepositoryGroup(); - assertNotNull( repoGroup ); - - String status = action.execute(); - assertEquals( Action.SUCCESS, status ); - assertEquals( Collections.singletonList( repoGroup ), - action.getRepositoryGroupAdmin().getRepositoriesGroups() ); - } - - private Configuration createConfigurationForEditing( RepositoryGroupConfiguration repoGroup ) - { - Configuration configuration = new Configuration(); - configuration.addRepositoryGroup( repoGroup ); - return configuration; - } - - private RepositoryGroupConfiguration createRepositoryGroup() - { - RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration(); - repoGroup.setId( REPO_GROUP_ID ); - - return repoGroup; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java deleted file mode 100644 index c5e062932..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java +++ /dev/null @@ -1,641 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.repository.DefaultRepositoryCommonValidator; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.audit.AuditListener; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.apache.archiva.redback.role.RoleManager; -import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler; -import org.apache.archiva.scheduler.repository.RepositoryTask; -import org.apache.archiva.security.common.ArchivaRoleConstants; -import org.apache.archiva.web.validator.utils.ValidatorUtil; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.apache.commons.io.FileUtils; -import org.easymock.MockControl; -import org.easymock.classextension.MockClassControl; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * EditManagedRepositoryActionTest - * - * - */ -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class EditManagedRepositoryActionTest - extends AbstractManagedRepositoryActionTest -{ - private EditManagedRepositoryAction action; - - private RoleManager roleManager; - - private MockControl roleManagerControl; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - private org.apache.archiva.redback.components.registry.Registry registry; - - private MockControl registryControl; - - private MetadataRepository metadataRepository; - - private MockControl repositoryTaskSchedulerControl; - - private RepositoryArchivaTaskScheduler repositoryTaskScheduler; - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - action = new EditManagedRepositoryAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - roleManagerControl = MockControl.createControl( RoleManager.class ); - roleManager = (RoleManager) roleManagerControl.getMock(); - - registryControl = MockControl.createControl( org.apache.archiva.redback.components.registry.Registry.class ); - registry = (org.apache.archiva.redback.components.registry.Registry) registryControl.getMock(); - - repositoryTaskSchedulerControl = MockClassControl.createControl( RepositoryArchivaTaskScheduler.class ); - repositoryTaskScheduler = (RepositoryArchivaTaskScheduler) repositoryTaskSchedulerControl.getMock(); - - location = new File( System.getProperty( "basedir", "target/test/location" ) ); - - metadataRepository = mock( MetadataRepository.class ); - RepositorySession repositorySession = mock( RepositorySession.class ); - when( repositorySession.getRepository() ).thenReturn( metadataRepository ); - TestRepositorySessionFactory factory = applicationContext.getBean( TestRepositorySessionFactory.class ); - factory.setRepositorySession( repositorySession ); - - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setArchivaConfiguration( archivaConfiguration ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRoleManager( roleManager ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositoryTaskScheduler( - repositoryTaskScheduler ); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositorySessionFactory( factory ); - - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRegistry( registry ); - - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setAuditListeners( - new ArrayList( 0 ) ); - - DefaultRepositoryCommonValidator defaultRepositoryCommonValidator = new DefaultRepositoryCommonValidator(); - defaultRepositoryCommonValidator.setArchivaConfiguration( archivaConfiguration ); - defaultRepositoryCommonValidator.setRegistry( registry ); - - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositoryCommonValidator( - defaultRepositoryCommonValidator ); - - action.setRepositoryCommonValidator( defaultRepositoryCommonValidator ); - - action.setManagedRepositoryAdmin( getManagedRepositoryAdmin() ); - - } - - @Test - public void testSecureActionBundle() - throws SecureActionException, RepositoryAdminException - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testEditRepositoryInitialPage() - throws Exception - { - Configuration configuration = createConfigurationForEditing( createRepository() ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration ); - Configuration stageRepoConfiguration = new Configuration(); - stageRepoConfiguration.addManagedRepository( createStagingRepository() ); - archivaConfigurationControl.setReturnValue( stageRepoConfiguration ); - - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - ManagedRepository repository = action.getRepository(); - assertNotNull( repository ); - - ManagedRepository newRepository = createRepository(); - assertRepositoryEquals( repository, newRepository ); - assertEquals( repository.getLocation(), newRepository.getLocation() ); - - String status = action.input(); - assertEquals( Action.INPUT, status ); - repository = action.getRepository(); - assertRepositoryEquals( repository, createRepository() ); - } - - @Test - public void testEditRepository() - throws Exception - { - String stageRepoId = REPO_ID + "-stage"; - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManagerControl.setVoidCallable(); - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.setVoidCallable(); - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, stageRepoId ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, stageRepoId ); - roleManagerControl.setVoidCallable(); - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, stageRepoId ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, stageRepoId ); - roleManagerControl.setVoidCallable(); - - roleManagerControl.replay(); - - registry.getString( "appserver.base", "${appserver.base}" ); - registryControl.setReturnValue( "target/test", 1, 3 ); - registry.getString( "appserver.home", "${appserver.home}" ); - registryControl.setReturnValue( "target/test", 1, 3 ); - - registryControl.replay(); - - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( REPO_ID ); - repositoryTaskScheduler.isProcessingRepositoryTask( REPO_ID ); - repositoryTaskSchedulerControl.setReturnValue( false ); - repositoryTaskScheduler.queueTask( task ); - repositoryTaskSchedulerControl.setVoidCallable(); - - RepositoryTask stageTask = new RepositoryTask(); - stageTask.setRepositoryId( stageRepoId ); - repositoryTaskScheduler.isProcessingRepositoryTask( stageRepoId ); - repositoryTaskSchedulerControl.setReturnValue( false ); - repositoryTaskScheduler.queueTask( stageTask ); - repositoryTaskSchedulerControl.setVoidCallable(); - - repositoryTaskSchedulerControl.replay(); - - Configuration configuration = createConfigurationForEditing( createRepository() ); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - - Configuration stageRepoConfiguration = new Configuration(); - stageRepoConfiguration.addManagedRepository( createStagingRepository() ); - archivaConfigurationControl.setReturnValue( stageRepoConfiguration ); - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfiguration.save( configuration ); - archivaConfiguration.save( configuration ); - - archivaConfiguration.save( configuration ); - - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - ManagedRepository repository = action.getRepository(); - populateRepository( repository ); - repository.setName( "new repo name" ); - - MockControl repositoryStatisticsManagerControl = MockControl.createControl( RepositoryStatisticsManager.class ); - RepositoryStatisticsManager repositoryStatisticsManager = - (RepositoryStatisticsManager) repositoryStatisticsManagerControl.getMock(); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositoryStatisticsManager( - repositoryStatisticsManager ); - repositoryStatisticsManager.deleteStatistics( metadataRepository , REPO_ID ); - repositoryStatisticsManagerControl.setVoidCallable(); - repositoryStatisticsManagerControl.replay(); - - new File( "target/test/" + REPO_ID + "-stage" ).mkdirs(); - - repository.setLocation( System.getProperty( "basedir" ) + "/target/test/" + REPO_ID ); - - action.setRepository( repository ); - action.setStageNeeded( true ); - String status = action.commit(); - assertEquals( Action.SUCCESS, status ); - - ManagedRepository newRepository = createRepository(); - newRepository.setName( "new repo name" ); - assertRepositoryEquals( repository, newRepository ); - //assertEquals( Collections.singletonList( repository ), configuration.getManagedRepositories() ); - //assertEquals( location.getCanonicalPath(), new File( repository.getLocation() ).getCanonicalPath() ); - - roleManagerControl.verify(); - //archivaConfigurationControl.verify(); - repositoryStatisticsManagerControl.verify(); - registryControl.verify(); - } - - @Test - public void testEditRepositoryLocationChanged() - throws Exception - { - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID ); - roleManagerControl.setVoidCallable(); - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID ); - roleManagerControl.setVoidCallable(); - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID + "-stage" ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, REPO_ID + "-stage" ); - roleManagerControl.setVoidCallable(); - - roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID + "-stage" ); - roleManagerControl.setReturnValue( false ); - roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, REPO_ID + "-stage" ); - roleManagerControl.setVoidCallable(); - - roleManagerControl.replay(); - - registry.getString( "appserver.base" ); - registryControl.setReturnValue( "target/test", 1, 3 ); - - registry.getString( "appserver.base", "${appserver.base}" ); - registryControl.setReturnValue( "target/test", 1, 3 ); - registry.getString( "appserver.home", "${appserver.home}" ); - registryControl.setReturnValue( "target/test", 1, 3 ); - - registryControl.replay(); - - RepositoryTask task = new RepositoryTask(); - task.setRepositoryId( REPO_ID ); - repositoryTaskScheduler.isProcessingRepositoryTask( REPO_ID ); - repositoryTaskSchedulerControl.setReturnValue( false ); - repositoryTaskScheduler.queueTask( task ); - repositoryTaskSchedulerControl.setVoidCallable(); - - repositoryTaskSchedulerControl.replay(); - - Configuration configuration = createConfigurationForEditing( createRepository() ); - archivaConfiguration.getConfiguration(); - - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfigurationControl.setReturnValue( buildEasyConfiguration() ); - - Configuration stageRepoConfiguration = buildEasyConfiguration(); - stageRepoConfiguration.addManagedRepository( createStagingRepository() ); - archivaConfigurationControl.setReturnValue( stageRepoConfiguration ); - - archivaConfigurationControl.setReturnValue( configuration ); - archivaConfigurationControl.setReturnValue( configuration ); - - archivaConfiguration.save( configuration ); - configuration.addManagedRepository( stageRepoConfiguration.getManagedRepositories().get( 0 ) ); - archivaConfiguration.save( configuration ); - archivaConfiguration.save( configuration ); - - archivaConfigurationControl.replay(); - - MockControl repositoryStatisticsManagerControl = MockControl.createControl( RepositoryStatisticsManager.class ); - RepositoryStatisticsManager repositoryStatisticsManager = - (RepositoryStatisticsManager) repositoryStatisticsManagerControl.getMock(); - ( (DefaultManagedRepositoryAdmin) getManagedRepositoryAdmin() ).setRepositoryStatisticsManager( - repositoryStatisticsManager ); - repositoryStatisticsManager.deleteStatistics( metadataRepository, REPO_ID ); - repositoryStatisticsManagerControl.replay(); - - new File( "target/test/location/" + REPO_ID + "-stage" ).mkdirs(); - - action.setStageNeeded( true ); - action.setRepoid( REPO_ID ); - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - - ManagedRepository repository = new ManagedRepository(); - populateRepository( repository ); - File testFile = new File( "target/test/location/new" ); - FileUtils.deleteDirectory( testFile ); - repository.setLocation( "${appserver.base}/location/new" ); - action.setRepository( repository ); - String status = action.commit(); - assertEquals( Action.SUCCESS, status ); - //assertEquals( Collections.singletonList( repository ), configuration.getManagedRepositories() ); - //assertEquals( testFile.getCanonicalPath(), new File( repository.getLocation() ).getCanonicalPath() ); - - roleManagerControl.verify(); - //archivaConfigurationControl.verify(); - repositoryStatisticsManagerControl.verify(); - registryControl.verify(); - } - - @Test - public void testStruts2ValidationFrameworkWithNullInputs() - throws Exception - { - // prep - // 0 is the default value for primitive int; null for objects - ManagedRepository managedRepositoryConfiguration = createManagedRepository( null, null, null, null, 1, 1 ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository identifier." ); - expectedFieldErrors.put( "repository.id", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a directory." ); - expectedFieldErrors.put( "repository.location", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository name." ); - expectedFieldErrors.put( "repository.name", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithBlankInputs() - throws Exception - { - // prep - // 0 is the default value for primitive int - ManagedRepository managedRepositoryConfiguration = - createManagedRepository( EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, 1, 1 ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository identifier." ); - expectedFieldErrors.put( "repository.id", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a directory." ); - expectedFieldErrors.put( "repository.location", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "You must enter a repository name." ); - expectedFieldErrors.put( "repository.name", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithInvalidInputs() - throws Exception - { - // prep - ManagedRepository managedRepositoryConfiguration = - createManagedRepository( REPOSITORY_ID_INVALID_INPUT, REPOSITORY_NAME_INVALID_INPUT, - REPOSITORY_LOCATION_INVALID_INPUT, REPOSITORY_INDEX_DIR_INVALID_INPUT, - REPOSITORY_DAYS_OLDER_INVALID_INPUT, REPOSITORY_RETENTION_COUNT_INVALID_INPUT ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertTrue( action.hasFieldErrors() ); - - Map> fieldErrors = action.getFieldErrors(); - - // make an expected field error object - Map> expectedFieldErrors = new HashMap>(); - - // populate - List expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "repository.id", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." ); - expectedFieldErrors.put( "repository.location", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-)." ); - expectedFieldErrors.put( "repository.name", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( - "Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." ); - expectedFieldErrors.put( "repository.indexDirectory", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "Repository Purge By Retention Count needs to be between 1 and 100." ); - expectedFieldErrors.put( "repository.retentionCount", expectedErrorMessages ); - - expectedErrorMessages = new ArrayList(); - expectedErrorMessages.add( "Repository Purge By Days Older Than needs to be larger than 0." ); - expectedFieldErrors.put( "repository.daysOlder", expectedErrorMessages ); - - ValidatorUtil.assertFieldErrors( expectedFieldErrors, fieldErrors ); - } - - @Test - public void testStruts2ValidationFrameworkWithValidInputs() - throws Exception - { - // prep - ManagedRepository managedRepositoryConfiguration = - createManagedRepository( REPOSITORY_ID_VALID_INPUT, REPOSITORY_NAME_VALID_INPUT, - REPOSITORY_LOCATION_VALID_INPUT, REPOSITORY_INDEX_DIR_VALID_INPUT, - REPOSITORY_DAYS_OLDER_VALID_INPUT, REPOSITORY_RETENTION_COUNT_VALID_INPUT ); - action.setRepository( managedRepositoryConfiguration ); - - // test - actionValidatorManager.validate( action, EMPTY_STRING ); - - // verify - assertFalse( action.hasFieldErrors() ); - } - - private void assertRepositoryEquals( ManagedRepository expectedRepository, ManagedRepository actualRepository ) - { - assertEquals( expectedRepository.getDaysOlder(), actualRepository.getDaysOlder() ); - assertEquals( expectedRepository.getId(), actualRepository.getId() ); - assertEquals( expectedRepository.getIndexDirectory(), actualRepository.getIndexDirectory() ); - assertEquals( expectedRepository.getLayout(), actualRepository.getLayout() ); - assertEquals( expectedRepository.getName(), actualRepository.getName() ); - assertEquals( expectedRepository.getCronExpression(), actualRepository.getCronExpression() ); - assertEquals( expectedRepository.getRetentionCount(), actualRepository.getRetentionCount() ); - assertEquals( expectedRepository.isDeleteReleasedSnapshots(), actualRepository.isDeleteReleasedSnapshots() ); - assertEquals( expectedRepository.isScanned(), actualRepository.isScanned() ); - assertEquals( expectedRepository.isReleases(), actualRepository.isReleases() ); - assertEquals( expectedRepository.isSnapshots(), actualRepository.isSnapshots() ); - } - - private Configuration createConfigurationForEditing( ManagedRepository repositoryConfiguration ) - throws Exception - { - Configuration configuration = buildEasyConfiguration(); - - ManagedRepositoryConfiguration managedRepositoryConfiguration = new ManagedRepositoryConfiguration(); - - managedRepositoryConfiguration.setDaysOlder( repositoryConfiguration.getDaysOlder() ); - managedRepositoryConfiguration.setIndexDir( repositoryConfiguration.getIndexDirectory() ); - managedRepositoryConfiguration.setRetentionCount( repositoryConfiguration.getRetentionCount() ); - managedRepositoryConfiguration.setBlockRedeployments( repositoryConfiguration.isBlockRedeployments() ); - managedRepositoryConfiguration.setDeleteReleasedSnapshots( - repositoryConfiguration.isDeleteReleasedSnapshots() ); - managedRepositoryConfiguration.setLocation( repositoryConfiguration.getLocation() ); - managedRepositoryConfiguration.setRefreshCronExpression( repositoryConfiguration.getCronExpression() ); - managedRepositoryConfiguration.setReleases( repositoryConfiguration.isReleases() ); - managedRepositoryConfiguration.setScanned( repositoryConfiguration.isScanned() ); - managedRepositoryConfiguration.setId( repositoryConfiguration.getId() ); - managedRepositoryConfiguration.setName( repositoryConfiguration.getName() ); - managedRepositoryConfiguration.setLayout( repositoryConfiguration.getLayout() ); - - configuration.addManagedRepository( managedRepositoryConfiguration ); - return configuration; - } - - // easy configuration for hashCode/equals - private Configuration buildEasyConfiguration() - { - return new Configuration() - { - @Override - public int hashCode() - { - return getManagedRepositories().size(); - } - - @Override - public boolean equals( Object o ) - { - return true; - } - }; - } - - private ManagedRepository createRepository() - throws IOException - { - ManagedRepository r = new ManagedRepository(); - r.setLocation( System.getProperty( "basedir" ) + "/target/repo-" + REPO_ID ); - r.setIndexDirectory( System.getProperty( "basedir" ) + "/target/repo-" + REPO_ID + "-index" ); - r.setId( REPO_ID ); - populateRepository( r ); - return r; - } - - private ManagedRepositoryConfiguration createStagingRepository() - throws IOException - { - ManagedRepositoryConfiguration r = new ManagedRepositoryConfiguration(); - r.setId( REPO_ID + "-stage" ); - r.setLocation( System.getProperty( "basedir" ) + "/target/" + REPO_ID + "-stage" ); - populateStagingRepository( r ); - return r; - } - - private void populateStagingRepository( ManagedRepositoryConfiguration repository ) - throws IOException - { - repository.setId( REPO_ID + "-stage" ); - repository.setName( "repo name" ); - repository.setLocation( "${appserver.base}/location" ); - repository.setLayout( "default" ); - repository.setRefreshCronExpression( "* 0/5 * * * ?" ); - repository.setDaysOlder( 31 ); - repository.setRetentionCount( 20 ); - repository.setReleases( true ); - repository.setSnapshots( true ); - repository.setScanned( false ); - repository.setDeleteReleasedSnapshots( true ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryActionTest.java deleted file mode 100644 index 5208cd8fb..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/EditRemoteRepositoryActionTest.java +++ /dev/null @@ -1,182 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RemoteRepository; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.RemoteRepositoryConfiguration; -import org.apache.struts2.StrutsSpringTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.easymock.MockControl; - -import java.util.Collections; - -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -/** - * EditRemoteRepositoryActionTest - * - * - */ -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class EditRemoteRepositoryActionTest - extends StrutsSpringTestCase -{ - private static final String REPO_ID = "remote-repo-ident"; - - private EditRemoteRepositoryAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - protected String[] getContextLocations() - { - return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" }; - } - - @Before - @Override - public void setUp() - throws Exception - { - super.setUp(); - - action = (EditRemoteRepositoryAction) getActionProxy( "/admin/editRemoteRepository.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testEditRemoteRepository() - throws Exception - { - Configuration configuration = createConfigurationForEditing( createRepository() ); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4, 6 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - action.prepare(); - - assertEquals( REPO_ID, action.getRepoid() ); - RemoteRepository repository = action.getRepository(); - populateRepository( repository ); - repository.setName( "new repo name" ); - - String status = action.commit(); - assertEquals( Action.SUCCESS, status ); - - RemoteRepository newRepository = createRepository(); - newRepository.setName( "new repo name" ); - assertRepositoryEquals( repository, newRepository ); - assertEquals( Collections.singletonList( repository ), - action.getRemoteRepositoryAdmin().getRemoteRepositories() ); - - archivaConfigurationControl.verify(); - } - - @Test - public void testEditRemoteRepositoryInitialPage() - throws Exception - { - Configuration configuration = createConfigurationForEditing( createRepository() ); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 2 ); - archivaConfigurationControl.replay(); - - action.setRepoid( REPO_ID ); - - action.prepare(); - assertEquals( REPO_ID, action.getRepoid() ); - RemoteRepository repository = action.getRepository(); - assertNotNull( repository ); - assertRepositoryEquals( repository, createRepository() ); - - String status = action.input(); - assertEquals( Action.INPUT, status ); - repository = action.getRepository(); - assertRepositoryEquals( repository, createRepository() ); - } - - @Test - public void testSecureActionBundle() - throws SecureActionException, RepositoryAdminException - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - private void assertRepositoryEquals( RemoteRepository expectedRepository, RemoteRepository actualRepository ) - { - assertEquals( expectedRepository.getId(), actualRepository.getId() ); - assertEquals( expectedRepository.getLayout(), actualRepository.getLayout() ); - assertEquals( expectedRepository.getUrl(), actualRepository.getUrl() ); - assertEquals( expectedRepository.getName(), actualRepository.getName() ); - } - - private Configuration createConfigurationForEditing( RemoteRepository repositoryConfiguration ) - { - Configuration configuration = new Configuration(); - RemoteRepositoryConfiguration conf = new RemoteRepositoryConfiguration(); - conf.setId( repositoryConfiguration.getId() ); - conf.setLayout( repositoryConfiguration.getLayout() ); - conf.setUrl( repositoryConfiguration.getUrl() ); - conf.setName( repositoryConfiguration.getName() ); - configuration.addRemoteRepository( conf ); - return configuration; - } - - private RemoteRepository createRepository() - { - RemoteRepository r = new RemoteRepository(); - r.setId( REPO_ID ); - populateRepository( r ); - return r; - } - - private void populateRepository( RemoteRepository repository ) - { - repository.setId( REPO_ID ); - repository.setName( "repo name" ); - repository.setUrl( "url" ); - repository.setLayout( "default" ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoriesActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoriesActionTest.java deleted file mode 100644 index 5c2a5b6d0..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoriesActionTest.java +++ /dev/null @@ -1,165 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.meterware.servletunit.ServletRunner; -import com.meterware.servletunit.ServletUnitClient; -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.repository.group.DefaultRepositoryGroupAdmin; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.admin.repository.remote.DefaultRemoteRepositoryAdmin; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.apache.archiva.metadata.repository.stats.RepositoryStatistics; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.struts2.StrutsSpringTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.easymock.MockControl; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Arrays; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -/** - * Test the repositories action returns the correct data. - */ -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class RepositoriesActionTest - extends StrutsSpringTestCase -{ - private Logger log = LoggerFactory.getLogger( getClass() ); - - private RepositoriesAction action; - - ArchivaConfiguration originalArchivaConfiguration; - - @Override - @Before - public void setUp() - throws Exception - { - - super.setUp(); - - action = (RepositoriesAction) getActionProxy( "/admin/index.action" ).getAction(); - originalArchivaConfiguration = - ( (DefaultRepositoryGroupAdmin) action.getRepositoryGroupAdmin() ).getArchivaConfiguration(); - // some other test are modifying archivaConfiguration with a mocked instance : this test need the real one - // so use the real one from spring, backup the mock and restore it at the end (tearDown) - ArchivaConfiguration real = applicationContext.getBean( ArchivaConfiguration.class ); - ( (DefaultRepositoryGroupAdmin) action.getRepositoryGroupAdmin() ).setArchivaConfiguration( real ); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( real ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( real ); - } - - - @Override - @After - public void tearDown() - throws Exception - { - super.tearDown(); - ( (DefaultRepositoryGroupAdmin) action.getRepositoryGroupAdmin() ).setArchivaConfiguration( - originalArchivaConfiguration ); - ( (DefaultManagedRepositoryAdmin) action.getManagedRepositoryAdmin() ).setArchivaConfiguration( - originalArchivaConfiguration ); - ( (DefaultRemoteRepositoryAdmin) action.getRemoteRepositoryAdmin() ).setArchivaConfiguration( - originalArchivaConfiguration ); - } - - @Override - protected String[] getContextLocations() - { - return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" }; - } - - @Test - public void testGetRepositories() - throws Exception - { - try - { - MockControl control = MockControl.createControl( MetadataRepository.class ); - MetadataRepository metadataRepository = (MetadataRepository) control.getMock(); - control.expectAndReturn( metadataRepository.getMetadataFacets( "internal", RepositoryStatistics.FACET_ID ), - Arrays.asList( "20091125.123456.678" ) ); - control.expectAndReturn( - metadataRepository.getMetadataFacet( "internal", RepositoryStatistics.FACET_ID, "20091125.123456.678" ), - new RepositoryStatistics() ); - control.expectAndReturn( metadataRepository.getMetadataFacets( "snapshots", RepositoryStatistics.FACET_ID ), - Arrays.asList( "20091112.012345.012" ) ); - control.expectAndReturn( metadataRepository.getMetadataFacet( "snapshots", RepositoryStatistics.FACET_ID, - "20091112.012345.012" ), - new RepositoryStatistics() ); - control.replay(); - - RepositorySession session = mock( RepositorySession.class ); - when( session.getRepository() ).thenReturn( metadataRepository ); - TestRepositorySessionFactory factory = - applicationContext.getBean( "repositorySessionFactory#test", TestRepositorySessionFactory.class ); - factory.setRepositorySession( session ); - - ServletRunner sr = new ServletRunner(); - ServletUnitClient sc = sr.newClient(); - - action.setServletRequest( sc.newInvocation( "http://localhost/admin/repositories.action" ).getRequest() ); - - action.prepare(); - String result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - // TODO: for some reason servletunit is not populating the port of the servlet request - assertEquals( "http://localhost:0/repository", action.getBaseUrl() ); - - assertNotNull( action.getManagedRepositories() ); - assertNotNull( action.getRemoteRepositories() ); - assertNotNull( action.getRepositoryStatistics() ); - - assertEquals( 2, action.getManagedRepositories().size() ); - assertEquals( 1, action.getRemoteRepositories().size() ); - assertEquals( 2, action.getRepositoryStatistics().size() ); - - control.verify(); - } - catch ( Exception e ) - { - log.error( e.getMessage(), e ); - throw e; - } - } - - @Test - public void testSecureActionBundle() - throws SecureActionException - { - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsActionTest.java deleted file mode 100644 index 4af239368..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/RepositoryGroupsActionTest.java +++ /dev/null @@ -1,399 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.meterware.servletunit.ServletRunner; -import com.meterware.servletunit.ServletUnitClient; -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.RepositoryAdminException; -import org.apache.archiva.admin.model.beans.RepositoryGroup; -import org.apache.archiva.admin.repository.group.DefaultRepositoryGroupAdmin; -import org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.RepositoryGroupConfiguration; -import org.apache.archiva.web.action.AbstractActionTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.easymock.MockControl; - -import java.util.Collections; -import java.util.List; -import org.junit.Test; - -/** - * RepositoryGroupsActionTest - */ -public class RepositoryGroupsActionTest - extends AbstractActionTestCase -{ - private static final String REPO_GROUP_ID = "repo-group-ident"; - - private static final String REPO1_ID = "managed-repo-ident-1"; - - private static final String REPO2_ID = "managed-repo-ident-2"; - - private RepositoryGroupsAction action; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - @Override - public void setUp() - throws Exception - { - super.setUp(); - - action = (RepositoryGroupsAction) getActionProxy( "/admin/repositoryGroups.action" ).getAction(); - - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - - ( (DefaultRepositoryGroupAdmin) action.getRepositoryGroupAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - ( (DefaultManagedRepositoryAdmin) ( (DefaultRepositoryGroupAdmin) action.getRepositoryGroupAdmin() ).getManagedRepositoryAdmin() ).setArchivaConfiguration( - archivaConfiguration ); - } - - @Test - public void testSecureActionBundle() - throws SecureActionException, RepositoryAdminException - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration(), 3, 5 ); - archivaConfigurationControl.replay(); - - action.prepare(); - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testAddRepositoryGroup() - throws Exception - { - Configuration configuration = new Configuration(); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 6, 8 ); - - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.prepare(); - RepositoryGroup repositoryGroup = action.getRepositoryGroup(); - repositoryGroup.setId( REPO_GROUP_ID ); - - String status = action.addRepositoryGroup(); - assertEquals( Action.SUCCESS, status ); - - assertEquals( Collections.singletonList( repositoryGroup ), - action.getRepositoryGroupAdmin().getRepositoriesGroups() ); - - archivaConfigurationControl.verify(); - } - - @Test - public void testAddEmptyRepositoryGroup() - throws Exception - { - Configuration configuration = new Configuration(); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 5, 7 ); - - archivaConfiguration.save( configuration ); - - archivaConfigurationControl.replay(); - - action.prepare(); - - String status = action.addRepositoryGroup(); - assertEquals( Action.ERROR, status ); - - assertEquals( 0, configuration.getRepositoryGroups().size() ); - } - - @Test - public void testAddDuplicateRepositoryGroup() - throws Exception - { - Configuration configuration = new Configuration(); - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 10, 12 ); - - archivaConfiguration.save( configuration ); - - archivaConfigurationControl.replay(); - - action.prepare(); - RepositoryGroup repositoryGroup = action.getRepositoryGroup(); - repositoryGroup.setId( REPO_GROUP_ID ); - - String status = action.addRepositoryGroup(); - assertEquals( Action.SUCCESS, status ); - - assertEquals( Collections.singletonList( repositoryGroup ), - action.getRepositoryGroupAdmin().getRepositoriesGroups() ); - - repositoryGroup.setId( REPO_GROUP_ID ); - status = action.addRepositoryGroup(); - - assertEquals( Action.ERROR, status ); - assertEquals( Collections.singletonList( repositoryGroup ), - action.getRepositoryGroupAdmin().getRepositoriesGroups() ); - } - - @Test - public void testGetRepositoryGroups() - throws Exception - { - ServletRunner sr = new ServletRunner(); - ServletUnitClient sc = sr.newClient(); - - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 6, 8 ); - archivaConfigurationControl.replay(); - - action.setServletRequest( sc.newInvocation( "http://localhost/admin/repositoryGroups.action" ).getRequest() ); - action.prepare(); - String result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - assertEquals( "http://localhost:0/repository", action.getBaseUrl() ); - - assertNotNull( action.getRepositoryGroups() ); - assertEquals( 1, action.getRepositoryGroups().size() ); - assertEquals( 2, action.getManagedRepositories().size() ); - - RepositoryGroup repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID ); - - assertEquals( 1, repoGroup.getRepositories().size() ); - assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) ); - assertNotNull( action.getGroupToRepositoryMap() ); - assertEquals( 1, action.getGroupToRepositoryMap().size() ); - - List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() ); - assertEquals( 1, repos.size() ); - assertEquals( REPO2_ID, repos.get( 0 ) ); - } - - @Test - public void testAddRepositoryToGroup() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 20, 24 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.prepare(); - String result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - assertNotNull( action.getRepositoryGroups() ); - assertEquals( 1, action.getRepositoryGroups().size() ); - assertEquals( 2, action.getManagedRepositories().size() ); - - RepositoryGroup repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID ); - assertEquals( 1, repoGroup.getRepositories().size() ); - assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) ); - - assertNotNull( action.getGroupToRepositoryMap() ); - assertEquals( 1, action.getGroupToRepositoryMap().size() ); - - List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() ); - assertEquals( 1, repos.size() ); - assertEquals( REPO2_ID, repos.get( 0 ) ); - - action.setRepoGroupId( REPO_GROUP_ID ); - action.setRepoId( REPO2_ID ); - - result = action.addRepositoryToGroup(); - assertEquals( Action.SUCCESS, result ); - - action.prepare(); - result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - assertEquals( 1, action.getRepositoryGroups().size() ); - repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID ); - assertEquals( 2, repoGroup.getRepositories().size() ); - assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) ); - assertEquals( REPO2_ID, repoGroup.getRepositories().get( 1 ) ); - - assertEquals( 0, action.getGroupToRepositoryMap().size() ); - assertNull( action.getGroupToRepositoryMap().get( repoGroup.getId() ) ); - } - - @Test - public void testRemoveRepositoryFromGroup() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 19, 22 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.prepare(); - String result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - assertNotNull( action.getRepositoryGroups() ); - assertEquals( 1, action.getRepositoryGroups().size() ); - assertEquals( 2, action.getManagedRepositories().size() ); - - RepositoryGroup repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID ); - assertEquals( 1, repoGroup.getRepositories().size() ); - assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) ); - - assertNotNull( action.getGroupToRepositoryMap() ); - assertEquals( 1, action.getGroupToRepositoryMap().size() ); - - List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() ); - assertEquals( 1, repos.size() ); - assertEquals( REPO2_ID, repos.get( 0 ) ); - - action.setRepoGroupId( REPO_GROUP_ID ); - action.setRepoId( REPO1_ID ); - - result = action.removeRepositoryFromGroup(); - assertEquals( Action.SUCCESS, result ); - - action.prepare(); - result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID ); - assertEquals( 0, repoGroup.getRepositories().size() ); - - assertNotNull( action.getGroupToRepositoryMap() ); - assertEquals( 1, action.getGroupToRepositoryMap().size() ); - - repos = action.getGroupToRepositoryMap().get( repoGroup.getId() ); - assertEquals( 2, repos.size() ); - assertEquals( REPO1_ID, repos.get( 0 ) ); - assertEquals( REPO2_ID, repos.get( 1 ) ); - } - - @Test - public void testAddDuplicateRepositoryToGroup() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 6, 10 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.prepare(); - String result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - assertNotNull( action.getRepositoryGroups() ); - assertEquals( 1, action.getRepositoryGroups().size() ); - assertEquals( 2, action.getManagedRepositories().size() ); - - RepositoryGroup repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID ); - assertEquals( 1, repoGroup.getRepositories().size() ); - assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) ); - - assertNotNull( action.getGroupToRepositoryMap() ); - assertEquals( 1, action.getGroupToRepositoryMap().size() ); - - List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() ); - assertEquals( 1, repos.size() ); - assertEquals( REPO2_ID, repos.get( 0 ) ); - - action.setRepoGroupId( REPO_GROUP_ID ); - action.setRepoId( REPO1_ID ); - - result = action.addRepositoryToGroup(); - assertEquals( Action.ERROR, result ); - } - - @Test - public void testRemoveRepositoryNotInGroup() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 6, 10 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - action.prepare(); - String result = action.execute(); - assertEquals( Action.SUCCESS, result ); - - assertNotNull( action.getRepositoryGroups() ); - assertEquals( 1, action.getRepositoryGroups().size() ); - assertEquals( 2, action.getManagedRepositories().size() ); - - RepositoryGroup repoGroup = action.getRepositoryGroups().get( REPO_GROUP_ID ); - assertEquals( 1, repoGroup.getRepositories().size() ); - assertEquals( REPO1_ID, repoGroup.getRepositories().get( 0 ) ); - - assertNotNull( action.getGroupToRepositoryMap() ); - assertEquals( 1, action.getGroupToRepositoryMap().size() ); - - List repos = action.getGroupToRepositoryMap().get( repoGroup.getId() ); - assertEquals( 1, repos.size() ); - assertEquals( REPO2_ID, repos.get( 0 ) ); - - action.setRepoGroupId( REPO_GROUP_ID ); - action.setRepoId( REPO2_ID ); - - result = action.removeRepositoryFromGroup(); - assertEquals( Action.ERROR, result ); - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - ManagedRepositoryConfiguration managedRepo1 = new ManagedRepositoryConfiguration(); - managedRepo1.setId( REPO1_ID ); - - config.addManagedRepository( managedRepo1 ); - - ManagedRepositoryConfiguration managedRepo2 = new ManagedRepositoryConfiguration(); - managedRepo2.setId( REPO2_ID ); - - config.addManagedRepository( managedRepo2 ); - - RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration(); - repoGroup.setId( REPO_GROUP_ID ); - repoGroup.addRepository( REPO1_ID ); - - config.addRepositoryGroup( repoGroup ); - - return config; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesActionTest.java deleted file mode 100644 index ddaec50b6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/repositories/SortRepositoriesActionTest.java +++ /dev/null @@ -1,254 +0,0 @@ -package org.apache.archiva.web.action.admin.repositories; - -/* - * 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. - */ - -import com.opensymphony.xwork2.Action; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.RepositoryGroupConfiguration; -import org.apache.struts2.StrutsSpringTestCase; -import org.apache.archiva.redback.integration.interceptor.SecureActionBundle; -import org.apache.archiva.redback.integration.interceptor.SecureActionException; -import org.easymock.MockControl; - -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -/** - * SortRepositoriesActionTest - */ -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class SortRepositoriesActionTest - extends StrutsSpringTestCase -{ - private static final String REPO_GROUP_ID = "repo-group-ident"; - - private static final String REPO1_ID = "managed-repo-ident-1"; - - private static final String REPO2_ID = "managed-repo-ident-2"; - - private static final String REPO3_ID = "managed-repo-ident-3"; - - private MockControl archivaConfigurationControl; - - private ArchivaConfiguration archivaConfiguration; - - private ArchivaConfiguration originalArchivaConfiguration; - - private SortRepositoriesAction action; - - @Override - protected String[] getContextLocations() - { - return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" }; - } - - @Before - @Override - public void setUp() - throws Exception - { - super.setUp(); - action = (SortRepositoriesAction) getActionProxy( "/admin/sortDownRepositoryFromGroup.action" ).getAction(); - archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock(); - originalArchivaConfiguration = action.archivaConfiguration; - action.setArchivaConfiguration( archivaConfiguration ); - } - - @Override - @After - public void tearDown() - throws Exception - { - super.tearDown(); - action.archivaConfiguration = originalArchivaConfiguration; - } - - @Test - public void testSecureActionBundle() - throws SecureActionException - { - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( new Configuration() ); - archivaConfigurationControl.replay(); - - SecureActionBundle bundle = action.getSecureActionBundle(); - assertTrue( bundle.requiresAuthentication() ); - assertEquals( 1, bundle.getAuthorizationTuples().size() ); - } - - @Test - public void testSortDownFirstRepository() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - RepositoryGroupConfiguration repoGroup = - (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - java.util.List repositories = repoGroup.getRepositories(); - - assertEquals( 3, repositories.size() ); - assertEquals( REPO1_ID, repositories.get( 0 ) ); - assertEquals( REPO2_ID, repositories.get( 1 ) ); - assertEquals( REPO3_ID, repositories.get( 2 ) ); - - // sort down first repo - action.setRepoGroupId( repoGroup.getId() ); - action.setTargetRepo( REPO1_ID ); - - String result = action.sortDown(); - assertEquals( Action.SUCCESS, result ); - - repoGroup = (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - repositories = repoGroup.getRepositories(); - assertEquals( 3, repositories.size() ); - assertEquals( REPO2_ID, repositories.get( 0 ) ); - assertEquals( REPO1_ID, repositories.get( 1 ) ); - assertEquals( REPO3_ID, repositories.get( 2 ) ); - } - - @Test - public void testSortDownLastRepository() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - RepositoryGroupConfiguration repoGroup = - (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - java.util.List repositories = repoGroup.getRepositories(); - - assertEquals( 3, repositories.size() ); - assertEquals( REPO1_ID, repositories.get( 0 ) ); - assertEquals( REPO2_ID, repositories.get( 1 ) ); - assertEquals( REPO3_ID, repositories.get( 2 ) ); - - // sort down last repo - action.setRepoGroupId( repoGroup.getId() ); - action.setTargetRepo( REPO3_ID ); - - String result = action.sortDown(); - assertEquals( Action.SUCCESS, result ); - - repoGroup = (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - repositories = repoGroup.getRepositories(); - assertEquals( 3, repositories.size() ); - assertEquals( REPO1_ID, repositories.get( 0 ) ); - assertEquals( REPO2_ID, repositories.get( 1 ) ); - assertEquals( REPO3_ID, repositories.get( 2 ) ); - } - - @Test - public void testSortUpLastRepository() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - RepositoryGroupConfiguration repoGroup = - (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - java.util.List repositories = repoGroup.getRepositories(); - - assertEquals( 3, repositories.size() ); - assertEquals( REPO1_ID, repositories.get( 0 ) ); - assertEquals( REPO2_ID, repositories.get( 1 ) ); - assertEquals( REPO3_ID, repositories.get( 2 ) ); - - // sort up last repo - action.setRepoGroupId( repoGroup.getId() ); - action.setTargetRepo( REPO3_ID ); - - String result = action.sortUp(); - assertEquals( Action.SUCCESS, result ); - - repoGroup = (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - repositories = repoGroup.getRepositories(); - assertEquals( 3, repositories.size() ); - assertEquals( REPO1_ID, repositories.get( 0 ) ); - assertEquals( REPO3_ID, repositories.get( 1 ) ); - assertEquals( REPO2_ID, repositories.get( 2 ) ); - } - - @Test - public void testSortUpFirstRepository() - throws Exception - { - Configuration configuration = createInitialConfiguration(); - - archivaConfiguration.getConfiguration(); - archivaConfigurationControl.setReturnValue( configuration, 4 ); - archivaConfiguration.save( configuration ); - archivaConfigurationControl.replay(); - - RepositoryGroupConfiguration repoGroup = - (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - java.util.List repositories = repoGroup.getRepositories(); - - assertEquals( 3, repositories.size() ); - assertEquals( REPO1_ID, repositories.get( 0 ) ); - assertEquals( REPO2_ID, repositories.get( 1 ) ); - assertEquals( REPO3_ID, repositories.get( 2 ) ); - - // sort up first repo - action.setRepoGroupId( repoGroup.getId() ); - action.setTargetRepo( REPO1_ID ); - - String result = action.sortUp(); - assertEquals( Action.SUCCESS, result ); - - repoGroup = (RepositoryGroupConfiguration) configuration.getRepositoryGroups().get( 0 ); - repositories = repoGroup.getRepositories(); - assertEquals( 3, repositories.size() ); - assertEquals( REPO1_ID, repositories.get( 0 ) ); - assertEquals( REPO2_ID, repositories.get( 1 ) ); - assertEquals( REPO3_ID, repositories.get( 2 ) ); - } - - private Configuration createInitialConfiguration() - { - Configuration config = new Configuration(); - - RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration(); - repoGroup.setId( REPO_GROUP_ID ); - repoGroup.addRepository( REPO1_ID ); - repoGroup.addRepository( REPO2_ID ); - repoGroup.addRepository( REPO3_ID ); - - config.addRepositoryGroup( repoGroup ); - - return config; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningActionTest.java deleted file mode 100644 index ac4be6f53..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningActionTest.java +++ /dev/null @@ -1,143 +0,0 @@ -package org.apache.archiva.web.action.admin.scanning; - -import org.apache.archiva.admin.repository.admin.DefaultArchivaAdministration; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.RepositoryScanningConfiguration; -import org.apache.archiva.web.action.AbstractActionTestCase; -import org.easymock.MockControl; - -import java.util.ArrayList; -import java.util.List; -import org.junit.Before; -import org.junit.Test; - -/* - * 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. - */ - -public class RepositoryScanningActionTest - extends AbstractActionTestCase -{ - private RepositoryScanningAction action; - - private MockControl archivaConfigControl; - - private ArchivaConfiguration archivaConfig; - - private Configuration config; - - @Override - @Before - public void setUp() - throws Exception - { - - super.setUp(); - - archivaConfigControl = MockControl.createControl( ArchivaConfiguration.class ); - archivaConfig = (ArchivaConfiguration) archivaConfigControl.getMock(); - - action = new RepositoryScanningAction(); - - config = new Configuration(); - - RepositoryScanningConfiguration repositoryScanningConfig = new RepositoryScanningConfiguration(); - - repositoryScanningConfig.setKnownContentConsumers( createKnownContentConsumersList() ); - - config.setRepositoryScanning( repositoryScanningConfig ); - - DefaultArchivaAdministration archivaAdministration = new DefaultArchivaAdministration(); - archivaAdministration.setArchivaConfiguration( archivaConfig ); - action.setArchivaAdministration( archivaAdministration ); - - } - - @Test - public void testUpdateKnownConsumers() - throws Exception - { - archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 10 ); - - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfigControl.replay(); - - setEnabledKnownContentConsumers(); - - String returnString = action.updateKnownConsumers(); - - List results = config.getRepositoryScanning().getKnownContentConsumers(); - - assertEquals( action.SUCCESS, returnString ); - assertEquals( "results " + results, 8, results.size() ); - } - - @Test - public void testDisableAllKnownConsumers() - throws Exception - { - archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config, 10 ); - - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfig.save( config ); - archivaConfigControl.replay(); - - action.setEnabledKnownContentConsumers( null ); - - String returnString = action.updateKnownConsumers(); - - List results = config.getRepositoryScanning().getKnownContentConsumers(); - - assertEquals( action.SUCCESS, returnString ); - assertEquals( 0, results.size() ); - } - - private void setEnabledKnownContentConsumers() - { - action.setEnabledKnownContentConsumers( createKnownContentConsumersList() ); - } - - private List createKnownContentConsumersList() - { - List knownContentConsumers = new ArrayList(); - knownContentConsumers.add( "auto-remove" ); - knownContentConsumers.add( "auto-rename" ); - knownContentConsumers.add( "create-missing-checksums" ); - knownContentConsumers.add( "index-content" ); - knownContentConsumers.add( "metadata-updater" ); - knownContentConsumers.add( "repository-purge" ); - knownContentConsumers.add( "update-db-artifact" ); - knownContentConsumers.add( "validate-checksums" ); - - return knownContentConsumers; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/reports/GenerateReportActionTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/reports/GenerateReportActionTest.java deleted file mode 100644 index b5e015ec9..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/action/reports/GenerateReportActionTest.java +++ /dev/null @@ -1,743 +0,0 @@ -package org.apache.archiva.web.action.reports; - -/* - * 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. - */ - -import com.google.common.collect.Lists; -import com.opensymphony.xwork2.Action; -import org.apache.archiva.admin.model.beans.ManagedRepository; -import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; -import org.apache.archiva.metadata.model.MetadataFacet; -import org.apache.archiva.metadata.repository.MetadataRepository; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.apache.archiva.metadata.repository.stats.RepositoryStatistics; -import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager; -import org.apache.archiva.reports.RepositoryProblemFacet; -import org.apache.archiva.security.UserRepositoriesStub; -import org.apache.commons.io.IOUtils; -import org.apache.archiva.web.action.AbstractActionTestCase; -import org.easymock.MockControl; -import org.junit.After; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.Test; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * Test the GenerationReportAction. Note that we are testing for current behaviour, however there are several - * instances below where other behaviour may actually be more appropriate (eg the error handling, download stats should - * never forward to HTML page, etc). This is also missing tests for various combinations of paging at this point. - */ -public class GenerateReportActionTest - extends AbstractActionTestCase -{ - private GenerateReportAction action; - - private static final String SNAPSHOTS = "snapshots"; - - private static final String INTERNAL = "internal"; - - private static final String GROUP_ID = "groupId"; - - private RepositoryStatisticsManager repositoryStatisticsManager; - - private MockControl repositoryStatisticsManagerControl; - - private MockControl metadataRepositoryControl; - - private MetadataRepository metadataRepository; - - private static final String PROBLEM = "problem"; - - - @Override - public void setUp() - throws Exception - { - super.setUp(); - - UserRepositoriesStub stub = applicationContext.getBean( "userRepositories", UserRepositoriesStub.class ); - stub.setRepoIds( Lists.newArrayList( "internal", "snapshots" ) ); - - action = (GenerateReportAction) getActionProxy( "/report/generateReport.action" ).getAction(); - - repositoryStatisticsManagerControl = MockControl.createControl( RepositoryStatisticsManager.class ); - repositoryStatisticsManager = (RepositoryStatisticsManager) repositoryStatisticsManagerControl.getMock(); - action.setRepositoryStatisticsManager( repositoryStatisticsManager ); - - metadataRepositoryControl = MockControl.createControl( MetadataRepository.class ); - metadataRepository = (MetadataRepository) metadataRepositoryControl.getMock(); - - RepositorySession repositorySession = mock( RepositorySession.class ); - when( repositorySession.getRepository() ).thenReturn( metadataRepository ); - - TestRepositorySessionFactory factory = - applicationContext.getBean( "repositorySessionFactory#test", TestRepositorySessionFactory.class ); - factory.setRepositorySession( repositorySession ); - } - - - @Override - @After - public void tearDown() - throws Exception - { - UserRepositoriesStub stub = applicationContext.getBean( "userRepositories", UserRepositoriesStub.class ); - stub.setRepoIds( Lists.newArrayList( "test-repo" ) ); - - super.tearDown(); - - } - - private void prepareAction( List selectedRepositories, List availableRepositories ) - throws Exception - { - MockControl managedRepositoryControl = MockControl.createControl( ManagedRepositoryAdmin.class ); - ManagedRepositoryAdmin managedRepositoryAdmin = (ManagedRepositoryAdmin) managedRepositoryControl.getMock(); - - Map map = new HashMap( availableRepositories.size() ); - for ( String repoId : availableRepositories ) - { - map.put( repoId, new ManagedRepository() ); - } - - managedRepositoryControl.expectAndReturn( managedRepositoryAdmin.getManagedRepositoriesAsMap(), map, 1, 10 ); - - managedRepositoryControl.replay(); - action.setManagedRepositoryAdmin( managedRepositoryAdmin ); - - - action.setSelectedRepositories( selectedRepositories ); - action.prepare(); - - List repos = Arrays.asList( GenerateReportAction.ALL_REPOSITORIES, INTERNAL, SNAPSHOTS ); - - Collections.sort( repos ); - - Collections.sort( action.getRepositoryIds() ); - - assertEquals( repos, action.getRepositoryIds() ); - Collections.sort( action.getAvailableRepositories() ); - - availableRepositories = new ArrayList( availableRepositories ); - Collections.sort( availableRepositories ); - - - assertEquals( availableRepositories, action.getAvailableRepositories() ); - } - - @Test - public void testGenerateStatisticsInvalidRowCount() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.singletonList( INTERNAL ), Collections.singletonList( SNAPSHOTS ) ); - - action.setRowCount( 0 ); - String result = action.generateStatistics(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsInvalidEndDate() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.singletonList( INTERNAL ), Collections.singletonList( SNAPSHOTS ) ); - - action.setStartDate( "2009/12/12" ); - action.setEndDate( "2008/11/11" ); - String result = action.generateStatistics(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsMalformedEndDate() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.singletonList( INTERNAL ), Collections.singletonList( SNAPSHOTS ) ); - - action.setEndDate( "This is not a date" ); - String result = action.generateStatistics(); - - // TODO: should be an input error - assertEquals( Action.ERROR, result ); - assertTrue( action.hasActionErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsInvalidEndDateMultiRepo() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - action.setStartDate( "2009/12/12" ); - action.setEndDate( "2008/11/11" ); - String result = action.generateStatistics(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsMalformedEndDateMultiRepo() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - action.setEndDate( "This is not a date" ); - String result = action.generateStatistics(); - - // TODO: should be an input error - assertEquals( Action.ERROR, result ); - assertTrue( action.hasActionErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsNoRepos() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.generateStatistics(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsSingleRepo() - throws Exception - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.singletonList( createDefaultStats() ) ); - - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.singletonList( INTERNAL ), Collections.singletonList( SNAPSHOTS ) ); - - String result = action.generateStatistics(); - assertSuccessResult( result ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsSingleRepoNoStats() - throws Exception - - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.emptyList() ); - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.singletonList( INTERNAL ), Collections.singletonList( SNAPSHOTS ) ); - - String result = action.generateStatistics(); - assertEquals( Action.ERROR, result ); - assertTrue( action.hasActionErrors() ); - - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsOvershotPages() - throws Exception - - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.singletonList( createDefaultStats() ) ); - repositoryStatisticsManagerControl.replay(); - action.setPage( 2 ); - prepareAction( Collections.singletonList( INTERNAL ), Collections.singletonList( SNAPSHOTS ) ); - - String result = action.generateStatistics(); - assertEquals( Action.ERROR, result ); - assertTrue( action.hasActionErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsMultipleRepoNoResults() - throws Exception - - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, SNAPSHOTS, null, null ), - Collections.emptyList() ); - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.emptyList() ); - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - String result = action.generateStatistics(); - assertEquals( GenerateReportAction.BLANK, result ); - assertFalse( action.hasActionErrors() ); - assertFalse( action.hasActionMessages() ); - assertFalse( action.hasFieldErrors() ); - - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testGenerateStatisticsMultipleRepo() - throws Exception - - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, SNAPSHOTS, null, null ), - Collections.singletonList( createDefaultStats() ) ); - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.singletonList( createDefaultStats() ) ); - - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - String result = action.generateStatistics(); - assertSuccessResult( result ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsSingleRepo() - throws Exception - { - Date date = new Date(); - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, SNAPSHOTS, null, null ), - Collections.singletonList( createStats( date ) ) ); - repositoryStatisticsManagerControl.replay(); - - prepareAction( Arrays.asList( SNAPSHOTS ), Arrays.asList( INTERNAL ) ); - - String result = action.downloadStatisticsReport(); - assertEquals( GenerateReportAction.SEND_FILE, result ); - assertFalse( action.hasActionErrors() ); - assertFalse( action.hasFieldErrors() ); - - assertEquals( - "Date of Scan,Total File Count,Total Size,Artifact Count,Group Count,Project Count,Plugins,Archetypes,Jars,Wars\n" - + date + ",0,0,0,0,0,0,0,0,0\n", IOUtils.toString( action.getInputStream() ) ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsMultipleRepos() - throws Exception - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, SNAPSHOTS, null, null ), - Collections.singletonList( createDefaultStats() ) ); - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.singletonList( createDefaultStats() ) ); - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - String result = action.downloadStatisticsReport(); - assertEquals( GenerateReportAction.SEND_FILE, result ); - assertFalse( action.hasActionErrors() ); - assertFalse( action.hasFieldErrors() ); - - assertMultiRepoCsvResult(); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsMalformedEndDateMultiRepo() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - action.setEndDate( "This is not a date" ); - String result = action.downloadStatisticsReport(); - - // TODO: should be an input error - assertEquals( Action.ERROR, result ); - assertTrue( action.hasActionErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsMalformedEndDateSingleRepo() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS ), Arrays.asList( INTERNAL ) ); - - action.setEndDate( "This is not a date" ); - String result = action.downloadStatisticsReport(); - - // TODO: should be an input error - assertEquals( Action.ERROR, result ); - assertTrue( action.hasActionErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsInvalidEndDateMultiRepo() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - action.setStartDate( "2009/12/12" ); - action.setEndDate( "2008/11/11" ); - String result = action.downloadStatisticsReport(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsInvalidEndDateSingleRepo() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS ), Arrays.asList( INTERNAL ) ); - - action.setStartDate( "2009/12/12" ); - action.setEndDate( "2008/11/11" ); - String result = action.downloadStatisticsReport(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsSingleRepoNoStats() - throws Exception - - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.emptyList() ); - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.singletonList( INTERNAL ), Collections.singletonList( SNAPSHOTS ) ); - - String result = action.downloadStatisticsReport(); - assertEquals( Action.ERROR, result ); - assertTrue( action.hasActionErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsNoRepos() - throws Exception - { - repositoryStatisticsManagerControl.replay(); - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.downloadStatisticsReport(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsMultipleRepoNoResults() - throws Exception - - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, SNAPSHOTS, null, null ), - Collections.emptyList() ); - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.emptyList() ); - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - String result = action.downloadStatisticsReport(); - assertEquals( GenerateReportAction.BLANK, result ); - assertFalse( action.hasActionErrors() ); - assertFalse( action.hasActionMessages() ); - assertFalse( action.hasFieldErrors() ); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testDownloadStatisticsMultipleRepoInStrutsFormat() - throws Exception - { - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, SNAPSHOTS, null, null ), - Collections.singletonList( createDefaultStats() ) ); - repositoryStatisticsManagerControl.expectAndReturn( - repositoryStatisticsManager.getStatisticsInRange( metadataRepository, INTERNAL, null, null ), - Collections.singletonList( createDefaultStats() ) ); - repositoryStatisticsManagerControl.replay(); - prepareAction( Arrays.asList( SNAPSHOTS, INTERNAL ), Collections.emptyList() ); - - action.setSelectedRepositories( Collections.singletonList( "[" + SNAPSHOTS + "],[" + INTERNAL + "]" ) ); - String result = action.downloadStatisticsReport(); - assertEquals( GenerateReportAction.SEND_FILE, result ); - assertFalse( action.hasActionErrors() ); - assertFalse( action.hasFieldErrors() ); - - assertMultiRepoCsvResult(); - repositoryStatisticsManagerControl.verify(); - } - - @Test - public void testHealthReportSingleRepo() - throws Exception - { - RepositoryProblemFacet problem1 = createProblem( GROUP_ID, "artifactId", INTERNAL ); - RepositoryProblemFacet problem2 = createProblem( GROUP_ID, "artifactId-2", INTERNAL ); - - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacets( INTERNAL, RepositoryProblemFacet.FACET_ID ), - Arrays.asList( problem1.getName(), problem2.getName() ) ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( INTERNAL, RepositoryProblemFacet.FACET_ID, problem1.getName() ), - problem1 ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( INTERNAL, RepositoryProblemFacet.FACET_ID, problem2.getName() ), - problem2 ); - metadataRepositoryControl.replay(); - - action.setRepositoryId( INTERNAL ); - - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.execute(); - assertSuccessResult( result ); - - assertEquals( Collections.singleton( INTERNAL ), action.getRepositoriesMap().keySet() ); - assertEquals( Arrays.asList( problem1, problem2 ), action.getRepositoriesMap().get( INTERNAL ) ); - - metadataRepositoryControl.verify(); - } - - @Test - public void testHealthReportInvalidRowCount() - throws Exception - { - metadataRepositoryControl.replay(); - - action.setRowCount( 0 ); - action.setRepositoryId( INTERNAL ); - - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.execute(); - assertEquals( Action.INPUT, result ); - assertFalse( action.hasActionErrors() ); - assertTrue( action.hasFieldErrors() ); - - metadataRepositoryControl.verify(); - } - - @Test - public void testHealthReportAllRepos() - throws Exception - { - RepositoryProblemFacet problem1 = createProblem( GROUP_ID, "artifactId", INTERNAL ); - RepositoryProblemFacet problem2 = createProblem( GROUP_ID, "artifactId-2", SNAPSHOTS ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacets( INTERNAL, RepositoryProblemFacet.FACET_ID ), - Arrays.asList( problem1.getName() ) ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacets( SNAPSHOTS, RepositoryProblemFacet.FACET_ID ), - Arrays.asList( problem2.getName() ) ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( INTERNAL, RepositoryProblemFacet.FACET_ID, problem1.getName() ), - problem1 ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( SNAPSHOTS, RepositoryProblemFacet.FACET_ID, problem2.getName() ), - problem2 ); - metadataRepositoryControl.replay(); - - action.setRepositoryId( GenerateReportAction.ALL_REPOSITORIES ); - - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.execute(); - assertSuccessResult( result ); - - assertEquals( Arrays.asList( INTERNAL, SNAPSHOTS ), - new ArrayList( action.getRepositoriesMap().keySet() ) ); - assertEquals( Arrays.asList( problem1 ), action.getRepositoriesMap().get( INTERNAL ) ); - assertEquals( Arrays.asList( problem2 ), action.getRepositoriesMap().get( SNAPSHOTS ) ); - - metadataRepositoryControl.verify(); - } - - @Test - public void testHealthReportSingleRepoByCorrectGroupId() - throws Exception - { - RepositoryProblemFacet problem1 = createProblem( GROUP_ID, "artifactId", INTERNAL ); - RepositoryProblemFacet problem2 = createProblem( GROUP_ID, "artifactId-2", INTERNAL ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacets( INTERNAL, RepositoryProblemFacet.FACET_ID ), - Arrays.asList( problem1.getName(), problem2.getName() ) ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( INTERNAL, RepositoryProblemFacet.FACET_ID, problem1.getName() ), - problem1 ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( INTERNAL, RepositoryProblemFacet.FACET_ID, problem2.getName() ), - problem2 ); - metadataRepositoryControl.replay(); - - action.setGroupId( GROUP_ID ); - action.setRepositoryId( INTERNAL ); - - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.execute(); - assertSuccessResult( result ); - - assertEquals( Collections.singleton( INTERNAL ), action.getRepositoriesMap().keySet() ); - assertEquals( Arrays.asList( problem1, problem2 ), action.getRepositoriesMap().get( INTERNAL ) ); - - metadataRepositoryControl.verify(); - } - - @Test - public void testHealthReportSingleRepoByCorrectGroupIdAllRepositories() - throws Exception - { - RepositoryProblemFacet problem1 = createProblem( GROUP_ID, "artifactId", INTERNAL ); - RepositoryProblemFacet problem2 = createProblem( GROUP_ID, "artifactId-2", SNAPSHOTS ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacets( INTERNAL, RepositoryProblemFacet.FACET_ID ), - Arrays.asList( problem1.getName() ) ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacets( SNAPSHOTS, RepositoryProblemFacet.FACET_ID ), - Arrays.asList( problem2.getName() ) ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( INTERNAL, RepositoryProblemFacet.FACET_ID, problem1.getName() ), - problem1 ); - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacet( SNAPSHOTS, RepositoryProblemFacet.FACET_ID, problem2.getName() ), - problem2 ); - metadataRepositoryControl.replay(); - - action.setGroupId( GROUP_ID ); - action.setRepositoryId( GenerateReportAction.ALL_REPOSITORIES ); - - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.execute(); - assertSuccessResult( result ); - - assertEquals( Arrays.asList( INTERNAL, SNAPSHOTS ), - new ArrayList( action.getRepositoriesMap().keySet() ) ); - assertEquals( Arrays.asList( problem1 ), action.getRepositoriesMap().get( INTERNAL ) ); - assertEquals( Arrays.asList( problem2 ), action.getRepositoriesMap().get( SNAPSHOTS ) ); - - metadataRepositoryControl.verify(); - } - - @Test - public void testHealthReportSingleRepoByIncorrectGroupId() - throws Exception - { - metadataRepositoryControl.expectAndReturn( - metadataRepository.getMetadataFacets( INTERNAL, RepositoryProblemFacet.FACET_ID ), - Collections.emptyList() ); - metadataRepositoryControl.replay(); - - action.setGroupId( "not.it" ); - action.setRepositoryId( INTERNAL ); - - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.execute(); - assertEquals( GenerateReportAction.BLANK, result ); - assertFalse( action.hasActionErrors() ); - assertFalse( action.hasFieldErrors() ); - - metadataRepositoryControl.verify(); - } - - private void assertMultiRepoCsvResult() - throws IOException - { - assertEquals( - "Repository,Total File Count,Total Size,Artifact Count,Group Count,Project Count,Plugins,Archetypes,Jars,Wars\n" - + "snapshots,0,0,0,0,0,0,0,0,0\n" + "internal,0,0,0,0,0,0,0,0,0\n", - IOUtils.toString( action.getInputStream() ) ); - } - - private RepositoryProblemFacet createProblem( String groupId, String artifactId, String repoId ) - { - RepositoryProblemFacet problem = new RepositoryProblemFacet(); - problem.setRepositoryId( repoId ); - problem.setNamespace( groupId ); - problem.setProject( artifactId ); - problem.setProblem( PROBLEM ); - return problem; - } - - @Test - public void testHealthReportNoRepositoryId() - throws Exception - { - prepareAction( Collections.emptyList(), Arrays.asList( SNAPSHOTS, INTERNAL ) ); - - String result = action.execute(); - assertEquals( Action.INPUT, result ); - assertTrue( action.hasFieldErrors() ); - } - - private void assertSuccessResult( String result ) - { - assertEquals( Action.SUCCESS, result ); - assertFalse( action.hasActionErrors() ); - assertFalse( action.hasFieldErrors() ); - } - - private RepositoryStatistics createDefaultStats() - { - return createStats( new Date() ); - } - - private RepositoryStatistics createStats( Date date ) - { - RepositoryStatistics stats = new RepositoryStatistics(); - stats.setScanStartTime( date ); - return stats; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/startup/BannerTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/startup/BannerTest.java deleted file mode 100644 index 6f371aece..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/startup/BannerTest.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.apache.archiva.web.startup; - -/* - * 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. - */ - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.zip.GZIPInputStream; - -import org.apache.commons.io.IOUtils; - -import junit.framework.TestCase; -import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; -import org.junit.Test; -import org.junit.runner.RunWith; -/** - * BannerTest - * - * - */ -@RunWith( ArchivaBlockJUnit4ClassRunner.class ) -public class BannerTest - extends TestCase -{ - private static final String eol = System.getProperty( "line.separator" ); - - private void assertEncodeDecode( String encoded, String decoded ) - { - assertEquals( "Encoding: ", encoded, Banner.encode( decoded ) ); - assertEquals( "Decoding: ", decoded, Banner.decode( encoded ) ); - } - - @Test - public void testEncodeDecode() - { - assertEncodeDecode( "[$10 ]", "[ ]" ); - assertEncodeDecode( "$$$5_$n$5_", "$_____" + eol + "_____" ); - assertEncodeDecode( "$${Refgjuvyr}", "${Erstwhile}" ); - } - - @Test - public void testInjectVersion() - { - assertEquals( "[ 1.0 ]", Banner.injectVersion( "[#####]", "1.0" ) ); - assertEquals( ".\\ 1.0-SNAPSHOT \\._____", - Banner.injectVersion( ".\\################\\._____", "1.0-SNAPSHOT" ) ); - assertEquals( "Archiva:\"+eol+\" ( 1.0-alpha-1 )", - Banner.injectVersion( "Archiva:\"+eol+\" (##############)", "1.0-alpha-1" ) ); - } - - @Test - public void testGetBanner() - throws IOException - { - String version = "1.0-alpha-1-SNAPSHOT"; - String banner = Banner.getBanner( version ); - assertNotNull( "Banner should not be null.", banner ); - assertTrue( "Banner contains version.", banner.indexOf( version ) > 0 ); - - /* Want to make a new banner? - * Steps to do it. - * 1) Edit the src/test/resources/banner.gz file. - * 2) Save it compressed. - * 3) Add (to this test method) ... - * System.out.println( "\"" + Banner.encode( getRawBanner() ) + "\"" ); - * 4) Run the test - * 5) Copy / Paste the encoded form into the Banner.getBanner() method. - */ - } - - public String getRawBanner() - throws IOException - { - File gzBanner = new File( "src/test/resources/banner.gz" ); - assertTrue( "File [" + gzBanner.getPath() + "] not found.", gzBanner.exists() ); - FileInputStream fis = new FileInputStream( gzBanner ); - GZIPInputStream gzis = new GZIPInputStream( fis ); - String str = IOUtils.toString( gzis ); - IOUtils.closeQuietly( gzis ); - return str; - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/tags/DependencyTreeTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/tags/DependencyTreeTest.java deleted file mode 100644 index 4c5e3a563..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/tags/DependencyTreeTest.java +++ /dev/null @@ -1,191 +0,0 @@ -package org.apache.archiva.web.tags; - -/* - * 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. - */ - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.config.ConfigurationManager; -import com.opensymphony.xwork2.config.providers.XWorkConfigurationProvider; -import com.opensymphony.xwork2.inject.Container; -import com.opensymphony.xwork2.util.ValueStack; -import com.opensymphony.xwork2.util.ValueStackFactory; -import junit.framework.TestCase; -import org.apache.archiva.common.ArchivaException; -import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; -import org.apache.archiva.configuration.ArchivaConfiguration; -import org.apache.archiva.configuration.Configuration; -import org.apache.archiva.configuration.ManagedRepositoryConfiguration; -import org.apache.archiva.configuration.RepositoryScanningConfiguration; -import org.apache.archiva.metadata.model.ProjectVersionMetadata; -import org.apache.archiva.metadata.repository.RepositorySession; -import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; -import org.apache.archiva.webtest.memory.TestMetadataResolver; -import org.apache.archiva.webtest.memory.TestRepositorySessionFactory; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.util.artifact.DefaultArtifact; -import org.springframework.context.ApplicationContext; -import org.springframework.test.context.ContextConfiguration; - -import javax.inject.Inject; -import java.util.List; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -@RunWith( ArchivaSpringJUnit4ClassRunner.class ) -@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml", - "classpath:/spring-context-DependencyTreeTest.xml" } ) -public class DependencyTreeTest - extends TestCase -{ - @Inject - private DependencyTree tree; - - @Inject - private PlexusSisuBridge plexusSisuBridge; - - @Inject - private ApplicationContext applicationContext; - - - private static final String TEST_VERSION = "version"; - - private static final String TEST_REPO_ID = "test-repo"; - - private static final String TEST_GROUP_ID = "groupId"; - - private static final String TEST_ARTIFACT_ID = "artifactId"; - - - @Override - @Before - public void setUp() - throws Exception - { - super.setUp(); - - ConfigurationManager configurationManager = new ConfigurationManager(); - configurationManager.addContainerProvider( new XWorkConfigurationProvider() ); - com.opensymphony.xwork2.config.Configuration config = configurationManager.getConfiguration(); - Container container = config.getContainer(); - - ValueStack stack = container.getInstance( ValueStackFactory.class ).createValueStack(); - stack.getContext().put( ActionContext.CONTAINER, container ); - ActionContext.setContext( new ActionContext( stack.getContext() ) ); - - assertNotNull( ActionContext.getContext() ); - - Configuration configuration = new Configuration(); - ManagedRepositoryConfiguration repoConfig = new ManagedRepositoryConfiguration(); - repoConfig.setId( TEST_REPO_ID ); - repoConfig.setLocation( "src/test/repositories/test" ); - configuration.addManagedRepository( repoConfig ); - - ArchivaConfiguration archivaConfiguration = applicationContext.getBean( ArchivaConfiguration.class ); - archivaConfiguration.getConfiguration().setRepositoryScanning( new RepositoryScanningConfiguration() ); - archivaConfiguration.save( configuration ); - - TestMetadataResolver metadataResolver = applicationContext.getBean( TestMetadataResolver.class ); - ProjectVersionMetadata metadata = new ProjectVersionMetadata(); - metadata.setId( TEST_VERSION ); - metadataResolver.setProjectVersion( TEST_REPO_ID, TEST_GROUP_ID, TEST_ARTIFACT_ID, metadata ); - - RepositorySession repositorySession = mock( RepositorySession.class ); - when( repositorySession.getResolver() ).thenReturn( metadataResolver ); - TestRepositorySessionFactory repositorySessionFactory = - applicationContext.getBean( TestRepositorySessionFactory.class ); - repositorySessionFactory.setRepositorySession( repositorySession ); - } - - @Test - public void testTree() - throws ArchivaException - { - List entries = tree.gatherTreeList( TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_VERSION ); - assertEquals( 8, entries.size() ); - - DependencyTree.TreeEntry artifactId = entries.get( 0 ); - assertEquals( "
      • ", artifactId.getPre() ); - // olamy tree with aether always create jar so createPomArtifact failed but it's not used - assertTrue( assertArtifactsEquals( createArtifact( TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_VERSION ), - artifactId.getArtifact() ) ); - assertEquals( "
      • ", artifactId.getPost() ); - - DependencyTree.TreeEntry child1 = entries.get( 1 ); - assertEquals( "
        • ", child1.getPre() ); - assertTrue( assertArtifactsEquals( createArtifact( TEST_GROUP_ID, "child1", "1.0" ), child1.getArtifact() ) ); - assertEquals( "
        • ", child1.getPost() ); - - DependencyTree.TreeEntry grandchild = entries.get( 2 ); - assertEquals( "
          • ", grandchild.getPre() ); - assertTrue( - assertArtifactsEquals( createArtifact( TEST_GROUP_ID, "grandchild1", "2.0" ), grandchild.getArtifact() ) ); - assertEquals( "
          • ", grandchild.getPost() ); - - DependencyTree.TreeEntry greatGrandchild = entries.get( 3 ); - assertEquals( "
            • ", greatGrandchild.getPre() ); - assertTrue( assertArtifactsEquals( createArtifact( TEST_GROUP_ID, "great-grandchild", "3.0" ), - greatGrandchild.getArtifact() ) ); - assertEquals( "
          ", greatGrandchild.getPost() ); - - DependencyTree.TreeEntry child2 = entries.get( 4 ); - assertEquals( "
        • ", child2.getPre() ); - assertTrue( assertArtifactsEquals( createArtifact( TEST_GROUP_ID, "child2", "1.0" ), child2.getArtifact() ) ); - assertEquals( "
        • ", child2.getPost() ); - - DependencyTree.TreeEntry grandchild2 = entries.get( 5 ); - assertEquals( "
          • ", grandchild2.getPre() ); - assertTrue( - assertArtifactsEquals( createArtifact( TEST_GROUP_ID, "grandchild2", "2.0" ), grandchild2.getArtifact() ) ); - assertEquals( "
          • ", grandchild2.getPost() ); - - DependencyTree.TreeEntry grandchild3 = entries.get( 6 ); - assertEquals( "
          • ", grandchild3.getPre() ); - assertTrue( - assertArtifactsEquals( createArtifact( TEST_GROUP_ID, "grandchild3", "2.0" ), grandchild3.getArtifact() ) ); - assertEquals( "
          ", grandchild3.getPost() ); - - DependencyTree.TreeEntry child3 = entries.get( 7 ); - assertEquals( "
        • ", child3.getPre() ); - assertTrue( assertArtifactsEquals( createArtifact( TEST_GROUP_ID, "child3", "1.0" ), child3.getArtifact() ) ); - assertEquals( "
      ", child3.getPost() ); - } - - private Artifact createPomArtifact( String groupId, String artifactId, String version ) - { - return new DefaultArtifact( groupId + ":" + artifactId + ":" + version ); - } - - private Artifact createArtifact( String groupId, String artifactId, String version ) - { - return new DefaultArtifact( groupId, artifactId, "jar", version ); - } - - - public boolean assertArtifactsEquals( Artifact a, Artifact b ) - { - return a.getArtifactId().equals( b.getArtifactId() ) && a.getGroupId().equals( b.getGroupId() ) - && a.getVersion().equals( b.getVersion() ) && a.getExtension().equals( b.getExtension() ) - && a.getClassifier().equals( b.getClassifier() ); - } - -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/validator/utils/ValidatorUtil.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/validator/utils/ValidatorUtil.java deleted file mode 100644 index 470544f0b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/web/validator/utils/ValidatorUtil.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.apache.archiva.web.validator.utils; - -/* - * 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. - */ - -import junit.framework.Assert; -import org.apache.commons.lang.SystemUtils; - -import java.util.List; -import java.util.Map; - -public class ValidatorUtil -{ - public static void assertFieldErrors( Map> expectedFieldErrors, - Map> actualFieldErrors ) - { - if ( expectedFieldErrors != null ) - { - Assert.assertNotNull( actualFieldErrors ); - // checks the number of field errors - Assert.assertEquals( - "expected " + expectedFieldErrors + SystemUtils.LINE_SEPARATOR + ", found " + actualFieldErrors, - expectedFieldErrors.size(), actualFieldErrors.size() ); - - // check every content of the field error - for ( Map.Entry> expectedEntry : expectedFieldErrors.entrySet() ) - { - if ( expectedEntry.getValue() != null ) - { - Assert.assertNotNull( "actual with key " + expectedEntry.getKey() + " is null", - actualFieldErrors.get( expectedEntry.getKey() ) ); - // checks the error message count per error field - Assert.assertEquals( expectedEntry.getValue().size(), - actualFieldErrors.get( expectedEntry.getKey() ).size() ); - - // check the contents of error messages per field error - for ( int i = 0; i < expectedEntry.getValue().size(); i++ ) - { - String expected = expectedEntry.getValue().get( i ); - String actual = actualFieldErrors.get( expectedEntry.getKey() ).get( i ); - Assert.assertEquals( expected, actual ); - } - } - else - { - Assert.assertNull( actualFieldErrors.get( expectedEntry.getKey() ) ); - } - } - } - else - { - Assert.assertNull( actualFieldErrors ); - } - } -} diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/artifactId/version/artifactId-version.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/artifactId/version/artifactId-version.pom deleted file mode 100644 index a00ae8ed5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/artifactId/version/artifactId-version.pom +++ /dev/null @@ -1,43 +0,0 @@ - - - - 4.0.0 - groupId - artifactId - version - - - - groupId - child1 - 1.0 - - - groupId - child2 - 1.0 - - - groupId - child3 - 1.0 - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child1/1.0/child1-1.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child1/1.0/child1-1.0.pom deleted file mode 100644 index 9fd48010e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child1/1.0/child1-1.0.pom +++ /dev/null @@ -1,33 +0,0 @@ - - - - 4.0.0 - groupId - child1 - 1.0 - - - - groupId - grandchild1 - 2.0 - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child2/1.0/child2-1.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child2/1.0/child2-1.0.pom deleted file mode 100644 index d00b00716..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child2/1.0/child2-1.0.pom +++ /dev/null @@ -1,37 +0,0 @@ - - - - 4.0.0 - groupId - child2 - 1.0 - - - groupId - grandchild2 - 2.0 - - - groupId - grandchild3 - 2.0 - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child3/1.0/child3-1.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child3/1.0/child3-1.0.pom deleted file mode 100644 index ef4fc37d6..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/child3/1.0/child3-1.0.pom +++ /dev/null @@ -1,25 +0,0 @@ - - - - 4.0.0 - groupId - child3 - 1.0 - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild1/2.0/grandchild1-2.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild1/2.0/grandchild1-2.0.pom deleted file mode 100644 index 36a00b03f..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild1/2.0/grandchild1-2.0.pom +++ /dev/null @@ -1,32 +0,0 @@ - - - - 4.0.0 - groupId - grandchild1 - 2.0 - - - groupId - great-grandchild - 3.0 - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild2/2.0/grandchild2-2.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild2/2.0/grandchild2-2.0.pom deleted file mode 100644 index 0cfd9b0fc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild2/2.0/grandchild2-2.0.pom +++ /dev/null @@ -1,25 +0,0 @@ - - - - 4.0.0 - groupId - grandchild2 - 2.0 - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild3/2.0/grandchild3-2.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild3/2.0/grandchild3-2.0.pom deleted file mode 100644 index 0cfd9b0fc..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/grandchild3/2.0/grandchild3-2.0.pom +++ /dev/null @@ -1,25 +0,0 @@ - - - - 4.0.0 - groupId - grandchild2 - 2.0 - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/great-grandchild/3.0/great-grandchild-3.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/great-grandchild/3.0/great-grandchild-3.0.pom deleted file mode 100644 index 7eb6c675e..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/groupId/great-grandchild/3.0/great-grandchild-3.0.pom +++ /dev/null @@ -1,26 +0,0 @@ - - - - 4.0.0 - groupId - great-grandchild - 3.0 - pom - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/repository.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/repository.xml deleted file mode 100644 index 0be86ebbd..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/repository.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/META-INF/spring-context.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/META-INF/spring-context.xml deleted file mode 100644 index 5fe8e3d02..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/META-INF/spring-context.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - scheduler1 - org.quartz.simpl.SimpleThreadPool - 2 - 4 - org.quartz.simpl.RAMJobStore - - - - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/artifact.jar b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/artifact.jar deleted file mode 100644 index e6f67ee94..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/artifact.jar +++ /dev/null @@ -1 +0,0 @@ -artifact.jar diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/banner.gz b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/banner.gz deleted file mode 100755 index 9715c46e7b9fbe86380b38289675b731a29ead21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmV+#0p@yq4;oPC-cxeyq2vVwJGGl= zySk!lBp`YA%&w~uq3m4dN9LRV-$8)?D)&~fBQVPs1>VYbG=Aan5F0fCoE!KSCCLk@ z3y_qi=~A$4si3gup&iap^axFAR$5iEYOX*d-9a@LJu%7clWwAU;dz`SDL)1622N$a zww?MFg$6CC?qm3XQ4R73Wc4R_H!OG@f(;B2INb50kcFxR+|^*_XU|htl+}%3#itpZ zDO{iN=BYJ2Q-{nXk8^xo!CwwX>lwj>+as1*x9^CxiJX$XS*p4#(wrU_Jes|tttCr0 gmJGe<`s04f#yy+1&7Hyj%V7{a0Z?QuKC%J;07Q_5u>b%7 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/empty-archiva.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/empty-archiva.xml deleted file mode 100644 index 997d62b00..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/empty-archiva.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - 2 - - - - - artifacts - - **/*.pom - **/*.jar - **/*.ear - **/*.war - **/*.car - **/*.sar - **/*.mar - **/*.rar - **/*.dtd - **/*.tld - **/*.tar.gz - **/*.tar.bz2 - **/*.zip - - - - indexable-content - - **/*.txt - **/*.TXT - **/*.block - **/*.config - **/*.pom - **/*.xml - **/*.xsd - **/*.dtd - **/*.tld - - - - auto-remove - - **/*.bak - **/*~ - **/*- - - - - ignored - - **/.htaccess - **/KEYS - **/*.rb - **/*.sh - **/.svn/** - **/.DAV/** - - - - - update-db-artifact - create-missing-checksums - update-db-repository-metadata - validate-checksum - validate-signature - index-content - auto-remove - auto-rename - - - update-db-bad-content - - - - - 0 0 * * * ? - - index-artifact - update-db-project - validate-repository-metadata - index-archive-toc - update-db-bytecode-stats - index-public-methods - - - not-present-remove-db-artifact - not-present-remove-db-project - not-present-remove-indexed - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/log4j2-test.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/log4j2-test.xml deleted file mode 100644 index 8d23a38d5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/log4j2-test.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context-DependencyTreeTest.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context-DependencyTreeTest.xml deleted file mode 100644 index 3a4c26fed..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context-DependencyTreeTest.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context.xml deleted file mode 100644 index e23485c79..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/spring-context.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/struts-security.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/struts-security.xml deleted file mode 100644 index 4a5c9ec8c..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/struts-security.xml +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - * - - - - - - - - - - - - - - - addadmin - /security - - /WEB-INF/jsp/redback/requiresAuthentication.jsp - /WEB-INF/jsp/redback/accessDenied.jsp - - password - /security - - - userlist - /security - - /WEB-INF/jsp/redback/invalidToken.jsp - - - - - - - security-logout - - - - - /WEB-INF/jsp/redback/register.jsp - /WEB-INF/jsp/redback/register.jsp - /WEB-INF/jsp/redback/validationNotification.jsp - - security-register-success - - - security-register-cancel - - - - - - - /WEB-INF/jsp/redback/password.jsp - /WEB-INF/jsp/redback/password.jsp - - security-login-success - - - security-register-success - - ${targetUrl} - - logout - /security - - /WEB-INF/jsp/redback/changePasswordSuccess.jsp - - - - /WEB-INF/jsp/redback/requestPasswordReset.jsp - /WEB-INF/jsp/redback/login.jsp - - - - - - - - /WEB-INF/jsp/redback/admin/systemInformation.jsp - - - - /WEB-INF/jsp/redback/admin/console.jsp - - - - userlist - - - - /WEB-INF/jsp/redback/admin/userList.jsp - /WEB-INF/jsp/redback/admin/userList.jsp - - - - /WEB-INF/jsp/redback/admin/userEdit.jsp - /WEB-INF/jsp/redback/admin/userEdit.jsp - /WEB-INF/jsp/redback/admin/confirmUserAdministrator.jsp - /WEB-INF/jsp/redback/admin/confirmUserAdministrator.jsp - userlist - userlist - - - - /WEB-INF/jsp/redback/admin/userCreate.jsp - /WEB-INF/jsp/redback/admin/userCreate.jsp - - assignments - ${user.username} - - - * - - - - - /WEB-INF/jsp/redback/admin/userDelete.jsp - userlist - userlist - userlist - - * - - - - - - - - - /WEB-INF/jsp/redback/admin/assignments.jsp - /WEB-INF/jsp/redback/include/error.jsp - /WEB-INF/jsp/redback/admin/assignments.jsp - - - - userlist - - * - - - - - userlist - - - - /WEB-INF/jsp/redback/admin/roleCreate.jsp - /WEB-INF/jsp/redback/admin/roleCreate.jsp - userlist - - * - - - - - /WEB-INF/jsp/redback/admin/role.jsp - /WEB-INF/jsp/redback/admin/role.jsp - roles - - - - /WEB-INF/jsp/redback/admin/roleEdit.jsp - /WEB-INF/jsp/redback/admin/roleEdit.jsp - roles - - - - /WEB-INF/jsp/redback/admin/roleEdit.jsp - /WEB-INF/jsp/redback/admin/roleEdit.jsp - roles - - * - - - - - /WEB-INF/jsp/redback/admin/roleEdit.jsp - /WEB-INF/jsp/redback/admin/roleEdit.jsp - /WEB-INF/jsp/redback/admin/roleEdit.jsp - - * - - - - - /WEB-INF/jsp/redback/admin/roleEdit.jsp - /WEB-INF/jsp/redback/admin/roleEdit.jsp - /WEB-INF/jsp/redback/admin/roleEdit.jsp - - * - - - - - /WEB-INF/jsp/redback/admin/roleSummary.jsp - - - - /WEB-INF/jsp/redback/admin/roleList.jsp - - - - /WEB-INF/jsp/redback/admin/permissionList.jsp - - - - /WEB-INF/jsp/redback/admin/operationList.jsp - - - - /WEB-INF/jsp/redback/admin/resourceList.jsp - - - - /WEB-INF/jsp/redback/admin/roleModel.jsp - - - - - - /WEB-INF/jsp/redback/admin/backupRestore.jsp - - - - /WEB-INF/jsp/redback/admin/backupRestore.jsp - backupRestore - - - - /WEB-INF/jsp/redback/admin/backupRestore.jsp - backupRestore - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar deleted file mode 100644 index 0464407c2feb2d4cc9a6b6c19a137e9676908b74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16289 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 R)VIIlxBT$t8#(~M{{tw3K^Xu5 diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.md5 b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.md5 deleted file mode 100644 index 29ab7cbb5..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -5b0e72a002c047e2f200855f6d904a7e \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.sha1 b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.sha1 deleted file mode 100644 index 898bb7519..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -9b3ed9b1a8f1639bcc6a6986930d71a2996ba2fe \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom deleted file mode 100644 index 143bd719d..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom +++ /dev/null @@ -1,8 +0,0 @@ - - - 4.0.0 - org.apache.archiva - npe-metadata - 1.0 - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.md5 b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.md5 deleted file mode 100644 index c835b0b76..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.md5 +++ /dev/null @@ -1 +0,0 @@ -30124c5194a639f12a2fb01e7aa5a952 \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.sha1 b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.sha1 deleted file mode 100644 index 274871d24..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/1.0/npe-metadata-1.0.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -83bee18c83a6f4964026587cc4ccffe653c45d0c \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml deleted file mode 100644 index c999862ff..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - org.apache.archiva - npe-metadata - 1.0 - - - 1.0 - - 20101105071933 - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.md5 b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.md5 deleted file mode 100644 index c73f5bc10..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.md5 +++ /dev/null @@ -1 +0,0 @@ -6b4a71798c8fcb45ee0411cc9cf68064 \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.sha1 b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.sha1 deleted file mode 100644 index 76091f5fa..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/test-repo/org/apache/archiva/npe-metadata/maven-metadata.xml.sha1 +++ /dev/null @@ -1 +0,0 @@ -33c6dbdfdb263c394082d56e349d36e893ead06f \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/resources/upload-artifact-test/artifact-to-be-reuploaded.jar b/archiva-modules/archiva-web/archiva-webapp/src/test/resources/upload-artifact-test/artifact-to-be-reuploaded.jar deleted file mode 100644 index 6e8a96d57ed9dd50ca3a96bd6ae0c044c302b89d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmWIWW@h1H00GaAlUDa8xZMNsK$wF;l%XWGxJ0j{q9inglYv=ERnN;5h(jw_7+x^H zU - org.apache.archiva - artifact-to-be-uploaded - 1.0 - jar - \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/auto-admin-creation.properties b/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/auto-admin-creation.properties deleted file mode 100644 index 7c8c5815b..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/auto-admin-creation.properties +++ /dev/null @@ -1,22 +0,0 @@ -# -# 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. -# - -redback.admin.fullname=Archiva Admin -redback.admin.email=admin@toto.com -redback.admin.password=admin123 \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j2-test.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j2-test.xml deleted file mode 100644 index 8c01d10be..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j2-test.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/tomcat-context-archiva.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/tomcat-context-archiva.xml deleted file mode 100644 index fda8f8221..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/tomcat-context-archiva.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/web.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/web.xml deleted file mode 100644 index 8a0c2c939..000000000 --- a/archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Apache Archiva - - - org.springframework.web.context.ContextLoaderListener - - - - contextClass - org.apache.archiva.redback.components.springutils.CachingWebApplicationContext - - - - contextConfigLocation - - classpath*:/spring-context.xml - classpath*:/META-INF/spring-context.xml - - - - -- 2.39.5