You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2011/01/09 20:47:05 UTC
svn commit: r1057007 - in /maven/plugins/trunk/maven-doap-plugin/src/main:
java/org/apache/maven/plugin/doap/DoapMojo.java mdo/doapOptions.mdo
Author: vsiveton
Date: Sun Jan 9 19:47:05 2011
New Revision: 1057007
URL: http://svn.apache.org/viewvc?rev=1057007&view=rev
Log:
o unify user messages using XML configuration
Modified:
maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java
maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo
Modified: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java?rev=1057007&r1=1057006&r2=1057007&view=diff
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java (original)
+++ maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java Sun Jan 9 19:47:05 2011
@@ -396,18 +396,11 @@ public class DoapMojo
private ExtOptions[] extOptions;
/**
- * All POM/DOAP error messages.
+ * All warn/error messages for the user.
*
* @since 1.1
*/
- private List<String> errorMessages = new ArrayList<String>();
-
- /**
- * All POM/DOAP warn messages.
- *
- * @since 1.1
- */
- private List<String> warnMessages = new ArrayList<String>();
+ private UserMessages messages = new UserMessages();
// ----------------------------------------------------------------------
// Public methods
@@ -576,14 +569,14 @@ public class DoapMojo
DoapUtil.writeStartElement( writer, "rdf", "RDF" );
if ( Arrays.binarySearch( Locale.getISOLanguages(), lang ) < 0 )
{
- throw new MojoExecutionException( "The <doapOptions><lang>" + lang
- + "</lang></doapOptions> parameter is not a valid ISO language." );
+ messages.addMessage( new String[] { "doapOptions", "lang" }, lang, UserMessages.INVALID_ISO_DATE );
+ throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
writer.addAttribute( "xml:lang", lang );
if ( StringUtils.isEmpty( doapOptions.getXmlnsNamespaceURI() ) )
{
- throw new MojoExecutionException( "The <doapOptions><xmlnsNamespaceURI/></doapOptions>"
- + " parameter is required." );
+ messages.addMessage( new String[] { "doapOptions", "xmlnsNamespaceURI" }, null, UserMessages.REQUIRED );
+ throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
writer.addAttribute( "xmlns"
+ ( StringUtils.isEmpty( doapOptions.getXmlnsPrefix() ) ? "" : ":"
@@ -594,13 +587,12 @@ public class DoapMojo
{
if ( StringUtils.isEmpty( asfExtOptions.getXmlnsPrefix() ) )
{
- throw new MojoExecutionException( "The <asfExtOptions><xmlnsPrefix/></asfExtOptions>"
- + " parameter is required." );
+ messages.addMessage( new String[] { "doapOptions", "xmlnsPrefix" }, null, UserMessages.REQUIRED );
+ throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
if ( StringUtils.isEmpty( asfExtOptions.getXmlnsNamespaceURI() ) )
{
- throw new MojoExecutionException( "The <asfExtOptions><xmlnsNamespaceURI/></asfExtOptions>"
- + " parameter is required." );
+ messages.addMessage( new String[] { "doapOptions", "xmlnsNamespaceURI" }, null, UserMessages.REQUIRED );
}
writer.addAttribute( "xmlns"
+ ( StringUtils.isEmpty( asfExtOptions.getXmlnsPrefix() ) ? "" : ":"
@@ -612,13 +604,15 @@ public class DoapMojo
{
if ( StringUtils.isEmpty( extOption.getXmlnsPrefix() ) )
{
- throw new MojoExecutionException( "The <extOptions><extOption><xmlnsPrefix/></extOption>"
- + "</extOptions> parameter is required." );
+ messages.addMessage( new String[] { "extOptions", "extOption", "xmlnsPrefix" }, null,
+ UserMessages.REQUIRED );
+ throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
if ( StringUtils.isEmpty( extOption.getXmlnsNamespaceURI() ) )
{
- throw new MojoExecutionException( "The <extOptions><extOption><xmlnsNamespaceURI/></extOption>"
- + "</extOptions> parameter is required." );
+ messages.addMessage( new String[] { "extOptions", "extOption", "xmlnsNamespaceURI" }, null,
+ UserMessages.REQUIRED );
+ throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
writer.addAttribute( "xmlns"
+ ( StringUtils.isEmpty( extOption.getXmlnsPrefix() ) ? "" : ":"
@@ -650,8 +644,8 @@ public class DoapMojo
if ( !added )
{
- warnMessages.add( "The project's url from " + artifact.toStringConfiguration()
- + " is empty or not valid, using <about/> parameter." );
+ messages.getWarnMessages().add( "The project's url defined from " + artifact.toConfiguration()
+ + " is empty or not valid, using <about/> parameter." );
}
}
@@ -667,15 +661,17 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <about/> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "about" }, null, UserMessages.INVALID_URL );
}
- }
- else
- {
- errorMessages.add( "The <about/> parameter is required." );
+ added = true;
}
}
+ if ( !added )
+ {
+ messages.addMessage( new String[] { "about" }, null, UserMessages.RECOMMENDED );
+ }
+
// name
writeName( writer, project );
@@ -747,7 +743,8 @@ public class DoapMojo
List<Contributor> developers = project.getDevelopers();
if ( developers == null || developers.isEmpty() )
{
- addPomMessage( "developers" );
+ messages.addMessage( new String[] { "project", "developers" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
}
else
{
@@ -785,18 +782,18 @@ public class DoapMojo
throw new MojoExecutionException( "Error when closing the writer.", e );
}
- if ( !warnMessages.isEmpty() )
+ if ( !messages.getWarnMessages().isEmpty() )
{
- for ( String warn : warnMessages )
+ for ( String warn : messages.getWarnMessages() )
{
getLog().warn( warn );
}
}
- if ( !errorMessages.isEmpty() )
+ if ( !messages.getErrorMessages().isEmpty() )
{
getLog().error( "" );
- for ( String error : errorMessages )
+ for ( String error : messages.getErrorMessages() )
{
getLog().error( error );
}
@@ -839,7 +836,7 @@ public class DoapMojo
String name = interpolate( doapOptions.getName(), project, settings );
if ( StringUtils.isEmpty( name ) )
{
- addDoapMessage( "name" );
+ messages.addMessage( new String[] { "doapOptions", "name" }, null, UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -869,7 +866,8 @@ public class DoapMojo
String description = interpolate( doapOptions.getDescription(), project, settings );
if ( StringUtils.isEmpty( description ) )
{
- addDoapMessage( "description" );
+ messages.addMessage( new String[] { "doapOptions", "description" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
}
else
{
@@ -882,7 +880,8 @@ public class DoapMojo
String shortdesc = interpolate( doapOptions.getShortdesc(), project, settings );
if ( StringUtils.isEmpty( shortdesc ) )
{
- addDoapMessage( "shortdesc" );
+ messages.addMessage( new String[] { "doapOptions", "shortdesc" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
if ( description.equals( shortdesc ) )
@@ -891,7 +890,8 @@ public class DoapMojo
String sentence = StringUtils.split( shortdesc, "." )[0];
if ( StringUtils.split( sentence, " " ).length > 10 )
{
- addDoapMessage( "shortdesc" );
+ messages.addMessage( new String[] { "doapOptions", "shortdesc" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
if ( !addComment )
@@ -920,7 +920,8 @@ public class DoapMojo
String created = interpolate( doapOptions.getCreated(), project, settings );
if ( StringUtils.isEmpty( created ) )
{
- addDoapMessage( "created" );
+ messages.addMessage( new String[] { "doapOptions", "created" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -930,8 +931,7 @@ public class DoapMojo
}
catch ( ParseException e )
{
- errorMessages.add( "The <doapOptions><created>" + created
- + "</created></doapOptions> parameter should be in YYYY-MM-DD." );
+ messages.addMessage( new String[] { "doapOptions", "created" }, null, UserMessages.INVALID_DATE );
return;
}
@@ -952,7 +952,8 @@ public class DoapMojo
String homepage = interpolate( doapOptions.getHomepage(), project, settings );
if ( StringUtils.isEmpty( homepage ) )
{
- addDoapMessage( "homepage" );
+ messages.addMessage( new String[] { "doapOptions", "homepage" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
}
else
{
@@ -965,8 +966,7 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><homepage>" + homepage
- + "</homepage></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "homepage" }, homepage, UserMessages.INVALID_URL );
}
}
@@ -987,8 +987,7 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><oldHomepage>" + oldHomepage
- + "</oldHomepage></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "oldHomepage" }, oldHomepage, UserMessages.INVALID_URL );
}
}
}
@@ -1005,7 +1004,8 @@ public class DoapMojo
{
if ( StringUtils.isEmpty( doapOptions.getProgrammingLanguage() ) && StringUtils.isEmpty( language ) )
{
- addDoapMessage( "programmingLanguage" );
+ messages.addMessage( new String[] { "doapOptions", "programmingLanguage" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -1013,7 +1013,9 @@ public class DoapMojo
String comment = "Programming language.";
if ( StringUtils.isNotEmpty( language ) ) // backward compatible
{
- getLog().warn( "The <language/> parameter is deprecated, please use <doapOptions><programmingLanguage/></doapOptions> parameter instead of." );
+ getLog().warn( "The <language/> parameter is deprecated, please use "
+ + messages.toConfiguration( new String[] { "doapOptions", "programmingLanguage" }, null )
+ + " parameter instead of." );
language = language.trim();
@@ -1022,9 +1024,11 @@ public class DoapMojo
String asfLanguage = ASFExtOptionsUtil.getProgrammingLanguageSupportedByASF( language );
if ( asfLanguage == null )
{
- errorMessages.add( "The deprecated <language>" + language
- + "</language> parameter is not supported by ASF. Should be one of "
- + Arrays.toString( ASFExtOptionsUtil.PROGRAMMING_LANGUAGES ) );
+ messages.getErrorMessages().add( "The deprecated "
+ + messages.toConfiguration( new String[] { "language" },
+ language )
+ + " parameter is not supported by ASF. Should be one of "
+ + Arrays.toString( ASFExtOptionsUtil.PROGRAMMING_LANGUAGES ) );
}
else
{
@@ -1054,9 +1058,12 @@ public class DoapMojo
String asfLanguage = ASFExtOptionsUtil.getProgrammingLanguageSupportedByASF( language );
if ( asfLanguage == null )
{
- errorMessages.add( "The <doapOptions><programmingLanguage>" + language
- + "</programmingLanguage></doapOptions> parameter is not supported by ASF. "
- + "Should be one of " + Arrays.toString( ASFExtOptionsUtil.PROGRAMMING_LANGUAGES ) );
+ messages.getErrorMessages().add( "The "
+ + messages.toConfiguration( new String[] { "doapOptions",
+ "programmingLanguage" }, language )
+ + " parameter is not supported by ASF. "
+ + "Should be one of "
+ + Arrays.toString( ASFExtOptionsUtil.PROGRAMMING_LANGUAGES ) );
}
else
{
@@ -1093,7 +1100,8 @@ public class DoapMojo
{
if ( StringUtils.isEmpty( doapOptions.getCategory() ) && StringUtils.isEmpty( category ) )
{
- addDoapMessage( "category" );
+ messages.addMessage( new String[] { "doapOptions", "category" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -1102,7 +1110,9 @@ public class DoapMojo
String comment = "A category of project.";
if ( StringUtils.isNotEmpty( category ) ) // backward compatible
{
- getLog().warn( "The <category/> parameter is deprecated, please use <doapOptions><category/></doapOptions> parameter instead of." );
+ getLog().warn( "The <category/> parameter is deprecated, please use "
+ + messages.toConfiguration( new String[] { "doapOptions", "category" }, null )
+ + " parameter instead of." );
category = category.trim();
@@ -1111,9 +1121,11 @@ public class DoapMojo
String asfCategory = ASFExtOptionsUtil.getCategorySupportedByASF( category );
if ( asfCategory == null )
{
- errorMessages.add( "The deprecated <category>" + category
- + "</category> parameter is not supported by ASF. Should be one of "
- + Arrays.toString( ASFExtOptionsUtil.CATEGORIES ) );
+ messages.getErrorMessages().add( "The deprecated "
+ + messages.toConfiguration( new String[] { "category" },
+ category )
+ + " parameter is not supported by ASF. Should be one of "
+ + Arrays.toString( ASFExtOptionsUtil.CATEGORIES ) );
}
else
{
@@ -1143,9 +1155,11 @@ public class DoapMojo
String asfCategory = ASFExtOptionsUtil.getCategorySupportedByASF( category );
if ( asfCategory == null )
{
- errorMessages.add( "The <doapOptions><category>" + category
- + "</category></doapOptions> parameter is not supported by ASF. Should be one of "
- + Arrays.toString( ASFExtOptionsUtil.CATEGORIES ) );
+ messages.getErrorMessages().add( "The "
+ + messages.toConfiguration( new String[] { "doapOptions",
+ "category" }, category )
+ + " parameter is not supported by ASF. Should be one of "
+ + Arrays.toString( ASFExtOptionsUtil.CATEGORIES ) );
}
else
{
@@ -1184,7 +1198,8 @@ public class DoapMojo
String downloadPage = interpolate( doapOptions.getDownloadPage(), project, settings );
if ( StringUtils.isEmpty( downloadPage ) )
{
- addDoapMessage( "downloadPage" );
+ messages.addMessage( new String[] { "doapOptions", "downloadPage" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -1197,8 +1212,7 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><downloadPage>" + downloadPage
- + "</downloadPage></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "downloadPage" }, downloadPage, UserMessages.INVALID_URL );
}
if ( StringUtils.isNotEmpty( doapOptions.getDownloadMirror() ) )
@@ -1223,8 +1237,8 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><downloadMirror>" + downloadMirror
- + "</downloadMirror></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "downloadMirror" }, downloadMirror,
+ UserMessages.INVALID_URL );
}
}
}
@@ -1273,8 +1287,7 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><screenshots>" + screenshots
- + "</screenshots></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "screenshots" }, screenshots, UserMessages.INVALID_URL );
return;
}
@@ -1303,7 +1316,7 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><wiki>" + wiki + "</wiki></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "wiki" }, wiki, UserMessages.INVALID_URL );
return;
}
@@ -1322,7 +1335,7 @@ public class DoapMojo
{
if ( project.getLicenses() == null || project.getLicenses().isEmpty() )
{
- addPomMessage( "licenses" );
+ messages.addMessage( new String[] { "project", "licenses" }, null, UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -1347,8 +1360,8 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The POM <project><licenses><license><url>" + licenseUrl
- + "</url></license></licenses></project> value is not a valid URL." );
+ messages.addMessage( new String[] { "project", "licenses", "license", "url" }, licenseUrl,
+ UserMessages.INVALID_URL );
}
}
}
@@ -1364,7 +1377,8 @@ public class DoapMojo
{
if ( project.getIssueManagement() == null || StringUtils.isEmpty( project.getIssueManagement().getUrl() ) )
{
- addPomMessage( "issueManagement" );
+ messages.addMessage( new String[] { "project", "issueManagement" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -1375,8 +1389,8 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The POM <project><issueManagement><url>" + issueManagementUrl
- + "</url></issueManagement></project> value is not a valid URL." );
+ messages.addMessage( new String[] { "project", "issueManagement", "url" }, issueManagementUrl,
+ UserMessages.INVALID_URL );
return;
}
@@ -1397,7 +1411,8 @@ public class DoapMojo
String ml = interpolate( doapOptions.getMailingList(), project, settings );
if ( StringUtils.isEmpty( ml ) )
{
- addDoapMessage( "mailingList" );
+ messages.addMessage( new String[] { "doapOptions", "mailingList" }, null,
+ UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -1410,8 +1425,7 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><mailingList>" + ml
- + "</mailingList></doapOptions> value is not a valid URL." );
+ messages.addMessage( new String[] { "project", "mailingList" }, ml, UserMessages.INVALID_URL );
}
}
@@ -1459,7 +1473,8 @@ public class DoapMojo
if ( metadata.getMetadata().getVersioning() == null )
{
- warnMessages.add( "No versioning was found. Ignored DOAP <release/> tag." );
+ messages.getWarnMessages().add( "No versioning was found for " + artifact.getGroupId() + ":" + artifact.getArtifactId()
+ + ". Ignored DOAP <release/> tag." );
return;
}
@@ -1559,7 +1574,7 @@ public class DoapMojo
Scm scm = project.getScm();
if ( scm == null )
{
- addPomMessage( "scm" );
+ messages.addMessage( new String[] { "project", "scm" }, null, UserMessages.REQUIRED_BY_ASF_OR_RECOMMENDED );
return;
}
@@ -1787,8 +1802,8 @@ public class DoapMojo
// Name is required to write doap
if ( StringUtils.isEmpty( name ) )
{
- errorMessages.add( "The POM <project><developers|contributors><developer|contributor><name/>"
- + "</developer|contributor></developers|contributors></project> value is missing." );
+ messages.addMessage( new String[] { "project", "developers|contributors", "developer|contributor", "name" },
+ null, UserMessages.REQUIRED );
return;
}
@@ -1816,9 +1831,8 @@ public class DoapMojo
}
else
{
- warnMessages.add( "The POM <project><developers|contributors><developer|contributor><email>"
- + email
- + "</email></developer|contributor></developers|contributors></project> value is not a valid email." );
+ messages.addMessage( new String[] { "project", "developers|contributors", "developer|contributor",
+ "email" }, null, UserMessages.INVALID_EMAIL );
}
}
if ( StringUtils.isNotEmpty( organization ) && StringUtils.isNotEmpty( organizationUrl ) )
@@ -1831,9 +1845,8 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The POM <project><developers|contributors><developer|contributor><organizationUrl>"
- + organizationUrl
- + "</organizationUrl></developer|contributor></developers|contributors></project> value is not a valid URL." );
+ messages.addMessage( new String[] { "project", "developers|contributors", "developer|contributor",
+ "organizationUrl" }, organizationUrl, UserMessages.INVALID_URL );
}
}
if ( StringUtils.isNotEmpty( homepage ) )
@@ -1846,8 +1859,8 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The POM <project><developers|contributors><developer|contributor><url>" + homepage
- + "</url></developer|contributor></developers|contributors></project> value is not a valid URL." );
+ messages.addMessage( new String[] { "project", "developers|contributors", "developer|contributor",
+ "homepage" }, homepage, UserMessages.INVALID_URL );
}
}
writer.endElement(); // foaf:Person
@@ -1914,7 +1927,7 @@ public class DoapMojo
}
else
{
- errorMessages.add( "A <asfExtOptions><pmc/></asfExtOptions> parameter is required by ASF." );
+ messages.addMessage( new String[] { "asfExtOptions", "pmc" }, null, UserMessages.REQUIRED_BY_ASF );
}
// asfext:name
@@ -1929,7 +1942,7 @@ public class DoapMojo
}
else
{
- errorMessages.add( "A <asfExtOptions><name/></asfExtOptions> parameter is required by ASF." );
+ messages.addMessage( new String[] { "asfExtOptions", "name" }, null, UserMessages.REQUIRED_BY_ASF );
}
String homepage = interpolate( doapOptions.getHomepage(), project, settings );
@@ -1943,15 +1956,14 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><homepage>" + homepage
- + "</homepage></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "homepage" }, homepage, UserMessages.INVALID_URL );
}
}
// asfext:charter
if ( StringUtils.isEmpty( asfExtOptions.getCharter() ) )
{
- errorMessages.add( "A <asfExtOptions><charter/></asfExtOptions> parameter is required by ASF." );
+ messages.addMessage( new String[] { "asfExtOptions", "charter" }, null, UserMessages.REQUIRED_BY_ASF );
}
else
{
@@ -1983,7 +1995,7 @@ public class DoapMojo
}
else
{
- errorMessages.add( "A <asfExtOptions><chair/></asfExtOptions> parameter is required by ASF." );
+ messages.addMessage( new String[] { "asfExtOptions", "chair" }, null, UserMessages.REQUIRED_BY_ASF );
}
}
@@ -2026,43 +2038,46 @@ public class DoapMojo
if ( StringUtils.isEmpty( standard.getTitle() ) )
{
- errorMessages.add( "A <asfExtOptions><standards><title/></standards></asfExtOptions> parameter is required by ASF." );
+ messages.addMessage( new String[] { "asfExtOptions", "standards", "title" }, null,
+ UserMessages.REQUIRED_BY_ASF );
}
else
{
- DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "title", standard.getTitle() );
+ DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "title", standard.getTitle().trim() );
}
if ( StringUtils.isEmpty( standard.getBody() ) )
{
- errorMessages.add( "A <asfExtOptions><standards><body/></standards></asfExtOptions> parameter is required by ASF." );
+ messages.addMessage( new String[] { "asfExtOptions", "standards", "body" }, null,
+ UserMessages.REQUIRED_BY_ASF );
}
else
{
- DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "body", standard.getBody() );
+ DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "body", standard.getBody().trim() );
}
if ( StringUtils.isEmpty( standard.getId() ) )
{
- errorMessages.add( "A <asfExtOptions><standards><id/></standards></asfExtOptions> parameter is required by ASF." );
+ messages.addMessage( new String[] { "asfExtOptions", "standards", "id" }, null,
+ UserMessages.REQUIRED_BY_ASF );
}
else
{
- DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "id", standard.getId() );
+ DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "id", standard.getId().trim() );
}
if ( StringUtils.isNotEmpty( standard.getUrl() ) )
{
try
{
- new URL( standard.getUrl() );
+ new URL( standard.getUrl().trim() );
- DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "url", standard.getUrl() );
+ DoapUtil.writeElement( writer, asfExtOptions.getXmlnsPrefix(), "url", standard.getUrl().trim() );
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <asfExtOptions><standards><url>" + standard.getUrl()
- + "<url></standards></asfExtOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "asfExtOptions", "standards", "url" },
+ standard.getUrl().trim(), UserMessages.INVALID_URL );
}
}
@@ -2110,7 +2125,8 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The organization URL " + organization.getUrl() + " is not a valid URL." );
+ messages.errorMessages.add( "The organization URL " + organization.getUrl()
+ + " is not a valid URL." );
}
}
List<String> members = organization.getMembers();
@@ -2161,7 +2177,7 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><blog>" + blog + "</blog></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "blog" }, blog, UserMessages.INVALID_URL );
return;
}
@@ -2229,8 +2245,7 @@ public class DoapMojo
if ( Arrays.binarySearch( Locale.getISOLanguages(), language ) < 0 )
{
- errorMessages.add( "The <doapOptions><languages>" + language
- + "</languages></doapOptions> parameter is not a valid ISO language." );
+ messages.addMessage( new String[] { "doapOptions", "languages" }, language, UserMessages.INVALID_ISO_DATE );
continue;
}
@@ -2264,8 +2279,8 @@ public class DoapMojo
}
catch ( MalformedURLException e )
{
- errorMessages.add( "The <doapOptions><serviceEndpoint>" + serviceEndpoint
- + "</serviceEndpoint></doapOptions> parameter is not a valid URL." );
+ messages.addMessage( new String[] { "doapOptions", "serviceEndpoint" }, serviceEndpoint,
+ UserMessages.INVALID_URL );
return;
}
@@ -2370,40 +2385,6 @@ public class DoapMojo
}
}
- /**
- * @param tag not null
- * @since 1.1
- */
- private void addDoapMessage( String tag )
- {
- if ( asfExtOptions.isIncluded() )
- {
- errorMessages.add( "A <doapOptions><" + tag + "/></doapOptions> parameter is required by ASF." );
- }
- else
- {
- warnMessages.add( "No <doapOptions><" + tag
- + "/></doapOptions> parameter defined, it is highly recommended to have one." );
- }
- }
-
- /**
- * @param tag not null
- * @since 1.1
- */
- private void addPomMessage( String tag )
- {
- if ( asfExtOptions.isIncluded() )
- {
- errorMessages.add( "A POM <project><" + tag + "/></project> value is required by ASF." );
- }
- else
- {
- warnMessages.add( "No POM <project><" + tag
- + "/></project> value defined, it is highly recommended to have one." );
- }
- }
-
// ----------------------------------------------------------------------
// Static methods
// ----------------------------------------------------------------------
@@ -2547,4 +2528,174 @@ public class DoapMojo
}
} );
}
+
+ /**
+ * Encapsulates all user messages.
+ *
+ * @since 1.1
+ */
+ private class UserMessages
+ {
+ public static final int REQUIRED = 10;
+
+ public static final int REQUIRED_BY_ASF_OR_RECOMMENDED = 11;
+
+ public static final int REQUIRED_BY_ASF = 12;
+
+ public static final int RECOMMENDED = 20;
+
+ public static final int INVALID_URL = 30;
+
+ public static final int INVALID_DATE = 31;
+
+ public static final int INVALID_ISO_DATE = 32;
+
+ public static final int INVALID_EMAIL = 33;
+
+ private List<String> errorMessages = new ArrayList<String>();
+
+ private List<String> warnMessages = new ArrayList<String>();
+
+ /**
+ * @return the error messages
+ */
+ public List<String> getErrorMessages()
+ {
+ return errorMessages;
+ }
+
+ /**
+ * @return the warn messages
+ */
+ public List<String> getWarnMessages()
+ {
+ return warnMessages;
+ }
+
+ /**
+ * @param tags not null
+ * @param value could be null
+ * @param errorId positive id
+ */
+ protected void addMessage( String[] tags, String value, int errorId )
+ {
+ if ( tags == null )
+ {
+ throw new IllegalArgumentException( "tags is required" );
+ }
+
+ boolean isPom = false;
+ if ( tags[0].equalsIgnoreCase( "project" ) )
+ {
+ isPom = true;
+ }
+ switch ( errorId )
+ {
+ case REQUIRED:
+ errorMessages.add( "A " + toConfiguration( tags, null ) + " parameter is required." );
+ break;
+ case REQUIRED_BY_ASF_OR_RECOMMENDED:
+ if ( isPom )
+ {
+ if ( asfExtOptions.isIncluded() )
+ {
+ errorMessages.add( "A POM " + toConfiguration( tags, null ) + " value is required by ASF." );
+ }
+ else
+ {
+ warnMessages.add( "No POM " + toConfiguration( tags, null )
+ + " value is defined, it is highly recommended to have one." );
+ }
+ }
+ else
+ {
+ if ( asfExtOptions.isIncluded() )
+ {
+ errorMessages.add( "A " + toConfiguration( tags, null ) + " parameter is required by ASF." );
+ }
+ else
+ {
+ warnMessages.add( "No " + toConfiguration( tags, null )
+ + " parameter defined, it is highly recommended to have one." );
+ }
+ }
+ break;
+ case REQUIRED_BY_ASF:
+ if ( isPom )
+ {
+ errorMessages.add( "A POM " + toConfiguration( tags, null ) + " value is required by ASF." );
+ }
+ else
+ {
+ errorMessages.add( "A " + toConfiguration( tags, null ) + " parameter is required by ASF." );
+ }
+ break;
+ case RECOMMENDED:
+ warnMessages.add( "No " + toConfiguration( tags, null )
+ + " parameter defined, it is highly recommended to have one." );
+ break;
+ case INVALID_URL:
+ if ( isPom )
+ {
+ errorMessages.add( "The POM " + toConfiguration( tags, value ) + " value is not a valid URL." );
+ }
+ else
+ {
+ errorMessages.add( "The " + toConfiguration( tags, value ) + " parameter is not a valid URL." );
+ }
+ break;
+ case INVALID_DATE:
+ errorMessages.add( "The " + toConfiguration( tags, value ) + " parameter should be in YYYY-MM-DD." );
+ break;
+ case INVALID_EMAIL:
+ errorMessages.add( "The POM " + toConfiguration( tags, value ) + " value is not a valid email." );
+ break;
+ case INVALID_ISO_DATE:
+ errorMessages.add( "The " + toConfiguration( tags, value )
+ + " parameter is not a valid ISO language." );
+ break;
+ default:
+ throw new IllegalArgumentException( "Unknown errorId=" + errorId );
+ }
+ }
+
+ /**
+ * @param tags not null
+ * @param value of the last tag, could be null
+ * @return the XML configuration defined in tags.
+ */
+ protected String toConfiguration( String[] tags, String value )
+ {
+ if ( tags == null )
+ {
+ throw new IllegalArgumentException( "tags is required" );
+ }
+
+ StringBuffer sb = new StringBuffer();
+ for ( int i = 0; i < tags.length; i++ )
+ {
+ if ( i == tags.length - 1 && StringUtils.isEmpty( value ) )
+ {
+ sb.append( "<" ).append( tags[i] ).append( "/>" );
+ }
+ else
+ {
+ sb.append( "<" ).append( tags[i] ).append( ">" );
+ }
+ }
+ if ( StringUtils.isNotEmpty( value ) )
+ {
+ sb.append( value );
+ }
+ for ( int i = tags.length - 1; i >= 0; i-- )
+ {
+ if ( !( i == tags.length - 1 && StringUtils.isEmpty( value ) ) )
+ {
+ sb.append( "</" ).append( tags[i] ).append( ">" );
+ }
+ }
+
+ return sb.toString();
+ }
+ }
}
Modified: maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo?rev=1057007&r1=1057006&r2=1057007&view=diff
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo (original)
+++ maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo Sun Jan 9 19:47:05 2011
@@ -305,7 +305,7 @@ some POM options.
/**
* @return String the configuration of this class.
*/
- public String toStringConfiguration()
+ public String toConfiguration()
{
java.lang.StringBuilder sb = new java.lang.StringBuilder();
sb.append( "<artifact>" );