001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.apisupport.project.queries;
043:
044: import java.io.File;
045: import java.net.URI;
046: import java.net.URISyntaxException;
047: import org.netbeans.api.java.project.JavaProjectConstants;
048: import org.netbeans.api.project.Project;
049: import org.netbeans.api.project.ant.AntArtifact;
050: import org.netbeans.modules.apisupport.project.NbModuleProject;
051: import org.netbeans.spi.project.ant.AntArtifactProvider;
052: import org.netbeans.spi.project.support.ant.AntProjectHelper;
053: import org.netbeans.spi.project.support.ant.PropertyEvaluator;
054: import org.netbeans.spi.project.support.ant.PropertyUtils;
055:
056: /**
057: * Provide the module JAR as an exported artifact that other projects could import.
058: */
059: public final class AntArtifactProviderImpl implements
060: AntArtifactProvider {
061:
062: private final NbModuleProject project;
063: private final PropertyEvaluator eval;
064: private final AntProjectHelper helper;
065:
066: public AntArtifactProviderImpl(NbModuleProject project,
067: AntProjectHelper helper, PropertyEvaluator eval) {
068: this .project = project;
069: this .eval = eval;
070: this .helper = helper;
071: }
072:
073: public AntArtifact[] getBuildArtifacts() {
074: return new AntArtifact[] { new NbmAntArtifact(), };
075: }
076:
077: private final class NbmAntArtifact extends AntArtifact {
078:
079: public NbmAntArtifact() {
080: }
081:
082: public String getID() {
083: return "module"; // NOI18N
084: }
085:
086: public File getScriptLocation() {
087: return helper.resolveFile("build.xml"); // NOI18N
088: }
089:
090: public String getType() {
091: return JavaProjectConstants.ARTIFACT_TYPE_JAR;
092: }
093:
094: public URI[] getArtifactLocations() {
095: String jarloc = eval.evaluate("${cluster}/${module.jar}"); // NOI18N
096: File jar = helper.resolveFile(jarloc); // probably absolute anyway, now
097: String reldir = PropertyUtils.relativizeFile(project
098: .getProjectDirectoryFile(), jar);
099: if (reldir != null) {
100: try {
101: return new URI[] { new URI(null, null, reldir, null) };
102: } catch (URISyntaxException e) {
103: throw new AssertionError(e);
104: }
105: } else {
106: return new URI[] { jar.toURI() };
107: }
108: // XXX should it add in class path extensions?
109: }
110:
111: public String getTargetName() {
112: return "netbeans"; // NOI18N
113: }
114:
115: public String getCleanTargetName() {
116: return "clean"; // NOI18N
117: }
118:
119: public Project getProject() {
120: return project;
121: }
122:
123: }
124:
125: }
|