KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > java2html > plugin > jspwiki > Java2HtmlPlugin


1 package de.java2html.plugin.jspwiki;
2
3 import java.io.IOException JavaDoc;
4 import java.net.MalformedURLException JavaDoc;
5 import java.net.URL JavaDoc;
6 import java.util.Map JavaDoc;
7
8 import com.ecyrd.jspwiki.WikiContext;
9 import com.ecyrd.jspwiki.plugin.PluginException;
10 import com.ecyrd.jspwiki.plugin.WikiPlugin;
11
12 import de.java2html.JavaSourceConversionSettings;
13 import de.java2html.Version;
14 import de.java2html.converter.JavaSourceConverterProvider;
15 import de.java2html.options.JavaSourceConversionOptions;
16 import de.java2html.plugin.AbstractJava2HtmlPlugin;
17 import de.java2html.plugin.ParameterUtilities;
18 import de.java2html.util.IllegalConfigurationException;
19
20 /**
21  * @author Markus Gebhard
22  */

23 public class Java2HtmlPlugin extends AbstractJava2HtmlPlugin implements WikiPlugin {
24   public static final String JavaDoc DEFAULT_USAGE_MESSAGE = "Missing parameter 'source', 'url' or 'attachment' or missing body. Valid parameters are:"
25       + PluginParameterChecker.createValidParameterHtmlTable();
26
27   public String JavaDoc execute(WikiContext context, Map JavaDoc params) throws PluginException {
28     new PluginParameterChecker().checkParametersSupported(params);
29
30     String JavaDoc printVersion = ParameterUtilities.getParameter(params, PluginParameter.PRINT_VERSION);
31     if (printVersion != null) {
32       return "<b>" + Version.getJava2HtmlConverterTitle() + "</b>";
33     }
34
35     JavaSourceConversionOptions conversionOptions;
36     try {
37       conversionOptions = new PluginConversionOptionsParser().parseConversionOptions(params);
38     }
39     catch (IllegalConfigurationException e) {
40       throw new PluginException(e.getMessage(), e);
41     }
42
43     String JavaDoc converterName = ParameterUtilities.getParameter(params, PluginParameter.CONVERTER);
44     if (converterName == null) {
45       converterName = JavaSourceConverterProvider.getDefaultConverterName();
46     }
47     else {
48       if (JavaSourceConverterProvider.getJavaSourceConverterByName(converterName) == null) {
49         throw new PluginException("Unknown converter '" + converterName + "'."); //$NON-NLS-1$ //$NON-NLS-2$
50
}
51     }
52
53     String JavaDoc urlString = ParameterUtilities.getParameter(params, PluginParameter.URL);
54     if (urlString != null) {
55       return convertFileFromUrl(urlString, conversionOptions, context, converterName);
56     }
57
58     String JavaDoc source = ParameterUtilities.getParameter(params, PluginParameter.SOURCE);
59     if (source != null) {
60       return convert(source, new JavaSourceConversionSettings(conversionOptions, converterName));
61     }
62     String JavaDoc body = ParameterUtilities.getParameter(params, PluginParameter._BODY);
63     if (body != null) {
64       body = removeLeadingNewLine(body);
65       return convert(body, new JavaSourceConversionSettings(conversionOptions, converterName));
66     }
67     String JavaDoc attachment = ParameterUtilities.getParameter(params, PluginParameter.ATTACHMENT);
68     if (attachment != null) {
69       new PluginSecurityManager(context).checkValidAttachmentUrlPart(attachment);
70       URL JavaDoc url = createAttachmentUrl(context, attachment);
71       try {
72         return convert(url, new JavaSourceConversionSettings(conversionOptions, converterName));
73       }
74       catch (IOException JavaDoc e) {
75         throw new PluginException("Unable to read Url '" + urlString + "'", e); //$NON-NLS-1$//$NON-NLS-2$
76
}
77     }
78
79     throw new PluginException(DEFAULT_USAGE_MESSAGE);
80   }
81
82   private String JavaDoc removeLeadingNewLine(String JavaDoc body) {
83     if (body.length() > 0 && body.charAt(0) == '\n') {
84       return body.substring(1);
85     }
86     else {
87       return body;
88     }
89   }
90
91   private URL JavaDoc createAttachmentUrl(WikiContext context, String JavaDoc attachment) throws PluginException {
92     String JavaDoc baseUrl = context.getEngine().getBaseURL();
93     if (baseUrl == null || baseUrl.length() == 0) {
94       throw new PluginException(
95           "Unable to determine the base url for this wiki. Please contact the wiki administrator to adjust the settings."); //$NON-NLS-1$
96
}
97     try {
98       return new URL JavaDoc(baseUrl + "attach?page=" + context.getPage().getName() + "/" + attachment); //$NON-NLS-1$ //$NON-NLS-2$
99
}
100     catch (MalformedURLException JavaDoc e) {
101       throw new PluginException("Unable to build attachment URL", e); //$NON-NLS-1$
102
}
103   }
104
105   private String JavaDoc convertFileFromUrl(
106       String JavaDoc urlString,
107       JavaSourceConversionOptions conversionOptions,
108       WikiContext context,
109       String JavaDoc converterName) throws PluginException {
110     URL JavaDoc url = null;
111     try {
112       url = new URL JavaDoc(urlString);
113     }
114     catch (MalformedURLException JavaDoc e) {
115       throw new PluginException("Unable to open url '" + urlString + "'", e); //$NON-NLS-1$ //$NON-NLS-2$
116
}
117
118     new PluginSecurityManager(context).checkUrlAccessEnabled(url);
119
120     try {
121       return convert(url, new JavaSourceConversionSettings(conversionOptions, converterName));
122     }
123     catch (IOException JavaDoc e) {
124       throw new PluginException("Unable to read Url '" + url + "'", e); //$NON-NLS-1$ //$NON-NLS-2$
125
}
126   }
127 }
Popular Tags