1 package org.apache.maven.tools.plugin.extractor.annotations.converter;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import javax.inject.Inject;
23 import javax.inject.Named;
24 import javax.inject.Singleton;
25
26 import java.util.Map;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 import com.thoughtworks.qdox.model.DocletTag;
48 import org.apache.maven.tools.plugin.extractor.annotations.converter.tag.block.JavadocBlockTagToHtmlConverter;
49 import org.slf4j.Logger;
50 import org.slf4j.LoggerFactory;
51
52
53
54
55
56
57
58
59 @Named
60 @Singleton
61 public class JavadocBlockTagsToXhtmlConverter
62 {
63 private static final Logger LOG = LoggerFactory.getLogger( JavadocBlockTagsToXhtmlConverter.class );
64
65 private final JavadocInlineTagsToXhtmlConverter inlineTagsConverter;
66 private final Map<String, JavadocBlockTagToHtmlConverter> blockTagConverters;
67
68 @Inject
69 public JavadocBlockTagsToXhtmlConverter( JavadocInlineTagsToXhtmlConverter inlineTagsConverter,
70 Map<String, JavadocBlockTagToHtmlConverter> blockTagConverters )
71 {
72 this.inlineTagsConverter = inlineTagsConverter;
73 this.blockTagConverters = blockTagConverters;
74 }
75
76 public String convert( DocletTag docletTag, ConverterContext context )
77 {
78 return convert( docletTag.getName(), docletTag.getValue(), context );
79 }
80
81 public String convert( String name, String text, ConverterContext context )
82 {
83 JavadocBlockTagToHtmlConverter converter = blockTagConverters.get( name );
84 if ( converter == null )
85 {
86 return getOriginalTag( name, text ) + "<!-- unknown block tag '" + name + "' -->";
87 }
88 else
89 {
90 try
91 {
92 String convertedBlockTagValue = converter.convert( text, context );
93 return inlineTagsConverter.convert( convertedBlockTagValue, context );
94 }
95 catch ( Throwable t )
96 {
97 LOG.warn( "Error converting javadoc block tag '{}' in {}", name, context.getLocation(), t );
98 return getOriginalTag( name, text ) + "<!-- error processing javadoc tag '" + name + "': "
99 + t.getMessage() + "-->";
100 }
101
102 }
103 }
104
105 private static String getOriginalTag( String name, String text )
106 {
107 return "@" + name + " " + text;
108 }
109 }