aboutsummaryrefslogtreecommitdiffstats
path: root/aspectj-attic/ajdoc-src/org/aspectj/tools/doclets/standard/ConfigurationStandard.java
blob: 8de96b8dc305b8b78c298ab2761520211cfcb43e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/* -*- Mode: JDE; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * This file is part of the debugger and core tools for the AspectJ(tm)
 * programming language; see http://aspectj.org
 *
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/.
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is AspectJ.
 *
 * The Initial Developer of the Original Code is Xerox Corporation. Portions
 * created by Xerox Corporation are Copyright (C) 1999-2002 Xerox Corporation.
 * All Rights Reserved.
 */

package org.aspectj.tools.doclets.standard;

import com.sun.javadoc.RootDoc;
import com.sun.tools.doclets.MessageRetriever;

import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;

/**
 * A customized configuration.
 *
 * @author Jeff Palm
 */
public class ConfigurationStandard
    extends com.sun.tools.doclets.standard.ConfigurationStandard
{
    
    /** It true we don't print crosscut information. */
    public boolean nocrosscuts = false;

    /** If true we don't print crosscut summary information. */
    public boolean nosummarycrosscuts = false;

    /** If true we log each pass in the doclet. */
    public boolean log = false;
    
    public ConfigurationStandard() {
//        standardmessage = new MessageRetriever
//            ("org.aspectj.tools.doclets.standard.resources.standard");

        String loc = "org.aspectj.tools.doclets.standard.resources.standard";
        final ClassLoader loader = getClass().getClassLoader();
        // XXX move persistant resource loader to util
        ResourceBundle bundle = null;
        for (int i = 0; ((null == bundle) && (i < 4)); i++) {
			
            try {
                switch (i) {
                    case 0: 
                        bundle = ResourceBundle.getBundle(loc);
                        standardmessage = new MessageRetriever(bundle);
                    break;
                    case 1: 
                        Locale locale = Locale.getDefault();            
                        bundle = ResourceBundle.getBundle(loc, locale, loader);
                        standardmessage = new MessageRetriever(bundle);
                    break;
                    case 2: 
                        standardmessage = new MessageRetriever(loc);
                    break;
                    case 3:
                        URL pURL = loader.getResource(loc + ".properties");
                        bundle = new PropertyResourceBundle(pURL.openStream());
                        standardmessage = new MessageRetriever(loc);
                    break;
                }
                break; // from for loop
            } catch (MissingResourceException e) { } // error below
            catch (IOException ie) { } // error below
        }
        if (null == bundle) {
            throw new Error("unable to load resource: " +   loc);
        }
    }
    
    //TODO: Document the new options in help

    public void setSpecificDocletOptions(RootDoc root) {
        String[][] options = root.options();
        for (int i = 0; i < options.length; ++i) {
            String opt = options[i][0].toLowerCase();
            if (opt.equals("-nocrosscuts")) {
                nocrosscuts = true;
                nosummarycrosscuts = true;
            } else if (opt.equals("-nosummarycrosscuts")) {
                nosummarycrosscuts = true;
            } else if (opt.equals("-log")) {
                log = true;
            }
        }
        super.setSpecificDocletOptions(root);
    }

    public int specificDocletOptionLength(String opt) {
        if (opt.equals("-nocrosscuts") ||
            opt.equals("-nosummarycrosscuts") ||
            opt.equals("-log")) {
            return 1;
        }
        return super.specificDocletOptionLength(opt);
    }
}