Created
October 29, 2018 02:48
-
-
Save circlee/4652f7d0e71cd69c6cb1e8f259b20f42 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Configuration | |
public class ResourceVersioningDialectConfig { | |
@Bean | |
public ResourceVersioningDialect getResourceVersioningDialect() { | |
return new ResourceVersioningDialect(); | |
} | |
static class ResourceVersioningDialect extends AbstractProcessorDialect { | |
static final String NAME = "RVDialect"; | |
static final String PREFIX = "th"; | |
static final int PRECEDENCE = 800; | |
public ResourceVersioningDialect() { | |
super(NAME, PREFIX, PRECEDENCE); | |
} | |
protected ResourceVersioningDialect(String name, String prefix, int processorPrecedence) { | |
super(name, prefix, processorPrecedence); | |
} | |
@Override | |
public Set<IProcessor> getProcessors(String dialectPrefix) { | |
LinkedHashSet<IProcessor> processors = new LinkedHashSet<>(); | |
processors.add( new VSRC(TemplateMode.HTML, dialectPrefix)); | |
processors.add( new VHREF(TemplateMode.HTML, dialectPrefix)); | |
return processors; | |
} | |
} | |
static class VSRC extends AbstractAttributeTagProcessor { | |
public static final int ATTR_PRECEDENCE = 1300; | |
public static final String ATTR_NAME = "vsrc"; | |
public static final long INIT_TIMEMILLIS = System.currentTimeMillis(); | |
public VSRC(TemplateMode templateMode, String dialectPrefix) { | |
super(templateMode, dialectPrefix, null, false, ATTR_NAME, true, ATTR_PRECEDENCE, true); | |
} | |
@Override | |
protected void doProcess(ITemplateContext context, IProcessableElementTag tag, AttributeName attributeName, | |
String attributeValue, IElementTagStructureHandler structureHandler) { | |
String returnVal = attributeValue; | |
if(returnVal != null) { | |
returnVal += returnVal.contains("?") ? "&" : "?"; | |
returnVal += "v="+INIT_TIMEMILLIS; | |
} | |
structureHandler.setAttribute("src", returnVal ); | |
} | |
} | |
static class VHREF extends AbstractAttributeTagProcessor { | |
public static final int ATTR_PRECEDENCE = 1300; | |
public static final String ATTR_NAME = "vhref"; | |
public static final long INIT_TIMEMILLIS = System.currentTimeMillis(); | |
public VHREF(TemplateMode templateMode, String dialectPrefix) { | |
super(templateMode, dialectPrefix, null, false, ATTR_NAME, true, ATTR_PRECEDENCE, true); | |
} | |
@Override | |
protected void doProcess(ITemplateContext context, IProcessableElementTag tag, AttributeName attributeName, | |
String attributeValue, IElementTagStructureHandler structureHandler) { | |
String returnVal = attributeValue; | |
if(returnVal != null) { | |
returnVal += returnVal.contains("?") ? "&" : "?"; | |
returnVal += "v="+INIT_TIMEMILLIS; | |
} | |
structureHandler.setAttribute("href", returnVal ); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment