Author: abelevich
Date: 2009-02-04 12:30:55 -0500 (Wed, 04 Feb 2009)
New Revision: 12567
Modified:
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/JarResourceScanner.java
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/generator/ResourcesGenerator.java
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/handler/ComponentsHandler.java
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/mojo/ResourceDependencyMojo.java
Log:
add include/exclude features for the styles, scripts, namespaces, componentNames and so
on
Modified:
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/JarResourceScanner.java
===================================================================
---
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/JarResourceScanner.java 2009-02-04
17:16:16 UTC (rev 12566)
+++
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/JarResourceScanner.java 2009-02-04
17:30:55 UTC (rev 12567)
@@ -58,6 +58,7 @@
}
protected boolean isAcceptable(FileObject fileObject) {
+
for (int i = 0; i < patterns.length; i++) {
if(SelectorUtils.matchPath(patterns[i], fileObject.getName().getPath())) {
return true;
Modified:
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/generator/ResourcesGenerator.java
===================================================================
---
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/generator/ResourcesGenerator.java 2009-02-04
17:16:16 UTC (rev 12566)
+++
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/generator/ResourcesGenerator.java 2009-02-04
17:30:55 UTC (rev 12567)
@@ -79,7 +79,7 @@
private URL getResourceURL(String resourceName) {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource(resourceName);
-
+
try {
if(resource == null) {
//resolve framework script path
@@ -92,6 +92,7 @@
} catch (Exception e) {
log.error("Error process: " + resourceName + "\n" +
e.getMessage(), e);
}
+
return resource;
}
Modified:
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/handler/ComponentsHandler.java
===================================================================
---
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/handler/ComponentsHandler.java 2009-02-04
17:16:16 UTC (rev 12566)
+++
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/handler/ComponentsHandler.java 2009-02-04
17:30:55 UTC (rev 12567)
@@ -20,11 +20,6 @@
*/
package org.richfaces.cdk.rd.handler;
-import java.text.Collator;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -42,67 +37,129 @@
*/
public class ComponentsHandler extends DefaultHandler{
+ private String [] INCLUDE_ALL_PATTERN = {"**"};
+
private Map <String,Components> components;
private Set <String> scripts = new LinkedHashSet<String>();
private Set <String> styles = new LinkedHashSet<String>();
+ private String [] scriptIncludes;
+
private String [] scriptExcludes;
+ private String [] styleIncludes;
+
private String [] styleExcludes;
+ private String [] namespaceIncludes;
+
private String [] namespaceExcludes;
+ private String [] componentIncludes;
+
private String [] componentExcludes;
@Override
public void endElement(String uri, String localName, String name) throws SAXException {
+
if(components != null && components.containsKey(uri)) {
- if(!isExcluded(namespaceExcludes, uri, true)) {
- Components library = components.get(uri);
- List <Component> components = library.getComponents();
- for(Component component : components ){
- String componentName = component.getComponentName();
- System.out.println("process: " + componentName);
- if(localName.equals(componentName) && !isExcluded(componentExcludes,
componentName,false)) {
- collectScripts(component);
- collectStyles(component);
+
+ if(namespaceIncludes == null) {
+ namespaceIncludes = INCLUDE_ALL_PATTERN;
+ }
+
+ if(doMatch(namespaceIncludes, uri, true)){
+
+ if(!doMatch(namespaceExcludes, uri, true)) {
+
+ Components library = components.get(uri);
+ List <Component> components = library.getComponents();
+
+ if (componentIncludes == null) {
+ componentIncludes = INCLUDE_ALL_PATTERN;
}
+
+ for(Component component : components ){
+
+ String componentName = component.getComponentName();
+
+ if(localName.equals(componentName)) {
+
+ if(doMatch(componentIncludes, componentName,false)) {
+
+ if(!doMatch(componentExcludes, componentName,false)) {
+ collectScripts(component);
+ collectStyles(component);
+ }
+
+ }
+
+ }
+
+ }
+
}
+
}
+
}
}
private void collectStyles(Component component) {
+
+ if(styleIncludes == null) {
+ styleIncludes = INCLUDE_ALL_PATTERN;
+ }
+
for(String style : component.getStyles()) {
- if(!isExcluded(styleExcludes, style, true)) {
- this.styles.add(style);
+
+ if(doMatch(styleIncludes, style, true)) {
+ if(!doMatch(styleExcludes, style, true)) {
+ this.styles.add(style);
+ }
}
- }
+
+ }
}
- private boolean isExcluded(String [] excludePatterns, String str, boolean matchPath) {
- boolean exclude = false;
- if(excludePatterns != null) {
- for(String excludePattern: excludePatterns) {
+ private boolean doMatch(String [] patterns, String str, boolean matchPath) {
+ boolean allow = false;
+
+ if(patterns != null) {
+
+ for(String excludePattern: patterns) {
+
if(matchPath) {
- exclude = SelectorUtils.matchPath(excludePattern, str);
+ allow = SelectorUtils.matchPath(excludePattern, str);
} else {
- exclude = SelectorUtils.matchPath(excludePattern, str);
+ allow = SelectorUtils.match(excludePattern, str);
}
- if(exclude) break;
+
+ if(allow) break;
}
+
}
- return exclude;
+
+ return allow;
}
private void collectScripts(Component component) {
+
+ if(scriptIncludes == null) {
+ scriptIncludes = INCLUDE_ALL_PATTERN;
+ }
+
for(String script : component.getScripts()) {
- if(!isExcluded(scriptExcludes, script, true)) {
- this.scripts.add(script);
- }
+
+ if(doMatch(scriptIncludes, script, true)) {
+ if(!doMatch(scriptExcludes, script, true)) {
+ this.scripts.add(script);
+ }
+ }
+
}
}
@@ -153,4 +210,36 @@
public void setStyleExcludes(String [] styleExcludes) {
this.styleExcludes = styleExcludes;
}
+
+ public String[] getScriptIncludes() {
+ return scriptIncludes;
+ }
+
+ public void setScriptIncludes(String[] scriptIncludes) {
+ this.scriptIncludes = scriptIncludes;
+ }
+
+ public String[] getStyleIncludes() {
+ return styleIncludes;
+ }
+
+ public void setStyleIncludes(String[] styleIncludes) {
+ this.styleIncludes = styleIncludes;
+ }
+
+ public String[] getNamespaceIncludes() {
+ return namespaceIncludes;
+ }
+
+ public void setNamespaceIncludes(String[] namespaceIncludes) {
+ this.namespaceIncludes = namespaceIncludes;
+ }
+
+ public String[] getComponentIncludes() {
+ return componentIncludes;
+ }
+
+ public void setComponentIncludes(String[] componentIncludes) {
+ this.componentIncludes = componentIncludes;
+ }
}
Modified:
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/mojo/ResourceDependencyMojo.java
===================================================================
---
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/mojo/ResourceDependencyMojo.java 2009-02-04
17:16:16 UTC (rev 12566)
+++
trunk/sandbox/cdk/maven-resource-dependency-plugin/src/main/java/org/richfaces/cdk/rd/mojo/ResourceDependencyMojo.java 2009-02-04
17:30:55 UTC (rev 12567)
@@ -123,7 +123,7 @@
* scriptPackName
* @parameter expression="custom-dependencies"
*/
- private String scriptPackName;
+ private String scriptFileName;
/**
* outputStyleDirectory
@@ -135,77 +135,126 @@
* stylePackName
* @parameter expression="custom-dependencies"
*/
- private String stylePackName;
+ private String styleFileName;
/**
- * beforeIncludes
+ * beforeScriptIncludes
* @parameter
*/
private List <String> beforeScriptIncludes;
/**
- * afterIncludes
+ * afterScriptIncludes
* @parameter
*/
private List <String> afterScriptIncludes;
/**
- * beforeIncludes
+ * beforeStyleIncludes
* @parameter
*/
private List <String> beforeStyleIncludes;
/**
- * afterIncludes
+ * afterStyleIncludes
* @parameter
*/
private List <String> afterStyleIncludes;
/**
+ * scriptIncludes
+ * @parameter
+ */
+ private String [] scriptIncludes;
+
+ /**
* scriptExcludes
* @parameter
*/
private String [] scriptExcludes;
/**
+ * styleIncludes
+ * @parameter
+ */
+ private String [] styleIncludes;
+
+ /**
* styleExcludes
* @parameter
*/
private String [] styleExcludes;
/**
+ * namespaceIncludes
+ * @parameter
+ */
+ private String [] namespaceIncludes;
+
+ /**
* namespaceExcludes
* @parameter
*/
private String [] namespaceExcludes;
/**
+ * componentIncludes
+ * @parameter
+ */
+
+ private String [] componentIncludes;
+
+ /**
* componentExcludes
* @parameter
*/
private String [] componentExcludes;
/**
+ * xml_config_patterns
+ * @parameter
+ */
+ private String [] xmlConfigPatterns;
+
+ /**
+ * xhtml_includes
+ * @parameter
+ */
+ private String [] xhtmlIncludes;
+
+ /**
+ * xhtml_excludes
+ * @parameter
+ */
+ private String [] xhtmlExcludes;
+ /**
* @component
*/
protected VelocityComponent velocity;
+
+
public void execute() throws MojoExecutionException, MojoFailureException {
try {
Set <Artifact> artifacts = resolveDependenciesArtifacts();
Digester defaultDigester = createDigester();
Map <String, Components> components = new HashMap<String, Components>();
+
+ if(xmlConfigPatterns == null) {
+ xmlConfigPatterns = PluginUtils.DEFAULT_CONFIG_PATTERNS;
+ }
+
for (Artifact artifact : artifacts) {
FileObject jar = resolveArtifact(artifact);
- FileObject [] configs = PluginUtils.resolveConfigsFromJar(jar,
PluginUtils.DEFAULT_CONFIG_PATTERNS);
+ FileObject [] configs = PluginUtils.resolveConfigsFromJar(jar, xmlConfigPatterns);
components.putAll(PluginUtils.processConfigs(configs, defaultDigester));
}
if(!webSourceDirectory.exists()) {
webSourceDirectory.mkdirs();
}
- ComponentsHandler handler = findComponents(webSourceDirectory, components,
PluginUtils.DEFAULT_PROCESS_INCLUDES, new String[0]);
+ ComponentsHandler handler = findComponents(webSourceDirectory, components,
xhtmlIncludes, xhtmlExcludes);
ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
ClassLoader contextClassLoader = createClassLoader();
@@ -215,22 +264,23 @@
Set <String> scripts = handler.getScripts();
- File scriptFile = new File(outputScriptDirectory, scriptPackName + ".js");
- if(scriptFile.exists()) {
- scriptFile.delete();
- }
-
+ File scriptFile = new File(outputScriptDirectory, scriptFileName + ".js");
+
if(!scripts.isEmpty()) {
if(!outputScriptDirectory.exists()) {
outputScriptDirectory.mkdirs();
}
ScriptAssembler scriptAssembler = new ScriptAssembler();
mergeResources(scriptFile, scriptAssembler, beforeScriptIncludes,
afterScriptIncludes, scripts);
+ } else {
+ if(scriptFile.exists()) {
+ scriptFile.delete();
+ }
}
Set <String> styles = handler.getStyles();
- File styleFile = new File(outputStyleDirectory, stylePackName + ".xcss");
- if(styleFile.exists()) styleFile.delete();
+ File styleFile = new File(outputStyleDirectory, styleFileName + ".xcss");
+
if(!styles.isEmpty()) {
if(!outputStyleDirectory.exists()) {
outputStyleDirectory.mkdirs();
@@ -239,7 +289,9 @@
StyleAssembler styleAssembler = new StyleAssembler();
styleAssembler.setVelocityComponent(velocity);
mergeResources(styleFile, styleAssembler, beforeStyleIncludes, afterStyleIncludes,
styles);
- }
+ } else if(styleFile.exists()) {
+ styleFile.delete();
+ }
}
Thread.currentThread().setContextClassLoader(oldClassLoader);
@@ -271,6 +323,14 @@
public ComponentsHandler findComponents (File webSourceDir, Map <String,
Components> components, String [] includes, String [] excludes) throws Exception {
+ if(includes == null) {
+ includes = PluginUtils.DEFAULT_PROCESS_INCLUDES;
+ }
+
+ if(excludes == null) {
+ excludes = new String[0];
+ }
+
DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir(webSourceDir);
scanner.setIncludes(includes);
@@ -281,10 +341,14 @@
ComponentsHandler handler = new ComponentsHandler();
handler.setComponents(components);
+ handler.setScriptIncludes(scriptIncludes);
handler.setScriptExcludes(scriptExcludes);
+ handler.setStyleIncludes(styleIncludes);
handler.setStyleExcludes(styleExcludes);
+ handler.setComponentIncludes(componentIncludes);
handler.setComponentExcludes(componentExcludes);
handler.setNamespaceExcludes(namespaceExcludes);
+ handler.setNamespaceIncludes(namespaceIncludes);
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
saxParserFactory.setNamespaceAware(true);
@@ -343,6 +407,7 @@
//use the existing ContextClassLoader in a realm of the classloading space
ClassRealm realm = world.newRealm("org.richfaces.cdk",
Thread.currentThread().getContextClassLoader());
+
//create another realm for the app jars
ClassRealm childRealm = realm.createChildRealm("jar");
@@ -360,11 +425,13 @@
addResources(childRealm, compileClasspathElements);
List<Resource> scripts = project.getScriptSourceRoots();
- addResources(realm, scripts);
+ addResources(childRealm, scripts);
List<Resource> resources = project.getResources();
- addResources(realm, resources);
+ addResources(childRealm, resources);
+ childRealm.addConstituent(webSourceDirectory.toURI().toURL());
+
//make the child realm the ContextClassLoader
classLoader = childRealm.getClassLoader();
return classLoader;