The webapp configuration.
</description>
</field>
+ <field>
+ <name>organisationInfo</name>
+ <version>1.1.0+</version>
+ <association>
+ <type>OrganisationInformation</type>
+ <multiplicity>1</multiplicity>
+ </association>
+ <description>
+ The organisation info.
+ </description>
+ </field>
</fields>
<codeSegments>
<codeSegment>
-->
+ <class>
+ <name>OrganisationInformation</name>
+ <version>1.1.0+</version>
+ <description>
+ The organisation information settings.
+ </description>
+ <fields>
+ <field>
+ <name>name</name>
+ <description>name of the organisation</description>
+ <version>1.1.0+</version>
+ <association>
+ <type>String</type>
+ </association>
+ </field>
+ <field>
+ <name>url</name>
+ <description>name of the organisation</description>
+ <version>1.1.0+</version>
+ <association>
+ <type>String</type>
+ </association>
+ </field>
+ <field>
+ <name>logoLocation</name>
+ <description>name of the organisation</description>
+ <version>1.1.0+</version>
+ <association>
+ <type>String</type>
+ </association>
+ </field>
+ </fields>
+ </class>
+
<class>
<name>WebappConfiguration</name>
<version>1.0.0+</version>
* 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.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.OrganisationInformation;
import org.codehaus.plexus.xwork.action.PlexusActionSupport;
-import java.io.File;
-import java.util.Map;
+import com.opensymphony.xwork.Preparable;
/**
* AbstractAppearanceAction
*/
public abstract class AbstractAppearanceAction
extends PlexusActionSupport
+ implements Preparable
{
/**
- * @plexus.requirement role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
- */
- private Map<String, ArtifactRepositoryLayout> repositoryLayouts;
-
- /**
+ * Archiva Application Configuration
* @plexus.requirement
*/
- private ArtifactRepositoryFactory repoFactory;
+ protected ArchivaConfiguration configuration;
+
+ private String organisationLogo;
- protected ArtifactRepository createLocalRepository()
+ private String organisationUrl;
+
+ private String organisationName;
+
+ public void setConfiguration(ArchivaConfiguration configuration)
+ {
+ this.configuration = configuration;
+ }
+
+ public String getOrganisationLogo()
{
- String id = "archiva-local-repo";
- String layout = "default";
- String directory = System.getProperty( "user.home" ) + "/.m2/archiva";
+ return organisationLogo;
+ }
- ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) repositoryLayouts.get( layout );
- File repository = new File( directory );
- repository.mkdirs();
+ public String getOrganisationName()
+ {
+ return organisationName;
+ }
- 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 )
+ public String getOrganisationUrl()
+ {
+ return organisationUrl;
+ }
+
+ public void setOrganisationLogo(String organisationLogo)
+ {
+ this.organisationLogo = organisationLogo;
+ }
+
+ public void setOrganisationName(String organisationName)
+ {
+ this.organisationName = organisationName;
+ }
+
+ public void setOrganisationUrl(String organisationUrl)
+ {
+ this.organisationUrl = organisationUrl;
+ }
+
+ public void prepare()
+ throws Exception
+ {
+ Configuration config = configuration.getConfiguration();
+ if (config != null)
{
- repoDir = StringUtils.replace( repoDir, "%20", " " );
+ OrganisationInformation orgInfo = config.getOrganisationInfo();
+ if (orgInfo != null)
+ {
+ setOrganisationLogo(orgInfo.getLogoLocation());
+ setOrganisationName(orgInfo.getName());
+ setOrganisationUrl(orgInfo.getUrl());
+ }
}
-
- 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.redback.rbac.Resource;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
-import org.codehaus.plexus.registry.RegistryException;
-
-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 org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
+
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
+import org.apache.maven.archiva.configuration.OrganisationInformation;
+import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.codehaus.plexus.redback.rbac.Resource;
+import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
+import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
+import org.codehaus.plexus.registry.RegistryException;
+
+/**
+ * @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="editOrganisationInfo"
+ */
+public class EditOrganisationInfoAction
+ extends AbstractAppearanceAction
+ implements SecureAction
+{
+ @Override
+ public String execute()
+ throws RegistryException, IndeterminateConfigurationException
+ {
+ Configuration config = configuration.getConfiguration();
+ if (config != null)
+ {
+ OrganisationInformation orgInfo = config.getOrganisationInfo();
+ if (orgInfo == null)
+ {
+ config.setOrganisationInfo(orgInfo);
+ }
+
+ orgInfo.setLogoLocation(getOrganisationLogo());
+ orgInfo.setName(getOrganisationName());
+ orgInfo.setUrl(getOrganisationUrl());
+
+ configuration.save(config);
+ }
+ return SUCCESS;
+ }
+
+ public SecureActionBundle getSecureActionBundle()
+ throws SecureActionException
+ {
+ SecureActionBundle bundle = new SecureActionBundle();
+ bundle.setRequiresAuthentication( true );
+ bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
+ return bundle;
+ }
+}
+++ /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.redback.rbac.Resource;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
-import org.codehaus.plexus.redback.xwork.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.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.
+ */
+
+/**
+ * Stores the organisation information for displaying on the page.
+ *
+ * @plexus.component role="com.opensymphony.xwork.Action" role-hint="organisationInfo"
+ */
+public class OrganisationInfoAction
+ extends AbstractAppearanceAction
+{
+}
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
- <field name="companyPom.groupId">
- <field-validator type="requiredstring">
- <message key="appearance.groupId.required"/>
+ <field name="organisationUrl">
+ <field-validator type="url">
+ <message key="appearance.organisation.url"/>
</field-validator>
</field>
- <field name="companyPom.artifactId">
- <field-validator type="requiredstring">
- <message key="appearance.artifactId.required"/>
+ <field name="organisationLogo">
+ <field-validator type="url">
+ <message key="appearance.organisation.logourl"/>
</field-validator>
</field>
</validators>
\ No newline at end of file
# under the License.
#
-appearance.groupId.required = You must define a group identifier.
-appearance.artifactId.required = You must define an artifact identifier.
\ No newline at end of file
+appearance.organisation.url = You must define an organisation url."
+appearance.organisation.logourl = You must define an organisation logo url."
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ ~ 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 validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
+ "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
+
+<validators>
+ <field name="organisationName">
+ <field-validator type="requiredstring">
+ <message>You must enter a name</message>
+ </field-validator>
+ </field>
+ <field name="organisationUrl">
+ <field-validator type="url">
+ <message>You must enter a URL</message>
+ </field-validator>
+ </field>
+ <field name="organisationLogo">
+ <field-validator type="url">
+ <message>You must enter a URL</message>
+ </field-validator>
+ </field>
+</validators>
\ No newline at end of file
<package name="components" namespace="/components" extends="webwork-default">
<default-interceptor-ref name="basicStack"/>
- <action name="companyInfo" class="companyInfo">
+ <action name="companyInfo" class="organisationInfo">
<result>/WEB-INF/jsp/components/companyLogo.jsp</result>
</action>
</package>
<!-- .\ CONFIGURATION \.___________________________________________ -->
- <!-- 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>
+ <action name="configureAppearance" class="organisationInfo">
+ <result name="success">/WEB-INF/jsp/admin/appearance.jsp</result>
</action>
- <action name="editAppearance" class="configureAppearance" method="input">
+ <action name="editAppearance" class="editOrganisationInfo" method="input">
<result name="input">/WEB-INF/jsp/admin/editAppearance.jsp</result>
</action>
- <action name="saveAppearance" class="configureAppearance">
+ <action name="saveAppearance" class="editOrganisationInfo">
<result name="input">/WEB-INF/jsp/admin/editAppearance.jsp</result>
<result type="redirect-action">
<param name="actionName">configureAppearance</param>
</result>
</action>
- <action name="editCompanyPom" class="editPom" method="input">
- <result name="input">/WEB-INF/jsp/admin/editPom.jsp</result>
- </action>
-
- <action name="saveCompanyPom" class="editPom">
- <result name="input">/WEB-INF/jsp/admin/editPom.jsp</result>
- <result type="redirect-action">
- <param name="actionName">configureAppearance</param>
- <param name="namespace">/admin</param>
- </result>
- </action>
-
<!-- .\ LEGACY SUPPORT \.__________________________________________ -->
<action name="legacyArtifactPath" class="legacyArtifactPathAction" method="input">
<%@ taglib prefix="ww" uri="/webwork" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
<html>
<head>
<title>Configure Appearance</title>
<div style="float: right">
<a href="<ww:url action='editAppearance' />">Edit</a>
</div>
-<h2>Company Details</h2>
+<h2>Organization Details</h2>
<p>
- The logo in the top right of the screen is controlled by your selected 'company POM'.
+ The logo in the top right of the screen is controlled by the following settings.
+ <a href="<ww:url action='editAppearance' />">Change your appearence</a>
</p>
-<ww:set name="companyPom" value="companyPom"/>
-
-<c:if test="${empty(companyPom.groupId) || empty(companyPom.artifactId)}">
- <p>
- You have not yet specified a company POM. <a href="<ww:url action='editAppearance' />">Select a Company POM</a>
- </p>
-</c:if>
-
-<c:if test="${!empty(companyPom.groupId) && !empty(companyPom.artifactId)}">
- <p>
- Your selected company POM is below. If you would like to change the organization name, url or logo, you can
- <a href="<ww:url action='editCompanyPom'/>">edit the POM</a>.
- </p>
-
- <ww:set name="companyModel" value="companyModel"/>
- <table>
- <ww:label name="companyPom.groupId" label="Group ID"/>
- <ww:label name="companyPom.artifactId" label="Artifact ID"/>
- <c:if test="${companyModel != null}">
- <ww:label name="companyModel.version" label="Version"/>
- </c:if>
- </table>
-
- <div style="float: right">
- <a href="<ww:url action='editCompanyPom' />">Edit Company POM</a>
- </div>
- <h3>POM Information</h3>
-
- <c:choose>
- <c:when test="${companyModel != null}">
+<h3>Organization Information</h3>
<table>
<tr>
<th>Name</th>
- <td>${companyModel.organization.name}</td>
+ <td>${organisationName}</td>
</tr>
<tr>
<th>URL</th>
- <td><a href="${companyModel.organization.url}">
- <code>${companyModel.organization.url}</code>
+ <td><a href="${organisationUrl}">
+ <code>${organisationUrl}</code>
</a></td>
</tr>
<tr>
<th>Logo URL</th>
<td>
- <code>${companyModel.properties['organization.logo']}</code>
+ <code>${organisationLogo}</code>
+ </td>
+ </tr>
+ <tr>
+ <th> </th>
+ <td>
+ <img src="${organisationLogo}" title="${organisationName}" border="0" alt=""/>
</td>
</tr>
</table>
- </c:when>
- <c:otherwise>
- Company POM '${companyPom.groupId}:${companyPom.artifactId}' doesn't exist.
- <a href="<ww:url action='editCompanyPom' />">Create company POM</a>
- </c:otherwise>
- </c:choose>
-</c:if>
</body>
</html>
<body>
<h1>Appearance</h1>
-<h2>Company Details</h2>
+<h2>Organization Details</h2>
<p>
- Enter the details of the company super POM below. If it exists, the organization name, URL and logo will be read
- from it.
+ Enter the details of your organization below.
</p>
+<ww:set name="editOrganisationInfo" value="editOrganisationInfo"/>
<ww:actionmessage/>
<ww:form method="post" action="saveAppearance" namespace="/admin" validate="true" theme="xhtml">
- <ww:textfield name="companyPom.groupId" label="Group ID"/>
- <ww:textfield name="companyPom.artifactId" label="Artifact ID"/>
+ <ww:textfield name="organisationName" value="${organisationName}" label="Name" size="50" />
+ <ww:textfield name="organisationUrl" value="${organisationUrl}" label="URL" size="50"/>
+ <ww:textfield name="organisationLogo" value="${organisationLogo}" label="Logo URL" size="50" />
<ww:submit value="Save"/>
</ww:form>
</body>
-</html>
\ No newline at end of file
+</html>
+++ /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" %>
-<html>
-<head>
- <title>Edit Company POM</title>
- <ww:head/>
-</head>
-
-<body>
-<h1>Company POM</h1>
-
-<ww:actionmessage/>
-<ww:form method="post" action="saveCompanyPom" namespace="/admin" validate="true" theme="xhtml">
- <ww:label name="companyModel.groupId" label="Group ID"/>
- <ww:label name="companyModel.artifactId" label="Artifact ID"/>
- <tr>
- <td>Version</td>
- <td>
- <ww:property value="companyModel.version"/>
- <i>(The version will automatically be incremented when you save this form)</i>
- </td>
- </tr>
- <tr>
- <td></td>
- <td><h2>Organization</h2></td>
- </tr>
- <ww:textfield name="companyModel.organization.name" size="40" label="Name"/>
- <ww:textfield name="companyModel.organization.url" size="70" label="URL"/>
- <%-- TODO: how to get it to be a string, not a String[]? --%>
- <ww:textfield name="companyModel.properties['organization.logo']" size="70" label="Logo URL"/>
- <ww:submit value="Save"/>
-</ww:form>
-
-</body>
-</html>
\ No newline at end of file
<%@ taglib uri="/webwork" prefix="ww" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<ww:set name="companyLogo" value="companyLogo"/>
-<c:if test="${!empty(companyLogo)}">
- <ww:set name="companyUrl" value="companyUrl"/>
+<c:if test="${!empty(organisationLogo)}">
+ <ww:set name="organisationUrl" value="organisationUrl"/>
<c:choose>
- <c:when test="${!empty(companyUrl)}">
+ <c:when test="${!empty(organisationUrl)}">
<a href="${companyUrl}">
- <img src="${companyLogo}" title="${companyName}" border="0" alt=""/>
+ <img src="${organisationLogo}" title="${organisationName}" border="0" alt=""/>
</a>
</c:when>
<c:otherwise>
- <img src="${companyLogo}" title="${companyName}" border="0" alt=""/>
+ <img src="${organisationLogo}" title="${organisationName}" border="0" alt=""/>
</c:otherwise>
</c:choose>
</c:if>
--- /dev/null
+package org.apache.maven.archiva.web.action.admin.appearance;
+
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
+import org.easymock.MockControl;
+
+/**
+ * @author <a href="mailto:james@atlassian.com">James William Dumay</a>
+ */
+public abstract class AbstractOrganizationInfoActionTest extends AbstractWebworkTestCase
+{
+ protected MockControl archivaConfigurationControl;
+
+ protected ArchivaConfiguration configuration;
+
+ protected AbstractAppearanceAction action;
+
+ protected Configuration config;
+
+ protected abstract AbstractAppearanceAction getAction();
+
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ config = new Configuration();
+ archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
+ configuration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
+
+ configuration.getConfiguration();
+ archivaConfigurationControl.setReturnValue(config, 1, 2);
+
+ configuration.save(config);
+ archivaConfigurationControl.setVoidCallable(1, 2);
+
+ archivaConfigurationControl.replay();
+ }
+
+ protected void reloadAction()
+ {
+ action = getAction();
+ action.setConfiguration( configuration );
+ }
+}
--- /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.Action;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.OrganisationInformation;
+import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
+import org.easymock.MockControl;
+
+/**
+ * @author <a href="mailto:james@atlassian.com">James William Dumay</a>
+ */
+public class EditOrganizationInfoActionTest extends AbstractOrganizationInfoActionTest
+{
+ public void testOrganisationInfoSaves()
+ throws Exception
+ {
+ config.setOrganisationInfo(new OrganisationInformation());
+ OrganisationInformation orginfo = config.getOrganisationInfo();
+ orginfo.setLogoLocation("LOGO");
+ orginfo.setName("NAME");
+ orginfo.setUrl("URL");
+
+ configuration.save(config);
+
+ reloadAction();
+
+ action.prepare();
+
+ assertEquals("LOGO", action.getOrganisationLogo());
+ assertEquals("NAME", action.getOrganisationName());
+ assertEquals("URL", action.getOrganisationUrl());
+
+ action.setOrganisationLogo("LOGO1");
+ action.setOrganisationName("NAME1");
+ action.setOrganisationUrl("URL1");
+
+ action.execute();
+
+ assertEquals("LOGO1", orginfo.getLogoLocation());
+ assertEquals("NAME1", orginfo.getName());
+ assertEquals("URL1", orginfo.getUrl());
+ }
+
+ @Override
+ protected AbstractAppearanceAction getAction()
+ {
+ return (EditOrganisationInfoAction) lookup( Action.class.getName(), "editOrganisationInfo" );
+ }
+}
--- /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.Action;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.OrganisationInformation;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.web.action.AbstractWebworkTestCase;
+
+/**
+ * @author <a href="mailto:james@atlassian.com">James William Dumay</a>
+ */
+public class OrganizationInfoActionTest extends AbstractOrganizationInfoActionTest
+{
+ public void testOrganisationInfoLoads()
+ throws Exception
+ {
+ config.setOrganisationInfo(new OrganisationInformation());
+ OrganisationInformation orginfo = config.getOrganisationInfo();
+ orginfo.setLogoLocation("LOGO");
+ orginfo.setName("NAME");
+ orginfo.setUrl("URL");
+
+ configuration.save(config);
+
+ reloadAction();
+
+ action.prepare();
+
+ assertEquals("URL", action.getOrganisationUrl());
+ assertEquals("NAME", action.getOrganisationName());
+ assertEquals("LOGO", action.getOrganisationLogo());
+ }
+
+ @Override
+ protected AbstractAppearanceAction getAction()
+ {
+ return (OrganisationInfoAction) lookup( Action.class.getName(), "organisationInfo" );
+ }
+}