1 package de.java2html.plugin.jspwiki; 2 3 import java.io.IOException ; 4 import java.net.MalformedURLException ; 5 import java.net.URL ; 6 import java.util.Map ; 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 23 public class Java2HtmlPlugin extends AbstractJava2HtmlPlugin implements WikiPlugin { 24 public static final String DEFAULT_USAGE_MESSAGE = "Missing parameter 'source', 'url' or 'attachment' or missing body. Valid parameters are:" 25 + PluginParameterChecker.createValidParameterHtmlTable(); 26 27 public String execute(WikiContext context, Map params) throws PluginException { 28 new PluginParameterChecker().checkParametersSupported(params); 29 30 String 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 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 + "'."); } 51 } 52 53 String urlString = ParameterUtilities.getParameter(params, PluginParameter.URL); 54 if (urlString != null) { 55 return convertFileFromUrl(urlString, conversionOptions, context, converterName); 56 } 57 58 String source = ParameterUtilities.getParameter(params, PluginParameter.SOURCE); 59 if (source != null) { 60 return convert(source, new JavaSourceConversionSettings(conversionOptions, converterName)); 61 } 62 String 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 attachment = ParameterUtilities.getParameter(params, PluginParameter.ATTACHMENT); 68 if (attachment != null) { 69 new PluginSecurityManager(context).checkValidAttachmentUrlPart(attachment); 70 URL url = createAttachmentUrl(context, attachment); 71 try { 72 return convert(url, new JavaSourceConversionSettings(conversionOptions, converterName)); 73 } 74 catch (IOException e) { 75 throw new PluginException("Unable to read Url '" + urlString + "'", e); } 77 } 78 79 throw new PluginException(DEFAULT_USAGE_MESSAGE); 80 } 81 82 private String removeLeadingNewLine(String 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 createAttachmentUrl(WikiContext context, String attachment) throws PluginException { 92 String 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."); } 97 try { 98 return new URL (baseUrl + "attach?page=" + context.getPage().getName() + "/" + attachment); } 100 catch (MalformedURLException e) { 101 throw new PluginException("Unable to build attachment URL", e); } 103 } 104 105 private String convertFileFromUrl( 106 String urlString, 107 JavaSourceConversionOptions conversionOptions, 108 WikiContext context, 109 String converterName) throws PluginException { 110 URL url = null; 111 try { 112 url = new URL (urlString); 113 } 114 catch (MalformedURLException e) { 115 throw new PluginException("Unable to open url '" + urlString + "'", e); } 117 118 new PluginSecurityManager(context).checkUrlAccessEnabled(url); 119 120 try { 121 return convert(url, new JavaSourceConversionSettings(conversionOptions, converterName)); 122 } 123 catch (IOException e) { 124 throw new PluginException("Unable to read Url '" + url + "'", e); } 126 } 127 } | Popular Tags |