import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.webwork.interceptor.ServletRequestAware;
*/
private String baseUrl;
+ private static final Pattern REPO_GROUP_ID_PATTERN = Pattern.compile( "[A-Za-z0-9\\._\\-]+" );
+
public void setServletRequest( HttpServletRequest request )
{
this.baseUrl = ContextUtils.getBaseURL( request, "repository" );
String repoGroupId = repositoryGroup.getId();
+ if( repoGroupId == null || "".equals( repoGroupId.trim() ) )
+ {
+ addActionError( "Identifier field is required." );
+ return ERROR;
+ }
+
+ if( repoGroupId.length() > 100 )
+ {
+ addActionError( "Identifier [" + repoGroupId + "] is over the maximum limit of 100 characters" );
+ return ERROR;
+ }
+
+ Matcher matcher = REPO_GROUP_ID_PATTERN.matcher( repoGroupId );
+ if( !matcher.matches() )
+ {
+ addActionError( "Invalid character(s) found in identifier. Only the following characters are allowed: alphanumeric, '.', '-' and '_'" );
+ return ERROR;
+ }
+
if ( StringUtils.isBlank( repoGroupId ) )
{
addActionError( "You must enter a repository group id." );
+ "], that id already exists as a remote repository." );
return ERROR;
}
-
- if( repoGroupId.length() > 100 )
- {
- addActionError( "Identifier [" + repoGroupId + "] is over the maximum limit of 100 characters" );
- return ERROR;
- }
configuration.addRepositoryGroup( repositoryGroup );
return saveConfiguration( configuration );