You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2008/01/09 21:00:37 UTC
svn commit: r610536 -
/myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-jdev-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/jdeveloper/JDeveloperMojo.java
Author: matzew
Date: Wed Jan 9 12:00:11 2008
New Revision: 610536
URL: http://svn.apache.org/viewvc?rev=610536&view=rev
Log:
fixed wrong JDev-Mojo on trunk
Modified:
myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-jdev-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/jdeveloper/JDeveloperMojo.java
Modified: myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-jdev-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/jdeveloper/JDeveloperMojo.java
URL: http://svn.apache.org/viewvc/myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-jdev-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/jdeveloper/JDeveloperMojo.java?rev=610536&r1=610535&r2=610536&view=diff
==============================================================================
--- myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-jdev-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/jdeveloper/JDeveloperMojo.java (original)
+++ myfaces/myfaces-build-tools/trunk/maven2-plugins/myfaces-jdev-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/jdeveloper/JDeveloperMojo.java Wed Jan 9 12:00:11 2008
@@ -6,9 +6,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.buildtools.maven2.plugin.jdeveloper;
+
+package org.apache.myfaces.trinidadbuild.plugin.jdeveloper;
import java.io.File;
import java.io.FileReader;
@@ -24,7 +25,9 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
+
import java.net.URL;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -34,17 +37,21 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
+import javax.xml.parsers.ParserConfigurationException;
+
import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
+
import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
@@ -53,6 +60,86 @@
import org.codehaus.plexus.util.xml.Xpp3DomWriter;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.xml.sax.SAXException;
+
+ /*
+ * Important informational note:
+ *
+ * The following XML code is similar to what would be seen in a pom file
+ * under the maven-jdev-plugin tag if Libraries (e.g. JSP Runtime
+ * and JSF 1.2) and Distributed Tag Libraries wanted to be added to the .jpr
+ * project.
+ *
+ * What you see below are the defaults that are put in a project's .jpr
+ * automatically without specifying anything. See replaceLibraries(),
+ * replaceTagLibraries() and replaceDefaultTagLibraries().
+ *
+ * Also note that by setting the property "jdev.plugin.add.libraries" to
+ * false in a project's pom.xml file, no libraries will be added, default
+ * or otherwise. In kind, setting the property "jdev.plugin.add.taglibs"
+ * to false will result in no tag libraries of any kind being added.
+ *
+ * As you would expect, the default for both of these properties is "true".
+ *
+ * <plugin>
+ <groupId>org.apache.myfaces.trinidadbuild</groupId>
+ <artifactId>maven-jdev-plugin</artifactId>
+ <version>1.2.4-SNAPSHOT</version>
+ <inherited>true</inherited>
+ <configuration>
+ <libraries>
+ <library>JSP Runtime</library>
+ <library>JSF 1.2</library>
+ </libraries>
+ <distributedTagLibraries>
+ <distributedTagLibrary>
+ <property>
+ <name>name</name>
+ <value>JSF HTML</value>
+ </property>
+ <property>
+ <name>version</name>
+ <value>1.2</value>
+ </property>
+ <property>
+ <name>jspVersion</name>
+ <value>2.1</value>
+ </property>
+ <property>
+ <name>tld</name>
+ <value>html_basic.tld</value>
+ </property>
+ <property>
+ <name>URI</name>
+ <value>http://java.sun.com/jsf/html</value>
+ </property>
+ </distributedTagLibrary>
+ <distributedTagLibrary>
+ <property>
+ <name>name</name>
+ <value>JSF Core</value>
+ </property>
+ <property>
+ <name>version</name>
+ <value>1.2</value>
+ </property>
+ <property>
+ <name>jspVersion</name>
+ <value>2.1</value>
+ </property>
+ <property>
+ <name>tld</name>
+ <value>jsf_core.tld</value>
+ </property>
+ <property>
+ <name>URI</name>
+ <value>http://java.sun.com/jsf/core</value>
+ </property>
+ </distributedTagLibrary>
+ </distributedTagLibraries>
+ </configuration>
+ </plugin>
+ */
/**
* @version $Id$
@@ -61,7 +148,8 @@
* @requiresDependencyResolution test
* @description Goal which generates the JDeveloper Workspace
*/
-public class JDeveloperMojo extends AbstractMojo
+public class JDeveloperMojo
+ extends AbstractMojo
{
/**
* @parameter
@@ -94,9 +182,7 @@
private boolean force;
/**
- * @parameter expression="10.1.3.0.4"
- * @required
- * @readonly
+ * @parameter expression="${jdev.release}" default-value="10.1.3.0.4"
*/
private String release;
@@ -115,10 +201,26 @@
private List reactorProjects;
/**
+ * Tag library Directory
+ *
+ * @parameter expression="${jdev.tag.lib.dir}" default-value="@oracle.home@lib/java/shared/oracle.jsf/1.2/jsf-ri.jar!/META-INF"
+ */
+ private String tagLibDirectory;
+
+ /**
+ * Tag Libraries and their properties
+ *
+ * @parameter
+ */
+ private Properties[] distributedTagLibraries;
+
+ /**
* Execute the Mojo.
*/
- public void execute() throws MojoExecutionException
+ public void execute()
+ throws MojoExecutionException
{
+ _parseRelease();
try
{
generateWorkspace();
@@ -131,12 +233,13 @@
}
}
- private void generateWorkspace() throws MojoExecutionException, IOException
+ private void generateWorkspace()
+ throws MojoExecutionException, IOException
{
if (!project.getCollectedProjects().isEmpty())
{
- getLog().info("Generating JDeveloper " + release +
- " workspace: " + project.getArtifactId());
+ getLog().info("Generating JDeveloper " + release + " workspace: " +
+ project.getArtifactId());
File workspaceFile = getJWorkspaceFile(project);
@@ -148,26 +251,39 @@
}
catch (XmlPullParserException e)
{
- throw new MojoExecutionException("Error generating project", e);
+ throw new MojoExecutionException("Error generating workspace", e);
}
}
}
- private void generateProject() throws IOException, MojoExecutionException
+ private void generateProject()
+ throws IOException, MojoExecutionException
{
if (!"pom".equals(project.getPackaging()))
{
File projectFile = getJProjectFile(project);
+
+ // Get Project Properties to tell Mojo whether or not to add
+ // library refs and taglibs to the project.
+ Properties props = project.getProperties();
+ String addLibs = (String)props.get(_PROPERTY_ADD_LIBRARY);
+ String addTagLibs = (String)props.get(_PROPERTY_ADD_TAGLIBS);
+ _addLibraries = (addLibs == null)
+ ? true : (new Boolean(addLibs)).booleanValue();
+ _addTagLibs = (addTagLibs == null)
+ ? true : (new Boolean(addTagLibs)).booleanValue();
+
// TODO: read configuration for war:war goal
File webappDir = new File(project.getBasedir(), "src/main/webapp");
// TODO: read configuration for compiler:complie goal
- File outputDir = new File(project.getBuild().getDirectory(), "classes");
+ File outputDir =
+ new File(project.getBuild().getDirectory(), "classes");
MavenProject executionProject = project.getExecutionProject();
List compileSourceRoots = executionProject.getCompileSourceRoots();
if (sourceRoots != null)
{
- for (int i=0; i < sourceRoots.length; i++)
+ for (int i = 0; i < sourceRoots.length; i++)
{
compileSourceRoots.add(sourceRoots[i].getAbsolutePath());
}
@@ -176,7 +292,7 @@
List compileResourceRoots = executionProject.getResources();
if (resourceRoots != null)
{
- for (int i=0; i < resourceRoots.length; i++)
+ for (int i = 0; i < resourceRoots.length; i++)
{
Resource resource = new Resource();
resource.setDirectory(resourceRoots[i].getAbsolutePath());
@@ -184,8 +300,11 @@
}
}
- getLog().info("Generating JDeveloper " + release +
- " Project " + project.getArtifactId());
+ getLog().info("Generating JDeveloper " + release + " Project " +
+ project.getArtifactId());
+
+ Set pluginArtifacts = new LinkedHashSet();
+ pluginArtifacts.addAll(project.getPluginArtifacts());
// Note: include "compile", "provided", "system" and "runtime" scopes
Set compileArtifacts = new LinkedHashSet();
@@ -193,26 +312,25 @@
compileArtifacts.addAll(project.getRuntimeArtifacts());
// Note: separate "runtime" vs. "compile" dependencies in JDeveloper?
- generateProject(projectFile,
- project.getArtifactId(),
- project.getPackaging(),
- project.getDependencies(),
- new ArrayList(compileArtifacts),
- compileSourceRoots,
- compileResourceRoots,
- Collections.singletonList(webappDir.getPath()),
+ generateProject(projectFile, project.getArtifactId(),
+ project.getPackaging(), project.getDependencies(),
+ new ArrayList(compileArtifacts), compileSourceRoots,
+ compileResourceRoots,
+ Collections.singletonList(webappDir.getPath()),
outputDir);
}
}
- private void generateTestProject() throws IOException, MojoExecutionException
+ private void generateTestProject()
+ throws IOException, MojoExecutionException
{
if (!"pom".equals(project.getPackaging()))
{
File projectFile = getJProjectTestFile(project);
File webappDir = new File(project.getBasedir(), "src/test/webapp");
// TODO: read configuration for compiler:testCompile goal
- File outputDir = new File(project.getBuild().getDirectory(), "test-classes");
+ File outputDir =
+ new File(project.getBuild().getDirectory(), "test-classes");
// self dependency needed for test project
List testDependencies = new ArrayList(project.getTestDependencies());
@@ -223,10 +341,12 @@
testDependencies.add(selfDependency);
MavenProject executionProject = project.getExecutionProject();
- List compileSourceRoots = executionProject.getTestCompileSourceRoots();
+ List compileSourceRoots =
+ executionProject.getTestCompileSourceRoots();
+
if (testSourceRoots != null)
{
- for (int i=0; i < testSourceRoots.length; i++)
+ for (int i = 0; i < testSourceRoots.length; i++)
{
compileSourceRoots.add(testSourceRoots[i].getAbsolutePath());
}
@@ -235,7 +355,7 @@
List compileResourceRoots = executionProject.getTestResources();
if (testResourceRoots != null)
{
- for (int i=0; i < testResourceRoots.length; i++)
+ for (int i = 0; i < testResourceRoots.length; i++)
{
Resource resource = new Resource();
resource.setDirectory(testSourceRoots[i].getAbsolutePath());
@@ -243,43 +363,39 @@
}
}
- getLog().info("Generating JDeveloper " + release +
- " Project " + project.getArtifactId() + "-test");
+ getLog().info("Generating JDeveloper " + release + " Project " +
+ project.getArtifactId() + "-test");
// Note: all artifacts implicitly included in "test" scope
- generateProject(projectFile,
- project.getArtifactId() + "-test",
- project.getPackaging(),
- testDependencies,
- project.getTestArtifacts(),
- compileSourceRoots,
- compileResourceRoots,
- Collections.singletonList(webappDir.getPath()),
+ generateProject(projectFile, project.getArtifactId() + "-test",
+ project.getPackaging(), testDependencies,
+ project.getTestArtifacts(), compileSourceRoots,
+ compileResourceRoots,
+ Collections.singletonList(webappDir.getPath()),
outputDir);
}
}
- private void generateProject(
- File projectFile,
- String projectName,
- String packaging,
- List dependencies,
- List artifacts,
- List sourceRoots,
- List resourceRoots,
- List webSourceRoots,
- File outputDir) throws IOException, MojoExecutionException
+ private void generateProject(File projectFile, String projectName,
+ String packaging, List dependencies,
+ List artifacts, List sourceRoots,
+ List resourceRoots, List webSourceRoots,
+ File outputDir)
+ throws IOException, MojoExecutionException
{
try
{
File projectDir = projectFile.getParentFile();
Xpp3Dom projectDOM = readProjectDOM(projectFile);
replaceWebappInfo(projectName, projectDOM);
- replaceSourcePaths(projectDir, sourceRoots, resourceRoots, projectDOM);
+ replaceDemoConfiguration(projectName, projectDOM);
+ replaceSourcePaths(projectDir, sourceRoots, resourceRoots,
+ projectDOM);
//replaceResourcePaths(projectDir, resourceRoots, projectDOM);
replaceWebSourcePaths(projectDir, webSourceRoots, projectDOM);
replaceDependencies(projectDir, dependencies, projectDOM);
replaceLibraries(projectDir, artifacts, projectDOM);
+ replaceTagLibraries(projectDOM);
replaceOutputDirectory(projectDir, outputDir, projectDOM);
writeDOM(projectFile, projectDOM);
@@ -292,9 +408,8 @@
}
}
- private void replaceProjects(
- File workspaceDir,
- Xpp3Dom workspaceDOM) throws XmlPullParserException
+ private void replaceProjects(File workspaceDir, Xpp3Dom workspaceDOM)
+ throws XmlPullParserException
{
// /jws:workspace
// /list[@n="listOfChildren"]
@@ -306,15 +421,18 @@
// </hash>
Xpp3Dom targetDOM = new Xpp3Dom("list");
- for (Iterator i = project.getCollectedProjects().iterator(); i.hasNext();)
+ for (Iterator i = project.getCollectedProjects().iterator();
+ i.hasNext(); )
{
- MavenProject collectedProject = (MavenProject)i.next();
+ MavenProject collectedProject = (MavenProject) i.next();
File projectFile = getJProjectFile(collectedProject);
- targetDOM.addChild(createProjectReferenceDOM(workspaceDir, projectFile));
+ targetDOM.addChild(createProjectReferenceDOM(workspaceDir,
+ projectFile));
File testProjectFile = getJProjectTestFile(collectedProject);
- targetDOM.addChild(createProjectReferenceDOM(workspaceDir, testProjectFile));
+ targetDOM.addChild(createProjectReferenceDOM(workspaceDir,
+ testProjectFile));
}
// TODO: use a better merge algorithm
@@ -325,29 +443,27 @@
Xpp3Dom.mergeXpp3Dom(sourceDOM, targetDOM, Boolean.FALSE);
}
- private void replaceWebSourcePaths(
- File projectDir,
- List sourceRoots,
- Xpp3Dom projectDOM) throws XmlPullParserException
+ private void replaceWebSourcePaths(File projectDir, List sourceRoots,
+ Xpp3Dom projectDOM)
+ throws XmlPullParserException
{
// /jpr:project
// /hash[@n="oracle.jdeveloper.model.J2eeSettings"]
// /hash[@n="webContentSet"]
// /list[@n="url-path"]
- Xpp3Dom pathsDOM =
+ Xpp3Dom pathsDOM =
findNamedChild(projectDOM, "hash", "oracle.jdeveloper.model.J2eeSettings");
- Xpp3Dom contentSetDOM =
+ Xpp3Dom contentSetDOM =
findNamedChild(pathsDOM, "hash", "webContentSet");
- Xpp3Dom sourceDOM =
- findNamedChild(contentSetDOM, "list", "url-path");
+ Xpp3Dom sourceDOM = findNamedChild(contentSetDOM, "list", "url-path");
//
// <url path="[relative-path-to-source-root]" />
//
Xpp3Dom targetDOM = new Xpp3Dom("list");
- for (Iterator i = sourceRoots.iterator(); i.hasNext();)
+ for (Iterator i = sourceRoots.iterator(); i.hasNext(); )
{
- File sourceRoot = new File((String)i.next());
+ File sourceRoot = new File((String) i.next());
String relativeRoot = getRelativeDir(projectDir, sourceRoot);
Xpp3Dom urlDOM = new Xpp3Dom("url");
urlDOM.setAttribute("path", relativeRoot);
@@ -362,19 +478,51 @@
Xpp3Dom.mergeXpp3Dom(sourceDOM, targetDOM, Boolean.FALSE);
}
- private void replaceWebappInfo(
- String projectName,
- Xpp3Dom projectDOM) throws XmlPullParserException
+ private void replaceDemoConfiguration(String projectName,
+ Xpp3Dom projectDOM)
+ throws XmlPullParserException
+ {
+ if ((_releaseMajor >= 11) && (projectName != null) &&
+ projectName.endsWith("demo"))
+ {
+ // /jpr:project
+ // /hash[@n="oracle.jdeveloper.runner.RunConfigurations"]
+ // /hash[@n="runConfigurationDefinitions"]
+ // /hash[@n="Default"]
+ // /value[@n="compileBeforeRun" v="false"]
+ // /url[@n="targetURL" path="src/main/webapp/index.jspx"]
+ Xpp3Dom configDOM =
+ findNamedChild(projectDOM, "hash", "oracle.jdeveloper.runner.RunConfigurations");
+ Xpp3Dom defsDOM =
+ findNamedChild(configDOM, "hash", "runConfigurationDefinitions");
+ Xpp3Dom defaultDOM = findNamedChild(defsDOM, "hash", "Default");
+
+ Xpp3Dom valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "compileBeforeRun");
+ valueDOM.setAttribute("v", "false");
+
+ Xpp3Dom targetDOM = new Xpp3Dom("url");
+ targetDOM.setAttribute("n", "targetURL");
+ targetDOM.setAttribute("path", "src/main/webapp/index.jspx");
+
+ defaultDOM.addChild(valueDOM);
+ defaultDOM.addChild(targetDOM);
+ }
+ return;
+ }
+
+ private void replaceWebappInfo(String projectName, Xpp3Dom projectDOM)
+ throws XmlPullParserException
{
// /jpr:project
// /hash[@n="oracle.jdeveloper.model.J2eeSettings"]
// /value[@n="j2eeWebAppName" v="maven-generated-webapp"]
// /value[@n="j2eeWebContextRoot" v="maven-generated-context-root"]
- Xpp3Dom settingsDOM =
- findNamedChild(projectDOM, "hash", "oracle.jdeveloper.model.J2eeSettings");
- Xpp3Dom webappNameDOM =
+ Xpp3Dom settingsDOM =
+ findNamedChild(projectDOM, "hash", "oracle.jdeveloper.model.J2eeSettings");
+ Xpp3Dom webappNameDOM =
findNamedChild(settingsDOM, "value", "j2eeWebAppName");
- Xpp3Dom webappContextDOM =
+ Xpp3Dom webappContextDOM =
findNamedChild(settingsDOM, "value", "j2eeWebContextRoot");
// update the webapp name
@@ -384,56 +532,100 @@
webappContextDOM.setAttribute("v", projectName + "-context-root");
}
- private void replaceSourcePaths(
- File projectDir,
- List sourceRoots,
- List resourceRoots,
- Xpp3Dom projectDOM) throws XmlPullParserException
+ private void replaceSourcePaths(File projectDir, List sourceRoots,
+ List resourceRoots, Xpp3Dom projectDOM)
+ throws XmlPullParserException
{
// /jpr:project
// /hash[@n="oracle.jdeveloper.model.PathsConfiguration"]
// /hash[@n="javaContentSet"]
// /list[@n="url-path"]
- Xpp3Dom pathsDOM =
+ Xpp3Dom pathsDOM =
findNamedChild(projectDOM, "hash", "oracle.jdeveloper.model.PathsConfiguration");
- Xpp3Dom contentSetDOM =
+ Xpp3Dom contentSetDOM =
findNamedChild(pathsDOM, "hash", "javaContentSet");
- Xpp3Dom sourceDOM =
- findNamedChild(contentSetDOM, "list", "url-path");
+ Xpp3Dom sourceDOM = findNamedChild(contentSetDOM, "list", "constituent-sets");
//
// <url path="[relative-path-to-source-root]" />
//
Xpp3Dom targetDOM = new Xpp3Dom("list");
+
Collections.sort(sourceRoots);
- for (Iterator i = sourceRoots.iterator(); i.hasNext();)
+ for (Iterator i = sourceRoots.iterator(); i.hasNext(); )
{
- File sourceRoot = new File((String)i.next());
+ File sourceRoot = new File((String) i.next());
+ Xpp3Dom hashDOM = new Xpp3Dom("hash");
+
+ Xpp3Dom listDOM = new Xpp3Dom("list");
+ listDOM.setAttribute("n", "pattern-filters");
+ hashDOM.addChild(listDOM);
+
+ Xpp3Dom stringDOM = new Xpp3Dom("string");
+ stringDOM.setAttribute("v", "+**");
+ listDOM.addChild(stringDOM);
+
+ listDOM = new Xpp3Dom("list");
+ listDOM.setAttribute("n", "url-path");
+ hashDOM.addChild(listDOM);
+
String relativeRoot = getRelativeDir(projectDir, sourceRoot);
Xpp3Dom urlDOM = new Xpp3Dom("url");
urlDOM.setAttribute("path", relativeRoot);
- targetDOM.addChild(urlDOM);
+ listDOM.addChild(urlDOM);
+
+ targetDOM.addChild(hashDOM);
}
// TODO: get bug fixed in 10.1.3 for copying resources
Collections.sort(resourceRoots, new Comparator()
- {
- public int compare(Object a, Object b)
- {
- Resource ra = (Resource)a;
- Resource rb = (Resource)b;
- return ra.getDirectory().compareTo(rb.getDirectory());
- }
+ {
+ public int compare(Object a, Object b)
+ {
+ Resource ra = (Resource) a;
+ Resource rb = (Resource) b;
+ return ra.getDirectory().compareTo(rb.getDirectory());
+ }
+
+ });
- });
- for (Iterator i = resourceRoots.iterator(); i.hasNext();)
+ for (Iterator i = resourceRoots.iterator(); i.hasNext(); )
{
- Resource resource = (Resource)i.next();
+ Resource resource = (Resource) i.next();
File resourceRoot = new File(resource.getDirectory());
String relativeRoot = getRelativeDir(projectDir, resourceRoot);
+
+ Xpp3Dom hashDOM = new Xpp3Dom("hash");
+
+ Xpp3Dom listDOM = new Xpp3Dom("list");
+ listDOM.setAttribute("n", "pattern-filters");
+ hashDOM.addChild(listDOM);
+
+ Xpp3Dom stringDOM = null;
+ // TODO: This is a Hack for excluding the golden files,
+ // which are not really xml files. We need a way, in
+ // the pom file to specify excludes.
+ if (relativeRoot.startsWith("src/test/resources"))
+ {
+ stringDOM = new Xpp3Dom("string");
+ stringDOM.setAttribute("v",
+ "-oracle/adfinternal/view/faces/renderkit/golden/");
+ listDOM.addChild(stringDOM);
+ }
+
+ stringDOM = new Xpp3Dom("string");
+ stringDOM.setAttribute("v", "+**");
+ listDOM.addChild(stringDOM);
+
+ listDOM = new Xpp3Dom("list");
+ listDOM.setAttribute("n", "url-path");
+ hashDOM.addChild(listDOM);
+
Xpp3Dom urlDOM = new Xpp3Dom("url");
urlDOM.setAttribute("path", relativeRoot);
- targetDOM.addChild(urlDOM);
+ listDOM.addChild(urlDOM);
+
+ targetDOM.addChild(hashDOM);
}
// TODO: use a better merge algorithm
@@ -444,30 +636,28 @@
Xpp3Dom.mergeXpp3Dom(sourceDOM, targetDOM, Boolean.FALSE);
}
- private void replaceResourcePaths(
- File projectDir,
- List resourceRoots,
- Xpp3Dom projectDOM) throws XmlPullParserException
+ private void replaceResourcePaths(File projectDir, List resourceRoots,
+ Xpp3Dom projectDOM)
+ throws XmlPullParserException
{
// /jpr:project
// /hash[@n="oracle.ide.model.ResourcePaths"]
// /hash[@n="resourcesContentSet"]
// /list[@n="url-path"]
- Xpp3Dom pathsDOM =
+ Xpp3Dom pathsDOM =
findNamedChild(projectDOM, "hash", "oracle.ide.model.ResourcePaths");
- Xpp3Dom contentSetDOM =
+ Xpp3Dom contentSetDOM =
findNamedChild(pathsDOM, "hash", "resourcesContentSet");
- Xpp3Dom sourceDOM =
- findNamedChild(contentSetDOM, "list", "url-path");
+ Xpp3Dom sourceDOM = findNamedChild(contentSetDOM, "list", "url-path");
//
// <url path="[relative-path-to-source-root]" />
//
Xpp3Dom targetDOM = new Xpp3Dom("list");
- for (Iterator i = resourceRoots.iterator(); i.hasNext();)
+ for (Iterator i = resourceRoots.iterator(); i.hasNext(); )
{
- Resource resource = (Resource)i.next();
+ Resource resource = (Resource) i.next();
File resourceRoot = new File(resource.getDirectory());
String relativeRoot = getRelativeDir(projectDir, resourceRoot);
Xpp3Dom urlDOM = new Xpp3Dom("url");
@@ -483,37 +673,42 @@
Xpp3Dom.mergeXpp3Dom(sourceDOM, targetDOM, Boolean.FALSE);
}
- private void replaceDependencies(
- File projectDir,
- List dependencies,
- Xpp3Dom projectDOM) throws XmlPullParserException
+ private void replaceDependencies(File projectDir, List dependencies,
+ Xpp3Dom projectDOM)
+ throws XmlPullParserException
{
// /jpr:project
// /hash[@n="oracle.ide.model.DependencyConfiguration"]
// /list[@n="dependencyList"]
- Xpp3Dom configDOM =
+ Xpp3Dom configDOM =
findNamedChild(projectDOM, "hash", "oracle.ide.model.DependencyConfiguration");
- Xpp3Dom sourceDOM =
+ Xpp3Dom sourceDOM =
findNamedChild(configDOM, "list", "dependencyList");
Xpp3Dom targetDOM = new Xpp3Dom("list");
- for (Iterator i = dependencies.iterator(); i.hasNext();)
+ for (Iterator i = dependencies.iterator(); i.hasNext(); )
{
- Dependency dependency = (Dependency)i.next();
- MavenProject dependentProject = findDependentProject(dependency.getManagementKey());
+ Dependency dependency = (Dependency) i.next();
+ MavenProject dependentProject =
+ findDependentProject(dependency.getManagementKey());
if (dependentProject != null)
{
File dependentProjectFile = getJProjectFile(dependentProject);
- String relativePath = getRelativeFile(projectDir, dependentProjectFile);
+ String relativePath =
+ getRelativeFile(projectDir, dependentProjectFile);
Xpp3Dom hashDOM = new Xpp3Dom("hash");
Xpp3Dom valueDOM = new Xpp3Dom("value");
valueDOM.setAttribute("n", "class");
- valueDOM.setAttribute("v", "oracle.jdeveloper.library.ProjectLibrary");
+ valueDOM.setAttribute("v",
+ "oracle.jdeveloper.library.ProjectLibrary");
+ Xpp3Dom srcOwnValDOM = new Xpp3Dom("value");
+ srcOwnValDOM.setAttribute("n", "sourceOwnerURL");
Xpp3Dom urlDOM = new Xpp3Dom("url");
urlDOM.setAttribute("n", "sourceURL");
urlDOM.setAttribute("path", relativePath);
hashDOM.addChild(valueDOM);
+ hashDOM.addChild(srcOwnValDOM);
hashDOM.addChild(urlDOM);
targetDOM.addChild(hashDOM);
}
@@ -527,26 +722,25 @@
Xpp3Dom.mergeXpp3Dom(sourceDOM, targetDOM, Boolean.FALSE);
}
- private void replaceLibraries(
- File projectDir,
- List artifacts,
- Xpp3Dom projectDOM) throws XmlPullParserException
+ private void replaceLibraries(File projectDir, List artifacts,
+ Xpp3Dom projectDOM)
+ throws XmlPullParserException
{
// /jpr:project
// /hash[@n="oracle.jdevimpl.config.JProjectLibraries"]
// /hash[@n="internalDefinitions"]
// /list[@n="libraryDefinitions"]
- Xpp3Dom projectLibsDOM =
+ Xpp3Dom projectLibsDOM =
findNamedChild(projectDOM, "hash", "oracle.jdevimpl.config.JProjectLibraries");
- Xpp3Dom internalDefsDOM =
+ Xpp3Dom internalDefsDOM =
findNamedChild(projectLibsDOM, "hash", "internalDefinitions");
- Xpp3Dom sourceDefsDOM =
+ Xpp3Dom sourceDefsDOM =
findNamedChild(internalDefsDOM, "list", "libraryDefinitions");
// /jpr:project
// /hash[@n="oracle.jdevimpl.config.JProjectLibraries"]
// /list[@n="libraryReferences"]
- Xpp3Dom sourceRefsDOM =
+ Xpp3Dom sourceRefsDOM =
findNamedChild(projectLibsDOM, "list", "libraryReferences");
Xpp3Dom targetDefsDOM = new Xpp3Dom("list");
@@ -565,27 +759,29 @@
// </hash>
//
- // sort the artifacts
- Collections.sort(artifacts, new Comparator() {
- public int compare(Object a, Object b)
- {
- Artifact arta = (Artifact)a;
- Artifact artb = (Artifact)b;
- return arta.getId().compareTo(artb.getId());
- }
+ // sort the artifacts
+ Collections.sort(artifacts, new Comparator()
+ {
+ public int compare(Object a, Object b)
+ {
+ Artifact arta = (Artifact) a;
+ Artifact artb = (Artifact) b;
+ return arta.getId().compareTo(artb.getId());
+ }
- });
+ });
List libraryRefs = new LinkedList();
- for (Iterator i = artifacts.iterator(); i.hasNext();)
+ for (Iterator i = artifacts.iterator(); i.hasNext(); )
{
- Artifact artifact = (Artifact)i.next();
+ Artifact artifact = (Artifact) i.next();
+
if (!isDependentProject(artifact.getDependencyConflictId()))
{
String id = artifact.getId();
String path = getRelativeFile(projectDir, artifact.getFile());
- // libraryReferences entry
+ // libraryDefinitions entry
Xpp3Dom hashDOM = new Xpp3Dom("hash");
Xpp3Dom listDOM = new Xpp3Dom("list");
listDOM.setAttribute("n", "classPath");
@@ -616,12 +812,36 @@
}
}
- // add manually defined libraries
- if (libraries != null)
- {
- for (int i=0; i < libraries.length; i++)
+ // This boolean is set by specifying the jdev.plugin.add.libraries
+ // property at the top of a project's pom file. There are projects
+ // that don't need these libraries in their .jpr files to compile and this
+ // property allows them to be excluded.
+ //
+ // IMPORTANT NOTE: if this property is set in a project,
+ // then libraries will NOT be added, even though they
+ // may be specified under the maven-jdev-plugin.
+ if (_addLibraries)
+ {
+ // add libraries. The default libraries can be
+ // overridden in the trunk or toplevel pom file.
+ // If user wants to also include the default
+ // libraries, he/she will have to also add them
+ // there. There is no facility to merge them.
+ if (libraries == null)
{
- libraryRefs.add(0, libraries[i]);
+ if (_releaseMajor >= 11)
+ {
+ // Add the default libraries
+ libraryRefs.add(0,"JSF 1.2");
+ libraryRefs.add(0,"JSP Runtime");
+ }
+ }
+ else
+ {
+ for (int i = 0; i < libraries.length; i++)
+ {
+ libraryRefs.add(0, libraries[i]);
+ }
}
}
@@ -634,13 +854,13 @@
// </hash>
//
Collections.sort(libraryRefs);
- for (Iterator i = libraryRefs.iterator(); i.hasNext();)
+
+ for (Iterator i = libraryRefs.iterator(); i.hasNext(); )
{
- String id = (String)i.next();
+ String id = (String) i.next();
- // libraryDefinitions entry
+ // libraryReferences entry
Xpp3Dom hashDOM = new Xpp3Dom("hash");
-
Xpp3Dom valueDOM = new Xpp3Dom("value");
valueDOM.setAttribute("n", "id");
valueDOM.setAttribute("v", id);
@@ -664,23 +884,388 @@
Xpp3Dom.mergeXpp3Dom(sourceRefsDOM, targetRefsDOM, Boolean.FALSE);
}
- private void copyTagLibraries(
- File projectDir,
- List dependencies,
- List artifacts) throws IOException
+ private void replaceLocalTagLibraries(Xpp3Dom targetLibsDOM)
+ throws XmlPullParserException
+ {
+ TldContentHandler tldHandler = new TldContentHandler();
+ String path = null;
+
+ // Loop through all the .tld files in the WEB-INF dir
+ // Parse each and get the values needed for the TagLibraries
+ // hash in the .jpr file.
+ try
+ {
+ File webInfDir =
+ new File(project.getBasedir(), "src/main/webapp/WEB-INF");
+ File[] files = webInfDir.listFiles();
+
+ Xpp3Dom hashDOM = null;
+ Xpp3Dom valueDOM = null;
+ for (int i = 0; i < files.length; i++)
+ {
+ path = files[i].getPath();
+ if (path.endsWith(".tld"))
+ {
+ hashDOM = new Xpp3Dom("hash");
+ // we have a tag library. Parse it and
+ // get the values needed for the .jpr file
+
+ // Parse
+ tldHandler.parseTld(files[i]);
+ // call gettors to get the values
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "jspVersion");
+ valueDOM.setAttribute("v", tldHandler.getJspVersion());
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "name");
+ valueDOM.setAttribute("v", tldHandler.getName());
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "prefix");
+ valueDOM.setAttribute("v", tldHandler.getPrefix());
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "tldURL");
+ valueDOM.setAttribute("v",
+ "WEB-INF/" + path.substring(path.indexOf("WEB-INF") + 8));
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "URI");
+ valueDOM.setAttribute("v", tldHandler.getURI());
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "version");
+ valueDOM.setAttribute("v", tldHandler.getVersion());
+ hashDOM.addChild(valueDOM);
+
+ // Add each file's hash to the tag-libraries "list"
+ targetLibsDOM.addChild(hashDOM);
+ } // endif
+ } // endfor
+ return;
+ }
+ catch (SAXException saxex)
+ {
+ getLog().info("SAX Parse Exception parsing " + path + ": " +
+ saxex.getMessage(), saxex);
+ }
+ catch (IOException ioe)
+ {
+ getLog().info("Unable to open an InputStream to " + path, ioe);
+ }
+ catch (ParserConfigurationException pce)
+ {
+ getLog().info("Unable to create SAX parser for " + path, pce);
+ }
+ }
+
+
+ private void replaceTagLibraries(Xpp3Dom projectDOM)
+ throws XmlPullParserException
+ {
+ // This boolean is set by specifying the jdev.plugin.add.taglibs
+ // property at the top of a project's pom file. There are projects
+ // that don't need taglibs in their .jpr files to compile and this
+ // allows them to be excluded.
+ if (!_addTagLibs)
+ return;
+
+ // /jpr:project
+ // /hash[@n="oracle.jdevimpl.webapp.jsp.libraries.model.ProjectTagLibraries"]
+ // /list[@n="tag-libaries"]
+ Xpp3Dom projectTagsDOM =
+ findNamedChild(projectDOM, "hash", "oracle.jdevimpl.webapp.jsp.libraries.model.ProjectTagLibraries");
+ Xpp3Dom tagLibsDOM =
+ findNamedChild(projectTagsDOM, "list", "tag-libraries");
+
+ Xpp3Dom targetLibsDOM = new Xpp3Dom("list");
+
+ //
+ // tagLibraryDefinitions
+ //
+ //<hash>
+ // <hash n="baseLibrary">
+ // <value n="name" v="JSF HTML"></value>
+ // <value n="version" v="1.2"></value>
+ // </hash>
+ // <value n="jspVersion" v="2.1"></value>
+ // <value n="name" v="JSF HTML"></value>
+ //
+ // <value n="tldURL" v="@oracle.home@lib/java/shared/oracle.jsf/1.2/jsf-ri.jar!/META-INF/html_basic.tld"></value>
+ // <value n="URI" v="http://java.sun.com/jsf/html"></value>
+ // <value n="version" v="1.2"></value>
+ //</hash>
+ //
+
+ // Parent "hash"
+ Xpp3Dom hashDOM = null;
+
+ // <value...
+ Xpp3Dom valueDOM = null;
+
+ if (distributedTagLibraries != null &&
+ distributedTagLibraries.length > 0)
+ {
+ // Process each distributed Tag Library
+ for (int i = 0; i < distributedTagLibraries.length; i++)
+ {
+ Properties disTagLib = distributedTagLibraries[i];
+ String nameName = null;
+ String nameValue = null;
+ String versionName = null;
+ String versionValue = null;
+
+ // Create parent hash for each taglib
+ hashDOM = new Xpp3Dom("hash");
+
+ // baseLibrary "hash" for each taglib
+ Xpp3Dom hashBaseDOM = new Xpp3Dom("hash");
+ hashBaseDOM.setAttribute("n", "baseLibrary");
+ // Add baseLibrary hash to parent hash
+ hashDOM.addChild(hashBaseDOM);
+
+ // Process each property of the taglib
+ for (Enumeration keys = disTagLib.propertyNames();
+ keys.hasMoreElements(); )
+ {
+ // Get the name value pair
+ String name = (String) keys.nextElement();
+ String value = (String) disTagLib.get(name);
+
+ // Put the name and version values
+ // inside the baseLibrary hash.
+ // This only happens once per taglib
+ if ("name".equals(name))
+ {
+ nameName = name;
+ nameValue = value;
+
+ // n="name, v=<name of taglib> in baseLibrary
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", name);
+ valueDOM.setAttribute("v", value);
+ hashBaseDOM.addChild(valueDOM);
+
+ // Duplicate the "name" <value...
+ // outside of the baseLibrary
+ // n="name, v=<name of taglib> in parent hash
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", nameName);
+ valueDOM.setAttribute("v", nameValue);
+ hashDOM.addChild(valueDOM);
+ }
+ else if ("version".equals(name))
+ {
+ versionName = name;
+ versionValue = value;
+
+ // n="version" v=<taglib version> in baseLibrary
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", name);
+ valueDOM.setAttribute("v", value);
+ hashBaseDOM.addChild(valueDOM);
+
+ // Duplicate the "version" <value...
+ // outside of the baseLibrary
+ // n="version" v=<taglib version> in parent hash
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", versionName);
+ valueDOM.setAttribute("v", versionValue);
+ hashDOM.addChild(valueDOM);
+ }
+ else
+ {
+ if ("tld".equals(name))
+ {
+ // Did not want to have a URL in the pom file.
+ // I just wanted the user to specify the name
+ // of the tld file. So we fix it for JDev
+ // here.
+ name += "URL";
+ value = tagLibDirectory + "/" + value;
+ }
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", name);
+ valueDOM.setAttribute("v", value);
+ hashDOM.addChild(valueDOM);
+ }
+ } //endfor processing each property
+
+ // We are done with this disTagLib
+ // Add it to the targetLibsDOM
+ if (hashDOM != null)
+ targetLibsDOM.addChild(hashDOM);
+ } // endfor processing each distributed tag lib
+ } //endif
+ else
+ {
+ // Use Default tag library configuration. See comment before
+ // replaceTagLibraries.
+ replaceDefaultTagLibraries(projectDOM, targetLibsDOM);
+ }
+
+ replaceLocalTagLibraries(targetLibsDOM);
+
+ // First, add JSP Runtime dependency if src/main/webapp exists
+ // TODO: use a better merge algorithm
+ removeChildren(tagLibsDOM);
+
+ // make sure to pass Boolean.FALSE to allow
+ // multiple child elements with the same name
+ Xpp3Dom.mergeXpp3Dom(tagLibsDOM, targetLibsDOM, Boolean.FALSE);
+ }
+
+ private void replaceDefaultTagLibraries(Xpp3Dom projectDOM,
+ Xpp3Dom targetLibsDOM)
+ throws XmlPullParserException
+ {
+ // Begin JSF HTML Tag lib
+ Xpp3Dom hashDOM = new Xpp3Dom("hash");
+ Xpp3Dom hashBaseDOM = new Xpp3Dom("hash");
+ Xpp3Dom valueDOM = null;
+
+ hashBaseDOM.setAttribute("n", "baseLibrary");
+
+ // Add baseLibrary hash to parent hash
+ hashDOM.addChild(hashBaseDOM);
+
+ // Create parent hash for each taglib
+ // hashDOM = new Xpp3Dom("hash");
+
+ // baseLibrary "hash" for each taglib
+ // Xpp3Dom hashBaseDOM = new Xpp3Dom("hash");
+ // hashBaseDOM.setAttribute("n", "baseLibrary");
+
+ // n="name, v=<name of taglib> in baseLibrary
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "name");
+ valueDOM.setAttribute("v", "JSF HTML");
+ hashBaseDOM.addChild(valueDOM);
+
+ // Duplicate the "name" <value...
+ // outside of the baseLibrary
+ // n="name, v=<name of taglib> in parent hash
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "name");
+ valueDOM.setAttribute("v", "JSF HTML");
+ hashDOM.addChild(valueDOM);
+
+ // n="version" v=<taglib version> in baseLibrary
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "version");
+ valueDOM.setAttribute("v", "1.2");
+ hashBaseDOM.addChild(valueDOM);
+
+ // Duplicate the "version" <value...
+ // outside of the baseLibrary
+ // n="name, v=<name of taglib> in parent hash
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "version");
+ valueDOM.setAttribute("v", "1.2");
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "jspVersion");
+ valueDOM.setAttribute("v", "2.1");
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "tldURL");
+ valueDOM.setAttribute("v", tagLibDirectory + "/html_basic.tld");
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "URI");
+ valueDOM.setAttribute("v", "http://java.sun.com/jsf/html");
+ hashDOM.addChild(valueDOM);
+
+ // We are done with this disTagLib
+ // Add it to the targetLibsDOM
+ if (hashDOM != null)
+ targetLibsDOM.addChild(hashDOM);
+
+ // Begin JSF Core Taglib
+ hashDOM = new Xpp3Dom("hash");
+ hashBaseDOM = new Xpp3Dom("hash");
+
+ hashBaseDOM.setAttribute("n", "baseLibrary");
+
+ // Add baseLibrary hash to parent hash
+ hashDOM.addChild(hashBaseDOM);
+
+ // n="name, v=<name of taglib> in baseLibrary
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "name");
+ valueDOM.setAttribute("v", "JSF Core");
+ hashBaseDOM.addChild(valueDOM);
+
+ // Duplicate the "name" <value...
+ // outside of the baseLibrary
+ // n="name, v=<name of taglib> in parent hash
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "name");
+ valueDOM.setAttribute("v", "JSF Core");
+ hashDOM.addChild(valueDOM);
+
+ // n="version" v=<taglib version> in baseLibrary
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "version");
+ valueDOM.setAttribute("v", "1.2");
+ hashBaseDOM.addChild(valueDOM);
+
+ // Duplicate the "version" <value...
+ // outside of the baseLibrary
+ // n="name, v=<name of taglib> in parent hash
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "version");
+ valueDOM.setAttribute("v", "1.2");
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "jspVersion");
+ valueDOM.setAttribute("v", "2.1");
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "tldURL");
+ valueDOM.setAttribute("v", tagLibDirectory + "/jsf_core.tld");
+ hashDOM.addChild(valueDOM);
+
+ valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "URI");
+ valueDOM.setAttribute("v", "http://java.sun.com/jsf/core");
+ hashDOM.addChild(valueDOM);
+
+ // We are done with this disTagLib
+ // Add it to the targetLibsDOM
+ if (hashDOM != null)
+ targetLibsDOM.addChild(hashDOM);
+ }
+
+
+ private void copyTagLibraries(File projectDir, List dependencies,
+ List artifacts)
+ throws IOException
{
File targetDir = new File(projectDir, "src/main/webapp/WEB-INF");
- for (Iterator i = dependencies.iterator(); i.hasNext();)
+ for (Iterator i = dependencies.iterator(); i.hasNext(); )
{
- Dependency dependency = (Dependency)i.next();
- MavenProject dependentProject = findDependentProject(dependency.getManagementKey());
+ Dependency dependency = (Dependency) i.next();
+ MavenProject dependentProject =
+ findDependentProject(dependency.getManagementKey());
if (dependentProject != null)
{
List resourceRoots = dependentProject.getResources();
- for (Iterator j = resourceRoots.iterator(); j.hasNext();)
+ for (Iterator j = resourceRoots.iterator(); j.hasNext(); )
{
- Resource resource = (Resource)j.next();
+ Resource resource = (Resource) j.next();
String resourceRoot = resource.getDirectory();
File resourceDirectory = new File(resourceRoot);
if (resourceDirectory.exists())
@@ -688,11 +1273,12 @@
DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir(resourceRoot);
scanner.addDefaultExcludes();
- scanner.setIncludes(new String[] { "META-INF/*.tld" });
+ scanner.setIncludes(new String[]
+ { "META-INF/*.tld" });
scanner.scan();
String[] tldFiles = scanner.getIncludedFiles();
- for (int k=0; k < tldFiles.length; k++)
+ for (int k = 0; k < tldFiles.length; k++)
{
File sourceFile = new File(resourceDirectory, tldFiles[k]);
File targetFile = new File(targetDir, sourceFile.getName());
@@ -709,10 +1295,10 @@
Map sourceMap = new TreeMap();
- for (Iterator i = artifacts.iterator(); i.hasNext();)
+ for (Iterator i = artifacts.iterator(); i.hasNext(); )
{
- Artifact artifact = (Artifact)i.next();
- if (!isDependentProject(artifact.getDependencyConflictId()) &&
+ Artifact artifact = (Artifact) i.next();
+ if (!isDependentProject(artifact.getDependencyConflictId()) &&
"jar".equals(artifact.getType()))
{
File file = artifact.getFile();
@@ -720,42 +1306,45 @@
Enumeration jarEntries = jarFile.entries();
while (jarEntries.hasMoreElements())
{
- JarEntry jarEntry = (JarEntry)jarEntries.nextElement();
+ JarEntry jarEntry = (JarEntry) jarEntries.nextElement();
String name = jarEntry.getName();
if (name.startsWith("META-INF/") && name.endsWith(".tld"))
{
- List taglibs = (List) sourceMap.get(name);
- if (taglibs == null)
- {
- taglibs = new ArrayList();
- sourceMap.put(name, taglibs);
- }
+ List taglibs = (List) sourceMap.get(name);
+ if (taglibs == null)
+ {
+ taglibs = new ArrayList();
+ sourceMap.put(name, taglibs);
+ }
- taglibs.add(file);
+ taglibs.add(file);
}
}
}
}
- for (Iterator i = sourceMap.entrySet().iterator(); i.hasNext();)
+ for (Iterator i = sourceMap.entrySet().iterator(); i.hasNext(); )
{
Map.Entry e = (Map.Entry) i.next();
List taglibs = (List) e.getValue();
String name = (String) e.getKey();
-
- for (Iterator ti = taglibs.iterator(); ti.hasNext();)
+
+ for (Iterator ti = taglibs.iterator(); ti.hasNext(); )
{
File file = (File) ti.next();
File sourceFile = new File(name);
StringBuffer buff = new StringBuffer(sourceFile.getName());
if (taglibs.size() > 1)
{
- String jarName = file.getName().substring(0, file.getName().length() - ".jar".length());
+ String jarName =
+ file.getName().substring(0, file.getName().length() -
+ ".jar".length());
buff.insert(buff.length() - ".tld".length(), "-" + jarName);
}
URL jarURL = file.toURL();
- URL sourceURL = new URL("jar:" + jarURL.toExternalForm() + "!/" + name);
+ URL sourceURL =
+ new URL("jar:" + jarURL.toExternalForm() + "!/" + name);
File targetFile = new File(targetDir, buff.toString());
if (targetFile.exists())
targetFile.delete();
@@ -764,19 +1353,18 @@
}
}
}
-
- private void replaceOutputDirectory(
- File projectDir,
- File outputDir,
- Xpp3Dom projectDOM) throws XmlPullParserException
+
+ private void replaceOutputDirectory(File projectDir, File outputDir,
+ Xpp3Dom projectDOM)
+ throws XmlPullParserException
{
// /jpr:project
// /hash[@n="oracle.jdevimpl.config.JProjectPaths"]
// /url[@n="outputDirectory"]
- Xpp3Dom projectPathsDOM =
+ Xpp3Dom projectPathsDOM =
findNamedChild(projectDOM, "hash", "oracle.jdevimpl.config.JProjectPaths");
- Xpp3Dom sourceDOM =
+ Xpp3Dom sourceDOM =
findNamedChild(projectPathsDOM, "url", "outputDirectory");
//
@@ -792,8 +1380,7 @@
*
* @return the JDeveloper project file
*/
- private File getJProjectFile(
- MavenProject project)
+ private File getJProjectFile(MavenProject project)
{
String jprName = project.getArtifactId() + ".jpr";
return new File(project.getBasedir(), jprName);
@@ -806,8 +1393,7 @@
*
* @return the JDeveloper test project file
*/
- private File getJProjectTestFile(
- MavenProject project)
+ private File getJProjectTestFile(MavenProject project)
{
String jprName = project.getArtifactId() + "-test.jpr";
return new File(project.getBasedir(), jprName);
@@ -820,8 +1406,7 @@
*
* @return the JDeveloper workspace file
*/
- private File getJWorkspaceFile(
- MavenProject project)
+ private File getJWorkspaceFile(MavenProject project)
{
String jwsName = project.getArtifactId() + ".jws";
return new File(project.getBasedir(), jwsName);
@@ -834,8 +1419,8 @@
*
* @return the parsed DOM
*/
- private Xpp3Dom readWorkspaceDOM(
- File workspaceFile) throws IOException, XmlPullParserException
+ private Xpp3Dom readWorkspaceDOM(File workspaceFile)
+ throws IOException, XmlPullParserException
{
return readDOM(workspaceFile, release + "/workspace.xml");
}
@@ -847,8 +1432,8 @@
*
* @return the parsed DOM
*/
- private Xpp3Dom readProjectDOM(
- File projectFile) throws IOException, XmlPullParserException
+ private Xpp3Dom readProjectDOM(File projectFile)
+ throws IOException, XmlPullParserException
{
return readDOM(projectFile, release + "/project.xml");
}
@@ -862,9 +1447,8 @@
*
* @return the parsed DOM
*/
- private Xpp3Dom readDOM(
- File sourceFile,
- String resourcePath) throws IOException, XmlPullParserException
+ private Xpp3Dom readDOM(File sourceFile, String resourcePath)
+ throws IOException, XmlPullParserException
{
Reader reader = null;
try
@@ -881,7 +1465,8 @@
// ensure that the resourcePath can be found
if (resource == null)
- throw new IOException("Unable to read resource: " + resourcePath);
+ throw new IOException("Unable to read resource: " +
+ resourcePath);
reader = new InputStreamReader(resource.openStream());
}
@@ -899,9 +1484,8 @@
* @param targetFile the target file
* @param sourceDOM the source DOM
*/
- private void writeDOM(
- File targetFile,
- Xpp3Dom sourceDOM) throws IOException, XmlPullParserException
+ private void writeDOM(File targetFile, Xpp3Dom sourceDOM)
+ throws IOException, XmlPullParserException
{
FileWriter writer = null;
try
@@ -915,16 +1499,12 @@
}
}
- private String getRelativeDir(
- File source,
- File target)
+ private String getRelativeDir(File source, File target)
{
return getRelativePath(source, target, true);
}
- private String getRelativeFile(
- File source,
- File target)
+ private String getRelativeFile(File source, File target)
{
return getRelativePath(source, target, false);
}
@@ -937,10 +1517,8 @@
*
* @return the relative path between two files
*/
- private String getRelativePath(
- File source,
- File target,
- boolean isDirectory)
+ private String getRelativePath(File source, File target,
+ boolean isDirectory)
{
String sourcePath = source.getAbsolutePath();
String targetPath = target.getAbsolutePath();
@@ -959,7 +1537,7 @@
String[] targetPaths = targetPath.split("\\" + File.separator);
// On Windows, the first element in the absolute path is a drive letter
- if(System.getProperty("os.name").startsWith("Windows"))
+ if (System.getProperty("os.name").startsWith("Windows"))
{
// uppercase the drive letter because Cygwin sometimes delivers
// a lowercase drive letter
@@ -972,7 +1550,7 @@
int commonPathCount = 0;
int minPathCount = Math.min(sourcePathCount, targetPathCount);
- for (int i=0; i < minPathCount; i++)
+ for (int i = 0; i < minPathCount; i++)
{
if (sourcePaths[i].equals(targetPaths[i]))
commonPathCount++;
@@ -983,22 +1561,24 @@
int sourceRelativePathCount = sourcePathCount - commonPathCount;
int targetRelativePathCount = targetPathCount - commonPathCount;
- int relativePathCount = sourceRelativePathCount + targetRelativePathCount;
+ int relativePathCount =
+ sourceRelativePathCount + targetRelativePathCount;
String[] relativePaths = new String[relativePathCount];
- for (int i=0; i < sourceRelativePathCount; i++)
+ for (int i = 0; i < sourceRelativePathCount; i++)
{
relativePaths[i] = "..";
}
- for (int i=0; i < targetRelativePathCount; i++)
+ for (int i = 0; i < targetRelativePathCount; i++)
{
- relativePaths[sourceRelativePathCount + i] = targetPaths[commonPathCount + i];
+ relativePaths[sourceRelativePathCount + i] =
+ targetPaths[commonPathCount + i];
}
// join
StringBuffer relativePath = new StringBuffer();
- for (int i=0; i < relativePathCount; i++)
+ for (int i = 0; i < relativePathCount; i++)
{
if (i > 0)
relativePath.append("/");
@@ -1013,13 +1593,11 @@
}
}
- private Xpp3Dom findNamedChild(
- Xpp3Dom parent,
- String childName,
- String attrValue)
+ private Xpp3Dom findNamedChild(Xpp3Dom parent, String childName,
+ String attrValue)
{
Xpp3Dom[] hash = parent.getChildren(childName);
- for (int i=0; i < hash.length; i++)
+ for (int i = 0; i < hash.length; i++)
{
if (attrValue.equals(hash[i].getAttribute("n")))
return hash[i];
@@ -1032,13 +1610,13 @@
return child;
}
- private MavenProject findDependentProject(
- String dependencyManagementKey)
+ private MavenProject findDependentProject(String dependencyManagementKey)
{
- for (Iterator i=reactorProjects.iterator(); i.hasNext(); )
+ for (Iterator i = reactorProjects.iterator(); i.hasNext(); )
{
- MavenProject reactorProject = (MavenProject)i.next();
- String ident = reactorProject.getArtifact().getDependencyConflictId();
+ MavenProject reactorProject = (MavenProject) i.next();
+ String ident =
+ reactorProject.getArtifact().getDependencyConflictId();
if (ident.equals(dependencyManagementKey))
return reactorProject.getExecutionProject();
}
@@ -1046,33 +1624,55 @@
return null;
}
- private boolean isDependentProject(
- String dependencyManagementKey)
+ private boolean isDependentProject(String dependencyManagementKey)
{
return (findDependentProject(dependencyManagementKey) != null);
}
- private void removeChildren(
- Xpp3Dom parent)
+ private void removeChildren(Xpp3Dom parent)
{
while (parent.getChildCount() != 0)
parent.removeChild(0);
}
- private Xpp3Dom createProjectReferenceDOM(
- File workspaceDir,
- File projectFile)
+ private Xpp3Dom createProjectReferenceDOM(File workspaceDir,
+ File projectFile)
{
Xpp3Dom hashDOM = new Xpp3Dom("hash");
- Xpp3Dom valueDOM = new Xpp3Dom("value");
- valueDOM.setAttribute("n", "nodeClass");
- valueDOM.setAttribute("v", "oracle.jdeveloper.model.JProject");
Xpp3Dom urlDOM = new Xpp3Dom("url");
urlDOM.setAttribute("n", "URL");
- urlDOM.setAttribute("path", getRelativeFile(workspaceDir, projectFile));
- hashDOM.addChild(valueDOM);
+ urlDOM.setAttribute("path",
+ getRelativeFile(workspaceDir, projectFile));
+ if (_releaseMajor < 11)
+ {
+ Xpp3Dom valueDOM = new Xpp3Dom("value");
+ valueDOM.setAttribute("n", "nodeClass");
+ valueDOM.setAttribute("v", "oracle.jdeveloper.model.JProject");
+ hashDOM.addChild(valueDOM);
+ }
hashDOM.addChild(urlDOM);
return hashDOM;
}
+ private void _parseRelease()
+ {
+ String nums[] = release.split("\\.");
+ try
+ {
+ _releaseMajor = Integer.parseInt(nums[0]);
+ }
+ catch (NumberFormatException e)
+ {
+ // Default release is currently 10.x
+ _releaseMajor = 10;
+ }
+ }
+
+ private int _releaseMajor = 0;
+ private boolean _addLibraries = true;
+ private boolean _addTagLibs = true;
+
+ private static final String _PROPERTY_ADD_LIBRARY = "jdev.plugin.add.libraries";
+ private static final String _PROPERTY_ADD_TAGLIBS = "jdev.plugin.add.taglibs";
+
}