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;
+ }
+ }
}