git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1215120 13f79535-47bb-0310-9956-ffa450edef68tags/archiva-1.4-M3
@@ -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> |
@@ -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. |
@@ -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" /> |
@@ -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> |
@@ -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() | |||
{ |
@@ -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() | |||
{ |
@@ -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> |
@@ -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 |
@@ -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 ); | |||
} | |||
} |
@@ -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> |
@@ -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(-)." ); | |||
} | |||
} |
@@ -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" ); | |||
} | |||
} | |||
} |
@@ -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"; |
@@ -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> |
@@ -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 )) |
@@ -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 |
@@ -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> |
@@ -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> |
@@ -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"> |
@@ -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> |
@@ -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"/> | |||
@@ -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"/> | |||
@@ -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> |
@@ -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}"><<</a></c:if> | |||
<strong>Page: </strong>${page} | |||
<s:set name="isLastPage" value="isLastPage"/> | |||
<c:if test="${!isLastPage}"><a href="${nextPageUrl}">>></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}"><<</a></c:if> | |||
<strong>Page: </strong>${page} | |||
<s:set name="isLastPage" value="isLastPage"/> | |||
<c:if test="${!isLastPage}"><a href="${nextPageUrl}">>></a></c:if> | |||
</c:if> | |||
</div> | |||
</s:form> | |||
</div> | |||
</body> |
@@ -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"> |
@@ -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"/> |
@@ -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> |
@@ -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> |
@@ -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> | |||
@@ -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> |
@@ -85,7 +85,7 @@ div.clear hr { | |||
} | |||
#leftColumn { | |||
width: 170px; | |||
width: 170px; | |||
float: left; | |||
overflow: auto; | |||
} |
@@ -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 { |
@@ -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; | |||
} |
@@ -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 |
@@ -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> |
@@ -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> |
@@ -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 |
@@ -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> |
@@ -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> |