/subprojects/platform-play/src/main/java/org/gradle/play/internal/twirl/TwirlCompilerAdapterV22X.java

https://github.com/hansd/gradle · Java · 119 lines · 90 code · 13 blank · 16 comment · 3 complexity · eed5cfb9321d282089a825ef793c4844 MD5 · raw file

  1. /*
  2. * Copyright 2014 the original author or authors.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package org.gradle.play.internal.twirl;
  17. import org.gradle.language.twirl.TwirlImports;
  18. import org.gradle.language.twirl.TwirlTemplateFormat;
  19. import org.gradle.language.twirl.internal.DefaultTwirlTemplateFormat;
  20. import org.gradle.scala.internal.reflect.ScalaMethod;
  21. import org.gradle.scala.internal.reflect.ScalaReflectionUtil;
  22. import java.io.File;
  23. import java.lang.reflect.InvocationTargetException;
  24. import java.util.Arrays;
  25. import java.util.Collection;
  26. import java.util.Collections;
  27. import java.util.List;
  28. class TwirlCompilerAdapterV22X extends VersionedTwirlCompilerAdapter {
  29. private static final Iterable<String> SHARED_PACKAGES = Collections.singleton("play.templates");
  30. // Based on https://github.com/playframework/playframework/blob/2.2.6/framework/src/sbt-plugin/src/main/scala/PlayKeys.scala
  31. private static final Collection<String> DEFAULT_JAVA_IMPORTS = Arrays.asList(
  32. "play.api.templates._",
  33. "play.api.templates.PlayMagic._",
  34. "models._",
  35. "controllers._",
  36. "java.lang._",
  37. "java.util._",
  38. "scala.collection.JavaConversions._",
  39. "scala.collection.JavaConverters._",
  40. "play.api.i18n._",
  41. "play.core.j.PlayMagicForJava._",
  42. "play.mvc._",
  43. "play.data._",
  44. "play.api.data.Field",
  45. "play.mvc.Http.Context.Implicit._");
  46. private static final Collection<String> DEFAULT_SCALA_IMPORTS = Arrays.asList(
  47. "play.api.templates._",
  48. "play.api.templates.PlayMagic._",
  49. "models._",
  50. "controllers._",
  51. "play.api.i18n._",
  52. "play.api.mvc._",
  53. "play.api.data._");
  54. private final String twirlVersion;
  55. private final String scalaVersion;
  56. public TwirlCompilerAdapterV22X(String twirlVersion, String scalaVersion) {
  57. this.twirlVersion = twirlVersion;
  58. this.scalaVersion = scalaVersion;
  59. }
  60. @Override
  61. public ScalaMethod getCompileMethod(final ClassLoader cl) throws ClassNotFoundException {
  62. return ScalaReflectionUtil.scalaMethod(
  63. cl,
  64. "play.templates.ScalaTemplateCompiler",
  65. "compile",
  66. File.class,
  67. File.class,
  68. File.class,
  69. String.class,
  70. String.class
  71. );
  72. }
  73. @Override
  74. public Object[] createCompileParameters(ClassLoader cl, File file, File sourceDirectory, File destinationDirectory, TwirlImports defaultImports, TwirlTemplateFormat templateFormat, List<String> additionalImports) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
  75. final Collection<String> defaultTwirlImports;
  76. if (defaultImports == TwirlImports.JAVA) {
  77. defaultTwirlImports = DEFAULT_JAVA_IMPORTS;
  78. } else {
  79. defaultTwirlImports = DEFAULT_SCALA_IMPORTS;
  80. }
  81. return new Object[] {
  82. file,
  83. sourceDirectory,
  84. destinationDirectory,
  85. templateFormat.getFormatType(),
  86. getImportsFor(templateFormat, defaultTwirlImports, additionalImports)
  87. };
  88. }
  89. @Override
  90. public Iterable<String> getClassLoaderPackages() {
  91. return SHARED_PACKAGES;
  92. }
  93. @Override
  94. public List<String> getDependencyNotation() {
  95. return Collections.singletonList("com.typesafe.play:templates-compiler_" + scalaVersion + ":" + twirlVersion);
  96. }
  97. @Override
  98. public Collection<TwirlTemplateFormat> getDefaultTemplateFormats() {
  99. return Arrays.<TwirlTemplateFormat>asList(
  100. new DefaultTwirlTemplateFormat("html", "play.api.templates.HtmlFormat", Collections.singleton("views.html._")),
  101. new DefaultTwirlTemplateFormat("txt", "play.api.templates.TxtFormat", Collections.singleton("views.txt._")),
  102. new DefaultTwirlTemplateFormat("xml", "play.api.templates.XmlFormat", Collections.singleton("views.xml._")),
  103. new DefaultTwirlTemplateFormat("js", "play.api.templates.JavaScriptFormat", Collections.singleton("views.js._"))
  104. );
  105. }
  106. }