MRM-829 - Replace Company POM feature with simple Appearence customisation

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@674161 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
James William Dumay 2008-07-05 08:40:27 +00:00
parent fcb46c3f29
commit 5378f9b2f5
17 changed files with 414 additions and 426 deletions

View File

@ -158,6 +158,17 @@
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>
@ -1034,6 +1045,40 @@
-->
<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>

View File

@ -19,14 +19,12 @@ package org.apache.maven.archiva.web.action.admin.appearance;
* 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
@ -36,35 +34,68 @@ import java.util.Map;
*/
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)
{
String id = "archiva-local-repo";
String layout = "default";
String directory = System.getProperty( "user.home" ) + "/.m2/archiva";
this.configuration = configuration;
}
public String getOrganisationLogo()
{
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 );
}
}

View File

@ -1,84 +0,0 @@
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;
}
}

View File

@ -19,84 +19,56 @@ package org.apache.maven.archiva.web.action.admin.appearance;
* 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.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;
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"
* role-hint="editOrganisationInfo"
*/
public class ConfigureAppearanceAction
public class EditOrganisationInfoAction
extends AbstractAppearanceAction
implements ModelDriven, SecureAction, Preparable
implements SecureAction
{
/**
* @plexus.requirement
*/
private MavenAppConfiguration appConfigurationStore;
/**
* The configuration.
*/
private Configuration configuration;
private Model companyModel;
/**
* @plexus.requirement
*/
private CompanyPomHandler companyPomHandler;
@Override
public String execute()
throws IOException, RegistryException
throws RegistryException, IndeterminateConfigurationException
{
appConfigurationStore.save( configuration );
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 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;
}
}

View File

@ -1,125 +0,0 @@
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;
}
}

View File

@ -0,0 +1,30 @@
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
{
}

View File

@ -22,14 +22,14 @@
"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>

View File

@ -17,5 +17,5 @@
# under the License.
#
appearance.groupId.required = You must define a group identifier.
appearance.artifactId.required = You must define an artifact identifier.
appearance.organisation.url = You must define an organisation url."
appearance.organisation.logourl = You must define an organisation logo url."

View File

@ -0,0 +1,40 @@
<?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>

View File

@ -212,7 +212,7 @@
<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>
@ -432,17 +432,15 @@
<!-- .\ 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>
@ -450,18 +448,6 @@
</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">

View File

@ -19,6 +19,7 @@
<%@ taglib prefix="ww" uri="/webwork" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Configure Appearance</title>
@ -31,66 +32,37 @@
<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>&nbsp;</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>

View File

@ -27,19 +27,20 @@
<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>
</html>

View File

@ -1,53 +0,0 @@
<%--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
--%>
<%@ taglib prefix="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>

View File

@ -19,17 +19,16 @@
<%@ 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>

View File

@ -0,0 +1,47 @@
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 );
}
}

View File

@ -0,0 +1,69 @@
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" );
}
}

View File

@ -0,0 +1,58 @@
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" );
}
}