Skip to content

Commit 28a1827

Browse files
committed
now convert indy completely to using the new codegen stuff
1 parent e35e628 commit 28a1827

File tree

9 files changed

+36
-12
lines changed

9 files changed

+36
-12
lines changed

codegen/src/main/java/com/github/mustachejava/codegen/CompiledMissingWrapper.java renamed to codegen/src/main/java/com/github/mustachejava/codegen/CodegenMissingWrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
import java.util.List;
88

9-
public class CompiledMissingWrapper extends MissingWrapper {
9+
public class CodegenMissingWrapper extends MissingWrapper {
1010
final Guard compiledGuards;
1111

12-
public CompiledMissingWrapper(List<Guard> guards) {
12+
public CodegenMissingWrapper(List<Guard> guards) {
1313
super(guards.toArray(new Guard[guards.size()]));
1414
compiledGuards = GuardCompiler.compile(guards);
1515
}

codegen/src/main/java/com/github/mustachejava/codegen/CodegenObjectHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ protected WrappedGuard createWrappedGuard(int i, List<Wrapper> wrappers, List<Gu
4848

4949
@Override
5050
protected MissingWrapper createMissingWrapper(List<Guard> guards) {
51-
return new CompiledMissingWrapper(guards);
51+
return new CodegenMissingWrapper(guards);
5252
}
5353

5454
@Override
5555
protected Wrapper createWrapper(int scopeIndex, Wrapper[] wrappers, List<? extends Guard> guards, AccessibleObject member, Object[] arguments) {
56-
return new CompiledReflectionWrapper(this, scopeIndex, wrappers, guards, member, arguments);
56+
return new CodegenReflectionWrapper(this, scopeIndex, wrappers, guards, member, arguments);
5757
}
5858

5959
}

codegen/src/main/java/com/github/mustachejava/codegen/CompiledReflectionWrapper.java renamed to codegen/src/main/java/com/github/mustachejava/codegen/CodegenReflectionWrapper.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,22 @@
66
import com.github.mustachejava.util.Wrapper;
77

88
import java.lang.reflect.AccessibleObject;
9+
import java.util.Arrays;
910
import java.util.List;
1011

11-
public class CompiledReflectionWrapper extends ReflectionWrapper {
12+
public class CodegenReflectionWrapper extends ReflectionWrapper {
1213
final Guard compiledGuards;
1314

14-
public CompiledReflectionWrapper(CodegenObjectHandler codegenObjectHandler, int scopeIndex, Wrapper[] wrappers, List<? extends Guard> guards, AccessibleObject member, Object[] arguments) {
15+
public CodegenReflectionWrapper(CodegenObjectHandler codegenObjectHandler, int scopeIndex, Wrapper[] wrappers, List<? extends Guard> guards, AccessibleObject member, Object[] arguments) {
1516
super(scopeIndex, wrappers, guards.toArray(new Guard[guards.size()]), member, arguments, codegenObjectHandler);
1617
compiledGuards = GuardCompiler.compile(guards);
1718
}
1819

20+
public CodegenReflectionWrapper(ReflectionWrapper rw) {
21+
super(rw);
22+
compiledGuards = GuardCompiler.compile(Arrays.asList(rw.getGuards()));
23+
}
24+
1925
@Override
2026
protected void guardCall(Object[] scopes) throws GuardException {
2127
if (!compiledGuards.apply(scopes)) {

compiler/src/main/java/com/github/mustachejava/reflect/GuardedWrapper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,8 @@ public boolean equals(Object o) {
6262
}
6363
return false;
6464
}
65+
66+
public Guard[] getGuards() {
67+
return guards;
68+
}
6569
}

indy/src/main/java/com/github/mustachejava/indy/IndyWrapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.mustachejava.indy;
22

33
import com.github.mustachejava.MustacheException;
4+
import com.github.mustachejava.codegen.CodegenReflectionWrapper;
45
import com.github.mustachejava.reflect.ReflectionWrapper;
56
import com.github.mustachejava.util.GuardException;
67
import org.objectweb.asm.*;
@@ -15,7 +16,7 @@
1516
/**
1617
* Creates wrappers using ASM and Invokedynamic.
1718
*/
18-
public abstract class IndyWrapper extends ReflectionWrapper implements Opcodes {
19+
public abstract class IndyWrapper extends CodegenReflectionWrapper implements Opcodes {
1920

2021
public static final Handle BOOTSTRAP_METHOD =
2122
new Handle(Opcodes.H_INVOKESTATIC, "com/github/mustachejava/indy/IndyWrapper",

indy/src/test/java/com/github/mustachejava/IndyBenchmarkTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.mustachejava;
22

3+
import com.github.mustachejava.codegen.CodegenMustacheFactory;
34
import com.github.mustachejava.indy.IndyObjectHandler;
45
import com.github.mustachejavabenchmarks.BenchmarkTest;
56

@@ -17,7 +18,7 @@ public void testCompiler() {
1718

1819
@Override
1920
protected DefaultMustacheFactory createMustacheFactory() {
20-
DefaultMustacheFactory mustacheFactory = super.createMustacheFactory();
21+
DefaultMustacheFactory mustacheFactory = new CodegenMustacheFactory(root);
2122
mustacheFactory.setObjectHandler(new IndyObjectHandler());
2223
return mustacheFactory;
2324
}

indy/src/test/java/com/github/mustachejava/IndyInterpreterTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package com.github.mustachejava;
22

3+
import com.github.mustachejava.codegen.CodegenMustacheFactory;
34
import com.github.mustachejava.indy.IndyObjectHandler;
45

56
public class IndyInterpreterTest extends InterpreterTest {
67
@Override
78
protected DefaultMustacheFactory createMustacheFactory() {
8-
DefaultMustacheFactory mustacheFactory = super.createMustacheFactory();
9+
DefaultMustacheFactory mustacheFactory = new CodegenMustacheFactory(root);
910
mustacheFactory.setObjectHandler(new IndyObjectHandler());
1011
return mustacheFactory;
1112
}

indy/src/test/java/com/github/mustachejava/IndyJsonInterpreterTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.mustachejava;
22

3+
import com.github.mustachejava.codegen.CodegenMustacheFactory;
34
import com.github.mustachejava.indy.IndyObjectHandler;
45
import com.github.mustachejavabenchmarks.JsonInterpreterTest;
56

@@ -13,7 +14,7 @@
1314
public class IndyJsonInterpreterTest extends JsonInterpreterTest {
1415
@Override
1516
protected DefaultMustacheFactory createMustacheFactory() {
16-
DefaultMustacheFactory mustacheFactory = super.createMustacheFactory();
17+
DefaultMustacheFactory mustacheFactory = new CodegenMustacheFactory(root);
1718
mustacheFactory.setObjectHandler(new IndyObjectHandler());
1819
return mustacheFactory;
1920
}

indy/src/test/java/com/github/mustachejava/IndySpecTest.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
11
package com.github.mustachejava;
22

3+
import com.github.mustachejava.codegen.CodegenMustacheFactory;
34
import com.github.mustachejava.indy.IndyObjectHandler;
45
import org.codehaus.jackson.JsonNode;
56

7+
import java.io.Reader;
8+
import java.io.StringReader;
9+
610
/**
711
* Specification tests
812
*/
913
public class IndySpecTest extends SpecTest {
1014
@Override
11-
protected DefaultMustacheFactory createMustacheFactory(JsonNode test) {
12-
DefaultMustacheFactory mustacheFactory = super.createMustacheFactory(test);
15+
protected DefaultMustacheFactory createMustacheFactory(final JsonNode test) {
16+
DefaultMustacheFactory mustacheFactory = new CodegenMustacheFactory("/spec/specs") {
17+
@Override
18+
public Reader getReader(String resourceName) {
19+
JsonNode partial = test.get("partials").get(resourceName);
20+
return new StringReader(partial == null ? "" : partial.getTextValue());
21+
}
22+
};
1323
mustacheFactory.setObjectHandler(new IndyObjectHandler());
1424
return mustacheFactory;
1525
}

0 commit comments

Comments
 (0)