Browse Source

remove all tab characters and fix some formatting


git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1215120 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-1.4-M3
Brett Porter 12 years ago
parent
commit
615cfd730e
39 changed files with 1075 additions and 1055 deletions
  1. 1
    1
      archiva-cli/pom.xml
  2. 182
    132
      archiva-docs/src/site/apt/adminguide/repositories.apt
  3. 1
    1
      archiva-docs/src/site/site.xml
  4. 6
    6
      archiva-jetty/src/main/conf/jetty.xml
  5. 7
    7
      archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
  6. 3
    3
      archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java
  7. 4
    4
      archiva-modules/archiva-base/archiva-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml
  8. 8
    8
      archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/AbstractLegacyRepositoryContentTestCase.java
  9. 1
    1
      archiva-modules/archiva-web/archiva-webapp-common/src/main/java/org/apache/archiva/web/startup/Banner.java
  10. 106
    107
      archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/WEB-INF/web.xml
  11. 36
    36
      archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/LegacySupportTest.java
  12. 36
    36
      archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/NetworkProxiesTest.java
  13. 11
    11
      archiva-modules/archiva-web/archiva-webapp-test/src/test/tomcat5x/conf/catalina.policy
  14. 35
    35
      archiva-modules/archiva-web/archiva-webapp-test/src/test/tomcat6x/conf/context.xml
  15. 2
    2
      archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java
  16. 1
    1
      archiva-modules/archiva-web/archiva-webapp/src/main/resources/archiva-mime-types.txt
  17. 15
    15
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp
  18. 10
    10
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp
  19. 18
    19
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp
  20. 5
    5
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
  21. 0
    1
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf
  22. 1
    4
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf
  23. 2
    2
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp
  24. 100
    123
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp
  25. 15
    16
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp
  26. 4
    4
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp
  27. 38
    38
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp
  28. 161
    161
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp
  29. 4
    4
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp
  30. 99
    99
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml
  31. 1
    1
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css
  32. 14
    14
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css
  33. 139
    139
      archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css
  34. 2
    2
      archiva-modules/archiva-web/archiva-webdav/src/main/resources/org/apache/archiva/webdav/util/mime.types
  35. 2
    2
      archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/repository-servlet-security-test/web.xml
  36. 2
    2
      archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/web.xml
  37. 1
    1
      archiva-modules/archiva-web/archiva-webdav/src/test/resources/archiva-mime-types.txt
  38. 1
    1
      archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/pom.xml
  39. 1
    1
      archiva-modules/archiva-web/archiva-xmlrpc/pom.xml

+ 1
- 1
archiva-cli/pom.xml View File

@@ -110,7 +110,7 @@
</transformers>
<artifactSet>
<excludes>
<exclude>xerces:xercesImpl</exclude>
<exclude>xerces:xercesImpl</exclude>
<exclude>xml-apis:xml-apis</exclude>
<exclude>xalan:xalan</exclude>
<exclude>commons-beanutils:commons-beanutils</exclude>

+ 182
- 132
archiva-docs/src/site/apt/adminguide/repositories.apt View File

@@ -31,133 +31,170 @@ Understanding Repository Configuration of Apache Archiva

~~TODO: revise more as suggested by Jeff in the dev list

Archiva has two types of repository configuration: managed repository and remote repository.
Archiva has two types of repository configuration: managed repository and
remote repository.

* Managed Repository

A managed repository is a repository which resides locally to the server where Archiva is running. It could serve as a
proxy repository, an internal deployment repository or a local mirror repository.
Managed repository fields:
A managed repository is a repository which resides locally to the server where
Archiva is running. It could serve as a proxy repository, an internal deployment
repository or a local mirror repository.

Managed repository fields:

* <identifier> - the id of the repository. This must be unique.
* <name> - the name of the repository.
* <directory> - the location of the repository. If the path specified does not exist, Archiva will create the missing
directories.

* <index directory> - the location of the index files generated by Archiva. If no location is specified, then the index directory
(named <<<.indexer>>>) will be created at the root of the repository directory. Another directory named <<<.index>>> is also created
at the root of the repository directory. This is not configurable though as it contains the packaged/bundled index which is consumed
by different consumers of the index such as M2Eclipse.

* <directory> - the location of the repository. If the path specified does not
exist, Archiva will create the missing directories.

* <index directory> - the location of the index files generated by Archiva. If
no location is specified, then the index directory (named <<<.indexer>>>)
will be created at the root of the repository directory. Another directory
named <<<.index>>> is also created at the root of the repository directory.
This is not configurable though as it contains the packaged/bundled index
which is consumed by different consumers of the index such as M2Eclipse.

* <type> - the repository layout (maven 2 or maven 1)
* <cron> - the {{{http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html}cron schedule}} when repository scanning will be executed.
* <repository purge by days older> - the first option for repository purge. Archiva will check how old the artifact is
and if it is older than the set number of days in this field, then the artifact will be deleted respecting the retention
count (see #7) of course. In order to disable the purge by number of days old and set Archiva to purge by retention count, just set the
repository purge field to 0. The maximum number of days which can be set here is 1000. See the Repository Purge section
below for more details.
* <repository purge by retention count> - the second option for repository purge. When running the repository purge, Archiva
will retain only the number of artifacts set for this field for a specific snapshot version. See the Repository Purge section
below for more details.
* <releases included> - specifies whether there are released artifacts in the repository.
* <block re-deployment of released artifacts> - specifies whether released artifacts that are already existing in the repository can be overwritten.
Note that this only take effects for non-snapshot deployments.
* <snapshots included> - specifies whether there are snapshot artifacts in the repository.
* <scannable> - specifies whether the repository can be scanned, meaning it is a local repository which can be indexed, browsed,
purged, etc.
* <delete released snapshots> - specifies whether to remove those snapshot artifacts which already has release versions
of it in the repository during repository purge.

* <cron> - the
{{{http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html}cron
schedule}} when repository scanning will be executed.

* <repository purge by days older> - the first option for repository purge.
Archiva will check how old the artifact is and if it is older than the set
number of days in this field, then the artifact will be deleted respecting
the retention count (see #7) of course. In order to disable the purge by
number of days old and set Archiva to purge by retention count, just set the
repository purge field to 0. The maximum number of days which can be set
here is 1000. See the Repository Purge section below for more details.

* <repository purge by retention count> - the second option for repository
purge. When running the repository purge, Archiva will retain only the
number of artifacts set for this field for a specific snapshot version. See
the Repository Purge section below for more details.

* <releases included> - specifies whether there are released artifacts in the
repository.

* <block re-deployment of released artifacts> - specifies whether released
artifacts that are already existing in the repository can be overwritten.
Note that this only take effects for non-snapshot deployments.

* <snapshots included> - specifies whether there are snapshot artifacts in the
repository.

* <scannable> - specifies whether the repository can be scanned, meaning it is
a local repository which can be indexed, browsed, purged, etc.

* <delete released snapshots> - specifies whether to remove those snapshot
artifacts which already has release versions of it in the repository during
repository purge.

[]
Each repository has its own Webdav url. This allows the user to browse and access the repository via webdav. The url has the
following format:
+----+
Each repository has its own Webdav url. This allows the user to browse and
access the repository via webdav. The url has the following format:
+----+
http://[URL TO ARCHIVA]/repository/[REPOSITORY ID] (e.g. http://localhost:8080/archiva/repository/releases).
+----+

A pom snippet is also available for each repository. The \<distributionManagement\> section can be copied and pasted into a
project's pom to specify that the project will be deployed in that managed repository. The \<repositories\> section on the
other hand, can be copied and pasted to a project's pom.xml or to Maven's settings.xml to tell Maven to get artifacts
from the managed repository when building the project.
A pom snippet is also available for each repository. The
\<distributionManagement\> section can be copied and pasted into a project's
pom to specify that the project will be deployed in that managed repository.
The \<repositories\> section on the other hand, can be copied and pasted to a
project's pom.xml or to Maven's settings.xml to tell Maven to get artifacts
from the managed repository when building the project.

* Remote Repository

A remote repository is a repository which resides remotely. These repositories are usually the proxied repositories. See
Proxy Connectors on how to proxy a repository.
A remote repository is a repository which resides remotely. These repositories
are usually the proxied repositories. See Proxy Connectors on how to proxy a
repository.

Remote repository fields:

Remote repository fields:
* <identifier> - the id of the remote repository.

* <name> - the name of the remote repository.
* <url> - the url of the remote repository. It is also possible to use a 'file://' url to proxy a local repository. Be careful that if this local repository is a managed repository of archiva which has some proxies connectors, those ones won't be triggered.
* <username> - the username (if authentication is needed) to be used to access the repository.
* <password> - the password (if authentication is needed) to be used to access the repository.
* <type> - the layout (maven 2 or maven 1) of the remote repository.

* <Activate download remote index> - to activate downloading remote index to add available remote artifacts in search queries.
* <url> - the url of the remote repository. It is also possible to use a
'file://' url to proxy a local repository. Be careful that if this local
repository is a managed repository of archiva which has some proxies
connectors, those ones won't be triggered.

* <Remote index url, can be relative to url> - path of the remote index directory.
* <username> - the username (if authentication is needed) to be used to access
the repository.

* <Cron expression> - cron expression for downloading remote index (default weekly on sunday)
* <password> - the password (if authentication is needed) to be used to access
the repository.

* <Directory index storage> - path to store index directory, default will be ${appserver.base}/data/remotes/${repositoryId}/.index
* <type> - the layout (maven 2 or maven 1) of the remote repository.

* <Download Remote Index Timeout in seconds> - read time out for downloading remote index files (default 300)
* <Activate download remote index> - to activate downloading remote index to
add available remote artifacts in search queries.

* <Network Proxy to Use for download Remote Index> - proxy to use for downloading remote index files.
* <Remote index url, can be relative to url> - path of the remote index
directory.

* <Cron expression> - cron expression for downloading remote index (default
weekly on sunday)

* <Directory index storage> - path to store index directory, default will be
${appserver.base}/data/remotes/${repositoryId}/.index

* <Download Remote Index Timeout in seconds> - read time out for downloading
remote index files (default 300)

* <Network Proxy to Use for download Remote Index> - proxy to use for
downloading remote index files.

[../images/remote-repositories.png] Remote Repositories

You can also trigger an immediate download of remote index files.
* Scanning a Repository
Repository scan can be executed on schedule or it can be explicitly executed by clicking the 'Scan Repository Now' button in
the repositories page. By default, Archiva only processes new artifacts in the repository with respect to the last run of the
repository scanner. Meaning that if the artifact's last modified date is newer than the last repository scan, then the artifact
will be processed. Otherwise, it will be skipped. You can override this behavior and force Archiva to process all artifacts regardless
of its age by ticking the 'Process All Artifacts' checkbox in the repositories page and clicking the 'Scan Repository Now' button.

Repository scan can be executed on schedule or it can be explicitly executed
by clicking the 'Scan Repository Now' button in the repositories page. By
default, Archiva only processes new artifacts in the repository with respect
to the last run of the repository scanner. Meaning that if the artifact's last
modified date is newer than the last repository scan, then the artifact will
be processed. Otherwise, it will be skipped. You can override this behavior
and force Archiva to process all artifacts regardless of its age by ticking
the 'Process All Artifacts' checkbox in the repositories page and clicking the
'Scan Repository Now' button.

[../images/repositories.png] Repositories

For every artifact found by the repository scanner, processing is done on this artifact by different
consumers. Examples of the processing done are: indexing, repository purge and database update. Details about consumers are
available in the {{{./consumers.html} Consumers}} page.
For every artifact found by the repository scanner, processing is done on this
artifact by different consumers. Examples of the processing done are: indexing,
repository purge and database update. Details about consumers are available in
the {{{./consumers.html} Consumers}} page.

* Repository Purge

Repository purge is the process of cleaning up the repository of old snapshots. When deploying a snapshot to a repository,
Maven deploys the project/artifact with a timestamped version. Doing daily/nightly builds of the project then tends to bloat
the repository. What if the artifact is large? Then disk space will definitely be a problem. That's where Archiva's repository
purge feature comes in. Given a criteria to use -- by the number of days old and by retention count, it would clean up the
repository by removing old snapshots.
Repository purge is the process of cleaning up the repository of old
snapshots. When deploying a snapshot to a repository, Maven deploys the
project/artifact with a timestamped version. Doing daily/nightly builds of the
project then tends to bloat the repository. What if the artifact is large?
Then disk space will definitely be a problem. That's where Archiva's
repository purge feature comes in. Given a criteria to use -- by the number of
days old and by retention count, it would clean up the repository by removing
old snapshots.

Please take note that the by number of days old criteria is activated by default (set to 100 days). In order to de-activate it and
use the by retention count criteria, you must set the Repository Purge By Days Older field to 0. Another thing to note here is that
if the by number of days old criteria is activated, the retention count would still be respected (See the Repository Purge By Days Older
section below for more details) but not the other way around.
Let's take a look at different behaviours for repository purge using the following scenario:
Please take note that the by number of days old criteria is activated by
default (set to 100 days). In order to de-activate it and use the by retention
count criteria, you must set the Repository Purge By Days Older field to 0.
Another thing to note here is that if the by number of days old criteria is
activated, the retention count would still be respected (See the Repository
Purge By Days Older section below for more details) but not the other way
around.

Let's take a look at different behaviours for repository purge using the
following scenario:

+----+
Artifacts in the repository:
@@ -169,48 +206,61 @@ Artifacts in the repository:
../artifact-x/2.0-SNAPSHOT/artifact-x-20070203.028902-4.jar
../artifact-x/2.0-SNAPSHOT/artifact-x-20070203.028902-4.pom
+----+
[[1]] Repository Purge By Number of Days Older
Using this criteria for the purge, Archiva will check how old an artifact is and if it is older than the set value in the
repository purge by days older field, then the artifact will be deleted respecting the retention count of course.
If repository purge by days older is set to 100 days (with repository purge by retention count field set to 1),
and the current date is let's say 03-01-2007, given the scenario above.. the following artifacts will be retained:
artifact-x-20070113.034619-3.jar, artifact-x-20070113.034619-3.pom, artifact-x-20070203.028902-4.jar and
artifact-x-20070203.028902-4.pom. It is clear in the version timestamps that these 4 artifacts are not more than
100 days old from the current date (which is 03-01-2007 in our example) so they are all retained. In this case
the retention count doesn't have any effect since the priority is the age of the artifact.
Now, if the repository purge by days older is set to 30 days (with repository purge by retention count field still
set to 1) and the current date is still 03-01-2007, then given the same scenario above.. only the following artifacts
will be retained: artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom. In this case, we can see
that the retained artifacts are still not older by the number of days set in the repository purge by days older field
and the retention count is still met.
Now, let's set the repository purge by days older to 10 days (with repository purge by retention count field still
set to 1) and the current date is still 03-01-2007, then still given the same repository contents above.. the
following artifacts will still be retained: artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom.
It is clear from the version timestamps that the artifacts ARE MORE THAN the repository purge by days older value,
which is 10 days. Why is it still retained? Recall the value of the repository purge by retention count -- 1 :)
This ensures that there is ALWAYS 1 artifact timestamped version retained for every unique version snapshot directory
of an artifact.

Using this criteria for the purge, Archiva will check how old an artifact is
and if it is older than the set value in the repository purge by days older
field, then the artifact will be deleted respecting the retention count of
course.

If repository purge by days older is set to 100 days (with repository purge by
retention count field set to 1), and the current date is let's say 03-01-2007,
given the scenario above.. the following artifacts will be retained:
artifact-x-20070113.034619-3.jar, artifact-x-20070113.034619-3.pom,
artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom. It is
clear in the version timestamps that these 4 artifacts are not more than 100
days old from the current date (which is 03-01-2007 in our example) so they are
all retained. In this case the retention count doesn't have any effect since the
priority is the age of the artifact.

Now, if the repository purge by days older is set to 30 days (with repository
purge by retention count field still set to 1) and the current date is still
03-01-2007, then given the same scenario above.. only the following artifacts
will be retained: artifact-x-20070203.028902-4.jar and
artifact-x-20070203.028902-4.pom. In this case, we can see that the retained
artifacts are still not older by the number of days set in the repository purge
by days older field and the retention count is still met.

Now, let's set the repository purge by days older to 10 days (with repository
purge by retention count field still set to 1) and the current date is still
03-01-2007, then still given the same repository contents above.. the following
artifacts will still be retained: artifact-x-20070203.028902-4.jar and
artifact-x-20070203.028902-4.pom. It is clear from the version timestamps that
the artifacts ARE MORE THAN the repository purge by days older value, which is
10 days. Why is it still retained? Recall the value of the repository purge by
retention count -- 1 :) This ensures that there is ALWAYS 1 artifact timestamped
version retained for every unique version snapshot directory of an artifact.

[[2]] Repository Purge By Retention Count
If the repository purge by retention count field is set to 2, then only the artifacts artifact-x-20070113.034619-3.jar,
artifact-x-20070113.034619-3.pom, artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom will be retained
in the repository. The oldest snapshots will be deleted maintaining only a number of snapshots equivalent to the set
retention count (regardless of how old or new the artifact is).

If the repository purge by retention count field is set to 2, then only the
artifacts artifact-x-20070113.034619-3.jar, artifact-x-20070113.034619-3.pom,
artifact-x-20070203.028902-4.jar and artifact-x-20070203.028902-4.pom will be
retained in the repository. The oldest snapshots will be deleted maintaining
only a number of snapshots equivalent to the set retention count (regardless of
how old or new the artifact is).

** Deleting Released Snapshots

You can also configure Archiva to clean up snapshot artifacts that have already been released. This can be done by ticking
the Delete Released Snapshots checkbox in the Repository Configuration form.
You can also configure Archiva to clean up snapshot artifacts that have
already been released. This can be done by ticking the Delete Released Snapshots
checkbox in the Repository Configuration form.

Once this feature is enabled, if Archiva encounters a snapshot artifact during
repository scanning, it would check <<all>> the repositories configured for a
released version of that snapshot. If it finds one, then it would delete the
entire snapshot version directory.

Once this feature is enabled, if Archiva encounters a snapshot artifact during repository scanning, it would check <<all>> the
repositories configured for a released version of that snapshot. If it finds one, then it would delete the entire
snapshot version directory.
It should be noted that this feature is entirely separate from the repository purge by number of days older and by
retention count.
It should be noted that this feature is entirely separate from the repository
purge by number of days older and by retention count.

+ 1
- 1
archiva-docs/src/site/site.xml View File

@@ -50,7 +50,7 @@
<item name="Browsing" href="/userguide/browsing.html" />
<item name="Searching" href="/userguide/searching.html" />
<item name="Identifying an Artifact" href="/userguide/find-artifact.html" />
<item name="Deleting an Artifact" href="/userguide/delete-artifact.html" />
<item name="Deleting an Artifact" href="/userguide/delete-artifact.html" />
<item name="Using as a repository" href="/userguide/using-repository.html" />
<item name="Deploying to repository" href="/userguide/deploy.html" />
<item name="Configuring Virtual Repositories" href="/userguide/virtual-repositories.html" />

+ 6
- 6
archiva-jetty/src/main/conf/jetty.xml View File

@@ -67,8 +67,8 @@
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
@@ -162,9 +162,9 @@
<New class="org.eclipse.jetty.deploy.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/apps</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
</New>
</Arg>
</Call>
@@ -271,7 +271,7 @@
</Array>

<!-- ARCHIVA CONFIG -->
<New id="validation_mail" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>mail/Session</Arg>
<Arg>

+ 7
- 7
archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo View File

@@ -230,10 +230,10 @@
}

private java.util.Map<String, java.util.List<String>> groupToRepositoryMap;
public java.util.Map<String, java.util.List<String>> getGroupToRepositoryMap()
{
if ( repositoryGroups != null && managedRepositories != null )
if ( repositoryGroups != null && managedRepositories != null )
{
java.util.Map<String, java.util.List<String>> map = new java.util.HashMap<String, java.util.List<String>>();
@@ -701,23 +701,23 @@
public String getGroupId()
{
return artifact.split( ":" )[0];
}
}

public String getArtifactId()
{
return artifact.split( ":" )[1];
}
}
public String getVersion()
{
return artifact.split( ":" )[2];
}
}
public String getClassifier()
{
String classifier = artifact.split( ":" )[3];
String classifier = artifact.split( ":" )[3];
return classifier.length() > 0 ? classifier : null;
}
}
public String getType()
{

+ 3
- 3
archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java View File

@@ -101,16 +101,16 @@ public class WagonDelegate
{
return delegate.supportsDirectoryCopy();
}
public void setTimeout(int val)
{
// ignore
// ignore
}
public int getTimeout()
{
return 0;
}
}

public Repository getRepository()
{

+ 4
- 4
archiva-modules/archiva-base/archiva-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml View File

@@ -18,7 +18,7 @@
-->

<metadata>
<groupId>org.apache.maven.test</groupId>
<artifactId>get-default-metadata</artifactId>
<version>1.0</version>
</metadata>
<groupId>org.apache.maven.test</groupId>
<artifactId>get-default-metadata</artifactId>
<version>1.0</version>
</metadata>

+ 8
- 8
archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/content/AbstractLegacyRepositoryContentTestCase.java View File

@@ -345,13 +345,13 @@ public abstract class AbstractLegacyRepositoryContentTestCase
assertLayout( path, groupId, artifactId, version, null, type );
}

/**
* [MRM-768] Artifact type "maven-plugin" does not distinguish maven1 and maven2 plugins.
* This produces conflicts when m2 plugins are stored in legacy-layout repository
*/
/**
* [MRM-768] Artifact type "maven-plugin" does not distinguish maven1 and maven2 plugins.
* This produces conflicts when m2 plugins are stored in legacy-layout repository
*/
@Test
public void testMaven1Maven2PluginTypeDistinc()
throws Exception
public void testMaven1Maven2PluginTypeDistinc()
throws Exception
{
String groupId = "com.sun.tools.xjc.maven2";
String artifactId = "maven-jaxb-plugin";
@@ -360,8 +360,8 @@ public abstract class AbstractLegacyRepositoryContentTestCase
String path = "com.sun.tools.xjc.maven2/maven-plugins/maven-jaxb-plugin-1.1.jar";

assertLayout( path, groupId, artifactId, version, null, type );
}
}
/**
* Perform a roundtrip through the layout routines to determine success.
* @param classifier TODO

+ 1
- 1
archiva-modules/archiva-web/archiva-webapp-common/src/main/java/org/apache/archiva/web/startup/Banner.java View File

@@ -224,6 +224,6 @@ public class Banner
public static void display( String version )
{
String banner = getBanner( version );
LoggerFactory.getLogger( Banner.class ).info( StringUtils.repeat( "_", 25 ) + eol + banner );
LoggerFactory.getLogger( Banner.class ).info( StringUtils.repeat( "_", 25 ) + eol + banner );
}
}

+ 106
- 107
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/WEB-INF/web.xml View File

@@ -44,118 +44,117 @@
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<!-- TODO: some Spring technique for this? -->
<listener-class>
org.apache.archiva.web.startup.ArchivaStartup
</listener-class>
</listener>

<listener>
<listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
</listener>

<!-- to cleanup temporary group index created during a session -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<!-- TODO: some Spring technique for this? -->
<listener-class>
org.apache.archiva.web.startup.ArchivaStartup
</listener-class>
</listener>

<listener>
<listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
</listener>

<!-- to cleanup temporary group index created during a session -->
<listener>
<listener-class>org.apache.archiva.webdav.util.TemporaryGroupIndexSessionCleaner</listener-class>
</listener>
<listener-class>org.apache.archiva.webdav.util.TemporaryGroupIndexSessionCleaner</listener-class>
</listener>

<servlet>
<servlet-name>RepositoryServlet</servlet-name>
<servlet-class>
org.apache.archiva.webdav.RepositoryServlet
</servlet-class>
<!-- Loading this on startup so as to take advantage of configuration listeners -->
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>XmlRpcServlet</servlet-name>
<servlet-class>
com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
</servlet-class>
<init-param>
<param-name>serviceListBeanName</param-name>
<param-value>xmlrpcServicesList</param-value>
</init-param>
<init-param>
<param-name>authHandlerBeanName</param-name>
<param-value>xmlRpcAuthenticator</param-value>
</init-param>
<init-param>
<param-name>enabledForExtensions</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet>
<servlet-name>RepositoryServlet</servlet-name>
<servlet-class>
org.apache.archiva.webdav.RepositoryServlet
</servlet-class>
<!-- Loading this on startup so as to take advantage of configuration listeners -->
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>XmlRpcServlet</servlet-name>
<servlet-class>
com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
</servlet-class>
<init-param>
<param-name>serviceListBeanName</param-name>
<param-value>xmlrpcServicesList</param-value>
</init-param>
<init-param>
<param-name>authHandlerBeanName</param-name>
<param-value>xmlRpcAuthenticator</param-value>
</init-param>
<init-param>
<param-name>enabledForExtensions</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet>
<servlet-name>RedbackXmlRpcServlet</servlet-name>
<servlet-class>com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet</servlet-class>
<init-param>
<param-name>serviceListBeanName</param-name>
<param-value>redbackXmlrpcServicesList</param-value>
</init-param>
<init-param>
<param-name>authHandlerBeanName</param-name>
<param-value>redbackXmlRpcAuthenticator</param-value>
</init-param>
<init-param>
<param-name>enabledForExtensions</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

<servlet>
<servlet-name>RssFeedServlet</servlet-name>
<servlet-class>
org.apache.archiva.web.rss.RssFeedServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>RssFeedServlet</servlet-name>
<url-pattern>/feeds/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>RepositoryServlet</servlet-name>
<url-pattern>/repository/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>RedbackXmlRpcServlet</servlet-name>
<url-pattern>/redback-xmlrpc</url-pattern>
</servlet-mapping>

<resource-ref>
<res-ref-name>jdbc/users</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<servlet-name>RedbackXmlRpcServlet</servlet-name>
<servlet-class>com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet</servlet-class>
<init-param>
<param-name>serviceListBeanName</param-name>
<param-value>redbackXmlrpcServicesList</param-value>
</init-param>
<init-param>
<param-name>authHandlerBeanName</param-name>
<param-value>redbackXmlRpcAuthenticator</param-value>
</init-param>
<init-param>
<param-name>enabledForExtensions</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

<servlet>
<servlet-name>RssFeedServlet</servlet-name>
<servlet-class>
org.apache.archiva.web.rss.RssFeedServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>RssFeedServlet</servlet-name>
<url-pattern>/feeds/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>RepositoryServlet</servlet-name>
<url-pattern>/repository/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>RedbackXmlRpcServlet</servlet-name>
<url-pattern>/redback-xmlrpc</url-pattern>
</servlet-mapping>

<resource-ref>
<res-ref-name>jdbc/users</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

<servlet>
<servlet-name>CXFServlet</servlet-name>

+ 36
- 36
archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/LegacySupportTest.java View File

@@ -78,65 +78,65 @@ public class LegacySupportTest
assertTextPresent( "You must enter a type." );
}

public void testAddLegacyArtifact_InvalidValues()
{
public void testAddLegacyArtifact_InvalidValues()
{
goToLegacySupportPage();
clickLinkWithText( "Add" );
addLegacyArtifactPath( "<> ~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"",
addLegacyArtifactPath( "<> ~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"" , "<> \\/~+[ ]'\"",
false );
assertTextPresent( "Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." );
assertTextPresent( "Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." );
assertTextPresent( "Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
assertTextPresent( "Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
assertTextPresent( "Version must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
assertTextPresent( "Classifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
assertTextPresent( "Type must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
}

public void testAddLegacyArtifact_InvalidLegacyPath()
{
public void testAddLegacyArtifact_InvalidLegacyPath()
{
goToLegacySupportPage();
clickLinkWithText( "Add" );
addLegacyArtifactPath( "<> ~+[ ]'\"" , "test" , "test" , "1.0-SNAPSHOT" , "testing" , "jar", false );
assertTextPresent( "Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." );
}
addLegacyArtifactPath( "<> ~+[ ]'\"" , "test" , "test" , "1.0-SNAPSHOT" , "testing" , "jar", false );
assertTextPresent( "Legacy path must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." );
}

public void testAddLegacyArtifact_InvalidGroupId()
{
public void testAddLegacyArtifact_InvalidGroupId()
{
goToLegacySupportPage();
clickLinkWithText( "Add" );
addLegacyArtifactPath( "test" , "<> \\/~+[ ]'\"" , "test" , "1.0-SNAPSHOT" , "testing" , "jar", false );
assertTextPresent( "Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
addLegacyArtifactPath( "test" , "<> \\/~+[ ]'\"" , "test" , "1.0-SNAPSHOT" , "testing" , "jar", false );
assertTextPresent( "Group id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}

public void testAddLegacyArtifact_InvalidArtifactId()
{
public void testAddLegacyArtifact_InvalidArtifactId()
{
goToLegacySupportPage();
clickLinkWithText( "Add" );
addLegacyArtifactPath( "test" , "test" , "<> \\/~+[ ]'\"" , "1.0-SNAPSHOT" , "testing" , "jar", false );
assertTextPresent( "Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
addLegacyArtifactPath( "test" , "test" , "<> \\/~+[ ]'\"" , "1.0-SNAPSHOT" , "testing" , "jar", false );
assertTextPresent( "Artifact id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}

public void testAddLegacyArtifact_InvalidVersion()
{
public void testAddLegacyArtifact_InvalidVersion()
{
goToLegacySupportPage();
clickLinkWithText( "Add" );
addLegacyArtifactPath( "test" , "test" , "test" , "<> \\/~+[ ]'\"" , "testing" , "jar", false );
assertTextPresent( "Version must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
addLegacyArtifactPath( "test" , "test" , "test" , "<> \\/~+[ ]'\"" , "testing" , "jar", false );
assertTextPresent( "Version must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}

public void testAddLegacyArtifact_InvalidType()
{
public void testAddLegacyArtifact_InvalidType()
{
goToLegacySupportPage();
clickLinkWithText( "Add" );
addLegacyArtifactPath( "test" , "test" , "test" , "1.0-SNAPSHOT" , "testing" , "<> \\/~+[ ]'\"", false );
assertTextPresent( "Type must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
addLegacyArtifactPath( "test" , "test" , "test" , "1.0-SNAPSHOT" , "testing" , "<> \\/~+[ ]'\"", false );
assertTextPresent( "Type must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}

public void testAddLegacyArtifact_InvalidClassifier()
{
public void testAddLegacyArtifact_InvalidClassifier()
{
goToLegacySupportPage();
clickLinkWithText( "Add" );
addLegacyArtifactPath( "test" , "test" , "test" , "1.0-SNAPSHOT" , "<> \\/~+[ ]'\"" , "jar", false );
assertTextPresent( "Classifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
}
addLegacyArtifactPath( "test" , "test" , "test" , "1.0-SNAPSHOT" , "<> \\/~+[ ]'\"" , "jar", false );
assertTextPresent( "Classifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
}

+ 36
- 36
archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/NetworkProxiesTest.java View File

@@ -61,55 +61,55 @@ public class NetworkProxiesTest
}

@Test (dependsOnMethods = { "testAddNetworkProxiesNullHostname" } )
public void testAddNetworkProxiesInvalidValues()
{
goToNetworkProxiesPage();
addNetworkProxy( "<> \\/~+[ ]'\"", "<> ~+[ ]'\"", "<> ~+[ ]'\"", "0", "<> ~+[ ]'\"", "");
assertTextPresent( "Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
public void testAddNetworkProxiesInvalidValues()
{
goToNetworkProxiesPage();
addNetworkProxy( "<> \\/~+[ ]'\"", "<> ~+[ ]'\"", "<> ~+[ ]'\"", "0", "<> ~+[ ]'\"", "");
assertTextPresent( "Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
assertTextPresent( "Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), dots(.), colons(:), and dashes(-)." );
assertTextPresent( "Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." );
assertTextPresent( "Port needs to be larger than 1" );
assertTextPresent( "Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." );
}
}

@Test (dependsOnMethods = { "testAddNetworkProxiesInvalidValues" } )
public void testAddNetworkProxiesInvalidIdentifier()
{
goToNetworkProxiesPage();
addNetworkProxy( "<> \\/~+[ ]'\"", "http", "localhost", "8080", "", "");
assertTextPresent( "Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}
public void testAddNetworkProxiesInvalidIdentifier()
{
goToNetworkProxiesPage();
addNetworkProxy( "<> \\/~+[ ]'\"", "http", "localhost", "8080", "", "");
assertTextPresent( "Proxy id must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-)." );
}

@Test (dependsOnMethods = { "testAddNetworkProxiesInvalidIdentifier" } )
public void testAddNetworkProxiesInvalidProtocol()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "<> ~+[ ]'\"", "localhost", "8080", "", "");
assertTextPresent( "Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), dots(.), colons(:), and dashes(-)." );
}
public void testAddNetworkProxiesInvalidProtocol()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "<> ~+[ ]'\"", "localhost", "8080", "", "");
assertTextPresent( "Protocol must only contain alphanumeric characters, forward-slashes(/), back-slashes(\\), dots(.), colons(:), and dashes(-)." );
}

@Test (dependsOnMethods = { "testAddNetworkProxiesInvalidProtocol" } )
public void testAddNetworkProxiesInvalidHostname()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "http", "<> ~+[ ]'\"", "8080", "", "");
assertTextPresent( "Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." );
}
public void testAddNetworkProxiesInvalidHostname()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "http", "<> ~+[ ]'\"", "8080", "", "");
assertTextPresent( "Host must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." );
}

@Test (dependsOnMethods = { "testAddNetworkProxiesInvalidHostname" } )
public void testAddNetworkProxiesInvalidPort()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "http", "localhost", "0", "", "");
assertTextPresent( "Port needs to be larger than 1" );
}
public void testAddNetworkProxiesInvalidPort()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "http", "localhost", "0", "", "");
assertTextPresent( "Port needs to be larger than 1" );
}

@Test (dependsOnMethods = { "testAddNetworkProxiesInvalidPort" } )
public void testAddNetworkProxiesInvalidUsername()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "http", "localhost", "8080", "<> ~+[ ]'\"", "");
assertTextPresent( "Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." );
public void testAddNetworkProxiesInvalidUsername()
{
goToNetworkProxiesPage();
addNetworkProxy( "testing123", "http", "localhost", "8080", "<> ~+[ ]'\"", "");
assertTextPresent( "Username must only contain alphanumeric characters, at's(@), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), and dashes(-)." );
}

@Test (dependsOnMethods = { "testAddNetworkProxiesInvalidUsername" } )
@@ -145,4 +145,4 @@ public class NetworkProxiesTest
assertTextPresent( "testing123" );
}

}
}

+ 11
- 11
archiva-modules/archiva-web/archiva-webapp-test/src/test/tomcat5x/conf/catalina.policy View File

@@ -114,22 +114,22 @@ grant {
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
// Required for OpenJMX
permission java.lang.RuntimePermission "getAttribute";
// Allow read of JAXP compliant XML parser debug
permission java.util.PropertyPermission "jaxp.debug", "read";
// Allow read of JAXP compliant XML parser debug
permission java.util.PropertyPermission "jaxp.debug", "read";
// Precompiled JSPs need access to this package.
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";

+ 35
- 35
archiva-modules/archiva-web/archiva-webapp-test/src/test/tomcat6x/conf/context.xml View File

@@ -1,35 +1,35 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
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.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>
<?xml version='1.0' encoding='utf-8'?>
<!--
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.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>

+ 2
- 2
archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/mapper/RepositoryActionMapper.java View File

@@ -76,8 +76,8 @@ public class RepositoryActionMapper
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 JEE 5 spec is correctly implemented, the "/*" pattern implies an empty string in servletpath
path = httpServletRequest.getPathInfo();
}

if (StringUtils.isEmpty( path ))

+ 1
- 1
archiva-modules/archiva-web/archiva-webapp/src/main/resources/archiva-mime-types.txt View File

@@ -19,7 +19,7 @@ application/octet-stream bin dms lha lzh exe class so dll dmg
application/oda oda
application/ogg ogg
application/pdf pdf
application/pgp-encrypted pgp
application/pgp-encrypted pgp
application/postscript ai eps ps
application/rdf+xml rdf
application/smil smi smil

+ 15
- 15
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp View File

@@ -70,14 +70,14 @@
<%--td>${repository.layout}</td--%>
<td>
<c:choose>
<c:when test="${repository.layout == 'default'}">
Maven 2.x Repository
</c:when>
<c:otherwise>
Maven 1.x Repository
</c:otherwise>
</c:choose>
</td>
<c:when test="${repository.layout == 'default'}">
Maven 2.x Repository
</c:when>
<c:otherwise>
Maven 1.x Repository
</c:otherwise>
</c:choose>
</td>
</tr>
<tr>
<td>Cron:</td>
@@ -109,7 +109,7 @@
</tr>
</table>
</div>
<s:form method="post" action="%{action}" namespace="/admin" validate="true" theme="simple">
<div class="buttons">
<s:hidden name="repository.id" value="%{#attr.repository.id}"/>
@@ -127,12 +127,12 @@
<c:choose>
<c:when test="${action == 'addRepository'}">
<s:submit value="Save" method="confirmAdd"/>
</c:when>
<c:otherwise>
<s:submit value="Save" method="confirmUpdate"/>
</c:otherwise>
</c:choose>
<s:submit value="Save" method="confirmAdd"/>
</c:when>
<c:otherwise>
<s:submit value="Save" method="confirmUpdate"/>
</c:otherwise>
</c:choose>
<s:submit value="Cancel" method="execute"/>
</div>

+ 10
- 10
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp View File

@@ -24,7 +24,7 @@
<c:choose>
<c:when test="${mode == 'edit'}">
<c:set var="addedit" value="Edit" />
<c:set var="networkProxyName" value="${proxy.id}" />
<c:set var="networkProxyName" value="${proxy.id}" />
</c:when>
<c:otherwise>
<c:set var="addedit" value="Add" />
@@ -65,14 +65,14 @@
<s:hidden name="mode"/>
<s:token/>
<c:choose>
<c:when test="${mode == 'edit'}">
<s:hidden name="proxy.id"/>
</c:when>
<c:otherwise>
<s:textfield name="proxy.id" label="Identifier" size="10" required="true"/>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${mode == 'edit'}">
<s:hidden name="proxy.id"/>
</c:when>
<c:otherwise>
<s:textfield name="proxy.id" label="Identifier" size="10" required="true"/>
</c:otherwise>
</c:choose>
<%@ include file="/WEB-INF/jsp/admin/include/networkProxyForm.jspf" %>
<s:submit value="Save Network Proxy"/>
@@ -85,4 +85,4 @@
</div>

</body>
</html>
</html>

+ 18
- 19
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp View File

@@ -62,19 +62,18 @@

<div style="float:right">
<c:choose>
<c:when test="${remoteRepoExists}">
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
<s:url id="addProxyConnectorUrl" action="addProxyConnector"/>
<s:a href="%{addProxyConnectorUrl}" cssClass="create">
<img src="<c:url value="/images/icons/create.png" />"/>
Add
</s:a>
</redback:ifAnyAuthorized>
</c:when>
<c:otherwise>
<img src="<c:url value="/images/icons/create.png" />"/>
Add (Disabled. No remote repositories)
</c:otherwise>
<c:when test="${remoteRepoExists}">
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
<s:url id="addProxyConnectorUrl" action="addProxyConnector"/>
<s:a href="%{addProxyConnectorUrl}" cssClass="create">
<img src="<c:url value="/images/icons/create.png" />"/> Add
</s:a>
</redback:ifAnyAuthorized>
</c:when>
<c:otherwise>
<img src="<c:url value="/images/icons/create.png" />"/>
Add (Disabled. No remote repositories)
</c:otherwise>
</c:choose>
</div>

@@ -143,14 +142,14 @@
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
</s:url>
<c:if test="${connector.disabled}">
<s:a href="%{enableProxyConnectorUrl}" title="Enable Proxy Connector">
<img src="${iconDisable}"/>
</s:a>
<s:a href="%{enableProxyConnectorUrl}" title="Enable Proxy Connector">
<img src="${iconDisable}"/>
</s:a>
</c:if>
<c:if test="${connector.disabled == false}">
<s:a href="%{disableProxyConnectorUrl}" title="Disable Proxy Connector">
<img src="${iconEnable}"/>
</s:a>
<s:a href="%{disableProxyConnectorUrl}" title="Disable Proxy Connector">
<img src="${iconEnable}"/>
</s:a>
</c:if>
<c:if test="${pc.count > 1}">
<s:a href="%{sortUpProxyConnectorUrl}" title="Move Proxy Connector Up">

+ 5
- 5
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp View File

@@ -120,7 +120,7 @@
</redback:ifAnyAuthorized>
<c:url var="rssFeedIconUrl" value="/images/icons/rss-feed.png"/>
<a href='/archiva/feeds/<c:out value="${repository.id}" />'>
<img src="${rssFeedIconUrl}" />
<img src="${rssFeedIconUrl}" />
</a>
</div>

@@ -149,10 +149,10 @@
<td><c:out value="${repository.location}" /></td>
</tr>
<c:if test="${!empty (repository.indexDirectory)}">
<tr>
<th>Index Directory</th>
<td><c:out value="${repository.indexDirectory}" /></td>
</tr>
<tr>
<th>Index Directory</th>
<td><c:out value="${repository.indexDirectory}" /></td>
</tr>
</c:if>
<tr>
<th>WebDAV URL</th>

+ 0
- 1
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/deleteArtifactForm.jspf View File

@@ -27,4 +27,3 @@
<s:textfield name="classifier" label="Classifier" size="60" required="false"/>
<s:textfield name="type" label="Type (mandatory when using classifier)" size="60" required="false" />
<s:select name="repositoryId" list="managedRepos" label="Repository Id"/>

+ 1
- 4
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/uploadForm.jspf View File

@@ -28,10 +28,7 @@
<s:textfield name="version" label="Version" size="50" required="true"/>
<s:textfield name="packaging" label="Packaging" size="50" required="true"/>
<s:textfield name="classifier" label="Classifier" size="50" required="false"/>
<s:checkbox name="generatePom" value="generatePom"
label="Generate Maven 2 POM"/>
<s:checkbox name="generatePom" value="generatePom" label="Generate Maven 2 POM"/>
<s:file name="artifact" label="Artifact File" required="true"/>
<s:file name="pom" label="POM File"/>
<s:select name="repositoryId" list="managedRepoIdList" label="Repository Id"/>


+ 2
- 2
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/quickSearch.jsp View File

@@ -39,7 +39,7 @@
var table = document.getElementById( "dynamicTable" );
var row = document.createElement( "TR" );
var label = document.createElement("TD");
label.innerHTML = fieldText + ": ";
label.innerHTML = fieldText + ": ";
var textfield = document.createElement( "TD" );
var inp1 = document.createElement( "INPUT" );
@@ -152,4 +152,4 @@

</div>
</body>
</html>
</html>

+ 100
- 123
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp View File

@@ -26,150 +26,127 @@

<title>Audit Log Report</title>
<s:head theme="xhtml" />
<link rel="stylesheet" href="<c:url value='/css/no-theme/jquery.ui-1.8.14.theme.css'/>" type="text/css" />
<script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/jquery-ui-1.8.14.custom.min.js'/>"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function()
{
$('#startDate').datepicker()
$('#endDate').datepicker()
$('#startDate').datepicker()
$('#endDate').datepicker()
});
</script>
</head>

<body>
<h1>Audit Log Report</h1>
<div id="contentArea">
<s:form action="viewAuditLogReport" namespace="/report" validate="false">
<s:hidden name="initial"/>
<div id="auditLogReport">
<table id="auditLogFieds">
<tbody>
<tr>
<td>Repository: </td>
<td><s:select name="repository" list="repositories" theme="simple"/></td>
<tr>
<tr>
<td>Group ID: </td>
<td><s:textfield id="groupId" name="groupId" theme="simple"/></td>
<tr>
<tr>
<td>Artifact ID: </td>
<td><s:textfield id="artifactId" name="artifactId" theme="simple"/></td>
<tr>
<tr>
<td>Start Date: </td>
<td><s:textfield id="startDate" name="startDate" theme="simple"/>
<%--
<script type="text/javascript">
Calendar.setup({
inputField : "startDate",
ifFormat : "%Y-%m-%d",
align : "Tl",
singleClick : true
});
</script>
--%>
</td>
<tr>
<tr>
<td>End Date: </td>
<td><s:textfield id="endDate" name="endDate" theme="simple"/>
<%--
<script type="text/javascript">
Calendar.setup({
inputField : "endDate",
ifFormat : "%Y-%m-%d",
align : "Tl",
singleClick : true
});
</script>
--%>
</td>
<tr>
<tr>
<td>Row Count: </td>
<td><s:textfield name="rowCount" theme="simple"/></td>
<tr>
<tr>
<td/>
<td style="text-align: right"><s:submit value="View Audit Log" theme="simple"/></td>
</tr>
</tbody>
</table>
</div>

<div id="auditLogReport">
<table id="auditLogFieds">
<tbody>
<tr>
<td>Repository: </td>
<td><s:select name="repository" list="repositories" theme="simple"/></td>
</tr>
<tr>
<td>Group ID: </td>
<td><s:textfield id="groupId" name="groupId" theme="simple"/></td>
</tr>
<tr>
<td>Artifact ID: </td>
<td><s:textfield id="artifactId" name="artifactId" theme="simple"/></td>
</tr>
<tr>
<td>Start Date: </td>
<td><s:textfield id="startDate" name="startDate" theme="simple"/></td>
</tr>
<tr>
<td>End Date: </td>
<td><s:textfield id="endDate" name="endDate" theme="simple"/></td>
</tr>
<tr>
<td>Row Count: </td>
<td><s:textfield name="rowCount" theme="simple"/></td>
</tr>
<tr>
<td/>
<td style="text-align: right"><s:submit value="View Audit Log" theme="simple"/></td>
</tr>
</tbody>
</table>
</div>

<p/>

<div class="auditLogReportResults">
<h2>${headerName}</h2>

<h2>${headerName}</h2>
<p>
<s:actionerror/>
</p>
<c:if test="${not empty (auditLogs)}">
<table class="auditlogs" cellspacing="0">
<tr>
<th>Event</th>
<th>Repository</th>
<th>Resource</th>
<th>Event Date</th>
<th>Username</th>
</tr>
<c:forEach items="${auditLogs}" var="auditLog" varStatus="i">
<tr>
<td>${auditLog.action}</td>
<td>${auditLog.repositoryId}</td>
<td>${auditLog.resource}</td>
<td>${auditLog.timestamp}</td>
<td>${auditLog.userId}</td>
</tr>
</c:forEach>
</table>
<c:set var="prevPageUrl">
<s:url action="viewAuditLogReport" namespace="/report">
<s:param name="repository" value="%{#attr.repository}" />
<s:param name="groupId" value="%{#attr.groupId}" />
<s:param name="artifactId" value="%{#attr.artifactId}" />
<s:param name="rowCount" value="%{#attr.rowCount}" />
<s:param name="page" value="%{#attr.page - 1}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}" />
</s:url>
</c:set>
<c:set var="nextPageUrl">
<s:url action="viewAuditLogReport" namespace="/report">
<s:param name="repository" value="%{#attr.repository }" />
<s:param name="groupId" value="%{#attr.groupId}" />
<s:param name="artifactId" value="%{#attr.artifactId }" />
<s:param name="rowCount" value="%{#attr.rowCount}" />
<s:param name="page" value="%{#attr.page + 1}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}" />
</s:url>
</c:set>
<s:set name="page" value="page"/>
<c:if test="${page gt 1}"><a href="${prevPageUrl}">&lt;&lt;</a></c:if>
<strong>Page: </strong>${page}
<s:set name="isLastPage" value="isLastPage"/>
<c:if test="${!isLastPage}"><a href="${nextPageUrl}">&gt;&gt;</a></c:if>
</c:if>
</div>

<c:if test="${not empty (auditLogs)}">
<table class="auditlogs" cellspacing="0">
<tr>
<th>Event</th>
<th>Repository</th>
<th>Resource</th>
<th>Event Date</th>
<th>Username</th>
</tr>

<c:forEach items="${auditLogs}" var="auditLog" varStatus="i">
<tr>
<td>${auditLog.action}</td>
<td>${auditLog.repositoryId}</td>
<td>${auditLog.resource}</td>
<td>${auditLog.timestamp}</td>
<td>${auditLog.userId}</td>
</tr>
</c:forEach>
</table>
<c:set var="prevPageUrl">
<s:url action="viewAuditLogReport" namespace="/report">
<s:param name="repository" value="%{#attr.repository}" />
<s:param name="groupId" value="%{#attr.groupId}" />
<s:param name="artifactId" value="%{#attr.artifactId}" />
<s:param name="rowCount" value="%{#attr.rowCount}" />
<s:param name="page" value="%{#attr.page - 1}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}" />
</s:url>
</c:set>
<c:set var="nextPageUrl">
<s:url action="viewAuditLogReport" namespace="/report">
<s:param name="repository" value="%{#attr.repository }" />
<s:param name="groupId" value="%{#attr.groupId}" />
<s:param name="artifactId" value="%{#attr.artifactId }" />
<s:param name="rowCount" value="%{#attr.rowCount}" />
<s:param name="page" value="%{#attr.page + 1}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}" />
</s:url>
</c:set>
<s:set name="page" value="page"/>
<c:if test="${page gt 1}"><a href="${prevPageUrl}">&lt;&lt;</a></c:if>
<strong>Page: </strong>${page}
<s:set name="isLastPage" value="isLastPage"/>
<c:if test="${!isLastPage}"><a href="${nextPageUrl}">&gt;&gt;</a></c:if>
</c:if>
</div>
</s:form>

</div>

</body>

+ 15
- 16
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/basicReport.jsp View File

@@ -34,23 +34,22 @@
<div id="contentArea">

<c:forEach var="repository" items="${repositoriesMap}">
<strong>Repository: ${repository.key}</strong>
<c:forEach var="report" items='${repository.value}'>
<p>
<archiva:groupIdLink var="${report.namespace}" includeTop="true"/>
<c:set var="url">
<s:url action="browseArtifact" namespace="/">
<s:param name="groupId" value="%{#attr.report.namespace}"/>
<s:param name="artifactId" value="%{#attr.report.project}"/>
</s:url>
</c:set>
<a href="${url}">${report.project}</a> /
<strong>${report.version}</strong>
</p>
<strong>Repository: ${repository.key}</strong>
<c:forEach var="report" items='${repository.value}'>
<p>
<archiva:groupIdLink var="${report.namespace}" includeTop="true"/>
<c:set var="url">
<s:url action="browseArtifact" namespace="/">
<s:param name="groupId" value="%{#attr.report.namespace}"/>
<s:param name="artifactId" value="%{#attr.report.project}"/>
</s:url>
</c:set>
<a href="${url}">${report.project}</a> /
<strong>${report.version}</strong>
</p>
<blockquote><c:out value="${report.message}" /></blockquote>
</c:forEach>
<blockquote><c:out value="${report.message}" /></blockquote>
</c:forEach>
</c:forEach>

<c:set var="prevPageUrl">

+ 4
- 4
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/pickReport.jsp View File

@@ -33,8 +33,8 @@
<script type="text/javascript" charset="utf-8">
$(document).ready(function()
{
$('#startDate').datepicker();
$('#endDate').datepicker();
$('#startDate').datepicker();
$('#endDate').datepicker();
});
</script>
</head>
@@ -54,8 +54,8 @@
addToRightOnclick="selectAllOptions(document.getElementById('generateStatisticsReport_availableRepositories'));selectAllOptions(document.getElementById('generateStatisticsReport_selectedRepositories'));"
addAllToLeftOnclick="selectAllOptions(document.getElementById('generateStatisticsReport_availableRepositories'));selectAllOptions(document.getElementById('generateStatisticsReport_selectedRepositories'));"
addToLeftOnclick="selectAllOptions(document.getElementById('generateStatisticsReport_availableRepositories'));selectAllOptions(document.getElementById('generateStatisticsReport_selectedRepositories'));"
/>
/>
<s:textfield label="Row Count" name="rowCount" />

<s:textfield label="Start Date" id="startDate" name="startDate"/>

+ 38
- 38
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp View File

@@ -36,35 +36,35 @@
<c:url var="imgPrevPageDisabledUrl" value="/images/icon_prev_page_disabled.gif"/>
<c:url var="imgNextPageDisabledUrl" value="/images/icon_next_page_disabled.gif"/>

<div id="contentArea">
<div id="contentArea">

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

<%-- Pagination - start --%>
<%-- Pagination - start --%>
<p>
<%-- Set Prev & Next icons --%>
<c:set var="prevPageUrl">
<s:url action="generateStatisticsReport" namespace="/report">
<s:url action="generateStatisticsReport" namespace="/report">
<s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/>
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}"/>
<s:param name="page" value="%{#attr.page - 1}"/>
</s:url>
</c:set>
<c:set var="nextPageUrl">
<s:url action="generateStatisticsReport" namespace="/report">
<s:url action="generateStatisticsReport" namespace="/report">
<s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/>
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}"/>
<s:param name="page" value="%{#attr.page + 1}"/>
</s:url>
</c:set>
<c:choose>
<c:when test="${page == 1}">
<c:when test="${page == 1}">
<img src="${imgPrevPageDisabledUrl}"/>
</c:when>
<c:otherwise>
@@ -73,15 +73,15 @@
</a>
</c:otherwise>
</c:choose>
<%-- Google-style pagination --%>
<c:choose>
<c:when test="${numPages > 11}">
<c:choose>
<c:when test="${(page - 5) < 0}">
<c:set var="beginVal">0</c:set>
<c:set var="endVal">10</c:set>
</c:when>
<c:set var="endVal">10</c:set>
</c:when>
<c:when test="${(page + 5) > (numPages - 1)}">
<c:set var="beginVal">${(numPages - 1) - 10}</c:set>
<c:set var="endVal">${numPages - 1}</c:set>
@@ -90,34 +90,34 @@
<c:set var="beginVal">${page - 5}</c:set>
<c:set var="endVal">${page + 5}</c:set>
</c:otherwise>
</c:choose>
</c:choose>
</c:when>
<c:otherwise>
<c:set var="beginVal">0</c:set>
<c:set var="endVal">${numPages - 1}</c:set>
</c:otherwise>
</c:choose>
<c:forEach var="i" begin="${beginVal}" end="${endVal}">
<c:choose>
<c:forEach var="i" begin="${beginVal}" end="${endVal}">
<c:choose>
<c:when test="${i != (page - 1)}">
<c:set var="specificPageUrl">
<s:url action="generateStatisticsReport" namespace="/report">
<s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/>
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}"/>
<s:param name="page" value="%{#attr.page + 1}"/>
</s:url>
</c:set>
<a href="${specificPageUrl}">${i + 1}</a>
</c:when>
<c:otherwise>
<b>${i + 1}</b>
</c:otherwise>
</c:choose>
<c:otherwise>
<b>${i + 1}</b>
</c:otherwise>
</c:choose>
</c:forEach>
<c:choose>
<c:when test="${page == numPages}">
<img src="${imgNextPageDisabledUrl}"/>
@@ -126,23 +126,23 @@
<a href="${nextPageUrl}">
<img src="${imgNextPageUrl}"/>
</a>
</c:otherwise>
</c:choose>
</p>
</c:otherwise>
</c:choose>
</p>
<%-- Pagination - end --%>
<%-- Export to CSV link --%>
<s:url id="downloadStatsReportUrl" action="downloadStatsReport" namespace="/report">
<s:param name="selectedRepositories" value="%{#attr.selectedRepositories}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="startDate" value="%{#attr.startDate}"/>
<s:param name="endDate" value="%{#attr.endDate}"/>
</s:url>
<s:a href="%{downloadStatsReportUrl}">Export to CSV</s:a>
<c:choose>
<c:when test="${repositoryId == null}">
<h1>Latest Statistics Comparison Report</h1>
<h1>Latest Statistics Comparison Report</h1>
<table class="infoTable" border="1">
<tr>
<th>Repository</th>
@@ -159,8 +159,8 @@
<th>Exes</th>
<th>Dlls</th>
<th>Zips</th>
</tr>
</tr>
<c:forEach var="stats" items="${repositoryStatistics}" varStatus="i">
<tr>
<td>${selectedRepositories[i.count-1]}</td>
@@ -179,10 +179,10 @@
<td align="right">${stats.totalCountForType['zip']}</td>
</tr>
</c:forEach>
</table>
</table>
</c:when>
<c:otherwise>
<h1>Statistics for Repository '${repositoryId}'</h1>
<table class="infoTable" border="1">
<tr>
@@ -201,7 +201,7 @@
<th>Dlls</th>
<th>Zips</th>
</tr>
<c:forEach var="stats" items="${repositoryStatistics}">
<tr>
<td align="right">${stats.scanStartTime}</td>
@@ -221,10 +221,10 @@
</tr>
</c:forEach>
</table>
</c:otherwise>
</c:choose>
</div>
</body>
</html>

+ 161
- 161
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/results.jsp View File

@@ -27,9 +27,9 @@
<head>
<title>Search Results</title>
<s:head/>
<script type="text/javascript">
<script type="text/javascript">
function addSearchField(fieldText, field, divName)
{
{
var element = document.getElementById( field );
if( element != null )
{
@@ -40,8 +40,8 @@
var table = document.getElementById( "dynamicTable" );
var row = document.createElement( "TR" );
var label = document.createElement("TD");
label.innerHTML = fieldText + ": ";
label.innerHTML = fieldText + ": ";
var textfield = document.createElement( "TD" );
var inp1 = document.createElement( "INPUT" );
inp1.setAttribute( "type", "text" );
@@ -50,11 +50,11 @@
inp1.setAttribute( "name", field );
textfield.appendChild( inp1 );

row.appendChild( label );
row.appendChild( label );
row.appendChild( textfield );
table.appendChild( row );
}
</script>
</script>
</head>

<body>
@@ -66,7 +66,7 @@
</c:if>
<c:if test="${fromFilterSearch == false}">
<h1>Search</h1>
</c:if>
</c:if>

<c:url var="imgNextPageUrl" value="/images/icon_next_page.gif"/>
<c:url var="imgPrevPageUrl" value="/images/icon_prev_page.gif"/>
@@ -86,23 +86,23 @@
<tr>
<td>
<s:form id="filteredSearch" method="get" action="filteredSearch" validate="true">
<s:hidden name="fromFilterSearch" value="%{#attr.fromFilterSearch}" theme="simple"/>
<label><strong>Advanced Search Fields: </strong></label><s:select name="searchField" list="searchFields" theme="simple"/>
<s:hidden name="fromFilterSearch" value="%{#attr.fromFilterSearch}" theme="simple"/>
<label><strong>Advanced Search Fields: </strong></label><s:select name="searchField" list="searchFields" theme="simple"/>
<s:a href="#" title="Add Search Field" onclick="addSearchField( document.filteredSearch.searchField.options[document.filteredSearch.searchField.selectedIndex].text, document.filteredSearch.searchField.value, 'dynamicFields' )" theme="simple">
<img src="${iconCreateUrl}" />
</s:a>
<table id="dynamicTable">
<tr>
<td><label>Repository: </td>
<td><s:select name="repositoryId" list="managedRepositoryList" theme="simple"/></td>
</tr>
<td><s:select name="repositoryId" list="managedRepositoryList" theme="simple"/></td>
</tr>
<tr>
<td/>
<td/>
<td/>
</tr>
</table>
<s:submit value="Search" theme="simple"/>
</s:form>
</table>
<s:submit value="Search" theme="simple"/>
</s:form>
</td>
</tr>
</table>
@@ -110,10 +110,10 @@
<c:if test="${fromFilterSearch == false}">
<s:form method="get" action="quickSearch" validate="true">
<s:textfield label="Search for" size="50" name="q"/>
<s:checkbox label="Search within results" name="searchResultsOnly"/>
<s:hidden name="completeQueryString" value="%{#attr.completeQueryString}"/>
<s:checkbox label="Search within results" name="searchResultsOnly"/>
<s:hidden name="completeQueryString" value="%{#attr.completeQueryString}"/>
<s:submit label="Go!"/>
</s:form>
</s:form>
<script type="text/javascript">
document.getElementById("quickSearchValue").focus();
</script>
@@ -145,160 +145,160 @@
</c:when>
<c:otherwise>
<p>Hits: 1 to ${hitsNum} of ${results.totalHits}</p>
</c:otherwise>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${empty results.hits}">
<p>No results</p>
</c:when>
<c:otherwise>
<%-- Pagination start --%>
<p>
<%-- Prev & Next icons --%>
<c:if test="${fromFilterSearch == false}">
<c:set var="prevPageUrl">
<s:url action="quickSearch" namespace="/">
<s:param name="q" value="%{#attr.q}"/>
<s:param name="currentPage" value="%{#attr.currentPage - 1}"/>
</s:url>
</c:set>
<c:set var="nextPageUrl">
<s:url action="quickSearch" namespace="/">
<s:param name="q" value="%{#attr.q}"/>
<s:param name="currentPage" value="%{#attr.currentPage + 1}"/>
</s:url>
</c:set>
</c:if>

<c:if test="${fromFilterSearch == true}">
<c:set var="prevPageUrl">
<s:url action="filteredSearch" namespace="/">
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="groupId" value="%{#attr.groupId}"/>
<s:param name="artifactId" value="%{#attr.artifactId}"/>
<s:param name="version" value="%{#attr.version}"/>
<s:param name="className" value="%{#attr.className}"/>
<s:param name="repositoryId" value="%{#attr.repositoryId}"/>
<s:param name="filterSearch" value="%{#attr.filterSearch}"/>
<s:param name="fromResultsPage" value="true"/>
<s:param name="currentPage" value="%{#attr.currentPage - 1}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
<c:set var="nextPageUrl">
<s:url action="filteredSearch" namespace="/">
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="groupId" value="%{#attr.groupId}"/>
<s:param name="artifactId" value="%{#attr.artifactId}"/>
<s:param name="version" value="%{#attr.version}"/>
<s:param name="className" value="%{#attr.className}"/>
<s:param name="repositoryId" value="%{#attr.repositoryId}"/>
<s:param name="filterSearch" value="%{#attr.filterSearch}"/>
<s:param name="fromResultsPage" value="true"/>
<s:param name="currentPage" value="%{#attr.currentPage + 1}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
</c:if>
<c:choose>
<c:when test="${currentPage == 0}">
<img src="${imgPrevPageDisabledUrl}"/>
</c:when>
<c:otherwise>
<a href="${prevPageUrl}">
<img src="${imgPrevPageUrl}"/>
</a>
</c:otherwise>
</c:choose>
<%-- Google-style pagination --%>
<c:choose>
<c:when test="${totalPages > 11}">
<c:choose>
<c:when test="${(currentPage - 5) < 0}">
<c:set var="beginVal">0</c:set>
<c:set var="endVal">10</c:set>
</c:when>
<c:when test="${(currentPage + 5) > (totalPages - 1)}">
<c:set var="beginVal">${(totalPages -1) - 10}</c:set>
<c:set var="endVal">${totalPages - 1}</c:set>
</c:when>
<c:otherwise>
<c:set var="beginVal">${currentPage - 5}</c:set>
<c:set var="endVal">${currentPage + 5}</c:set>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<c:set var="beginVal">0</c:set>
<c:set var="endVal">${totalPages - 1}</c:set>
</c:otherwise>
</c:choose>
<c:forEach var="i" begin="${beginVal}" end="${endVal}">
<%-- Pagination start --%>
<p>
<%-- Prev & Next icons --%>
<c:if test="${fromFilterSearch == false}">
<c:choose>
<c:when test="${i != currentPage}">
<c:set var="specificPageUrl">
<s:url action="quickSearch" namespace="/">
<s:param name="q" value="%{#attr.q}"/>
<s:param name="currentPage" value="%{#attr.i}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
<a href="${specificPageUrl}">${i + 1}</a>
</c:when>
<c:otherwise>
<b>${i + 1}</b>
</c:otherwise>
</c:choose>
<c:set var="prevPageUrl">
<s:url action="quickSearch" namespace="/">
<s:param name="q" value="%{#attr.q}"/>
<s:param name="currentPage" value="%{#attr.currentPage - 1}"/>
</s:url>
</c:set>
<c:set var="nextPageUrl">
<s:url action="quickSearch" namespace="/">
<s:param name="q" value="%{#attr.q}"/>
<s:param name="currentPage" value="%{#attr.currentPage + 1}"/>
</s:url>
</c:set>
</c:if>

<c:if test="${fromFilterSearch == true}">
<c:choose>
<c:when test="${i != currentPage}">
<c:set var="specificPageUrl">
<s:url action="filteredSearch" namespace="/">
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="groupId" value="%{#attr.groupId}"/>
<s:param name="artifactId" value="%{#attr.artifactId}"/>
<s:param name="version" value="%{#attr.version}"/>
<s:param name="className" value="%{#attr.className}"/>
<s:param name="repositoryId" value="%{#attr.repositoryId}"/>
<s:param name="filterSearch" value="%{#attr.filterSearch}"/>
<s:param name="fromResultsPage" value="true"/>
<s:param name="currentPage" value="%{#attr.i}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
<a href="${specificPageUrl}">${i + 1}</a>
</c:when>
<c:otherwise>
<b>${i + 1}</b>
</c:otherwise>
</c:choose>
<c:set var="prevPageUrl">
<s:url action="filteredSearch" namespace="/">
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="groupId" value="%{#attr.groupId}"/>
<s:param name="artifactId" value="%{#attr.artifactId}"/>
<s:param name="version" value="%{#attr.version}"/>
<s:param name="className" value="%{#attr.className}"/>
<s:param name="repositoryId" value="%{#attr.repositoryId}"/>
<s:param name="filterSearch" value="%{#attr.filterSearch}"/>
<s:param name="fromResultsPage" value="true"/>
<s:param name="currentPage" value="%{#attr.currentPage - 1}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
<c:set var="nextPageUrl">
<s:url action="filteredSearch" namespace="/">
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="groupId" value="%{#attr.groupId}"/>
<s:param name="artifactId" value="%{#attr.artifactId}"/>
<s:param name="version" value="%{#attr.version}"/>
<s:param name="className" value="%{#attr.className}"/>
<s:param name="repositoryId" value="%{#attr.repositoryId}"/>
<s:param name="filterSearch" value="%{#attr.filterSearch}"/>
<s:param name="fromResultsPage" value="true"/>
<s:param name="currentPage" value="%{#attr.currentPage + 1}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
</c:if>
</c:forEach>
<c:choose>
<c:when test="${currentPage == (totalPages - 1)}">
<img src="${imgNextPageDisabledUrl}"/>
</c:when>
<c:otherwise>
<a href="${nextPageUrl}">
<img src="${imgNextPageUrl}"/>
</a>
</c:otherwise>
</c:choose>
</p>
<%-- Pagination end --%>

<c:choose>
<c:when test="${currentPage == 0}">
<img src="${imgPrevPageDisabledUrl}"/>
</c:when>
<c:otherwise>
<a href="${prevPageUrl}">
<img src="${imgPrevPageUrl}"/>
</a>
</c:otherwise>
</c:choose>

<%-- Google-style pagination --%>
<c:choose>
<c:when test="${totalPages > 11}">
<c:choose>
<c:when test="${(currentPage - 5) < 0}">
<c:set var="beginVal">0</c:set>
<c:set var="endVal">10</c:set>
</c:when>
<c:when test="${(currentPage + 5) > (totalPages - 1)}">
<c:set var="beginVal">${(totalPages -1) - 10}</c:set>
<c:set var="endVal">${totalPages - 1}</c:set>
</c:when>
<c:otherwise>
<c:set var="beginVal">${currentPage - 5}</c:set>
<c:set var="endVal">${currentPage + 5}</c:set>
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<c:set var="beginVal">0</c:set>
<c:set var="endVal">${totalPages - 1}</c:set>
</c:otherwise>
</c:choose>

<c:forEach var="i" begin="${beginVal}" end="${endVal}">
<c:if test="${fromFilterSearch == false}">
<c:choose>
<c:when test="${i != currentPage}">
<c:set var="specificPageUrl">
<s:url action="quickSearch" namespace="/">
<s:param name="q" value="%{#attr.q}"/>
<s:param name="currentPage" value="%{#attr.i}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
<a href="${specificPageUrl}">${i + 1}</a>
</c:when>
<c:otherwise>
<b>${i + 1}</b>
</c:otherwise>
</c:choose>
</c:if>

<c:if test="${fromFilterSearch == true}">
<c:choose>
<c:when test="${i != currentPage}">
<c:set var="specificPageUrl">
<s:url action="filteredSearch" namespace="/">
<s:param name="rowCount" value="%{#attr.rowCount}"/>
<s:param name="groupId" value="%{#attr.groupId}"/>
<s:param name="artifactId" value="%{#attr.artifactId}"/>
<s:param name="version" value="%{#attr.version}"/>
<s:param name="className" value="%{#attr.className}"/>
<s:param name="repositoryId" value="%{#attr.repositoryId}"/>
<s:param name="filterSearch" value="%{#attr.filterSearch}"/>
<s:param name="fromResultsPage" value="true"/>
<s:param name="currentPage" value="%{#attr.i}"/>
<s:param name="searchResultsOnly" value="%{#attr.searchResultsOnly}"/>
<s:param name="completeQueryString" value="%{#attr.completeQueryString}"/>
</s:url>
</c:set>
<a href="${specificPageUrl}">${i + 1}</a>
</c:when>
<c:otherwise>
<b>${i + 1}</b>
</c:otherwise>
</c:choose>
</c:if>
</c:forEach>

<c:choose>
<c:when test="${currentPage == (totalPages - 1)}">
<img src="${imgNextPageDisabledUrl}"/>
</c:when>
<c:otherwise>
<a href="${nextPageUrl}">
<img src="${imgNextPageUrl}"/>
</a>
</c:otherwise>
</c:choose>
</p>
<%-- Pagination end --%>

<c:forEach items="${results.hits}" var="record" varStatus="i">
<c:choose>
<c:when test="${not empty (record.groupId)}">
@@ -363,4 +363,4 @@
</div>
</div>
</body>
</html>
</html>

+ 4
- 4
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/showArtifact.jsp View File

@@ -31,10 +31,10 @@
<script type="text/javascript" src="<c:url value='/js/jquery-1.6.1.min.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/jquery-ui-1.8.14.custom.min.js'/>"></script>
<script type="text/javascript">
$(function() {
$("#accordion").accordion({autoHeight:false});
});
</script>
$(function() {
$("#accordion").accordion({autoHeight:false});
});
</script>
<link rel="stylesheet" href="<c:url value='/css/no-theme/jquery.ui-1.8.14.theme.css'/>" type="text/css" media="all"/>
</head>


+ 99
- 99
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml View File

@@ -19,20 +19,20 @@
-->

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Apache Archiva</display-name>
<display-name>Apache Archiva</display-name>

<filter>
<filter-name>webwork-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>

<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>

<filter>
<filter-name>struts2</filter-name>
@@ -52,38 +52,38 @@
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- this must be before the sitemesh filter -->
<filter-mapping>
<filter-name>webwork-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<!-- TODO: some Spring technique for this? -->
<listener-class>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- this must be before the sitemesh filter -->
<filter-mapping>
<filter-name>webwork-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<!-- TODO: some Spring technique for this? -->
<listener-class>
org.apache.archiva.web.startup.ArchivaStartup
</listener-class>
</listener>
</listener>

<listener>
<listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
@@ -94,42 +94,42 @@
<listener-class>org.apache.archiva.webdav.util.TemporaryGroupIndexSessionCleaner</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:META-INF/spring-context.xml
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<servlet>
<servlet-name>RepositoryServlet</servlet-name>
<servlet-class>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:META-INF/spring-context.xml
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<servlet>
<servlet-name>RepositoryServlet</servlet-name>
<servlet-class>
org.apache.archiva.webdav.RepositoryServlet
</servlet-class>
<!-- Loading this on startup so as to take advantage of configuration listeners -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>XmlRpcServlet</servlet-name>
<servlet-class>
com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
</servlet-class>
<init-param>
<param-name>serviceListBeanName</param-name>
<param-value>xmlrpcServicesList</param-value>
</init-param>
<init-param>
<param-name>authHandlerBeanName</param-name>
<param-value>xmlRpcAuthenticator</param-value>
</init-param>
<init-param>
<param-name>enabledForExtensions</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Loading this on startup so as to take advantage of configuration listeners -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>XmlRpcServlet</servlet-name>
<servlet-class>
com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
</servlet-class>
<init-param>
<param-name>serviceListBeanName</param-name>
<param-value>xmlrpcServicesList</param-value>
</init-param>
<init-param>
<param-name>authHandlerBeanName</param-name>
<param-value>xmlRpcAuthenticator</param-value>
</init-param>
<init-param>
<param-name>enabledForExtensions</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet>
<servlet-name>RedbackXmlRpcServlet</servlet-name>
@@ -148,45 +148,45 @@
</init-param>
</servlet>

<servlet>
<servlet-name>RssFeedServlet</servlet-name>
<servlet-class>
<servlet>
<servlet-name>RssFeedServlet</servlet-name>
<servlet-class>
org.apache.archiva.web.rss.RssFeedServlet
</servlet-class>
</servlet>
</servlet>

<servlet-mapping>
<servlet-name>RssFeedServlet</servlet-name>
<url-pattern>/feeds/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RssFeedServlet</servlet-name>
<url-pattern>/feeds/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>RepositoryServlet</servlet-name>
<url-pattern>/repository/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RepositoryServlet</servlet-name>
<url-pattern>/repository/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>RedbackXmlRpcServlet</servlet-name>
<url-pattern>/redback-xmlrpc</url-pattern>
</servlet-mapping>

<resource-ref>
<res-ref-name>jdbc/users</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<res-ref-name>jdbc/users</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

<servlet>
<servlet-name>CXFServlet</servlet-name>

+ 1
- 1
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css View File

@@ -85,7 +85,7 @@ div.clear hr {
}

#leftColumn {
width: 170px;
width: 170px;
float: left;
overflow: auto;
}

+ 14
- 14
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/maven-theme.css View File

@@ -33,8 +33,8 @@ select, input {

select {
padding-left: 3px;
height: auto;
width: auto;
height: auto;
width: auto;
}

input {
@@ -42,8 +42,8 @@ input {
}

label .required {
color: red;
font-weight: bold;
color: red;
font-weight: bold;
}

th {
@@ -305,7 +305,7 @@ pre.pom code {
#footer {
border-top: 1px solid #CCCCCC;
padding: 14px 4px 12px 4px;
color: #333333;
color: #333333;
margin-top: 2em;
}

@@ -327,21 +327,21 @@ blockquote {
}

.missing {
background-color: red;
color: white;
font-weight: bold;
padding: 4px;
margin-left: 20px;
margin-right: 20px;
background-color: red;
color: white;
font-weight: bold;
padding: 4px;
margin-left: 20px;
margin-right: 20px;
}

#searchBox {
margin: 5%;
margin: 5%;
}

#searchHint {
margin: 5%;
margin: 5%;
}

#topSearchBox {

+ 139
- 139
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/css/site.css View File

@@ -22,7 +22,7 @@
}

#download a {
text-decoration: none;
text-decoration: none;
}

#download td.type {
@@ -35,215 +35,215 @@
}

#contentArea {
/* margin-right: 15em; */
padding: 1em;
/* margin-right: 15em; */
padding: 1em;
}

#tabs b {
border: 1px #DFDEDE solid;
padding-left: 1em;
padding-right: 1em;
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;
border: 1px #DFDEDE solid;
padding-left: 1em;
padding-right: 1em;
text-decoration: none;
}

#tabArea {
border-top: 1px solid #DFDEDE;
padding: 1em;
border-top: 1px solid #DFDEDE;
padding: 1em;
}

#searchTypes {
text-align: right;
font-size: xx-small;
text-align: right;
font-size: xx-small;
}

.statusFailed {
color: red;
font-weight: bold;
color: red;
font-weight: bold;
}

/* WebWork validation failures */
.errorMessage {
color: red;
font-weight: bold;
color: red;
font-weight: bold;
}

.actionMessage {
font-size: 1.0em;
font-weight: bold;
color: blue;
font-size: 1.0em;
font-weight: bold;
color: blue;
}

.errorBullet {
list-style-image: url( "../images/icon_error_sml.gif" );
list-style-image: url( "../images/icon_error_sml.gif" );
}

.warningBullet {
list-style-image: url( "../images/icon_warning_sml.gif" );
list-style-image: url( "../images/icon_warning_sml.gif" );
}

.infoBullet {
list-style-image: url( "../images/icon_info_sml.gif" );
list-style-image: url( "../images/icon_info_sml.gif" );
}

.artifact-link {
font-size: x-small;
padding-left: 5em;
font-size: x-small;
padding-left: 5em;
}

.artifact-title {
}

ul.dependencyTree {
margin-left: 50px;
margin-left: 50px;
}

ul.dependencyTree span.artifact-link {
padding-left: 0px;
padding-left: 0px;
}

.eXtremeTable tr.filter {
padding: 1px;
padding: 1px;
}

.eXtremeTable .tableRegion,.eXtremeTable .statusBar {
width: 100%;
width: 100%;
}

.eXtremeTable .tableRegion .tableHeader {
background-color: None;
background-image: url(../images/breadcrumbs.jpg);
color: gray;
background-color: None;
background-image: url(../images/breadcrumbs.jpg);
color: gray;
}

.eXtremeTable .tableRegion .tableHeaderSort {
background-color: #FFBF5F;
background-color: #FFBF5F;
}

.eXtremeTable .compactToolbar td {
white-space: nowrap;
white-space: nowrap;
}

.tools {
border-color: gray !important;
border-color: gray !important;
}

table.tools th.toolHeading
{
color: gray;
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);
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;
border-bottom: 0px !important;
padding-left: 15px !important;
}

div.repository {
border-bottom: 1px solid #DFDEDE;
border-bottom: 1px solid #DFDEDE;
}

div.proxyConfig,
div.repoGroup {
border: 1px dashed #DFDEDE;
margin-bottom: 15px;
padding: 5px;
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;
padding: 5px;
background-color: white;
}

div.proxyConfig div.remoteRepo {
margin: 5px;
margin: 5px;
}

div.proxyConfig div.managedRepo img,
div.proxyConfig div.remoteRepo img,
div.repoGroup div.managedRepo img {
float: left;
border: 0px;
float: left;
border: 0px;
}

div.proxyConfig div.managedRepo p,
div.proxyConfig div.remoteRepo p {
margin: 0px;
margin-left: 40px;
padding: 0px;
margin: 0px;
margin-left: 40px;
padding: 0px;
}

div.repoGroup div.managedRepo p {
margin: 8px;
margin-left: 40px;
padding: 0px;
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;
font-family: monospace;
}

div.proxyConfig div.connector,
div.repoGroup div.connector {
border: 1px solid #aaaaff;
margin-top: 10px;
margin-left: 40px !important;
border: 1px solid #aaaaff;
margin-top: 10px;
margin-left: 40px !important;
}

div.proxyConfig a.expand {
font-size: 7pt;
color: gray;
font-size: 7pt;
color: gray;
}

div.proxyConfig div.controls,
div.repoGroup div.controls {
float: right;
float: right;
}

div.proxyConfig div.connector h4,
div.repoGroup div.connector h4 {
padding: 3px;
font-size: 8pt;
margin: 0px;
padding: 3px;
font-size: 8pt;
margin: 0px;
}

div.proxyConfig div.connector table.settings {
border: 0px;
background-color: transparent;
font-size: 8pt;
margin-left: 10px;
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;
font-size: 8pt;
}

div.proxyConfig div.connector table.settings table.policies {
border: 1px dotted gray;
border: 1px dotted gray;
}

div.proxyConfig div.connector table p {
margin: 0px;
padding: 0px;
margin: 0px;
padding: 0px;
}

div.repoGroup div.repos {
@@ -253,91 +253,91 @@ div.repoGroup div.repos {

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;
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;
background-color: white;
}

div.admin div.dark {
background-color: #eeeeee;
background-color: #eeeeee;
}

div.admin div.controls {
float: right;
font-size: 8pt !important;
float: right;
font-size: 8pt !important;
}

div.admin div.filetype table {
margin-left: 25px;
border: 1px solid gray;
margin-left: 25px;
border: 1px solid gray;
}

div.filetype table td.controls {
width: 5%;
width: 5%;
}

div.filetype table td.odd,
div.admin table.consumers td.odd {
background-color: #dddddd;
background-color: #dddddd;
}

div.filetype table td.even,
div.admin table.consumers td.even {
background-color: white;
background-color: white;
}

div.admin table.consumers {
margin-left: 15px;
border: 1px solid gray;
margin-left: 15px;
border: 1px solid gray;
}

div.admin table.consumers th {
font-size: 1.0em;
background-color: #cccccc;
text-align: left;
font-size: 1.0em;
background-color: #cccccc;
text-align: left;
}

div.admin table.consumers td strong {
font-size: 0.8em;
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;
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;
margin: 20px 40px 20px 40px;
border: 1px solid #0000CC;
background-color: #EEEEFF;
font-size: 9pt;
padding: 20px;
}

div.buttons {
text-align: center;
text-align: center;
}

div.versions {
border: 1px dashed #DFDEDE;
margin-bottom: 15px;
padding: 5px;
margin-bottom: 15px;
padding: 5px;
}

div.versions a.expand {
font-size: 7pt;
color: gray;
color: gray;
}

#messages {
@@ -361,39 +361,39 @@ div.versions a.expand {
}

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;
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;
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;
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;
border: 1px dashed #DFDEDE;
margin-bottom: 15px;
margin-left: 2px;
padding: 5px;
}

+ 2
- 2
archiva-modules/archiva-web/archiva-webdav/src/main/resources/org/apache/archiva/webdav/util/mime.types View File

@@ -10,7 +10,7 @@

application/andrew-inset ez
application/atom+xml atom
application/java-archive jar
application/java-archive jar
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/mathml+xml mathml
@@ -19,7 +19,7 @@ application/octet-stream bin dms lha lzh exe class so dll dmg
application/oda oda
application/ogg ogg
application/pdf pdf
application/pgp-encrypted pgp
application/pgp-encrypted pgp
application/postscript ai eps ps
application/rdf+xml rdf
application/smil smi smil

+ 2
- 2
archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/repository-servlet-security-test/web.xml View File

@@ -31,8 +31,8 @@
<listener-class>org.apache.archiva.webdav.util.MavenIndexerCleaner</listener-class>
</listener>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.codehaus.redback.components.springutils.CachingWebApplicationContext</param-value>
<param-name>contextClass</param-name>
<param-value>org.codehaus.redback.components.springutils.CachingWebApplicationContext</param-value>
</context-param>

<context-param>

+ 2
- 2
archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/web.xml View File

@@ -31,8 +31,8 @@
<listener-class>org.apache.archiva.webdav.util.MavenIndexerCleaner</listener-class>
</listener>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.codehaus.redback.components.springutils.CachingWebApplicationContext</param-value>
<param-name>contextClass</param-name>
<param-value>org.codehaus.redback.components.springutils.CachingWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>

+ 1
- 1
archiva-modules/archiva-web/archiva-webdav/src/test/resources/archiva-mime-types.txt View File

@@ -19,7 +19,7 @@ application/octet-stream bin dms lha lzh exe class so dll dmg
application/oda oda
application/ogg ogg
application/pdf pdf
application/pgp-encrypted pgp
application/pgp-encrypted pgp
application/postscript ai eps ps
application/rdf+xml rdf
application/smil smi smil

+ 1
- 1
archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/pom.xml View File

@@ -17,7 +17,7 @@
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.archiva</groupId>

+ 1
- 1
archiva-modules/archiva-web/archiva-xmlrpc/pom.xml View File

@@ -17,7 +17,7 @@
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.archiva</groupId>

Loading…
Cancel
Save