This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 53826
Collapse All | Expand All

(-)nbbuild/antsrc/org/netbeans/nbbuild/Arch-default-dep-nb.xsl (+56 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!--
3
                Sun Public License Notice
4
5
The contents of this file are subject to the Sun Public License
6
Version 1.0 (the "License"). You may not use this file except in
7
compliance with the License. A copy of the License is available at
8
http://www.sun.com/
9
10
The Original Code is NetBeans. The Initial Developer of the Original
11
Code is Sun Microsystems, Inc. Portions Copyright 1997-2005 Sun
12
Microsystems, Inc. All Rights Reserved.
13
-->
14
15
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
16
    <xsl:output method="xml"/>
17
    
18
    <!-- print out <api /> dependencies on all needed netbeans subprojects -->
19
    <xsl:template match="/" >
20
        <p>
21
            These modules are required in project.xml file:
22
            <ul>
23
                <xsl:apply-templates select="//dependency" />
24
            </ul>
25
        </p>
26
    </xsl:template>    
27
        
28
    <xsl:template match="dependency" >
29
        <li><api>
30
            <xsl:attribute name="type">import</xsl:attribute>
31
            <xsl:attribute name="group">java</xsl:attribute>
32
            <xsl:attribute name="category">devel</xsl:attribute>
33
            <xsl:attribute name="name">
34
                <xsl:apply-templates select="code-name-base"/>
35
            </xsl:attribute>
36
            <xsl:attribute name="url">
37
                <xsl:text>@</xsl:text>
38
                <xsl:value-of select="translate(code-name-base/text(),'.','-')"/>
39
                <xsl:text>@/overview-summary.html</xsl:text>
40
            </xsl:attribute>
41
42
            <xsl:if test="compile-dependency">
43
                The module is needed for compilation. 
44
            </xsl:if>
45
            <xsl:if test="run-dependency">
46
                The module is used during runtime. 
47
                <xsl:if test="run-dependency/specification-version">
48
                    Specification version 
49
                    <xsl:value-of select="run-dependency/specification-version/node()" />
50
                    is required.
51
                </xsl:if>
52
            </xsl:if>
53
        </api></li>
54
    </xsl:template>
55
</xsl:stylesheet> 
56
(-)nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd (-1 / +6 lines)
Lines 20-26 Link Here
20
     can occur in HTML
20
     can occur in HTML
21
-->
21
-->
22
<!ENTITY % xhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "../../../../../libs/external/dtds/xhtml1-20020801/DTD/xhtml1-strict.dtd">
22
<!ENTITY % xhtml PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "../../../../../libs/external/dtds/xhtml1-20020801/DTD/xhtml1-strict.dtd">
23
<!ENTITY % special "br | span | bdo | object | img | map | api | usecase ">
23
<!ENTITY % special "br | span | bdo | object | img | map | api | usecase | defaultanswer ">
24
<!-- Now include normal XHTML DTD: -->
24
<!-- Now include normal XHTML DTD: -->
25
%xhtml;
25
%xhtml;
26
26
Lines 45-50 Link Here
45
<!ELEMENT answer %Flow; >
45
<!ELEMENT answer %Flow; >
46
<!ATTLIST answer
46
<!ATTLIST answer
47
          id ID #REQUIRED
47
          id ID #REQUIRED
48
>
49
50
<!ELEMENT defaultanswer EMPTY >
51
<!ATTLIST defaultanswer
52
          generate (here|none) 'here' 
48
>
53
>
49
54
50
<!ELEMENT api %Flow; >
55
<!ELEMENT api %Flow; >
(-)nbbuild/antsrc/org/netbeans/nbbuild/Arch.java (-4 / +105 lines)
Lines 15-20 Link Here
15
import java.io.*;
15
import java.io.*;
16
import java.text.DateFormat;
16
import java.text.DateFormat;
17
import java.util.*;
17
import java.util.*;
18
import javax.xml.parsers.DocumentBuilderFactory;
19
import javax.xml.transform.dom.DOMResult;
20
import javax.xml.transform.stream.StreamSource;
18
21
19
import org.apache.tools.ant.BuildException;
22
import org.apache.tools.ant.BuildException;
20
import org.apache.tools.ant.taskdefs.Ant;
23
import org.apache.tools.ant.taskdefs.Ant;
Lines 88-93 Link Here
88
    public void setApichanges (File apichanges) {
91
    public void setApichanges (File apichanges) {
89
        this.apichanges = apichanges;
92
        this.apichanges = apichanges;
90
    }
93
    }
94
95
    private File project = null;
96
    public void setProject (File x) {
97
        this.project = x;
98
    }
91
    
99
    
92
    /** Run the conversion */
100
    /** Run the conversion */
93
    public void execute () throws BuildException {        
101
    public void execute () throws BuildException {        
Lines 259-264 Link Here
259
            
267
            
260
            qSource = new DOMSource(q);
268
            qSource = new DOMSource(q);
261
        }
269
        }
270
271
        
272
        if (project != null) {
273
            // read also project file and apply transformation on defaultanswer tags
274
            log("Reading project from " + project);
275
276
            
277
            
278
            org.w3c.dom.Document prj;
279
            try {
280
                DocumentBuilderFactory fack = DocumentBuilderFactory.newInstance();
281
                fack.setNamespaceAware(false);
282
                prj = fack.newDocumentBuilder().parse (project);
283
            } catch (SAXParseException ex) {
284
                log(ex.getSystemId() + ":" + ex.getLineNumber() + ": " + ex.getLocalizedMessage(), Project.MSG_ERR);
285
                throw new BuildException(project.getAbsolutePath() + " is malformed or invalid", ex, getLocation());
286
            } catch (Exception ex) {
287
                throw new BuildException ("File " + project + " cannot be parsed: " + ex.getLocalizedMessage(), ex, getLocation());
288
            }
289
            
290
            DOMSource prjSrc = new DOMSource(prj);
291
            
292
            NodeList node = prj.getElementsByTagName("project");
293
            if (node.getLength() != 1) {
294
                throw new BuildException("Expected one element <project/> in " + project + "but was: " + node.getLength());
295
            }
296
297
            NodeList list= q.getElementsByTagName("answer");
298
            for (int i = 0; i < list.getLength(); i++) {
299
                Node n = list.item(i);
300
                String id = n.getAttributes().getNamedItem("id").getNodeValue();
301
                java.net.URL u = Arch.class.getResource("Arch-default-" + id + ".xsl");
302
                if (u != null) {
303
                    log("Found default answer to " + id + " question", Project.MSG_VERBOSE);
304
                    Node defaultAnswer = findDefaultAnswer(n);
305
                    if (defaultAnswer != null && 
306
                        "none".equals(defaultAnswer.getAttributes().getNamedItem("generate").getNodeValue())
307
                    ) {
308
                        log("Skipping answer as there is <defaultanswer generate='none'", Project.MSG_VERBOSE);
309
                        // ok, this default answer is requested to be skipped
310
                        continue;
311
                    }
312
                    
313
                    DOMResult res = new DOMResult(q.createElement("p"));
314
                    try {
315
                        StreamSource defXSL = new StreamSource(u.openStream());
316
                    
317
                        TransformerFactory fack = TransformerFactory.newInstance();
318
                        Transformer t = fack.newTransformer(defXSL);
319
                        t.transform(prjSrc, res);
320
                    } catch (IOException ex) {
321
                        throw new BuildException (ex);
322
                    } catch (javax.xml.transform.TransformerException ex) {
323
                        throw new BuildException (ex);
324
                    }
325
                    
326
                    if (defaultAnswer != null) {
327
                        log("Replacing default answer", Project.MSG_VERBOSE);
328
                        defaultAnswer.getParentNode().replaceChild(res.getNode(), defaultAnswer);
329
                    } else {
330
                        log("Adding default answer to the end of previous one", Project.MSG_VERBOSE);
331
                        Element para = q.createElement("p");
332
                        para.appendChild(q.createTextNode("Default answer to this question is:"));
333
                        para.appendChild(q.createComment("If you do not want default answer to be generated you can use <defaultanswer generate='none' /> here"));
334
                        para.appendChild(q.createElement("br"));
335
                        para.appendChild(res.getNode());
336
                        n.appendChild(para);
337
                    }
338
                }
339
            }
340
            
341
            
342
            qSource = new DOMSource(q);
343
        }
262
        
344
        
263
        // apply the transform operation
345
        // apply the transform operation
264
        try {
346
        try {
Lines 352-362 Link Here
352
            
434
            
353
            //w.write("\n\n<!-- Question: " + s + "\n");
435
            //w.write("\n\n<!-- Question: " + s + "\n");
354
            w.write("\n\n<!--\n        ");
436
            w.write("\n\n<!--\n        ");
355
            
356
            w.write(elementToString(n));
437
            w.write(elementToString(n));
357
            
358
            w.write("\n-->\n");
438
            w.write("\n-->\n");
359
            w.write(" <answer id=\"" + s + "\">\n  <p>\n   XXX no answer for " + s + "\n  </p>\n </answer>\n\n");
439
            
440
            java.net.URL u = Arch.class.getResource("Arch-default-" + s + ".xsl");
441
            if (u != null) {
442
                // there is default answer
443
                w.write(" <answer id=\"" + s + "\">\n  <defaultanswer generate='here' />\n </answer>\n\n");
444
            } else {
445
                w.write(" <answer id=\"" + s + "\">\n  <p>\n   XXX no answer for " + s + "\n  </p>\n </answer>\n\n");
446
            }
360
        }
447
        }
361
    }
448
    }
362
        
449
        
Lines 469-473 Link Here
469
            throw (IOException)new IOException(x.toString()).initCause(x);
556
            throw (IOException)new IOException(x.toString()).initCause(x);
470
        }
557
        }
471
    }
558
    }
472
    
559
560
    private static Node findDefaultAnswer(Node n) {
561
        if (n.getNodeName().equals ("defaultanswer")) {
562
            return n;
563
        }
564
        
565
        NodeList arr = n.getChildNodes();
566
        for (int i = 0; i < arr.getLength(); i++) {
567
            Node found = findDefaultAnswer(arr.item(i));
568
            if (found != null) {
569
                return found;
570
            }
571
        }
572
        return null;
573
    }
473
}
574
}
(-)nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl (-1 / +7 lines)
Lines 167-178 Link Here
167
        <xsl:param name="target" />
167
        <xsl:param name="target" />
168
        <xsl:param name="generate-export" select="'true'" />
168
        <xsl:param name="generate-export" select="'true'" />
169
        <xsl:param name="generate-import" select="'true'" />
169
        <xsl:param name="generate-import" select="'true'" />
170
        <xsl:param name="generate-group" select="''" />
170
    
171
    
171
        <xsl:for-each select="//api[generate-id() = generate-id(key('apiGroups', @group))]">
172
        <xsl:for-each select="//api[
173
            generate-id() = generate-id(key('apiGroups', @group))
174
            and
175
            ($generate-group = '' or @group = $generate-group)
176
        ]">
172
            <xsl:call-template name="jump-to-target">
177
            <xsl:call-template name="jump-to-target">
173
                <xsl:with-param name="group" select="@group" />
178
                <xsl:with-param name="group" select="@group" />
174
                <xsl:with-param name="target" select="$target" />
179
                <xsl:with-param name="target" select="$target" />
175
                <xsl:with-param name="generate-export" select="$generate-export" />
180
                <xsl:with-param name="generate-export" select="$generate-export" />
181
                <xsl:with-param name="generate-import" select="$generate-import" />
176
                <xsl:with-param name="generate-import" select="$generate-import" />
182
                <xsl:with-param name="generate-import" select="$generate-import" />
177
            </xsl:call-template>
183
            </xsl:call-template>
178
        </xsl:for-each>
184
        </xsl:for-each>
(-)nbbuild/javadoctools/exportOverview.xsl (-7 / +12 lines)
Lines 62-75 Link Here
62
        
62
        
63
            <h3>Dependencies</h3>
63
            <h3>Dependencies</h3>
64
64
65
            <h5>What do other modules need to do to declare a dependency on this one?</h5>
65
            <xsl:if test="api-answers/answer[@id='deploy-dependencies']/node()" >
66
            <xsl:apply-templates select="api-answers/answer[@id='deploy-dependencies']/node()" mode="description"/>
66
                <h5>What do other modules need to do to declare a dependency on this one?</h5>
67
                <xsl:apply-templates select="api-answers/answer[@id='deploy-dependencies']/node()" mode="description"/>
68
            </xsl:if>
67
69
68
            <h5>Other dependencies</h5>
70
            <h5>This module depends on following projects</h5>
69
71
            
70
                PENDING: Need project.xml to list what projects this one depends on from project.xml &amp;
72
                <!-- imported from Arch.xsl -->
71
                arch.xml and
73
                <xsl:call-template name="generate-api-table" >
72
                other imported interfaces from arch.xml
74
                    <xsl:with-param name="target" select="'api-group'" />
75
                    <xsl:with-param name="generate-export" select="'false'" />
76
                    <xsl:with-param name="generate-group" select="'java'" />
77
                </xsl:call-template>
73
78
74
         </body>
79
         </body>
75
        </html>
80
        </html>
(-)nbbuild/javadoctools/template.xml (-3 / +9 lines)
Lines 129-135 Link Here
129
    <target name="javadoc-generate-overview" depends="javadoc-init" if="javadoc.overview.generate.generic" >
129
    <target name="javadoc-generate-overview" depends="javadoc-init" if="javadoc.overview.generate.generic" >
130
        <delete file="${javadoc.overview}" />
130
        <delete file="${javadoc.overview}" />
131
        <arch xsl="exportOverview.xsl" answers="${javadoc.arch}" output="${javadoc.overview}" stylesheet="prose.css"
131
        <arch xsl="exportOverview.xsl" answers="${javadoc.arch}" output="${javadoc.overview}" stylesheet="prose.css"
132
            apichanges="${javadoc.apichanges}" 
132
            apichanges="${javadoc.apichanges}" project="${javadoc.project}" 
133
        >
133
        >
134
            <!--
134
            <!--
135
            <param name="changes-since-year" expression="${previous.release.year}"/>
135
            <param name="changes-since-year" expression="${previous.release.year}"/>
Lines 277-283 Link Here
277
        </taskdef>
277
        </taskdef>
278
        <!-- Warn about incorrect question version, but do not make build fail: -->
278
        <!-- Warn about incorrect question version, but do not make build fail: -->
279
        <property name="arch.warn" value="true"/>
279
        <property name="arch.warn" value="true"/>
280
        <arch answers="${javadoc.arch}" output="${javadoc.out.dir}/architecture-summary.html" stylesheet="prose.css" overviewlink="overview-summary.html" footer="@FOOTER@"/>
280
        <arch answers="${javadoc.arch}" 
281
            output="${javadoc.out.dir}/architecture-summary.html" 
282
            stylesheet="prose.css" 
283
            overviewlink="overview-summary.html" 
284
            footer="@FOOTER@" 
285
            project="${javadoc.project}" 
286
        />
281
    </target>
287
    </target>
282
288
283
    <target name="arch-replace-init" if="javadoc.manifest">
289
    <target name="arch-replace-init" if="javadoc.manifest">
Lines 362-368 Link Here
362
            <include name="**/package-summary.html"/>
368
            <include name="**/package-summary.html"/>
363
            <include name="**/doc-files/**/*.html"/>
369
            <include name="**/doc-files/**/*.html"/>
364
            <!-- Make hyperlinks point to the source files, not the copied files: -->
370
            <!-- Make hyperlinks point to the source files, not the copied files: -->
365
            <mapper type="glob" from="${javadoc.out.dir}/overview-summary.html" to="${javadoc.overview}"/>
371
            <mapper type="glob" from="${javadoc.out.dir}/overview-summary.html" to="${javadoc.arch}"/>
366
            <mapper type="glob" from="${javadoc.out.dir}/*/package-summary.html" to="${javadoc.docfiles}/*/package.html"/>
372
            <mapper type="glob" from="${javadoc.out.dir}/*/package-summary.html" to="${javadoc.docfiles}/*/package.html"/>
367
            <mapper type="glob" from="${javadoc.out.dir}/apichanges.html" to="${javadoc.apichanges}"/>
373
            <mapper type="glob" from="${javadoc.out.dir}/apichanges.html" to="${javadoc.apichanges}"/>
368
            <mapper type="glob" from="${javadoc.out.dir}/architecture-summary.html" to="${javadoc.arch}"/>
374
            <mapper type="glob" from="${javadoc.out.dir}/architecture-summary.html" to="${javadoc.arch}"/>
(-)nbbuild/templates/projectized.xml (+1 lines)
Lines 80-85 Link Here
80
            <property name="javadoc.packages" value="${module.javadoc.packages}"/>
80
            <property name="javadoc.packages" value="${module.javadoc.packages}"/>
81
            <property name="javadoc.classpath" refid="cp"/>
81
            <property name="javadoc.classpath" refid="cp"/>
82
            <property name="javadoc.manifest" location="${manifest.mf}"/>
82
            <property name="javadoc.manifest" location="${manifest.mf}"/>
83
            <property name="javadoc.project" location="nbproject/project.xml"/>
83
        </ant>
84
        </ant>
84
    </target>
85
    </target>
85
    
86
    
(-)nbbuild/test/unit/src/org/netbeans/nbbuild/ArchQuestionsTest.java (+285 lines)
Lines 21-26 Link Here
21
import junit.framework.*;
21
import junit.framework.*;
22
22
23
import org.netbeans.junit.*;
23
import org.netbeans.junit.*;
24
import org.w3c.dom.Document;
24
25
25
26
26
/** Check the behaviour Arch task.
27
/** Check the behaviour Arch task.
Lines 52-57 Link Here
52
53
53
        assertTrue ("File is generated", answers.exists ());
54
        assertTrue ("File is generated", answers.exists ());
54
    }
55
    }
56
57
    public void testGenerateArchFileWhenEmptyWithDefaultAnswerForNbDepsQuestion() throws Exception {
58
        java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString ("");
59
        answers.delete ();
60
        assertFalse ("Really deleted", answers.exists ());
61
62
        java.io.File f = PublicPackagesInProjectizedXMLTest.extractString (
63
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
64
            "<project name=\"Test Arch\" basedir=\".\" default=\"all\" >" +
65
            "  <taskdef name=\"arch\" classname=\"org.netbeans.nbbuild.Arch\" classpath=\"${nb_all}/nbbuild/nbantext.jar\"/>" +
66
            "  <arch answers=\"" + answers + "\" output=\"x.html\" />" +
67
            "<target name=\"all\" >" +
68
            "  " +
69
            "</target>" +
70
            "</project>"
71
72
        );
73
        PublicPackagesInProjectizedXMLTest.execute (f, new String[] { });
74
75
        assertTrue ("File is generated", answers.exists ());
76
        
77
        String res = PublicPackagesInProjectizedXMLTest.readFile(answers);
78
        
79
        org.w3c.dom.Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(answers);
80
81
        org.w3c.dom.NodeList list = dom.getElementsByTagName("defaultanswer");
82
        assertTrue("There is at least one defaultanswer: " + res, list.getLength() > 0);
83
        for (int i = 0; i < list.getLength(); i++) {
84
            org.w3c.dom.Node n = list.item(i);
85
            while (n != null) {
86
                n = n.getParentNode();
87
                if (n.getNodeName().equals ("answer")) {
88
                    String id = n.getAttributes().getNamedItem("id").getNodeValue();
89
                    if (id.equals ("dep-nb")) {
90
                        // ok, we were searching for answer to dep-nb question
91
                        return;
92
                    }
93
                }
94
            }
95
        }
96
        
97
        fail ("dep-nb question should have a defaultanswer: " + res);
98
    }
55
    
99
    
56
    public void testDoNotCorruptTheFileWhenItExists() throws Exception {
100
    public void testDoNotCorruptTheFileWhenItExists() throws Exception {
57
        java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString (
101
        java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString (
Lines 315-320 Link Here
315
        list = dom.getElementsByTagName("change");
359
        list = dom.getElementsByTagName("change");
316
        assertEquals("Two change elements:\n" + txt, 2, list.getLength());
360
        assertEquals("Two change elements:\n" + txt, 2, list.getLength());
317
        
361
        
362
    }
363
364
    
365
    public void testReadNbDepsFromProjectXML() throws Exception {
366
        String[] txt = new String[1];
367
        Document dom = doReadNbDepsFromProjectXML("", txt);
368
        
369
        
370
        org.w3c.dom.NodeList list;
371
        list =  dom.getElementsByTagName("api");
372
        assertTrue("There is more than one api tag: " + txt[0], list.getLength() > 0);
373
        
374
        for (int i = 0; i < list.getLength(); i++) {
375
                org.w3c.dom.Node n = list.item(i);
376
                
377
                assertEquals ("group is java", "java", n.getAttributes().getNamedItem("group").getNodeValue());
378
                assertEquals ("type is import", "import", n.getAttributes().getNamedItem("type").getNodeValue());
379
        }
380
    }
381
382
    
383
    public void testReadNbDepsFromProjectXMLWhenDefaultAnswerRequested() throws Exception {
384
        String[] txt = new String[1];
385
        Document dom = doReadNbDepsFromProjectXML(" <defaultanswer generate='here'/>", txt);
386
        
387
        
388
        org.w3c.dom.NodeList list;
389
        list =  dom.getElementsByTagName("api");
390
        assertTrue("There is more than one api tag: " + txt[0], list.getLength() > 0);
391
        
392
        for (int i = 0; i < list.getLength(); i++) {
393
                org.w3c.dom.Node n = list.item(i);
394
                
395
                assertEquals ("group is java", "java", n.getAttributes().getNamedItem("group").getNodeValue());
396
                assertEquals ("type is import", "import", n.getAttributes().getNamedItem("type").getNodeValue());
397
        }
398
        
399
        assertEquals("Warnings are not included if defaultanswer is present: " + txt[0], -1, txt[0].indexOf("Default answer to this question"));
400
    }
401
402
    public void testReadNbDepsFromProjectXMLWhenDefaultAnswerProhibited () throws Exception {
403
        String[] txt = new String[1];
404
        Document dom = doReadNbDepsFromProjectXML(" <defaultanswer generate='none'/>", txt);
405
        
406
        
407
        org.w3c.dom.NodeList list;
408
        list =  dom.getElementsByTagName("api");
409
        
410
        assertEquals("There is no api tag", 0, list.getLength());
411
    }
412
    
413
    private Document doReadNbDepsFromProjectXML(String inlinedCode, String[] txt) throws Exception {
414
        java.io.File answers = PublicPackagesInProjectizedXMLTest.extractString (
415
"<?xml version='1.0' encoding='UTF-8'?>\n" +
416
"<!--\n" +
417
                "Sun Public License Notice\n" +
418
"-->\n" +
419
            // "<!DOCTYPE api-answers PUBLIC '-//NetBeans//DTD Arch Answers//EN' '../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd' [\n" +
420
            // The following lines needs to be commented out as we do not have the right relative locations!
421
            // instead there is a part of Arch-api-questions directly inserted into the document bellow
422
            //  "<!ENTITY api-questions SYSTEM '../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml'>\n" +
423
            //"]>\n" +
424
"\n" +
425
"<api-answers\n" +
426
  "question-version='1.25'\n" +
427
  "module='Input/Output System'\n" +
428
  "author='jglick@netbeans.org'\n" +
429
">\n" +
430
"\n" +
431
  // "&api-questions;\n" +
432
  // replaced by part of api-questions entity            
433
"<api-questions version='1.25'>\n" +
434
    "<category id='dep' name='Dependencies'>\n" +
435
        "<question id='dep-nb' when='init' >\n" +
436
            "What other nb project this one depends on?\n" +
437
            "<hint>\n" +
438
            "Please provide here a few lines describing the project, \n" +
439
            "what problem it should solve, provide links to documentation, \n" +
440
            "specifications, etc.\n" +
441
            "</hint>\n" +
442
        "</question>\n" +
443
    "</category>\n" +
444
"</api-questions>                \n" +
445
// end of Arch-api-questionx.xmls            
446
"\n" +
447
"\n" +
448
"<answer id='dep-nb'>\n" +
449
"The Input/Output API is a small API module\n" +
450
"which contains <code>InputOutput</code> and related interfaces used in\n" +
451
"driving the Output Window. The normal implementation is <code>org.netbeans.core.output2</code>.\n" +
452
            inlinedCode + "\n" +
453
"</answer>\n" +
454
"\n" +
455
"</api-answers>    \n"
456
        );
457
        
458
        java.io.File project = PublicPackagesInProjectizedXMLTest.extractString(
459
"<?xml version='1.0' encoding='UTF-8'?>\n" +
460
"<!--\n" +
461
                "Sun Public License Notice\n" +
462
"-->\n" +
463
"<project xmlns='http://www.netbeans.org/ns/project/1'>\n" +
464
    "<type>org.netbeans.modules.apisupport.project</type>\n" +
465
    "<configuration>\n" +
466
        "<data xmlns='http://www.netbeans.org/ns/nb-module-project/2'>\n" +
467
            "<code-name-base>org.openide.loaders</code-name-base>\n" +
468
            "<module-dependencies>\n" +
469
                "<dependency>\n" +
470
                    "<code-name-base>org.openide.util</code-name-base>\n" +
471
                    "<build-prerequisite/>\n" +
472
                    "<compile-dependency/>\n" +
473
                    "<run-dependency>\n" +
474
                        "<specification-version>6.2</specification-version>\n" +
475
                    "</run-dependency>\n" +
476
                "</dependency>\n" +
477
                "<dependency>\n" +
478
                    "<code-name-base>org.openide.filesystems</code-name-base>\n" +
479
                    "<build-prerequisite/>\n" +
480
                    "<compile-dependency/>\n" +
481
                    "<run-dependency>\n" +
482
                        "<specification-version>6.2</specification-version>\n" +
483
                    "</run-dependency>\n" +
484
                "</dependency>\n" +
485
                "<dependency>\n" +
486
                    "<code-name-base>org.openide.nodes</code-name-base>\n" +
487
                    "<build-prerequisite/>\n" +
488
                    "<compile-dependency/>\n" +
489
                    "<run-dependency>\n" +
490
                        "<specification-version>6.2</specification-version>\n" +
491
                    "</run-dependency>\n" +
492
                "</dependency>\n" +
493
                "<dependency>\n" +
494
                    "<code-name-base>org.openide.dialogs</code-name-base>\n" +
495
                    "<build-prerequisite/>\n" +
496
                    "<compile-dependency/>\n" +
497
                    "<run-dependency>\n" +
498
                        "<specification-version>6.2</specification-version>\n" +
499
                    "</run-dependency>\n" +
500
                "</dependency>\n" +
501
                "<dependency>\n" +
502
                    "<code-name-base>org.openide.modules</code-name-base>\n" +
503
                    "<build-prerequisite/>\n" +
504
                    "<compile-dependency/>\n" +
505
                    "<run-dependency>\n" +
506
                        "<specification-version>6.2</specification-version>\n" +
507
                    "</run-dependency>\n" +
508
                "</dependency>\n" +
509
                "<dependency>\n" +
510
                    "<code-name-base>org.openide.awt</code-name-base>\n" +
511
                    "<build-prerequisite/>\n" +
512
                    "<compile-dependency/>\n" +
513
                    "<run-dependency>\n" +
514
                        "<specification-version>6.2</specification-version>\n" +
515
                    "</run-dependency>\n" +
516
                "</dependency>\n" +
517
                "<dependency>\n" +
518
                    "<code-name-base>org.openide.explorer</code-name-base>\n" +
519
                    "<build-prerequisite/>\n" +
520
                    "<compile-dependency/>\n" +
521
                    "<run-dependency>\n" +
522
                        "<specification-version>6.2</specification-version>\n" +
523
                    "</run-dependency>\n" +
524
                "</dependency>\n" +
525
                "<dependency>\n" +
526
                    "<code-name-base>org.openide.actions</code-name-base>\n" +
527
                    "<build-prerequisite/>\n" +
528
                    "<compile-dependency/>\n" +
529
                    "<run-dependency>\n" +
530
                        "<specification-version>6.2</specification-version>\n" +
531
                    "</run-dependency>\n" +
532
                "</dependency>\n" +
533
                "<dependency>\n" +
534
                    "<code-name-base>org.openide.text</code-name-base>\n" +
535
                    "<build-prerequisite/>\n" +
536
                    "<compile-dependency/>\n" +
537
                    "<run-dependency>\n" +
538
                        "<specification-version>6.2</specification-version>\n" +
539
                    "</run-dependency>\n" +
540
                "</dependency>\n" +
541
                "<dependency>\n" +
542
                    "<code-name-base>org.openide.windows</code-name-base>\n" +
543
                    "<build-prerequisite/>\n" +
544
                    "<compile-dependency/>\n" +
545
                    "<run-dependency>\n" +
546
                        "<specification-version>6.2</specification-version>\n" +
547
                    "</run-dependency>\n" +
548
                "</dependency>\n" +
549
            "</module-dependencies>\n" +
550
            "<public-packages>\n" +
551
                "<package>org.openide.awt</package>\n" +
552
                "<package>org.openide.actions</package>\n" +
553
                "<package>org.openide.loaders</package>\n" +
554
                "<package>org.openide.text</package>\n" +
555
            "</public-packages>\n" +
556
        "</data>\n" +
557
    "</configuration>\n" +
558
"</project>\n" +
559
"");        
560
        
561
        
562
        java.io.File output = PublicPackagesInProjectizedXMLTest.extractString("");
563
        assertTrue("File can be deleted: " + output, output.delete());
564
565
        java.io.File xsl = PublicPackagesInProjectizedXMLTest.extractString(
566
"<?xml version='1.0' encoding='UTF-8' ?>\n" +
567
"<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n" +
568
    "<xsl:output method='xml'/>\n" +
569
    "<!-- Format random HTML elements as is: -->\n" +
570
    "<xsl:template match='@*|node()'>\n" +
571
        "<xsl:copy>\n" +
572
            "<xsl:apply-templates select='@*|node()'/>\n" +
573
        "</xsl:copy>\n" +
574
    "</xsl:template>\n" +
575
"</xsl:stylesheet> \n"
576
        );
577
        
578
        java.io.File f = PublicPackagesInProjectizedXMLTest.extractString (
579
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
580
            "<project name=\"Test Arch\" basedir=\".\" default=\"all\" >" +
581
            "  <taskdef name=\"arch\" classname=\"org.netbeans.nbbuild.Arch\" classpath=\"${nb_all}/nbbuild/nbantext.jar\"/>" +
582
            "  <arch answers=\"" + answers + "\" output='" + output + "'" +
583
            "     project='" + project + "' \n" +
584
            "     xsl='" + xsl + "' \n" + 
585
            "   />\n" +
586
            "<target name=\"all\" >" +
587
            "  " +
588
            "</target>" +
589
            "</project>"
590
591
        );
592
        PublicPackagesInProjectizedXMLTest.execute (f, new String[] {  
593
            "-Darch.private.disable.validation.for.test.purposes=true",
594
        });
595
596
        assertTrue ("Answers still exists", answers.exists ());
597
        assertTrue ("Output file generated", output.exists ());
598
599
        txt[0] = PublicPackagesInProjectizedXMLTest.readFile(output);
600
601
        org.w3c.dom.Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(output);
602
        return dom;
318
    }
603
    }
319
    
604
    
320
}
605
}
(-)editor/build.xml (+1 lines)
Lines 33-38 Link Here
33
        <property name="javadoc.src" value="../../editor"/>
33
        <property name="javadoc.src" value="../../editor"/>
34
        <property name="javadoc.files" value="editor_javadoc_files" />
34
        <property name="javadoc.files" value="editor_javadoc_files" />
35
        <property name="javadoc.arch" location="arch/arch-editor.xml"/>
35
        <property name="javadoc.arch" location="arch/arch-editor.xml"/>
36
        <property name="javadoc.project" location="nbproject/project.xml"/>
36
    </ant>
37
    </ant>
37
  </target>
38
  </target>
38
39

Return to bug 53826