r1526 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities
Author: bpoussin Date: 2013-02-15 12:17:45 +0100 (Fri, 15 Feb 2013) New Revision: 1526 Url: http://nuiton.org/projects/wikitty/repository/revisions/1526 Log: fixes #2527: remove extension in wikitty object Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2013-01-26 14:38:37 UTC (rev 1525) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2013-02-15 11:17:45 UTC (rev 1526) @@ -191,6 +191,16 @@ void addExtension(Collection<WikittyExtension> exts); /** + * Remove extension in argument and all dependants extensions. + * Fields of extension is removed too. + * If extension in argument is not found, nothing is done + * + * @param ext extension to remove + * @since 3.9 + */ + void removeExtension(String ext); + + /** * Check that the wikitty has a metaExtension about a given extension. * * @param metaExtensionName the metaExtension to be checked Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java 2013-01-26 14:38:37 UTC (rev 1525) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyCopyOnWrite.java 2013-02-15 11:17:45 UTC (rev 1526) @@ -250,6 +250,13 @@ } } + public void removeExtension(String ext) { + if (target.getExtensionNames().contains(ext)) { + substituteTargetWithCopy(); + target.removeExtension(ext); + } + } + @Override public boolean hasExtension(String extName) { return target.hasExtension(extName); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2013-01-26 14:38:37 UTC (rev 1525) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2013-02-15 11:17:45 UTC (rev 1526) @@ -407,6 +407,16 @@ incrementVersion(ext.name); } + public void removeExtension(String ext) { + Collection<WikittyExtension> exts = getExtensionDependencies(ext, true); + for (WikittyExtension e : exts) { + extensions.remove(e.getName()); + for (String field : e.getFieldNames()) { + fieldValue.remove(field); + } + } + } + /** * @see Wikitty#hasMetaExtension(String, String) */ @@ -589,9 +599,10 @@ def += extension.toDefinition() + "\n"; } throw new WikittyException(String.format( - "field '%s' is not valid, extensions definition : %s", ext + "." + fieldName, def)); + "field '%s' is not valid, extensions definition : %s", + WikittyUtil.getFQFieldName(ext, fieldName), def)); } - String key = ext + "." + fieldName; + String key = WikittyUtil.getFQFieldName(ext, fieldName); // take old value if needed Object oldValue = null;
participants (1)
-
bpoussin@users.nuiton.org