private String name;
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
private String name;
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
private String name;
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
private String name;
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
private String name;
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
+ *
+ * @plexus.component role="org.apache.maven.archiva.reporting.ReportingManager"
+ * role-hint="default"
*/
public class DefaultReportingManager
extends AbstractLogEnabled
<requirements>
<requirement>
<role>org.codehaus.plexus.security.rbac.RBACManager</role>
+ <role-hint>cached</role-hint>
</requirement>
<requirement>
<role>org.codehaus.plexus.PlexusContainer</role>
<requirements>
<requirement>
<role>org.codehaus.plexus.security.rbac.RBACManager</role>
+ <role-hint>cached</role-hint>
</requirement>
<requirement>
<role>org.codehaus.plexus.PlexusContainer</role>
<requirements>
<requirement>
<role>org.codehaus.plexus.security.rbac.RBACManager</role>
+ <role-hint>cached</role-hint>
</requirement>
<requirement>
<role>org.codehaus.plexus.PlexusContainer</role>
<requirements>
<requirement>
<role>org.codehaus.plexus.security.rbac.RBACManager</role>
+ <role-hint>cached</role-hint>
</requirement>
<requirement>
<role>org.codehaus.plexus.PlexusContainer</role>
<requirements>
<requirement>
<role>org.codehaus.plexus.security.rbac.RBACManager</role>
+ <role-hint>cached</role-hint>
</requirement>
<requirement>
<role>org.codehaus.plexus.PlexusContainer</role>
<requirements>
<requirement>
<role>org.codehaus.plexus.security.rbac.RBACManager</role>
+ <role-hint>cached</role-hint>
</requirement>
</requirements>
</component>
<requirements>
<requirement>
<role>org.codehaus.plexus.security.rbac.RBACManager</role>
+ <role-hint>cached</role-hint>
</requirement>
</requirements>
</component>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-project</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
</plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <id>mysql</id>
+ <dependencies>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>5.0.4</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <configuration>
+ <jettyEnvXml>src/jetty-env-mysql.xml</jettyEnvXml>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
--- /dev/null
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+
+ <New id="validation_mail" class="org.mortbay.jetty.plus.naming.Resource">
+ <Arg>mail/Session</Arg>
+ <Arg>
+ <New class="org.mortbay.naming.factories.MailSessionReference">
+ <Set name="user"></Set>
+ <Set name="password"></Set>
+ <Set name="properties">
+ <New class="java.util.Properties">
+ <Put name="mail.smtp.host">localhost</Put>
+ <Put name="mail.smtp.port">25</Put>
+ </New>
+ </Set>
+ </New>
+ </Arg>
+ </New>
+
+ <!--
+ In order to use this jetty-env, you need to setup your mysql locally.
+
+ 1) Connect to mysql
+
+ $ mysql -u root -p
+
+ Welcome to the MySQL monitor. Commands end with ; or \g.
+ Your MySQL connection id is 62
+ Server version: 5.0.38-Ubuntu_0ubuntu1-log Ubuntu 7.04 distribution
+
+ Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
+
+ mysql>
+
+ 2) Create the databases.
+
+ mysql> create database archiva;
+ Query OK, 1 row affected (0.00 sec)
+
+ mysql> create database redback;
+ Query OK, 1 row affected (0.00 sec)
+
+ 3) Create the archiva user / permissions to (archiva and redback) tables.
+
+ mysql> use mysql;
+ Reading table information for completion of table and column names
+ You can turn off this feature to get a quicker startup with -A
+
+ Database changed
+ mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX
+ -> ON archiva.*
+ -> TO 'archiva'@'localhost'
+ -> IDENTIFIED BY 'sa';
+ Query OK, 0 rows affected (0.00 sec)
+
+ mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX
+ -> ON redback.*
+ -> TO 'archiva'@'localhost'
+ -> IDENTIFIED BY 'sa';
+ Query OK, 0 rows affected (0.00 sec)
+
+ mysql>
+
+ 4) Quit from mysql command shell, and verify the user creation.
+
+ $ mysql -u archiva -p sa
+ Enter password:
+ Welcome to the MySQL monitor. Commands end with ; or \g.
+ Your MySQL connection id is 77
+ Server version: 5.0.38-Ubuntu_0ubuntu1-log Ubuntu 7.04 distribution
+
+ Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
+
+ mysql> use archiva;
+ Database changed
+ mysql> use redback;
+ Database changed
+ mysql> use mysql;
+ ERROR 1044 (42000): Access denied for user 'archiva'@'localhost' to database 'mysql'
+ mysql>
+
+ 5) Done with mysql server setup. To use this jetty-env.xml use the following command line.
+
+ $ mvn -Pmysql clean jetty:run
+
+ -->
+
+ <!-- Archiva database -->
+ <New id="archiva" class="org.mortbay.jetty.plus.naming.Resource">
+ <Arg>jdbc/archiva</Arg>
+ <Arg>
+ <New class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
+ <Set name="serverName">localhost</Set>
+ <Set name="databaseName">archiva</Set>
+ <Set name="user">archiva</Set>
+ <Set name="password">sa</Set>
+ </New>
+ </Arg>
+ </New>
+
+ <New id="archivaShutdown" class="org.mortbay.jetty.plus.naming.Resource">
+ <Arg>jdbc/archivaShutdown</Arg>
+ <Arg>
+ <New class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
+ <!-- <Set name="url">jdbc:mysql://localhost/archiva</Set> -->
+ <Set name="serverName">localhost</Set>
+ <Set name="databaseName">archiva</Set>
+ <Set name="user">archiva</Set>
+ <Set name="password">sa</Set>
+ </New>
+ </Arg>
+ </New>
+
+ <!-- users / Security Database -->
+ <New id="users" class="org.mortbay.jetty.plus.naming.Resource">
+ <Arg>jdbc/users</Arg>
+ <Arg>
+ <New class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
+ <!-- <Set name="url">jdbc:mysql://localhost/redback</Set> -->
+ <Set name="serverName">localhost</Set>
+ <Set name="databaseName">redback</Set>
+ <Set name="user">archiva</Set>
+ <Set name="password">sa</Set>
+ </New>
+ </Arg>
+ </New>
+
+ <New id="usersShutdown" class="org.mortbay.jetty.plus.naming.Resource">
+ <Arg>jdbc/usersShutdown</Arg>
+ <Arg>
+ <New class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
+ <Set name="url">jdbc:mysql://localhost/redback</Set>
+ <Set name="user">archiva</Set>
+ <Set name="password">sa</Set>
+ </New>
+ </Arg>
+ </New>
+
+</Configure>
+
/* .\ Not Exposed \._____________________________________________ */
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
--- /dev/null
+package org.apache.maven.archiva.web.action.admin;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.model.RepositoryURL;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * AdminModel
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AdminModel
+{
+ private String baseUrl;
+
+ private List managedRepositories = new ArrayList();
+
+ private List remoteRepositories = new ArrayList();
+
+ public AdminModel()
+ {
+ /* do nothing */
+ }
+
+ public AdminModel( Configuration configuration )
+ {
+ Iterator it = configuration.getRepositories().iterator();
+ while ( it.hasNext() )
+ {
+ RepositoryConfiguration repoconfig = (RepositoryConfiguration) it.next();
+ RepositoryURL repourl = new RepositoryURL( repoconfig.getUrl() );
+ if ( "file".equals( repourl.getProtocol() ) )
+ {
+ managedRepositories.add( repoconfig );
+ }
+ else
+ {
+ remoteRepositories.add( repoconfig );
+ }
+ }
+ }
+
+ public List getManagedRepositories()
+ {
+ return managedRepositories;
+ }
+
+ public void setManagedRepositories( List managedRepositories )
+ {
+ this.managedRepositories = managedRepositories;
+ }
+
+ public List getRemoteRepositories()
+ {
+ return remoteRepositories;
+ }
+
+ public void setRemoteRepositories( List remoteRepositories )
+ {
+ this.remoteRepositories = remoteRepositories;
+ }
+
+ public String getBaseUrl()
+ {
+ return baseUrl;
+ }
+
+ public void setBaseUrl( String baseUrl )
+ {
+ this.baseUrl = baseUrl;
+ }
+}
import org.apache.maven.archiva.configuration.InvalidConfigurationException;
import org.apache.maven.archiva.indexer.RepositoryIndexException;
import org.apache.maven.archiva.indexer.RepositoryIndexSearchException;
-//import org.apache.maven.archiva.repositories.ActiveManagedRepositories;
import org.apache.maven.archiva.security.ArchivaRoleConstants;
import org.codehaus.plexus.registry.RegistryException;
import org.codehaus.plexus.scheduler.CronExpressionValidator;
import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
import org.codehaus.plexus.xwork.action.PlexusActionSupport;
-import java.io.File;
import java.io.IOException;
-import java.util.Date;
/**
* Configures the application.
*/
private ArchivaConfiguration archivaConfiguration;
-// /**
-// * @plexus.requirement
-// */
-// private ActiveManagedRepositories activeRepositories;
-
/**
* The configuration.
*/
private Configuration configuration;
- private CronExpressionValidator cronValidator;
-
- private String second = "0";
-
- private String minute = "0";
-
- private String hour = "*";
-
- private String dayOfMonth = "*";
-
- private String month = "*";
-
- private String dayOfWeek = "?";
-
- private String year;
-
- private String lastIndexingTime;
-
public void validate()
{
//validate cron expression
- cronValidator = new CronExpressionValidator();
-
- if ( !cronValidator.validate( getCronExpression() ) )
- {
- addActionError( "Invalid Cron Expression" );
- }
}
public String execute()
{
// TODO: if this didn't come from the form, go to configure.action instead of going through with re-saving what was just loaded
// TODO: if this is changed, do we move the index or recreate it?
-// configuration.setDataRefreshCronExpression( getCronExpression() );
-
- // Normalize the path
-// File file = new File( configuration.getIndexPath() );
-// configuration.setIndexPath( file.getCanonicalPath() );
-// if ( !file.exists() )
-// {
-// file.mkdirs();
-// // TODO: error handling when this fails, or is not a directory!
-// }
-
- // Just double checking that our validation routines line up with what is expected in the configuration
-// assert configuration.isValid();
archivaConfiguration.save( configuration );
// TODO: if the repository has changed, we need to check if indexing is needed!
-
addActionMessage( "Successfully saved configuration" );
return SUCCESS;
}
- public String input()
- {
-// String[] cronEx = configuration.getDataRefreshCronExpression().split( " " );
- String[] cronEx = new String[]{"0","0","*","*","*","*","*"};
- int i = 0;
-
- while ( i < cronEx.length )
- {
- switch ( i )
- {
- case 0:
- second = cronEx[i];
- break;
- case 1:
- minute = cronEx[i];
- break;
- case 2:
- hour = cronEx[i];
- break;
- case 3:
- dayOfMonth = cronEx[i];
- break;
- case 4:
- month = cronEx[i];
- break;
- case 5:
- dayOfWeek = cronEx[i];
- break;
- case 6:
- year = cronEx[i];
- break;
- }
- i++;
- }
-
-// if ( activeRepositories.getLastDataRefreshTime() != 0 )
+// public String input()
+// {
+//// String[] cronEx = configuration.getDataRefreshCronExpression().split( " " );
+// String[] cronEx = new String[]{"0","0","*","*","*","*","*"};
+// int i = 0;
+//
+// while ( i < cronEx.length )
// {
-// lastIndexingTime = new Date( activeRepositories.getLastDataRefreshTime() ).toString();
+// switch ( i )
+// {
+// case 0:
+// second = cronEx[i];
+// break;
+// case 1:
+// minute = cronEx[i];
+// break;
+// case 2:
+// hour = cronEx[i];
+// break;
+// case 3:
+// dayOfMonth = cronEx[i];
+// break;
+// case 4:
+// month = cronEx[i];
+// break;
+// case 5:
+// dayOfWeek = cronEx[i];
+// break;
+// case 6:
+// year = cronEx[i];
+// break;
+// }
+// i++;
// }
-// else
- {
- lastIndexingTime = "Never been run.";
- }
-
- return INPUT;
- }
+//
+//// if ( activeRepositories.getLastDataRefreshTime() != 0 )
+//// {
+//// lastIndexingTime = new Date( activeRepositories.getLastDataRefreshTime() ).toString();
+//// }
+//// else
+// {
+// lastIndexingTime = "Never been run.";
+// }
+//
+// return INPUT;
+// }
public Object getModel()
{
configuration = archivaConfiguration.getConfiguration();
}
- public String getLastIndexingTime()
- {
- return lastIndexingTime;
- }
-
- public void setLastIndexingTime( String lastIndexingTime )
- {
- this.lastIndexingTime = lastIndexingTime;
- }
-
- public String getSecond()
- {
- return second;
- }
-
- public void setSecond( String second )
- {
- this.second = second;
- }
-
- public String getMinute()
- {
- return minute;
- }
-
- public void setMinute( String minute )
- {
- this.minute = minute;
- }
-
- public String getHour()
- {
- return hour;
- }
-
- public void setHour( String hour )
- {
- this.hour = hour;
- }
-
- public String getDayOfMonth()
- {
- return dayOfMonth;
- }
-
- public void setDayOfMonth( String dayOfMonth )
- {
- this.dayOfMonth = dayOfMonth;
- }
-
- public String getYear()
- {
- return year;
- }
-
- public void setYear( String year )
- {
- this.year = year;
- }
-
- public String getMonth()
- {
- return month;
- }
-
- public void setMonth( String month )
- {
- this.month = month;
- }
-
- public String getDayOfWeek()
- {
- return dayOfWeek;
- }
-
- public void setDayOfWeek( String dayOfWeek )
- {
- this.dayOfWeek = dayOfWeek;
- }
-
- private String getCronExpression()
- {
- return ( second + " " + minute + " " + hour + " " + dayOfMonth + " " + month + " " + dayOfWeek + " " +
- year ).trim();
- }
+// private String getCronExpression()
+// {
+// return ( second + " " + minute + " " + hour + " " + dayOfMonth + " " + month + " " + dayOfWeek + " " +
+// year ).trim();
+// }
public SecureActionBundle getSecureActionBundle()
throws SecureActionException
+++ /dev/null
-package org.apache.maven.archiva.web.action.admin;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import com.opensymphony.xwork.ModelDriven;
-import com.opensymphony.xwork.Preparable;
-import org.apache.maven.archiva.security.ArchivaRoleConstants;
-//import org.apache.maven.archiva.web.action.AbstractConfiguredAction;
-//import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
-//import org.apache.maven.model.Model;
-//import org.apache.maven.project.ProjectBuildingException;
-//import org.apache.maven.shared.app.company.CompanyPomHandler;
-//import org.apache.maven.shared.app.configuration.Configuration;
-//import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
-import org.codehaus.plexus.registry.RegistryException;
-import org.codehaus.plexus.security.rbac.Resource;
-import org.codehaus.plexus.security.ui.web.interceptor.SecureAction;
-import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
-import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
-import org.codehaus.plexus.xwork.action.PlexusActionSupport;
-
-import java.io.IOException;
-
-/**
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @version $Id: ConfigurationAction.java 480950 2006-11-30 14:58:35Z evenisse $
- * @TODO plexus.component role="com.opensymphony.xwork.Action"
- * role-hint="configureAppearance"
- */
-public class ConfigureAppearanceAction
- extends PlexusActionSupport
- implements ModelDriven, SecureAction, Preparable
-{
-// /**
-// * @plexus.requirement
-// */
-// private MavenAppConfiguration appConfigurationStore;
-//
-// /**
-// * The configuration.
-// */
-// private Configuration configuration;
-//
-// private Model companyModel;
-//
-// /**
-// * @plexus.requirement
-// */
-// private CompanyPomHandler companyPomHandler;
-//
- public String execute()
- throws IOException, RegistryException
- {
-// appConfigurationStore.save( configuration );
-
- return SUCCESS;
- }
-
- public Object getModel()
- {
- return new Object();
-// return configuration;
- }
-
- public void prepare()
-// throws ProjectBuildingException, ArtifactMetadataRetrievalException
- {
-// configuration = appConfigurationStore.getConfiguration();
-//
-// companyModel = companyPomHandler.getCompanyPomModel( configuration.getCompanyPom(), createLocalRepository() );
- }
-
- public SecureActionBundle getSecureActionBundle()
- throws SecureActionException
- {
- SecureActionBundle bundle = new SecureActionBundle();
- bundle.setRequiresAuthentication( true );
- bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
-
- return bundle;
- }
-//
-// public Model getCompanyModel()
-// {
-// return companyModel;
-// }
-}
+++ /dev/null
-package org.apache.maven.archiva.web.action.admin;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import com.opensymphony.xwork.ModelDriven;
-import com.opensymphony.xwork.Preparable;
-import org.apache.maven.archiva.security.ArchivaRoleConstants;
-//import org.apache.maven.artifact.installer.ArtifactInstallationException;
-//import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
-//import org.apache.maven.model.Model;
-//import org.apache.maven.project.ProjectBuildingException;
-//import org.apache.maven.shared.app.company.CompanyPomHandler;
-//import org.apache.maven.shared.app.configuration.CompanyPom;
-//import org.apache.maven.shared.app.configuration.Configuration;
-//import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
-import org.codehaus.plexus.security.rbac.Resource;
-import org.codehaus.plexus.security.ui.web.interceptor.SecureAction;
-import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
-import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
-import org.codehaus.plexus.xwork.action.PlexusActionSupport;
-
-import java.io.IOException;
-
-/**
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @version $Id: ConfigurationAction.java 480950 2006-11-30 14:58:35Z evenisse $
- * @TODO plexus.component role="com.opensymphony.xwork.Action"
- * role-hint="editPom"
- */
-public class EditPomAction
- extends PlexusActionSupport
- implements ModelDriven, SecureAction, Preparable
-{
- /**
- * @plexus.requirement
- */
- // private MavenAppConfiguration appConfigurationStore;
-
- /**
- * The configuration.
- */
-// private Configuration configuration;
-
- /**
- * @plexus.requirement
- */
- // private CompanyPomHandler companyPomHandler;
-
- // private Model companyModel;
-
- public String execute()
-// throws IOException, ArtifactInstallationException
- {
- // TODO: hack for passed in String[]
-// String[] logo = (String[]) companyModel.getProperties().get( "organization.logo" );
-// if ( logo != null )
-// {
-// companyModel.getProperties().put( "organization.logo", logo[0] );
-// }
-//
-// companyPomHandler.save( companyModel, createLocalRepository() );
-
- return SUCCESS;
- }
-
- public Object getModel()
- {
-// return companyModel;
- return new Object();
- }
-
- public void prepare()
- // throws ProjectBuildingException, ArtifactMetadataRetrievalException
- {
-// configuration = appConfigurationStore.getConfiguration();
-//
-// CompanyPom companyPom = configuration.getCompanyPom();
-// companyModel = companyPomHandler.getCompanyPomModel( companyPom, createLocalRepository() );
-//
-// if ( companyModel == null )
-// {
-// companyModel = new Model();
-// companyModel.setModelVersion( "4.0.0" );
-// companyModel.setPackaging( "pom" );
-//
-// if ( companyPom != null )
-// {
-// companyModel.setGroupId( companyPom.getGroupId() );
-// companyModel.setArtifactId( companyPom.getArtifactId() );
-// }
-// }
- }
-
- public SecureActionBundle getSecureActionBundle()
- throws SecureActionException
- {
- SecureActionBundle bundle = new SecureActionBundle();
- bundle.setRequiresAuthentication( true );
- bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
-
- return bundle;
- }
-
-// public Model getCompanyModel()
-// {
-// return companyModel;
-// }
-}
--- /dev/null
+package org.apache.maven.archiva.web.action.admin;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.opensymphony.webwork.interceptor.ServletRequestAware;
+import com.opensymphony.xwork.ModelDriven;
+import com.opensymphony.xwork.Preparable;
+import com.opensymphony.xwork.Validateable;
+
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.database.ArchivaDAO;
+import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.codehaus.plexus.security.rbac.Resource;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureAction;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
+import org.codehaus.plexus.xwork.action.PlexusActionSupport;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Shows the Repositories Tab for the administrator.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ *
+ * @plexus.component role="com.opensymphony.xwork.Action" role-hint="repositoriesAction"
+ */
+public class RepositoriesAction
+ extends PlexusActionSupport
+ implements ModelDriven, Preparable, Validateable, SecureAction, ServletRequestAware
+{
+ /**
+ * @plexus.requirement
+ */
+ private ArchivaConfiguration archivaConfiguration;
+
+ /**
+ * @plexus.requirement role-hint="jdo"
+ */
+ private ArchivaDAO dao;
+
+ private HttpServletRequest request;
+
+ private AdminModel model;
+
+ public Object getModel()
+ {
+ return model;
+ }
+
+ public void prepare()
+ throws Exception
+ {
+ model = new AdminModel( archivaConfiguration.getConfiguration() );
+ }
+
+ public void validate()
+ {
+ super.validate();
+ }
+
+ public SecureActionBundle getSecureActionBundle()
+ throws SecureActionException
+ {
+ SecureActionBundle bundle = new SecureActionBundle();
+
+ bundle.setRequiresAuthentication( true );
+ bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
+
+ return bundle;
+ }
+
+ public void setServletRequest( HttpServletRequest request )
+ {
+ this.request = request;
+ StringBuffer baseUrl = new StringBuffer();
+
+ baseUrl.append( request.getScheme() );
+ baseUrl.append( request.getServerName() );
+ int portnum = request.getServerPort();
+
+ // Only add port if non-standard.
+ if ( ( "https".equalsIgnoreCase( request.getScheme() ) && ( portnum != 443 ) )
+ || ( "http".equalsIgnoreCase( request.getScheme() ) && ( portnum != 80 ) ) )
+ {
+ baseUrl.append( ":" ).append( String.valueOf( portnum ) );
+ }
+ baseUrl.append( request.getContextPath() );
+ baseUrl.append( "/repository" );
+
+ model.setBaseUrl( baseUrl.toString() );
+ }
+}
--- /dev/null
+package org.apache.maven.archiva.web.action.admin.appearance;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.codehaus.plexus.xwork.action.PlexusActionSupport;
+
+import java.io.File;
+import java.util.Map;
+
+/**
+ * AbstractAppearanceAction
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public abstract class AbstractAppearanceAction
+ extends PlexusActionSupport
+{
+ /**
+ * @plexus.requirement role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
+ */
+ private Map repositoryLayouts;
+
+ /**
+ * @plexus.requirement
+ */
+ private ArtifactRepositoryFactory repoFactory;
+
+ protected ArtifactRepository createLocalRepository()
+ {
+ String id = "archiva-local-repo";
+ String layout = "default";
+ String directory = System.getProperty( "user.home" ) + ".m2/archiva";
+
+ ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) repositoryLayouts.get( layout );
+ File repository = new File( directory );
+ repository.mkdirs();
+
+ String repoDir = repository.toURI().toString();
+ //workaround for spaces non converted by PathUtils in wagon
+ //TODO: remove it when PathUtils will be fixed
+ if ( repoDir.indexOf( "%20" ) >= 0 )
+ {
+ repoDir = StringUtils.replace( repoDir, "%20", " " );
+ }
+
+ return repoFactory.createArtifactRepository( id, repoDir, repositoryLayout, null, null );
+ }
+}
--- /dev/null
+package org.apache.maven.archiva.web.action.admin.appearance;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.model.Model;
+import org.apache.maven.shared.app.company.CompanyPomHandler;
+import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
+
+/**
+ * Stores the company information for displaying on the page.
+ *
+ * @plexus.component role="com.opensymphony.xwork.Action" role-hint="companyInfo"
+ */
+public class CompanyInfoAction
+ extends AbstractAppearanceAction
+{
+ private String companyLogo;
+
+ private String companyUrl;
+
+ private String companyName;
+
+ /**
+ * @plexus.requirement
+ */
+ private CompanyPomHandler handler;
+
+ /**
+ * @plexus.requirement
+ */
+ private MavenAppConfiguration appConfigurationStore;
+
+ public String execute()
+ throws Exception
+ {
+ Model model = handler.getCompanyPomModel( appConfigurationStore.getConfiguration().getCompanyPom(),
+ createLocalRepository() );
+
+ if ( model != null )
+ {
+ if ( model.getOrganization() != null )
+ {
+ companyName = model.getOrganization().getName();
+ companyUrl = model.getOrganization().getUrl();
+ }
+
+ companyLogo = model.getProperties().getProperty( "organization.logo" );
+ }
+
+ return SUCCESS;
+ }
+
+ public String getCompanyLogo()
+ {
+ return companyLogo;
+ }
+
+ public String getCompanyUrl()
+ {
+ return companyUrl;
+ }
+
+ public String getCompanyName()
+ {
+ return companyName;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.apache.maven.archiva.web.action.admin.appearance;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.opensymphony.xwork.ModelDriven;
+import com.opensymphony.xwork.Preparable;
+
+import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.shared.app.company.CompanyPomHandler;
+import org.apache.maven.shared.app.configuration.Configuration;
+import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
+import org.codehaus.plexus.registry.RegistryException;
+import org.codehaus.plexus.security.rbac.Resource;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureAction;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
+
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id: ConfigurationAction.java 480950 2006-11-30 14:58:35Z evenisse $
+ * @plexus.component role="com.opensymphony.xwork.Action"
+ * role-hint="configureAppearance"
+ */
+public class ConfigureAppearanceAction
+ extends AbstractAppearanceAction
+ implements ModelDriven, SecureAction, Preparable
+{
+ /**
+ * @plexus.requirement
+ */
+ private MavenAppConfiguration appConfigurationStore;
+
+ /**
+ * The configuration.
+ */
+ private Configuration configuration;
+
+ private Model companyModel;
+
+ /**
+ * @plexus.requirement
+ */
+ private CompanyPomHandler companyPomHandler;
+
+ public String execute()
+ throws IOException, RegistryException
+ {
+ appConfigurationStore.save( configuration );
+
+ return SUCCESS;
+ }
+
+ public Object getModel()
+ {
+ return configuration;
+ }
+
+ public void prepare()
+ throws ProjectBuildingException, ArtifactMetadataRetrievalException
+ {
+ configuration = appConfigurationStore.getConfiguration();
+
+ companyModel = companyPomHandler.getCompanyPomModel( configuration.getCompanyPom(), createLocalRepository() );
+ }
+
+ public SecureActionBundle getSecureActionBundle()
+ throws SecureActionException
+ {
+ SecureActionBundle bundle = new SecureActionBundle();
+ bundle.setRequiresAuthentication( true );
+ bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
+
+ return bundle;
+ }
+
+ public Model getCompanyModel()
+ {
+ return companyModel;
+ }
+}
--- /dev/null
+package org.apache.maven.archiva.web.action.admin.appearance;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.opensymphony.xwork.ModelDriven;
+import com.opensymphony.xwork.Preparable;
+
+import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.apache.maven.artifact.installer.ArtifactInstallationException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.shared.app.company.CompanyPomHandler;
+import org.apache.maven.shared.app.configuration.CompanyPom;
+import org.apache.maven.shared.app.configuration.Configuration;
+import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
+import org.codehaus.plexus.security.rbac.Resource;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureAction;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
+import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
+
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id: ConfigurationAction.java 480950 2006-11-30 14:58:35Z evenisse $
+ *
+ * @plexus.component role="com.opensymphony.xwork.Action"
+ * role-hint="editPom"
+ */
+public class EditPomAction
+ extends AbstractAppearanceAction
+ implements ModelDriven, SecureAction, Preparable
+{
+ /**
+ * @plexus.requirement
+ */
+ private MavenAppConfiguration appConfigurationStore;
+
+ /**
+ * The configuration.
+ */
+ private Configuration configuration;
+
+ /**
+ * @plexus.requirement
+ */
+ private CompanyPomHandler companyPomHandler;
+
+ private Model companyModel;
+
+ public String execute()
+ throws IOException, ArtifactInstallationException
+ {
+ // TODO: hack for passed in String[]
+ String[] logo = (String[]) companyModel.getProperties().get( "organization.logo" );
+ if ( logo != null )
+ {
+ companyModel.getProperties().put( "organization.logo", logo[0] );
+ }
+
+ companyPomHandler.save( companyModel, createLocalRepository() );
+
+ return SUCCESS;
+ }
+
+ public Object getModel()
+ {
+ return companyModel;
+ }
+
+ public void prepare()
+ throws ProjectBuildingException, ArtifactMetadataRetrievalException
+ {
+ configuration = appConfigurationStore.getConfiguration();
+
+ CompanyPom companyPom = configuration.getCompanyPom();
+ companyModel = companyPomHandler.getCompanyPomModel( companyPom, createLocalRepository() );
+
+ if ( companyModel == null )
+ {
+ companyModel = new Model();
+ companyModel.setModelVersion( "4.0.0" );
+ companyModel.setPackaging( "pom" );
+
+ if ( companyPom != null )
+ {
+ companyModel.setGroupId( companyPom.getGroupId() );
+ companyModel.setArtifactId( companyPom.getArtifactId() );
+ }
+ }
+ }
+
+ public SecureActionBundle getSecureActionBundle()
+ throws SecureActionException
+ {
+ SecureActionBundle bundle = new SecureActionBundle();
+ bundle.setRequiresAuthentication( true );
+ bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
+
+ return bundle;
+ }
+
+ public Model getCompanyModel()
+ {
+ return companyModel;
+ }
+}
+++ /dev/null
-package org.apache.maven.archiva.web.action.component;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// TODO import org.apache.maven.model.Model;
-// import org.apache.maven.shared.app.company.CompanyPomHandler;
-// import org.apache.maven.shared.app.configuration.MavenAppConfiguration;
-import org.codehaus.plexus.xwork.action.PlexusActionSupport;
-
-/**
- * Stores the company information for displaying on the page.
- *
- * @TODO plexus.component role="com.opensymphony.xwork.Action" role-hint="companyInfo"
- */
-public class CompanyInfoAction
- extends PlexusActionSupport
-{
- private String companyLogo;
-
- private String companyUrl;
-
- private String companyName;
-
- /**
- * @TODO plexus.requirement
- */
- // private CompanyPomHandler handler;
-
- /**
- * @TODO plexus.requirement
- */
- // private MavenAppConfiguration appConfigurationStore;
-
- public String execute()
- throws Exception
- {
- /* TODO
- Model model = handler.getCompanyPomModel( appConfigurationStore.getConfiguration().getCompanyPom(),
- createLocalRepository() );
-
- if ( model != null )
- {
- if ( model.getOrganization() != null )
- {
- companyName = model.getOrganization().getName();
- companyUrl = model.getOrganization().getUrl();
- }
-
- companyLogo = model.getProperties().getProperty( "organization.logo" );
- }*/
-
- return SUCCESS;
- }
-
- public String getCompanyLogo()
- {
- return companyLogo;
- }
-
- public String getCompanyUrl()
- {
- return companyUrl;
- }
-
- public String getCompanyName()
- {
- return companyName;
- }
-}
\ No newline at end of file
implements EnvironmentCheck
{
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
implements Interceptor
{
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
implements RegistryListener, Initializable
{
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
extends Component
{
/**
- * @plexus.requirement
+ * @plexus.requirement role-hint="jdo"
*/
private ArchivaDAO dao;
<!-- TODO: can we send them back to the original location afterwards? -->
<result name="config-needed" type="redirect-action">
<param name="namespace">/admin</param>
- <param name="actionName">configure</param>
+ <param name="actionName">repositories</param>
</result>
<!-- This redirect is triggered by the configuration interceptor -->
<!-- Configuration for the admin package. -->
<package name="admin" namespace="/admin" extends="base">
-
- <action name="index" class="configureAction" method="input">
- <result name="input">/WEB-INF/jsp/admin/index.jsp</result>
+
+ <action name="index" class="repositoriesAction" method="input">
+ <result name="input">/WEB-INF/jsp/admin/repositories.jsp</result>
</action>
-
- <action name="managedRepositories" class="configureAction" method="input">
- <result name="input">/WEB-INF/jsp/admin/managedRepositories.jsp</result>
+
+ <action name="repositories" class="repositoriesAction" method="input">
+ <result name="input">/WEB-INF/jsp/admin/repositories.jsp</result>
</action>
<action name="addRepository" class="configureRepositoryAction" method="add">
<result type="redirect-action">managedRepositories</result>
</action>
- <action name="proxiedRepositories" class="configureAction" method="input">
- <result name="input">/WEB-INF/jsp/admin/proxiedRepositories.jsp</result>
- </action>
-
- <action name="addProxiedRepository" class="configureProxiedRepositoryAction" method="add">
- <result name="input">/WEB-INF/jsp/admin/addProxiedRepository.jsp</result>
- <result type="redirect-action">proxiedRepositories</result>
- </action>
-
- <action name="editProxiedRepository" class="configureProxiedRepositoryAction" method="edit">
- <result name="input">/WEB-INF/jsp/admin/editProxiedRepository.jsp</result>
- <result type="redirect-action">proxiedRepositories</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
-
- <action name="deleteProxiedRepository" class="deleteProxiedRepositoryAction">
- <result name="input">/WEB-INF/jsp/admin/deleteProxiedRepository.jsp</result>
- <result type="redirect-action">proxiedRepositories</result>
- </action>
-
- <action name="syncedRepositories" class="configureAction" method="input">
- <result name="input">/WEB-INF/jsp/admin/syncedRepositories.jsp</result>
- </action>
-
- <action name="addSyncedRepository" class="configureSyncedRepositoryAction">
- <result name="input">/WEB-INF/jsp/admin/selectSyncedRepository.jsp</result>
- <result type="chain">
- <param name="actionName">addSelectedSyncedRepository</param>
- <param name="method">input</param>
- </result>
- </action>
-
- <action name="addSelectedSyncedRepository" class="configureSyncedRepositoryAction" method="add">
- <result name="input">/WEB-INF/jsp/admin/addSyncedRepository.jsp</result>
- <result type="redirect-action">syncedRepositories</result>
- </action>
-
- <action name="editSyncedRepository" class="configureSyncedRepositoryAction" method="edit">
- <result name="input">/WEB-INF/jsp/admin/editSyncedRepository.jsp</result>
- <result type="redirect-action">syncedRepositories</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
-
- <action name="deleteSyncedRepository" class="deleteSyncedRepositoryAction">
- <result name="input">/WEB-INF/jsp/admin/deleteSyncedRepository.jsp</result>
- <result type="redirect-action">syncedRepositories</result>
- </action>
-
<action name="configure" class="configureAction" method="input">
<result name="input">/WEB-INF/jsp/admin/configure.jsp</result>
<interceptor-ref name="unconfiguredStack"/>
<interceptor-ref name="unconfiguredStack"/>
</action>
- <action name="runIndexer" class="runRepositoryTaskAction" method="runRefresh">
- <result type="redirect-action">index</result>
- </action>
-
<action name="reports" class="reportsAction">
<result>/WEB-INF/jsp/reports/reports.jsp</result>
</action>
<result name="wait" type="redirect">/admin/reports.action?reportGroup=${reportGroup}&repositoryId=${repositoryId}&filter=${filter}</result>
<result name="success" type="redirect">/admin/reports.action?reportGroup=${reportGroup}&repositoryId=${repositoryId}&filter=${filter}</result>
</action>
+
+ <!-- The following are needed by the maven-app-configuration-web artifact -->
<action name="configureAppearance" class="configureAppearance" method="input">
<result name="input">/WEB-INF/jsp/admin/appearance.jsp</result>
--- /dev/null
+<%--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ --%>
+
+<%@ taglib prefix="ww" uri="/webwork" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="pss" uri="/plexusSecuritySystem" %>
+
+<html>
+<head>
+ <title>Administration - Repositories</title>
+ <ww:head/>
+</head>
+
+<body>
+
+<h1>Administration - Repositories</h1>
+
+<div id="contentArea">
+
+<div>
+ <div style="float: right">
+ <%-- TODO replace with icons --%>
+ <pss:ifAuthorized permission="archiva-manage-configuration">
+ <ww:url id="addRepositoryUrl" action="addRepository" method="input"/>
+ <ww:a href="%{addRepositoryUrl}">Add Repository</ww:a>
+ </pss:ifAuthorized>
+ </div>
+ <h2>Managed Repositories</h2>
+</div>
+
+<ww:set name="repositories" value="model.repositories"/>
+<c:if test="${empty(repositories)}">
+ <strong>There are no managed repositories configured yet.</strong>
+</c:if>
+
+<%--
+<c:forEach items="${repositories}" var="repository" varStatus="i">
+
+ <div>
+ <div style="float: right">
+ <pss:ifAnyAuthorized permissions="archiva-manage-configuration">
+ <ww:url id="editRepositoryUrl" action="editRepository" method="input">
+ <ww:param name="repoId" value="%{'${repository.id}'}"/>
+ </ww:url>
+ <ww:url id="deleteRepositoryUrl" action="deleteRepository" method="input">
+ <ww:param name="repoId" value="%{'${repository.id}'}"/>
+ </ww:url>
+ <ww:a href="%{editRepositoryUrl}">Edit Repository</ww:a>
+ <ww:a href="%{deleteRepositoryUrl}">Delete Repository</ww:a>
+ </pss:ifAnyAuthorized>
+ </div>
+ <h3>${repository.name}</h3>
+ <table class="infoTable">
+ <tr>
+ <th>Identifier</th>
+ <td>
+ <code>${repository.id}</code>
+ </td>
+ </tr>
+ <tr>
+ <th>Directory</th>
+ <td>${repository.directory}</td>
+ </tr>
+ <tr>
+ <th>WebDAV URL</th>
+ <td><a href="${urlbase}${repository.urlName}/">${urlbase}${repository.urlName}/</a></td>
+ </tr>
+ <tr>
+ <th>Type</th>
+ <% - - TODO: can probably just use layout appended to a key prefix in i18n to simplify this - - %>
+ <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>
+ </tr>
+ <tr>
+ <th>Snapshots Included</th>
+ <td class="${repository.includeSnapshots ? 'donemark' : 'errormark'} booleanIcon"> ${repository.includeSnapshots}</td>
+ </tr>
+ <tr>
+ <th>Indexed</th>
+ <td class="${repository.indexed ? 'donemark' : 'errormark'} booleanIcon"> ${repository.indexed}</td>
+ </tr>
+ <tr>
+ <th>POM Snippet</th>
+ <td><a href="#" onclick="Effect.toggle('repoPom${repository.id}','slide'); return false;">Show POM Snippet</a><br/>
+ <% - - DO NOT REFORMAT THIS SECTION - - %>
+<pre class="pom" style="display: none;" id="repoPom${repository.id}"><code><project>
+ ...
+ <distributionManagement>
+ <${repository.includeSnapshots ? 'snapshotRepository' : 'repository'}>
+ <id>${repository.id}</id>
+ <url>dav:${urlbase}${repository.urlName}</url>
+ <c:if test="${repository.layout != 'default'}">
+ <layout>${repository.layout}</layout>
+ </c:if>
+ </${repository.includeSnapshots ? 'snapshotRepository' : 'repository'}>
+ </distributionManagement>
+
+ <repositories>
+ <repository>
+ <id>${repository.id}</id>
+ <name>${repository.name}</name>
+ <url>${urlbase}${repository.urlName}/</url>
+ <c:if test="${repository.layout != 'default'}">
+ <layout>${repository.layout}</layout>
+ </c:if>
+ <releases>
+ <enabled>${repository.includeSnapshots ? 'false' : 'true'}</enabled>
+ </releases>
+ <snapshots>
+ <enabled>${repository.includeSnapshots ? 'true' : 'false'}</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ ...
+ </project>
+</code></pre>
+ </td>
+ </tr>
+ </table>
+ </div>
+</c:forEach>
+ --%>
+</div>
+
+</body>
+</html>