EMMA Coverage Report (generated Mon Dec 25 21:58:47 CET 2006)
[all classes][org.apache.maven.author.resolver]

COVERAGE SUMMARY FOR SOURCE FILE [JavadocAuthorResolver.java]

nameclass, %method, %block, %line, %
JavadocAuthorResolver.java100% (1/1)100% (2/2)94%  (77/82)95%  (19/20)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class JavadocAuthorResolver100% (1/1)100% (2/2)94%  (77/82)95%  (19/20)
resolveAuthors (File): String [] 100% (1/1)94%  (74/79)95%  (18/19)
JavadocAuthorResolver (): void 100% (1/1)100% (3/3)100% (1/1)

1/*
2 * Copyright 2006 Eric Ballet Baz
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 
17package org.apache.maven.author.resolver;
18 
19import java.io.File;
20import java.util.List;
21 
22import xjavadoc.SourceSet;
23import xjavadoc.XClass;
24import xjavadoc.XDoc;
25import xjavadoc.XJavaDoc;
26import xjavadoc.XTag;
27import xjavadoc.filesystem.FileSourceSet;
28 
29/**
30 * AuthorResolver based on javadoc.
31 * This resolver uses author's javadoc tags to resolve the author(s).
32 *
33 * @author Eric Ballet Baz
34 */
35public class JavadocAuthorResolver implements AuthorResolver {
36 
37    /** Javadoc tag used to declare the author(s) of a file. */
38    private static final String AUTHOR_TAG_NAME = "author";
39 
40    /**
41     * @see org.apache.maven.author.resolver.AuthorResolver#resolveAuthors(java.io.File)
42     */
43    public final String[] resolveAuthors(final File file) {
44        // Check argument
45        if (file == null) {
46            throw new IllegalArgumentException("Argument [file] should not be null");
47        }
48        if (file.isDirectory()) {
49            throw new IllegalArgumentException("Argument [file] should not be a directory");
50        }
51 
52        // Prepare resources used to inspect the javadoc of this file
53        XJavaDoc xJavaDoc = new XJavaDoc();
54        SourceSet fileSourceSet = new FileSourceSet(file);
55        xJavaDoc.addSourceSet(fileSourceSet);
56 
57        // Find values of author's javadoc tags for this file
58        XClass xClass = xJavaDoc.getXClass(fileSourceSet.getQualifiedName(0));
59 
60        // This should never happen
61        if (xClass == null) {
62            throw new IllegalStateException(
63                "xjavadoc.XClass.getXClass(String qualifiedName) has returned a null value. Check version of xjavadoc used");
64        }
65 
66        // Inspect javadoc to resolver authors
67        XDoc xDoc = xClass.getDoc();
68        if (xDoc != null) {
69            List authorTags = xDoc.getTags(AUTHOR_TAG_NAME);
70            if (authorTags != null && authorTags.size() > 0) {
71                String[] authors = new String[authorTags.size()];
72                for (int i = 0; i < authorTags.size(); i++) {
73                    authors[i] = ((XTag) authorTags.get(i)).getValue();
74                }
75                return authors;
76            }
77        }
78 
79        // No author has been found
80        return new String[0];
81    }
82}

[all classes][org.apache.maven.author.resolver]
EMMA 2.0.5312 (C) Vladimir Roubtsov