Author: bpoussin Date: 2013-01-26 16:51:02 +0100 (Sat, 26 Jan 2013) New Revision: 29 Url: http://nuiton.org/projects/nuiton-js/repository/revisions/29 Log: ajout d'un nouveau processor qui permet de convertir en dataUri les fichiers > 32ko (donc incompatible <=IE8) Added: trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/ForceCssDataUriPreProcessor.java Modified: trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsMavenWroManagerFactory.java trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsWroManagerFactory.java Added: trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/ForceCssDataUriPreProcessor.java =================================================================== --- trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/ForceCssDataUriPreProcessor.java (rev 0) +++ trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/ForceCssDataUriPreProcessor.java 2013-01-26 15:51:02 UTC (rev 29) @@ -0,0 +1,26 @@ +package org.nuiton.js.wro; + +import ro.isdc.wro.model.resource.processor.impl.css.CssDataUriPreProcessor; + +/** + * Processor qui force l'utilisation des dataUri meme pour les grosses ressource + * Ceci est utile lorsque l'on souhaite deployer les CSS sans avoir le filtre WRO + * (par exemple suite a la creation via le plugin maven) + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class ForceCssDataUriPreProcessor extends CssDataUriPreProcessor { + + public static final String ALIAS = "forceCssDataUri"; + + @Override + protected boolean isReplaceAccepted(String dataUri) { + return true; + } + + +} Modified: trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsMavenWroManagerFactory.java =================================================================== --- trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsMavenWroManagerFactory.java 2013-01-26 15:48:39 UTC (rev 28) +++ trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsMavenWroManagerFactory.java 2013-01-26 15:51:02 UTC (rev 29) @@ -5,30 +5,75 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Map; import java.util.Properties; +import ro.isdc.wro.manager.factory.standalone.ConfigurableStandaloneContextAwareManagerFactory; +import ro.isdc.wro.manager.factory.standalone.DefaultStandaloneContextAwareManagerFactory; import ro.isdc.wro.manager.factory.standalone.StandaloneContext; -import ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory; +import ro.isdc.wro.maven.plugin.support.ExtraConfigFileAware; import ro.isdc.wro.model.factory.WroModelFactory; +import ro.isdc.wro.model.resource.processor.ResourcePreProcessor; +import ro.isdc.wro.model.resource.processor.factory.ConfigurableProcessorsFactory; +import ro.isdc.wro.model.resource.processor.factory.ProcessorsFactory; +import ro.isdc.wro.model.resource.support.hash.ConfigurableHashStrategy; +import ro.isdc.wro.model.resource.support.hash.HashStrategy; +import ro.isdc.wro.model.resource.support.naming.ConfigurableNamingStrategy; +import ro.isdc.wro.model.resource.support.naming.NamingStrategy; /** + * ManagerFactory a utiliser pour le plugin maven. * + * Cette classe pourrait heriter de ConfigurableWroManagerFactory, mais + * a cause de methode final :( dans + * {@link ConfigurableStandaloneContextAwareManagerFactory#newProcessorsFactory}, + * on doit directement heriter de DefaultStandaloneContextAwareManagerFactory + * + * Mais comme au final vu qu'on surchargeait beaucoup de chose, il n'y a que + * deux methodes en plus {@ #newNamingStrategy} et {@link #newHashStrategy} + * * @author poussin * @version $Revision$ * * Last update: $Date$ * by : $Author$ */ -public class NuitonJsMavenWroManagerFactory extends ConfigurableWroManagerFactory { +public class NuitonJsMavenWroManagerFactory extends DefaultStandaloneContextAwareManagerFactory + implements ExtraConfigFileAware { protected StandaloneContext standaloneContext; protected File configProperties; + /** + * Surcharge pour ajouter les preprocessors + * <li> {@link ForceCssDataUriPreProcessor} + * @return + */ + @Override + protected ProcessorsFactory newProcessorsFactory() { + return new ConfigurableProcessorsFactory(){ + @Override + protected Map<String, ResourcePreProcessor> newPreProcessorsMap() { + Map<String, ResourcePreProcessor> result = super.newPreProcessorsMap(); + result.put(ForceCssDataUriPreProcessor.ALIAS, new ForceCssDataUriPreProcessor()); + return result; + } + }.setProperties(createProperties()); + } + + /** + * Surcharge pour garde le {@link StandaloneContext} + * @param standaloneContext + */ @Override public void initialize(final StandaloneContext standaloneContext) { super.initialize(standaloneContext); this.standaloneContext = standaloneContext; } + /** + * Surcharge pour utilise le {@link NuitonJsXmlModelFactory} + * @return + */ @Override protected WroModelFactory newModelFactory() { return new NuitonJsXmlModelFactory() { @@ -41,13 +86,26 @@ }; } - @Override + /** + * Utiliser pour initialiser les fichiers de config avec les choix fait + * par Nuiton-js et permettre la surcharge via le fichier definit dans la + * configuration maven + * @return + */ protected Properties createProperties() { Properties result = new NuitonJsWroConfigurationFactory(){ + /** + * On utilise le fichier indique dans la configuration maven + * au lieu du fichier par defaut + */ @Override protected String getUserConfigPath() { return configProperties.getAbsolutePath(); } + /** + * Surcharge pour recherche les fichiers sur le filesystem ou lieu + * d'utiliser le context servlet dans lequel on est pas + */ @Override protected InputStream loadAsStream(String file) throws Exception { return new BufferedInputStream(new FileInputStream(file)); @@ -56,10 +114,40 @@ return result; } + /** + * Recupere le fichier indique dans la configuration maven + * @param extraProperties + */ @Override public void setExtraConfigFile(final File extraProperties) { - super.setExtraConfigFile(extraProperties); this.configProperties = extraProperties; } + /** + * {@inheritDoc} + */ + @Override + protected NamingStrategy newNamingStrategy() { + return new ConfigurableNamingStrategy() { + @Override + protected Properties newProperties() { + return createProperties(); + } + }; + } + + /** + * {@inheritDoc} + */ + @Override + protected HashStrategy newHashStrategy() { + return new ConfigurableHashStrategy() { + @Override + protected Properties newProperties() { + return createProperties(); + } + }; + } + + } Modified: trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsWroManagerFactory.java =================================================================== --- trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsWroManagerFactory.java 2013-01-26 15:48:39 UTC (rev 28) +++ trunk/nuiton-js-wro/src/main/java/org/nuiton/js/wro/NuitonJsWroManagerFactory.java 2013-01-26 15:51:02 UTC (rev 29) @@ -1,8 +1,10 @@ package org.nuiton.js.wro; +import java.util.Map; import java.util.Properties; import ro.isdc.wro.manager.factory.ConfigurableWroManagerFactory; import ro.isdc.wro.model.factory.WroModelFactory; +import ro.isdc.wro.model.resource.processor.ResourcePreProcessor; /** * Surcharge pour force la recherche du fichier /WEB-INF/nuiton-js.properties @@ -28,4 +30,10 @@ return result; } + @Override + protected void contributePreProcessors(Map<String, ResourcePreProcessor> map) { + super.contributePreProcessors(map); + map.put(ForceCssDataUriPreProcessor.ALIAS, new ForceCssDataUriPreProcessor()); + } + }