Author: bpoussin Date: 2010-12-15 11:46:14 +0100 (Wed, 15 Dec 2010) New Revision: 612 Url: http://nuiton.org/repositories/revision/wikitty/612 Log: add check on extension name, version and field name Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-12-15 10:44:19 UTC (rev 611) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyUtil.java 2010-12-15 10:46:14 UTC (rev 612) @@ -79,6 +79,11 @@ */ public class WikittyUtil { + /** Pattern que doivent respecter les noms des extensions */ + public static final String extensionNamePattern = "\\w+"; + /** Pattern que doivent respecter les noms des champs des extensions */ + public static final String extensionFieldNamePattern = "\\w+"; + public static final String DEFAULT_MAJOR_VERSION = "0"; public static final String DEFAULT_MINOR_VERSION = "0"; public static final String DEFAULT_MAJOR_VERSION_PREFIX = DEFAULT_MAJOR_VERSION + "."; Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2010-12-15 10:44:19 UTC (rev 611) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceStorage.java 2010-12-15 10:46:14 UTC (rev 612) @@ -283,6 +283,41 @@ } } + /** + * Check some constraint on extension + * <li> extension name (ex: '#--AAA' is invalide name) + * <li> extension version (ex: '-1.0' is invalide version) + * <li> extension field name (ex: '=na' is invalide name) + * + * @see WikittyUtil#extensionNamePattern + * @see WikittyUtil#extensionFieldNamePattern + * @param exts + */ + protected void checkExtension(Collection<WikittyExtension> exts) { + for (WikittyExtension ext : exts) { + // if extension version is invalide, raise exception + if (WikittyUtil.versionGreaterThan("0", ext.getVersion())) { + throw new WikittyException(String.format( + "Invalide extension version %s", ext.getVersion())); + } + + // if extension name is invalide, raise exception + if (!ext.getName().matches(WikittyUtil.extensionNamePattern)) { + throw new WikittyException(String.format( + "Invalide extension name %s", ext.getName())); + } + + // if field name is invalide, raise exception + for(String fieldName : ext.getFieldNames()) { + if (!fieldName.matches(WikittyUtil.extensionFieldNamePattern)) { + throw new WikittyException(String.format( + "Invalide extension field name '%s' for extension '%s'", + fieldName, ext.getName())); + } + } + } + } + @Override public WikittyEvent storeExtension(String securityToken, Collection<WikittyExtension> exts) { @@ -294,6 +329,8 @@ txBeginHere = true; } + // check extension + checkExtension(exts); WikittyEvent result = getExtensionStorage().store(tx, exts);
participants (1)
-
bpoussin@users.nuiton.org