You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Scott Murphy (JIRA)" <ji...@apache.org> on 2016/05/21 04:12:12 UTC
[jira] [Updated] (GROOVY-7842) MarkupTemplateEngine Totally Broken
[ https://issues.apache.org/jira/browse/GROOVY-7842?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Scott Murphy updated GROOVY-7842:
---------------------------------
Description:
{code:java}
TemplateServer.createAndStoreTemplate(String key, InputStream inputStream, File file)
{code}
calls
{code:java}
Template template = engine.createTemplate(reader);
{code}
{code:title=MarkupTemplateEngine.java|borderStyle=solid}
public Template createTemplate(final Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException {
return new MarkupTemplateMaker(reader, null, null);
}
{code}
Calls MarkupTemplateEngine.MarkupTemplateMaker
{code:title=MarkupTemplateEngine.java|borderStyle=solid}
public MarkupTemplateMaker(final Reader reader, String sourceName, Map<String, String> modelTypes) {
String name = sourceName != null ? sourceName : "GeneratedMarkupTemplate" + counter.getAndIncrement();
templateClass = groovyClassLoader.parseClass(new GroovyCodeSource(reader, name, ""), modelTypes);
this.modeltypes = modelTypes;
}
{code}
Note: GroovyCodeSource(reader, name, "")
{code:title=GroovyCodeSource.java|borderStyle=solid}
public GroovyCodeSource(Reader reader, String name, String codeBase) {
this.name = name;
this.codeSource = createCodeSource(codeBase);
{code}
Note: createCodeSource(codeBase); -> createCodeSource("");
{code:title=GroovyCodeSource.java|borderStyle=solid}
private static CodeSource createCodeSource(final String codeBase) {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(new GroovyCodeSourcePermission(codeBase));
}
{code}
Note: GroovyCodeSourcePermission(codeBase) -> GroovyCodeSourcePermission("")
{code:title=GroovyCodeSourcePermission.java|borderStyle=solid}
public final class GroovyCodeSourcePermission extends BasicPermission {
public GroovyCodeSourcePermission(String name) {
super(name);
}
public BasicPermission(String name)
{
super(name);
init(name);
}
/**
* initialize a BasicPermission object. Common to all constructors.
*
*/
private void init(String name)
{
if (name == null)
throw new NullPointerException("name can't be null");
int len = name.length();
if (len == 0) {
throw new IllegalArgumentException("name can't be empty");
}
{code}
BOOM -> IllegalArgumentException
In summary: MarkupTemplateMaker creates a GroovyCodeSource where codeBase is equal to "". BasicPermission does not allow names to have zero length thus causing an exception.
was:
TemplateServer.createAndStoreTemplate(String key, InputStream inputStream, File file)
calls
Template template = engine.createTemplate(reader);
MarkupTemplateEngine.java
public Template createTemplate(final Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException {
return new MarkupTemplateMaker(reader, null, null);
}
Calls MarkupTemplateEngine.MarkupTemplateMaker
public MarkupTemplateMaker(final Reader reader, String sourceName, Map<String, String> modelTypes) {
String name = sourceName != null ? sourceName : "GeneratedMarkupTemplate" + counter.getAndIncrement();
templateClass = groovyClassLoader.parseClass(new GroovyCodeSource(reader, name, ""), modelTypes);
this.modeltypes = modelTypes;
}
Note: GroovyCodeSource(reader, name, "")
GroovyCodeSource.java
public GroovyCodeSource(Reader reader, String name, String codeBase) {
this.name = name;
this.codeSource = createCodeSource(codeBase);
Note: createCodeSource(codeBase); -> createCodeSource("");
private static CodeSource createCodeSource(final String codeBase) {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(new GroovyCodeSourcePermission(codeBase));
}
Note: GroovyCodeSourcePermission(codeBase) -> GroovyCodeSourcePermission("")
public final class GroovyCodeSourcePermission extends BasicPermission {
public GroovyCodeSourcePermission(String name) {
super(name);
}
public BasicPermission(String name)
{
super(name);
init(name);
}
/**
* initialize a BasicPermission object. Common to all constructors.
*
*/
private void init(String name)
{
if (name == null)
throw new NullPointerException("name can't be null");
int len = name.length();
if (len == 0) {
throw new IllegalArgumentException("name can't be empty");
}
BOOM -> IllegalArgumentException
In summary: MarkupTemplateMaker creates a GroovyCodeSource where codeBase is equal to "". BasicPermission does not allow names to have zero length thus causing an exception.
> MarkupTemplateEngine Totally Broken
> ------------------------------------
>
> Key: GROOVY-7842
> URL: https://issues.apache.org/jira/browse/GROOVY-7842
> Project: Groovy
> Issue Type: Bug
> Components: Templating
> Affects Versions: 2.4.5, 2.4.6
> Reporter: Scott Murphy
> Priority: Blocker
> Fix For: 2.4.7, 2.5.0-beta-1, 2.5.x
>
>
> {code:java}
> TemplateServer.createAndStoreTemplate(String key, InputStream inputStream, File file)
> {code}
> calls
> {code:java}
> Template template = engine.createTemplate(reader);
> {code}
> {code:title=MarkupTemplateEngine.java|borderStyle=solid}
> public Template createTemplate(final Reader reader) throws CompilationFailedException, ClassNotFoundException, IOException {
> return new MarkupTemplateMaker(reader, null, null);
> }
> {code}
> Calls MarkupTemplateEngine.MarkupTemplateMaker
> {code:title=MarkupTemplateEngine.java|borderStyle=solid}
> public MarkupTemplateMaker(final Reader reader, String sourceName, Map<String, String> modelTypes) {
> String name = sourceName != null ? sourceName : "GeneratedMarkupTemplate" + counter.getAndIncrement();
> templateClass = groovyClassLoader.parseClass(new GroovyCodeSource(reader, name, ""), modelTypes);
> this.modeltypes = modelTypes;
> }
> {code}
> Note: GroovyCodeSource(reader, name, "")
> {code:title=GroovyCodeSource.java|borderStyle=solid}
> public GroovyCodeSource(Reader reader, String name, String codeBase) {
> this.name = name;
> this.codeSource = createCodeSource(codeBase);
> {code}
> Note: createCodeSource(codeBase); -> createCodeSource("");
> {code:title=GroovyCodeSource.java|borderStyle=solid}
> private static CodeSource createCodeSource(final String codeBase) {
> SecurityManager sm = System.getSecurityManager();
> if (sm != null) {
> sm.checkPermission(new GroovyCodeSourcePermission(codeBase));
> }
> {code}
> Note: GroovyCodeSourcePermission(codeBase) -> GroovyCodeSourcePermission("")
> {code:title=GroovyCodeSourcePermission.java|borderStyle=solid}
> public final class GroovyCodeSourcePermission extends BasicPermission {
> public GroovyCodeSourcePermission(String name) {
> super(name);
> }
> public BasicPermission(String name)
> {
> super(name);
> init(name);
> }
> /**
> * initialize a BasicPermission object. Common to all constructors.
> *
> */
> private void init(String name)
> {
> if (name == null)
> throw new NullPointerException("name can't be null");
> int len = name.length();
> if (len == 0) {
> throw new IllegalArgumentException("name can't be empty");
> }
> {code}
> BOOM -> IllegalArgumentException
> In summary: MarkupTemplateMaker creates a GroovyCodeSource where codeBase is equal to "". BasicPermission does not allow names to have zero length thus causing an exception.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)