diff --git a/java/core/pom.xml b/java/core/pom.xml index a809b5e..7a3a43f 100644 --- a/java/core/pom.xml +++ b/java/core/pom.xml @@ -1,145 +1,151 @@ - - - 4.0.0 - com.greenscriptool - greenscript-core - jar - GreenScript Core - 1.0.1 - A Java package to manage and process Web Resources (Javascript/CSS) - http://github.com/greenlaw110/greenscript - - - http://github.com/greenlaw110/greenscript - scm:git:git://github.com/greenlaw110/greenscript.git - - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - - com.greenscriptool - GreenScript Releases Repository - http://greenscriptool.com/repositories/releases - - - - - UTF-8 - UTF-8 - - - - - com.yahoo.platform.yui - yuicompressor - 2.4.2 - - - javax.inject - javax.inject - 1 - - - com.asual.lesscss - lesscss-engine - 1.0.33 - - - - commons-logging - commons-logging - 1.1.1 - - - junit - junit - 4.7 - test - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.0.2 - - 1.5 - 1.5 - - - - org.apache.maven.plugins - maven-help-plugin - 2.1 - - - org.apache.maven.plugins - maven-clean-plugin - 2.2 - - - org.apache.maven.plugins - maven-source-plugin - 2.0.4 - - true - - - - - jar - - - - - - org.apache.maven.plugins - maven-install-plugin - 2.2 - + + + 4.0.0 + com.greenscriptool + greenscript-core + jar + GreenScript Core + 1.0.2 + A Java package to manage and process Web Resources (Javascript/CSS) + http://github.com/greenlaw110/greenscript + + + http://github.com/greenlaw110/greenscript + scm:git:git://github.com/greenlaw110/greenscript.git + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + com.greenscriptool + GreenScript Releases Repository + http://greenscriptool.com/repositories/releases + + + + + + com.asual.maven.public + Asual Public Repository + http://www.asual.com/maven/content/groups/public + + + + + UTF-8 + UTF-8 + + + + + com.yahoo.platform.yui + yuicompressor + 2.4.2 + + + javax.inject + javax.inject + 1 + + + com.asual.lesscss + lesscss-engine + 1.0.33 + + + + commons-logging + commons-logging + 1.1.1 + + + junit + junit + 4.7 + test + + + + + - org.apache.maven.plugins - maven-dependency-plugin - - - copy-dependencies - package - - copy-dependencies - - - ${project.build.directory}/lib - false - false - true - - - - - - - - src/test/resources - - **/*.properties - **/*.css - **/*.js - - - - - - \ No newline at end of file + org.apache.maven.plugins + maven-compiler-plugin + 2.0.2 + + 1.6 + 1.6 + + + + org.apache.maven.plugins + maven-help-plugin + 2.1 + + + org.apache.maven.plugins + maven-clean-plugin + 2.2 + + + org.apache.maven.plugins + maven-source-plugin + 2.0.4 + + true + + + + + jar + + + + + + org.apache.maven.plugins + maven-install-plugin + 2.2 + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + package + + copy-dependencies + + + ${project.build.directory}/lib + false + false + true + + + + + + + + src/test/resources + + **/*.properties + **/*.css + **/*.js + + + + + + diff --git a/java/core/src/main/java/com/greenscriptool/DependenceManager.java b/java/core/src/main/java/com/greenscriptool/DependenceManager.java index a7e95b3..aababa5 100644 --- a/java/core/src/main/java/com/greenscriptool/DependenceManager.java +++ b/java/core/src/main/java/com/greenscriptool/DependenceManager.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -153,7 +154,7 @@ private Node createNode_(String dependent, Collection dependsOn) { return n; } - + /** * Node class abstract a dependent resource and the dependent relationship between * the resource and all it's depend on resources diff --git a/java/core/src/main/java/com/greenscriptool/Minimizer.java b/java/core/src/main/java/com/greenscriptool/Minimizer.java index 845dc32..42d1444 100644 --- a/java/core/src/main/java/com/greenscriptool/Minimizer.java +++ b/java/core/src/main/java/com/greenscriptool/Minimizer.java @@ -18,8 +18,8 @@ import org.apache.commons.logging.LogFactory; import com.greenscriptool.utils.FileCache; -import com.greenscriptool.utils.GreenScriptCompressor; import com.greenscriptool.utils.ICompressor; +import com.greenscriptool.utils.YUICompressor; public class Minimizer implements IMinimizer { @@ -56,7 +56,8 @@ public class Minimizer implements IMinimizer { private ResourceType type_; public Minimizer(ResourceType type) { - this(new GreenScriptCompressor(type), type); +// this(new GreenScriptCompressor(type), type); + this(new YUICompressor(type), type); } @Inject diff --git a/java/core/src/main/java/com/greenscriptool/RenderSession.java b/java/core/src/main/java/com/greenscriptool/RenderSession.java index c906db2..3407c55 100644 --- a/java/core/src/main/java/com/greenscriptool/RenderSession.java +++ b/java/core/src/main/java/com/greenscriptool/RenderSession.java @@ -22,196 +22,218 @@ * @since 1.0 */ public class RenderSession implements IRenderSession { - private static Log logger_ = LogFactory.getLog(IRenderSession.class); - - private IMinimizer m_ = null; - - private IDependenceManager d_ = null; - - private ResourceType type_ = null; - - /** - * Store resource declared using {@link #declare(String, String, String)} - */ - private Set declared_ = new HashSet(); - - /** - * Store all resources that has been loaded (in this session) already - */ - private Set loaded_ = new HashSet(); - - /** - * Store inline bodies declared - */ - private SortedMap inlines_ = new TreeMap(); - - public ResourceType getResourceType() { - return type_; - } - - /** - * Construct an {@link IRenderSession} with an {@link IMinimizer} instance, - * an {@link IDependenceManager} instance and a {@link ResourceType} - * - * @param minimizer - * @param depMgr - * @param type - */ - @Inject - public RenderSession(IMinimizer minimizer, IDependenceManager depMgr, ResourceType type) { - if (null == minimizer || null == depMgr) throw new NullPointerException(); - m_ = minimizer; - d_ = depMgr; - type_ = type; - } - - @Override - public void declareInline(String inline, int priority) { - priority = -1 * priority; - StringBuffer sb = inlines_.get(priority); - if (null == sb) { - sb = new StringBuffer(); - inlines_.put(priority, sb); - } - sb.append("\n").append(inline); - } - - @Override - public void declare(String nameList, String media, String browser) { - String[] sa = nameList.split(SEPARATOR); - media = canonical_(media); - browser = canonical_(browser); - for (String name: sa) { - declared_.add(new Resource(name, media, browser)); - } - } - - @Override - public void declare(List nameList, String media, String browser) { - media = canonical_(media); - browser = canonical_(browser); - for (String name: nameList) { - declared_.add(new Resource(name, media, browser)); - } - } - - @Override - public List output(String nameList, boolean withDependencies, boolean all, String media, String browser) { - if (null != nameList) declare(nameList, null, null); - - List l = null; - if (all) { - l = d_.comprehend(getByMediaAndBrowser_(media, browser), true); - } else if (withDependencies) { - l = d_.comprehend(nameList); - } else if (null != nameList) { - l = new ArrayList(); - String[] sa = nameList.split(SEPARATOR); - for (String s: sa) { - if (!l.contains(s)) l.add(s); - } - } else { - l = Collections.emptyList(); - } - - l = l.isEmpty() ? l : m_.process(l); - l.removeAll(loaded_); - loaded_.addAll(l); - if (logger_.isTraceEnabled()) logger_.trace("output items: " + l); - return l; - } - - @Override - public String outputInline() { - StringBuffer all = new StringBuffer(); - for (StringBuffer sb: inlines_.values()) { - all.append(sb); - sb.delete(0, sb.length()); - } - return all.toString(); - } - - public boolean isDefault(String s) { - s = canonical_(s); - return s.equalsIgnoreCase(DEFAULT); - } - - private String canonical_(String s) { - if (null == s) return DEFAULT; - return s.trim().replaceAll("\\s+", " "); - } - - private Set getByMediaAndBrowser_(String media, String browser) { - Set set = new HashSet(); - media = canonical_(media); - browser = canonical_(browser); - for (Resource r: declared_) { - if (r.media.equalsIgnoreCase(media) && r.browser.equalsIgnoreCase(browser)) { - set.add(r.name); - } - } - set.removeAll(loaded_); - return set; - } - - @Override - public Set getMedias(String browser) { - Set set = new HashSet(); - browser = canonical_(browser); - for (Resource r: declared_) { - if (r.browser.equalsIgnoreCase(browser)) set.add(r.media); - } - set.remove(DEFAULT); - return set; - } - - @Override - public Set getBrowsers() { - Set set = new HashSet(); - for (Resource r: declared_) { - set.add(r.browser); - } - set.remove(DEFAULT); - return set; - } - - @Override - public boolean hasDeclared() { - return declared_.size() > 0; - } - - private class Resource { - String name; - String media; - String browser; - - public Resource(String name, String media, String browser) { - if (null == name) throw new NullPointerException(); - this.name = name; - this.media = null == media ? DEFAULT : media; - this.browser = null == browser ? DEFAULT : browser; - } - - @Override - public boolean equals(Object obj) { - if (obj == this) return true; - if (!(obj instanceof Resource)) return false; - Resource that = (Resource)obj; - return that.name.equals(name) && that.media.equals(media) && that.browser.equals(browser); - } - - @Override - public int hashCode() { - int ret = 17; - ret = ret * 31 + name.hashCode(); - ret = ret * 31 + media.hashCode(); - ret = ret * 31 + browser.hashCode(); - return ret; - } - - @Override - public String toString() { - return name; - } - } + private static Log logger_ = LogFactory.getLog(IRenderSession.class); + + private IMinimizer m_ = null; + + private IDependenceManager d_ = null; + + private ResourceType type_ = null; + + /** + * Store resource declared using {@link #declare(String, String, String)} + */ + private List declared_ = new ArrayList(); + + /** + * Store all resources that has been loaded (in this session) already + */ + private Set loaded_ = new HashSet(); + + /** + * Store inline bodies declared + */ + private SortedMap inlines_ = new TreeMap(); + + public ResourceType getResourceType() { + return type_; + } + + /** + * Construct an {@link IRenderSession} with an {@link IMinimizer} instance, an {@link IDependenceManager} instance + * and a {@link ResourceType} + * + * @param minimizer + * @param depMgr + * @param type + */ + @Inject + public RenderSession(IMinimizer minimizer, IDependenceManager depMgr, ResourceType type) { + if (null == minimizer || null == depMgr) + throw new NullPointerException(); + m_ = minimizer; + d_ = depMgr; + type_ = type; + } + + @Override + public void declareInline(String inline, int priority) { + priority = -1 * priority; + StringBuffer sb = inlines_.get(priority); + if (null == sb) { + sb = new StringBuffer(); + inlines_.put(priority, sb); + } + sb.append("\n").append(inline); + } + + @Override + public void declare(String nameList, String media, String browser) { + String[] sa = nameList.split(SEPARATOR); + media = canonical_(media); + browser = canonical_(browser); + for (String name : sa) { + addDeclared(media, browser, name); + } + } + + @Override + public void declare(List nameList, String media, String browser) { + media = canonical_(media); + browser = canonical_(browser); + for (String name : nameList) { + addDeclared(media, browser, name); + } + } + + @Override + public List output(String nameList, boolean withDependencies, boolean all, String media, String browser) { + if (null != nameList) + declare(nameList, null, null); + + List l = null; + if (all) { + l = d_.comprehend(getByMediaAndBrowser_(media, browser), true); + } else if (withDependencies) { + l = d_.comprehend(nameList); + } else if (null != nameList) { + l = new ArrayList(); + String[] sa = nameList.split(SEPARATOR); + for (String s : sa) { + if (!l.contains(s)) + l.add(s); + } + } else { + l = Collections.emptyList(); + } + + l = l.isEmpty() ? l : m_.process(l); + l.removeAll(loaded_); + loaded_.addAll(l); + if (logger_.isTraceEnabled()) + logger_.trace("output items: " + l); + return l; + } + + @Override + public String outputInline() { + StringBuffer all = new StringBuffer(); + for (StringBuffer sb : inlines_.values()) { + all.append(sb); + sb.delete(0, sb.length()); + } + return all.toString(); + } + + public boolean isDefault(String s) { + s = canonical_(s); + return s.equalsIgnoreCase(DEFAULT); + } + + private String canonical_(String s) { + if (null == s) + return DEFAULT; + return s.trim().replaceAll("\\s+", " "); + } + + private List getByMediaAndBrowser_(String media, String browser) { + List list = new ArrayList(); + media = canonical_(media); + browser = canonical_(browser); + for (Resource r : declared_) { + if (r.media.equalsIgnoreCase(media) && r.browser.equalsIgnoreCase(browser)) { + if (!list.contains(r.name)) { + list.add(r.name); + } + } + } + list.removeAll(loaded_); + return list; + } + + @Override + public Set getMedias(String browser) { + Set set = new HashSet(); + browser = canonical_(browser); + for (Resource r : declared_) { + if (r.browser.equalsIgnoreCase(browser)) + set.add(r.media); + } + set.remove(DEFAULT); + return set; + } + + @Override + public Set getBrowsers() { + Set set = new HashSet(); + for (Resource r : declared_) { + set.add(r.browser); + } + set.remove(DEFAULT); + return set; + } + + @Override + public boolean hasDeclared() { + return declared_.size() > 0; + } + + private void addDeclared(String media, String browser, String name) { + Resource resource = new Resource(name, media, browser); + addDeclared(resource); + } + + private void addDeclared(Resource resource) { + if (!declared_.contains(resource)) { + declared_.add(resource); + } + } + + private class Resource { + String name; + String media; + String browser; + + public Resource(String name, String media, String browser) { + if (null == name) + throw new NullPointerException(); + this.name = name; + this.media = null == media ? DEFAULT : media; + this.browser = null == browser ? DEFAULT : browser; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) + return true; + if (!(obj instanceof Resource)) + return false; + Resource that = (Resource) obj; + return that.name.equals(name) && that.media.equals(media) && that.browser.equals(browser); + } + + @Override + public int hashCode() { + int ret = 17; + ret = ret * 31 + name.hashCode(); + ret = ret * 31 + media.hashCode(); + ret = ret * 31 + browser.hashCode(); + return ret; + } + + @Override + public String toString() { + return name; + } + } }