Author: bpoussin Date: 2012-12-25 04:30:45 +0100 (Tue, 25 Dec 2012) New Revision: 5 Url: http://nuiton.org/projects/nuiton-js/repository/revisions/5 Log: modification pour supporter les multiples imports du meme fichier par different chemin. Ceci est utile pour la gestion des dependances entre librairie Modified: trunk/nuiton-js-jquery-ui/src/main/resources/META-INF/nuiton-js/wro-jquery-ui.xml trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsXmlModelFactory.java trunk/src/site/rst/index.rst Modified: trunk/nuiton-js-jquery-ui/src/main/resources/META-INF/nuiton-js/wro-jquery-ui.xml =================================================================== --- trunk/nuiton-js-jquery-ui/src/main/resources/META-INF/nuiton-js/wro-jquery-ui.xml 2012-12-25 02:51:50 UTC (rev 4) +++ trunk/nuiton-js-jquery-ui/src/main/resources/META-INF/nuiton-js/wro-jquery-ui.xml 2012-12-25 03:30:45 UTC (rev 5) @@ -1,6 +1,9 @@ <groups xmlns="http://www.isdc.ro/wro"> +<import>classpath:META-INF/nuiton-js/wro-jquery.xml</import> + <group name='jquery-ui'> + <group-ref>jquery</group-ref> <js>classpath:nuiton-js-jquery-ui/**.js</js> </group> Modified: trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsXmlModelFactory.java =================================================================== --- trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsXmlModelFactory.java 2012-12-25 02:51:50 UTC (rev 4) +++ trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsXmlModelFactory.java 2012-12-25 03:30:45 UTC (rev 5) @@ -1,10 +1,12 @@ package org.nuiton.js.wro; import java.util.List; +import org.apache.commons.lang3.Validate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ro.isdc.wro.WroRuntimeException; import ro.isdc.wro.model.WroModel; +import ro.isdc.wro.model.WroModelInspector; import ro.isdc.wro.model.group.RecursiveGroupDefinitionException; /** @@ -36,19 +38,19 @@ for (String importName : imports) { if (processedImports.contains(importName)) { - final String message = "Recursive import detected: " + importName; - LOG.error(message); - throw new RecursiveGroupDefinitionException(message); + final String message = "Import already done: " + importName; + LOG.warn(message); +// throw new RecursiveGroupDefinitionException(message); + } else { + processedImports.add(importName); + merge(model, createImportedModel(importName)); } - - processedImports.add(importName); - model.merge(createImportedModel(importName)); } // on continue avec le fichier par defaut /WEB-INF/wro.properties try { WroModel userModel = new ImportWildcardXmlModelFactory().create(); - model.merge(userModel); + merge(model, userModel); } catch (WroRuntimeException eee) { // si pas de fichier utilisateur on utilisera que les lib de nuiton-js // donc on ne fait qu'afficher un warning @@ -58,4 +60,22 @@ return model; } + /** + * Merge master model with another model. This is useful for supporting model imports. + * + * @param master master modele where we put imported model + * @param importedModel model to import. + */ + protected void merge(WroModel master, WroModel importedModel) { + Validate.notNull(importedModel, "imported model cannot be null!"); + LOG.debug("merging importedModel: {}", importedModel); + for (final String groupName : new WroModelInspector(importedModel).getGroupNames()) { + if (!new WroModelInspector(master).getGroupNames().contains(groupName)) { + // si les deux modeles contiennent le meme groupe, on garde celui du master + master.addGroup(importedModel.getGroupByName(groupName)); + } + } + } + + } Modified: trunk/src/site/rst/index.rst =================================================================== --- trunk/src/site/rst/index.rst 2012-12-25 02:51:50 UTC (rev 4) +++ trunk/src/site/rst/index.rst 2012-12-25 03:30:45 UTC (rev 5) @@ -107,6 +107,7 @@ la déclaration peut ressembler à:: <groups xmlns="http://www.isdc.ro/wro"> + <import>classpath:META-INF/nuiton-js/wro-jquery.xml</import> <group name='jquery-ui'> <group-ref>jquery</group-ref> <js>classpath:nuiton-js-jquery-ui/js/**.js</js>