Kawai Wiki

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
199 soliveira 1
package org.kawai.tag.kcode;
2
 
3
import java.util.Map;
4
 
5
import javax.servlet.jsp.JspException;
6
import javax.servlet.jsp.PageContext;
7
 
8
import org.mentawai.util.IOUtils;
9
 
10
/**
11
 * KCode to load source code from a SVN url.
12
 *
13
 * @author Sergio Oliveira
14
 *
15
 */
16
public class ShowSvnSourceCode implements KCode {
17
 
18
    /**
19
     * {@inheritDoc}
20
     */
21
    @Override
22
    public boolean hasBody() {
23
        return false;
24
    }
25
 
26
    /**
27
     * {@inheritDoc}
28
     */
29
    @Override
30
    public String getTag() {
31
        return "svn";
32
    }
33
 
34
    /**
35
     * {@inheritDoc}
36
     */
37
    @Override
38
    public String process(PageContext pageContext, Map<String, String> attrs, String html) throws JspException {
39
 
40
        String url = attrs.get("url");
41
        if (url == null) throw new JspException("Mandatory attribute missing: url");
42
 
43
        String removeLicense = attrs.get("removeLicense");
44
        boolean shouldRemoveLicense = true;
45
        if (removeLicense != null && removeLicense.equals("false")) {
46
                shouldRemoveLicense = false;
47
        }
48
 
49
        try {
50
                String code = IOUtils.readURL(url);
51
                code = Code.escapeAngleBrackets(code).trim();
52
                // remove license
53
                if (shouldRemoveLicense && code.startsWith("/*")) {
54
                        int end = code.indexOf("*/");
55
                        code = code.substring(end + 2);
56
                        code = "// License goes here...\n" + code;
57
                }
58
                return code;
59
        } catch(Throwable e) {
60
                e.printStackTrace();
61
                return "Failed to load source code from svn: " + url;
62
        }
63
 
64
 
65
    }
66
 
67
}