You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2009/03/10 03:33:18 UTC
svn commit: r751970 - in /continuum/branches/continuum-1.2.x:
continuum-api/src/main/java/org/apache/maven/continuum/profile/
continuum-commons/src/main/java/org/apache/continuum/installation/
continuum-commons/src/main/java/org/apache/continuum/profil...
Author: ctan
Date: Tue Mar 10 02:33:17 2009
New Revision: 751970
URL: http://svn.apache.org/viewvc?rev=751970&view=rev
Log:
[CONTINUUM-2058] [CONTINUUM-2059]
- redirect to installations list page after editing installation
- catch duplicate profile name error and display error properly
Submitted By: Jose Morales Martinez
Modified:
continuum/branches/continuum-1.2.x/continuum-api/src/main/java/org/apache/maven/continuum/profile/ProfileService.java
continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/installation/DefaultInstallationService.java
continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/profile/DefaultProfileService.java
continuum/branches/continuum-1.2.x/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/InstallationAction.java
continuum/branches/continuum-1.2.x/continuum-webapp/src/main/resources/localization/Continuum.properties
continuum/branches/continuum-1.2.x/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/editInstallation.jsp
Modified: continuum/branches/continuum-1.2.x/continuum-api/src/main/java/org/apache/maven/continuum/profile/ProfileService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.2.x/continuum-api/src/main/java/org/apache/maven/continuum/profile/ProfileService.java?rev=751970&r1=751969&r2=751970&view=diff
==============================================================================
--- continuum/branches/continuum-1.2.x/continuum-api/src/main/java/org/apache/maven/continuum/profile/ProfileService.java (original)
+++ continuum/branches/continuum-1.2.x/continuum-api/src/main/java/org/apache/maven/continuum/profile/ProfileService.java Tue Mar 10 02:33:17 2009
@@ -1,10 +1,10 @@
package org.apache.maven.continuum.profile;
+import java.util.List;
+
import org.apache.maven.continuum.model.system.Installation;
import org.apache.maven.continuum.model.system.Profile;
-import java.util.List;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -69,10 +69,10 @@
public void addEnvVarInProfile( Profile profile, Installation envVar )
throws ProfileException;
-
+
public void addInstallationInProfile( Profile profile, Installation installation )
throws ProfileException;
-
+
/**
* @param profile
* @param installation
@@ -81,7 +81,10 @@
*/
public void removeInstallationFromProfile( Profile profile, Installation installation )
throws ProfileException;
-
+
public Profile getProfileWithName( String profileName )
throws ProfileException;
+
+ public boolean alreadyExistsProfileName( Profile profile )
+ throws ProfileException;
}
Modified: continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/installation/DefaultInstallationService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/installation/DefaultInstallationService.java?rev=751970&r1=751969&r2=751970&view=diff
==============================================================================
--- continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/installation/DefaultInstallationService.java (original)
+++ continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/installation/DefaultInstallationService.java Tue Mar 10 02:33:17 2009
@@ -19,6 +19,16 @@
* under the License.
*/
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
import org.apache.continuum.dao.InstallationDao;
import org.apache.maven.continuum.execution.ExecutorConfigurator;
import org.apache.maven.continuum.installation.AlreadyExistsInstallationException;
@@ -39,16 +49,6 @@
import org.codehaus.plexus.util.cli.Commandline;
import org.codehaus.plexus.util.cli.StreamConsumer;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
/**
* @author <a href="mailto:olamy@codehaus.org">olamy</a>
* @version $Id: DefaultInstallationService.java 684085 2008-08-08 20:48:14Z evenisse $
@@ -117,6 +117,23 @@
throw new AlreadyExistsInstallationException(
"Installation with name " + installation.getName() + " already exists" );
}
+ else if ( automaticProfile )
+ {
+ Profile profile = new Profile();
+ profile.setName( installation.getName() );
+ try
+ {
+ if ( profileService.alreadyExistsProfileName( profile ) )
+ {
+ throw new AlreadyExistsProfileException( "Profile with name " + installation.getName()
+ + " already exists" );
+ }
+ }
+ catch ( ProfileException e )
+ {
+ throw new InstallationException( "failed to search Profile " + e.getMessage(), e );
+ }
+ }
// TODO must be done in the same transaction
Installation storedOne = null;
try
@@ -205,7 +222,7 @@
* @see org.apache.maven.continuum.installation.InstallationService#update(org.apache.maven.continuum.model.system.Installation)
*/
public void update( Installation installation )
- throws InstallationException
+ throws InstallationException, AlreadyExistsInstallationException
{
try
{
@@ -216,6 +233,11 @@
}
stored.setName( installation.getName() );
+ if ( alreadyExistInstallationName( installation ) )
+ {
+ throw new AlreadyExistsInstallationException(
+ "Installation with name " + installation.getName() + " already exists" );
+ }
stored.setType( installation.getType() );
String envVarName = this.getEnvVar( installation.getType() );
// override with the defined var name for defined types
@@ -451,7 +473,8 @@
List<Installation> all = getAllInstallations();
for ( Installation install : all )
{
- if ( org.apache.commons.lang.StringUtils.equals( installation.getName(), install.getName() ) )
+ if ( org.apache.commons.lang.StringUtils.equals( installation.getName(), install.getName() )
+ && ( installation.getInstallationId() == 0 || installation.getInstallationId() != install.getInstallationId() ) )
{
return true;
}
Modified: continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/profile/DefaultProfileService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/profile/DefaultProfileService.java?rev=751970&r1=751969&r2=751970&view=diff
==============================================================================
--- continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/profile/DefaultProfileService.java (original)
+++ continuum/branches/continuum-1.2.x/continuum-commons/src/main/java/org/apache/continuum/profile/DefaultProfileService.java Tue Mar 10 02:33:17 2009
@@ -19,6 +19,9 @@
* under the License.
*/
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.commons.lang.StringUtils;
import org.apache.continuum.dao.ProfileDao;
import org.apache.maven.continuum.installation.InstallationService;
@@ -30,9 +33,6 @@
import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
import org.apache.maven.continuum.store.ContinuumStoreException;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* @author <a href="mailto:olamy@codehaus.org">olamy</a>
* @version $Id: DefaultProfileService.java 698412 2008-09-24 01:55:19Z ctan $
@@ -307,7 +307,7 @@
* @return true if profile with same name (<b>case sensitive</b>) exists
* @throws ProfileException
*/
- private boolean alreadyExistsProfileName( Profile profile )
+ public boolean alreadyExistsProfileName( Profile profile )
throws ProfileException
{
return getProfileWithName( profile.getName() ) != null;
Modified: continuum/branches/continuum-1.2.x/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/InstallationAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.2.x/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/InstallationAction.java?rev=751970&r1=751969&r2=751970&view=diff
==============================================================================
--- continuum/branches/continuum-1.2.x/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/InstallationAction.java (original)
+++ continuum/branches/continuum-1.2.x/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/InstallationAction.java Tue Mar 10 02:33:17 2009
@@ -9,12 +9,14 @@
import org.apache.maven.continuum.installation.AlreadyExistsInstallationException;
import org.apache.maven.continuum.installation.InstallationService;
import org.apache.maven.continuum.model.system.Installation;
+import org.apache.maven.continuum.profile.AlreadyExistsProfileException;
import org.apache.maven.continuum.security.ContinuumRoleConstants;
import org.apache.maven.continuum.web.action.ContinuumActionSupport;
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.util.StringUtils;
import com.opensymphony.xwork.Preparable;
@@ -61,21 +63,21 @@
private List<String> types;
private boolean varNameUpdatable = false;
-
+
private boolean automaticProfile;
-
+
private boolean varNameDisplayable = false;
-
+
private boolean displayTypes = true;
-
+
private String installationType;
-
+
private Map<String, String> installationTypes;
-
+
private static final String TOOL_TYPE_KEY = "tool";
-
+
private boolean automaticProfileDisplayable = true;
-
+
// -----------------------------------------------------
// Webwork methods
// -----------------------------------------------------
@@ -125,6 +127,12 @@
if ( InstallationService.ENVVAR_TYPE.equalsIgnoreCase( this.getInstallationType() ) )
{
this.installation.setType( InstallationService.ENVVAR_TYPE );
+ if ( StringUtils.isEmpty( installation.getVarName() ) )
+ {
+ addFieldError( "installation.varName", getResourceBundle().getString( "installation.varName.required" ) );
+ return INPUT;
+ }
+
}
if ( installation.getInstallationId() == 0 )
{
@@ -137,14 +145,24 @@
this.addActionError( getResourceBundle().getString( "installation.name.duplicate" ) );
return INPUT;
}
+ catch ( AlreadyExistsProfileException e )
+ {
+ this.addActionError( getResourceBundle().getString( "profile.name.already.exists" ) );
+ return INPUT;
+ }
}
else
{
this.configureUiFlags();
- installationService.update( installation );
- return "edit";
+ try{
+ installationService.update( installation );
+ }
+ catch ( AlreadyExistsInstallationException e )
+ {
+ this.addActionError( getResourceBundle().getString( "installation.name.duplicate" ) );
+ return INPUT;
+ }
}
- this.configureUiFlags();
return SUCCESS;
}
@@ -166,11 +184,11 @@
return SUCCESS;
}
-
+
// -----------------------------------------------------
// security
- // -----------------------------------------------------
-
+ // -----------------------------------------------------
+
public SecureActionBundle getSecureActionBundle()
throws SecureActionException
{
@@ -183,7 +201,7 @@
// -----------------------------------------------------
// utils
- // -----------------------------------------------------
+ // -----------------------------------------------------
private void configureUiFlags()
{
// we can update env var name only with env var type
@@ -200,8 +218,8 @@
}
this.setInstallationType( this.getInstallation().getType() );
}
-
-
+
+
// -----------------------------------------------------
// getter/setters
// -----------------------------------------------------
@@ -341,6 +359,6 @@
public void setAutomaticProfileDisplayable( boolean automaticProfileDisplayable )
{
this.automaticProfileDisplayable = automaticProfileDisplayable;
- }
-
+ }
+
}
Modified: continuum/branches/continuum-1.2.x/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.2.x/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=751970&r1=751969&r2=751970&view=diff
==============================================================================
--- continuum/branches/continuum-1.2.x/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/branches/continuum-1.2.x/continuum-webapp/src/main/resources/localization/Continuum.properties Tue Mar 10 02:33:17 2009
@@ -742,6 +742,7 @@
installation.ant.type.label = ANT
installation.automaticProfile.label=Create a Build Environment with the Installation name
installation.name.duplicate = Installation name already exists.
+installation.varName.required = You must define an environment variable
# ----------------------------------------------------------------------
# Page: Installations Type Choice
Modified: continuum/branches/continuum-1.2.x/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/editInstallation.jsp
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.2.x/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/editInstallation.jsp?rev=751970&r1=751969&r2=751970&view=diff
==============================================================================
--- continuum/branches/continuum-1.2.x/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/editInstallation.jsp (original)
+++ continuum/branches/continuum-1.2.x/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/editInstallation.jsp Tue Mar 10 02:33:17 2009
@@ -48,6 +48,9 @@
<tbody>
<ww:hidden name="installation.installationId" />
<ww:hidden name="installationType" />
+ <ww:hidden name="displayTypes" />
+ <ww:hidden name="varNameUpdatable" />
+ <ww:hidden name="varNameDisplayable" />
<ww:textfield label="%{getText('installation.name.label')}" name="installation.name"
required="true"/>
<ww:if test="displayTypes">
@@ -55,7 +58,7 @@
</ww:if>
<ww:if test="varNameUpdatable">
<ww:if test="varNameDisplayable">
- <ww:textfield label="%{getText('installation.varName.label')}" name="installation.varName" required="${varNameUpdatable}" />
+ <ww:textfield label="%{getText('installation.varName.label')}" name="installation.varName" required="true"/>
</ww:if>
</ww:if>
<ww:else>