allow generic tinder tasks to override Velocity properties
This commit is contained in:
parent
6b446d9bd1
commit
5ab36de2e1
|
@ -156,6 +156,12 @@ import ca.uhn.fhir.tinder.parser.TargetType;
|
||||||
* <td valign="top" align="center">No. Defaults to same directory as the template file.</td>
|
* <td valign="top" align="center">No. Defaults to same directory as the template file.</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
|
* <td valign="top">velocityProperties</td>
|
||||||
|
* <td valign="top">Specifies the full path to a java properties file
|
||||||
|
* containing Velocity configuration properties</td>
|
||||||
|
* <td valign="top" align="center">No.</td>
|
||||||
|
* </tr>
|
||||||
|
* <tr>
|
||||||
* <td valign="top">includeResources</td>
|
* <td valign="top">includeResources</td>
|
||||||
* <td valign="top">A list of the names of the resources or composite data types that should
|
* <td valign="top">A list of the names of the resources or composite data types that should
|
||||||
* be used in the file generation</td>
|
* be used in the file generation</td>
|
||||||
|
@ -238,6 +244,8 @@ public class TinderGenericMultiFileMojo extends AbstractMojo {
|
||||||
private File templateFile;
|
private File templateFile;
|
||||||
@Parameter(required = false)
|
@Parameter(required = false)
|
||||||
private String velocityPath;
|
private String velocityPath;
|
||||||
|
@Parameter(required = false)
|
||||||
|
private String velocityProperties;
|
||||||
|
|
||||||
@Parameter(required = false)
|
@Parameter(required = false)
|
||||||
private List<String> includeResources;
|
private List<String> includeResources;
|
||||||
|
@ -319,6 +327,7 @@ public class TinderGenericMultiFileMojo extends AbstractMojo {
|
||||||
rp.setTemplate(template);
|
rp.setTemplate(template);
|
||||||
rp.setTemplateFile(templateFile);
|
rp.setTemplateFile(templateFile);
|
||||||
rp.setVelocityPath(velocityPath);
|
rp.setVelocityPath(velocityPath);
|
||||||
|
rp.setVelocityProperties(velocityProperties);
|
||||||
rp.writeAll(targetType, targetDirectory, null, targetPackage);
|
rp.writeAll(targetType, targetDirectory, null, targetPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,6 +342,7 @@ public class TinderGenericMultiFileMojo extends AbstractMojo {
|
||||||
dtp.setTemplate(template);
|
dtp.setTemplate(template);
|
||||||
dtp.setTemplateFile(templateFile);
|
dtp.setTemplateFile(templateFile);
|
||||||
dtp.setVelocityPath(velocityPath);
|
dtp.setVelocityPath(velocityPath);
|
||||||
|
dtp.setVelocityProperties(velocityProperties);
|
||||||
dtp.writeAll(targetType, targetDirectory, null, targetPackage);
|
dtp.writeAll(targetType, targetDirectory, null, targetPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,6 +357,7 @@ public class TinderGenericMultiFileMojo extends AbstractMojo {
|
||||||
vsp.setTemplate(template);
|
vsp.setTemplate(template);
|
||||||
vsp.setTemplateFile(templateFile);
|
vsp.setTemplateFile(templateFile);
|
||||||
vsp.setVelocityPath(velocityPath);
|
vsp.setVelocityPath(velocityPath);
|
||||||
|
vsp.setVelocityProperties(velocityProperties);
|
||||||
vsp.writeMarkedValueSets(targetType, targetDirectory, targetPackage);
|
vsp.writeMarkedValueSets(targetType, targetDirectory, targetPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,6 +372,7 @@ public class TinderGenericMultiFileMojo extends AbstractMojo {
|
||||||
pp.setTemplate(template);
|
pp.setTemplate(template);
|
||||||
pp.setTemplateFile(templateFile);
|
pp.setTemplateFile(templateFile);
|
||||||
pp.setVelocityPath(velocityPath);
|
pp.setVelocityPath(velocityPath);
|
||||||
|
pp.setVelocityProperties(velocityProperties);
|
||||||
pp.writeAll(targetType, targetDirectory, null, targetPackage);
|
pp.writeAll(targetType, targetDirectory, null, targetPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,12 @@ import ca.uhn.fhir.tinder.parser.TargetType;
|
||||||
* <td valign="top" align="center">No. Defaults to same directory as the template file.</td>
|
* <td valign="top" align="center">No. Defaults to same directory as the template file.</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
|
* <td valign="top">velocityProperties</td>
|
||||||
|
* <td valign="top">Specifies the full path to a java properties file
|
||||||
|
* containing Velocity configuration properties</td>
|
||||||
|
* <td valign="top" align="center">No.</td>
|
||||||
|
* </tr>
|
||||||
|
* <tr>
|
||||||
* <td valign="top">includeResources</td>
|
* <td valign="top">includeResources</td>
|
||||||
* <td valign="top">A list of the names of the resources or composite data types that should
|
* <td valign="top">A list of the names of the resources or composite data types that should
|
||||||
* be used in the file generation</td>
|
* be used in the file generation</td>
|
||||||
|
@ -227,6 +233,8 @@ public class TinderGenericSingleFileMojo extends AbstractMojo {
|
||||||
private File templateFile;
|
private File templateFile;
|
||||||
@Parameter(required = false)
|
@Parameter(required = false)
|
||||||
private String velocityPath;
|
private String velocityPath;
|
||||||
|
@Parameter(required = false)
|
||||||
|
private String velocityProperties;
|
||||||
|
|
||||||
@Parameter(required = false)
|
@Parameter(required = false)
|
||||||
private List<String> includeResources;
|
private List<String> includeResources;
|
||||||
|
@ -311,27 +319,13 @@ public class TinderGenericSingleFileMojo extends AbstractMojo {
|
||||||
/*
|
/*
|
||||||
* Next, deal with the template and initialize velocity
|
* Next, deal with the template and initialize velocity
|
||||||
*/
|
*/
|
||||||
VelocityEngine v = new VelocityEngine();
|
VelocityEngine v = VelocityHelper.configureVelocityEngine(templateFile, velocityPath, velocityProperties);
|
||||||
InputStream templateIs = null;
|
InputStream templateIs = null;
|
||||||
if (templateFile != null) {
|
if (templateFile != null) {
|
||||||
templateIs = new FileInputStream(templateFile);
|
templateIs = new FileInputStream(templateFile);
|
||||||
v.setProperty("resource.loader", "file");
|
|
||||||
v.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
|
|
||||||
if (velocityPath != null) {
|
|
||||||
v.setProperty("file.resource.loader.path", velocityPath);
|
|
||||||
} else {
|
|
||||||
String path = templateFile.getCanonicalFile().getParent();
|
|
||||||
if (null == path) {
|
|
||||||
path = ".";
|
|
||||||
}
|
|
||||||
v.setProperty("file.resource.loader.path", path);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
templateIs = this.getClass().getResourceAsStream(template);
|
templateIs = this.getClass().getResourceAsStream(template);
|
||||||
v.setProperty("resource.loader", "cp");
|
|
||||||
v.setProperty("cp.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
|
|
||||||
}
|
}
|
||||||
v.setProperty("runtime.references.strict", Boolean.TRUE);
|
|
||||||
InputStreamReader templateReader = new InputStreamReader(templateIs);
|
InputStreamReader templateReader = new InputStreamReader(templateIs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -60,6 +60,7 @@ public class ValueSetGenerator {
|
||||||
private String myTemplate = null;
|
private String myTemplate = null;
|
||||||
private File myTemplateFile = null;
|
private File myTemplateFile = null;
|
||||||
private String myVelocityPath = null;
|
private String myVelocityPath = null;
|
||||||
|
private String myVelocityProperties = null;
|
||||||
|
|
||||||
public ValueSetGenerator(String theVersion) {
|
public ValueSetGenerator(String theVersion) {
|
||||||
myVersion = theVersion;
|
myVersion = theVersion;
|
||||||
|
@ -322,6 +323,10 @@ public class ValueSetGenerator {
|
||||||
myVelocityPath = theVelocityPath;
|
myVelocityPath = theVelocityPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVelocityProperties(String theVelocityProperties) {
|
||||||
|
myVelocityProperties = theVelocityProperties;
|
||||||
|
}
|
||||||
|
|
||||||
public void write(Collection<ValueSetTm> theValueSets, File theOutputDirectory, String thePackageBase) throws IOException {
|
public void write(Collection<ValueSetTm> theValueSets, File theOutputDirectory, String thePackageBase) throws IOException {
|
||||||
write(TargetType.SOURCE, theValueSets, theOutputDirectory, thePackageBase);
|
write(TargetType.SOURCE, theValueSets, theOutputDirectory, thePackageBase);
|
||||||
}
|
}
|
||||||
|
@ -364,30 +369,16 @@ public class ValueSetGenerator {
|
||||||
ctx.put("packageBase", thePackageBase);
|
ctx.put("packageBase", thePackageBase);
|
||||||
ctx.put("esc", new EscapeTool());
|
ctx.put("esc", new EscapeTool());
|
||||||
|
|
||||||
VelocityEngine v = new VelocityEngine();
|
VelocityEngine v = VelocityHelper.configureVelocityEngine(myTemplateFile, myVelocityPath, myVelocityProperties);
|
||||||
if (myTemplateFile != null) {
|
if (myTemplateFile != null) {
|
||||||
templateIs = new FileInputStream(myTemplateFile);
|
templateIs = new FileInputStream(myTemplateFile);
|
||||||
v.setProperty("resource.loader", "file");
|
|
||||||
v.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
|
|
||||||
if (myVelocityPath != null) {
|
|
||||||
v.setProperty("file.resource.loader.path", myVelocityPath);
|
|
||||||
} else {
|
|
||||||
String path = myTemplateFile.getCanonicalFile().getParent();
|
|
||||||
if (null == path) {
|
|
||||||
path = ".";
|
|
||||||
}
|
|
||||||
v.setProperty("file.resource.loader.path", path);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
String templateName = myTemplate;
|
String templateName = myTemplate;
|
||||||
if (null == templateName) {
|
if (null == templateName) {
|
||||||
templateName = "/vm/valueset.vm";
|
templateName = "/vm/valueset.vm";
|
||||||
}
|
}
|
||||||
templateIs = this.getClass().getResourceAsStream(templateName);
|
templateIs = this.getClass().getResourceAsStream(templateName);
|
||||||
v.setProperty("resource.loader", "cp");
|
|
||||||
v.setProperty("cp.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
|
|
||||||
}
|
}
|
||||||
v.setProperty("runtime.references.strict", Boolean.TRUE);
|
|
||||||
|
|
||||||
InputStreamReader templateReader = new InputStreamReader(templateIs, "UTF-8");
|
InputStreamReader templateReader = new InputStreamReader(templateIs, "UTF-8");
|
||||||
v.evaluate(ctx, w, "", templateReader);
|
v.evaluate(ctx, w, "", templateReader);
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
package ca.uhn.fhir.tinder;
|
||||||
|
/*
|
||||||
|
* #%L
|
||||||
|
* HAPI FHIR Tinder Plug-In
|
||||||
|
* %%
|
||||||
|
* Copyright (C) 2014 - 2016 University Health Network
|
||||||
|
* %%
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
* #L%
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.apache.velocity.app.VelocityEngine;
|
||||||
|
import org.apache.velocity.runtime.RuntimeConstants;
|
||||||
|
|
||||||
|
public class VelocityHelper {
|
||||||
|
|
||||||
|
public static VelocityEngine configureVelocityEngine (File templateFile, String velocityPath, String propertyFile) throws IOException {
|
||||||
|
VelocityEngine result = new VelocityEngine();
|
||||||
|
boolean haveResourceLoader = false;
|
||||||
|
boolean haveRuntimeReferences = false;
|
||||||
|
|
||||||
|
if (propertyFile != null) {
|
||||||
|
File propFile = new File(propertyFile);
|
||||||
|
if (propFile.exists() && propFile.isFile() && propFile.canRead()) {
|
||||||
|
InputStream propsIn = new FileInputStream(propFile);
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.load(propsIn);
|
||||||
|
propsIn.close();
|
||||||
|
for (Entry<?,?> entry : props.entrySet()) {
|
||||||
|
String key = (String)entry.getKey();
|
||||||
|
result.setProperty(key, entry.getValue());
|
||||||
|
if (RuntimeConstants.RESOURCE_LOADER.equals(key)) {
|
||||||
|
haveResourceLoader = true;
|
||||||
|
} else
|
||||||
|
if (RuntimeConstants.RUNTIME_REFERENCES_STRICT.equals(key)) {
|
||||||
|
haveRuntimeReferences = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new FileNotFoundException("Velocity property file ["+propertyFile+"] does not exist or is not readable.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!haveResourceLoader) {
|
||||||
|
if (templateFile != null) {
|
||||||
|
result.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
|
||||||
|
result.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
|
||||||
|
if (velocityPath != null) {
|
||||||
|
result.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, velocityPath);
|
||||||
|
} else {
|
||||||
|
String path = templateFile.getCanonicalFile().getParent();
|
||||||
|
if (null == path) {
|
||||||
|
path = ".";
|
||||||
|
}
|
||||||
|
result.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, path);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result.setProperty("resource.loader", "cp");
|
||||||
|
result.setProperty("cp.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!haveRuntimeReferences) {
|
||||||
|
result.setProperty(RuntimeConstants.RUNTIME_REFERENCES_STRICT, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -44,6 +44,7 @@ import ca.uhn.fhir.tinder.GeneratorContext;
|
||||||
import ca.uhn.fhir.tinder.GeneratorContext.ProfileFileDefinition;
|
import ca.uhn.fhir.tinder.GeneratorContext.ProfileFileDefinition;
|
||||||
import ca.uhn.fhir.tinder.TinderStructuresMojo.ValueSetFileDefinition;
|
import ca.uhn.fhir.tinder.TinderStructuresMojo.ValueSetFileDefinition;
|
||||||
import ca.uhn.fhir.tinder.ValueSetGenerator;
|
import ca.uhn.fhir.tinder.ValueSetGenerator;
|
||||||
|
import ca.uhn.fhir.tinder.VelocityHelper;
|
||||||
import ca.uhn.fhir.tinder.parser.BaseStructureSpreadsheetParser;
|
import ca.uhn.fhir.tinder.parser.BaseStructureSpreadsheetParser;
|
||||||
import ca.uhn.fhir.tinder.parser.DatatypeGeneratorUsingSpreadsheet;
|
import ca.uhn.fhir.tinder.parser.DatatypeGeneratorUsingSpreadsheet;
|
||||||
import ca.uhn.fhir.tinder.parser.ProfileParser;
|
import ca.uhn.fhir.tinder.parser.ProfileParser;
|
||||||
|
@ -206,6 +207,12 @@ import ca.uhn.fhir.tinder.parser.TargetType;
|
||||||
* <td valign="top" align="center">No. Defaults to same directory as the template file.</td>
|
* <td valign="top" align="center">No. Defaults to same directory as the template file.</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
|
* <td valign="top">velocityProperties</td>
|
||||||
|
* <td valign="top">Specifies the full path to a java properties file
|
||||||
|
* containing Velocity configuration properties</td>
|
||||||
|
* <td valign="top" align="center">No.</td>
|
||||||
|
* </tr>
|
||||||
|
* <tr>
|
||||||
* <td valign="top">includeResources</td>
|
* <td valign="top">includeResources</td>
|
||||||
* <td valign="top">A list of the names of the resources or composite data types that should
|
* <td valign="top">A list of the names of the resources or composite data types that should
|
||||||
* be used in the file generation</td>
|
* be used in the file generation</td>
|
||||||
|
@ -276,6 +283,8 @@ public class TinderGeneratorTask extends Task {
|
||||||
|
|
||||||
private String velocityPath;
|
private String velocityPath;
|
||||||
|
|
||||||
|
private String velocityProperties;
|
||||||
|
|
||||||
private List<String> includeResources;
|
private List<String> includeResources;
|
||||||
|
|
||||||
private List<String> excludeResources;
|
private List<String> excludeResources;
|
||||||
|
@ -367,27 +376,13 @@ public class TinderGeneratorTask extends Task {
|
||||||
/*
|
/*
|
||||||
* Next, deal with the template and initialize velocity
|
* Next, deal with the template and initialize velocity
|
||||||
*/
|
*/
|
||||||
VelocityEngine v = new VelocityEngine();
|
VelocityEngine v = VelocityHelper.configureVelocityEngine(templateFile, velocityPath, velocityProperties);
|
||||||
InputStream templateIs = null;
|
InputStream templateIs = null;
|
||||||
if (templateFile != null) {
|
if (templateFile != null) {
|
||||||
templateIs = new FileInputStream(templateFile);
|
templateIs = new FileInputStream(templateFile);
|
||||||
v.setProperty("resource.loader", "file");
|
|
||||||
v.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
|
|
||||||
if (velocityPath != null) {
|
|
||||||
v.setProperty("file.resource.loader.path", velocityPath);
|
|
||||||
} else {
|
|
||||||
String path = templateFile.getCanonicalFile().getParent();
|
|
||||||
if (null == path) {
|
|
||||||
path = ".";
|
|
||||||
}
|
|
||||||
v.setProperty("file.resource.loader.path", path);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
templateIs = this.getClass().getResourceAsStream(template);
|
templateIs = this.getClass().getResourceAsStream(template);
|
||||||
v.setProperty("resource.loader", "cp");
|
|
||||||
v.setProperty("cp.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
|
|
||||||
}
|
}
|
||||||
v.setProperty("runtime.references.strict", Boolean.TRUE);
|
|
||||||
InputStreamReader templateReader = new InputStreamReader(templateIs);
|
InputStreamReader templateReader = new InputStreamReader(templateIs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -457,6 +452,7 @@ public class TinderGeneratorTask extends Task {
|
||||||
rp.setTemplate(template);
|
rp.setTemplate(template);
|
||||||
rp.setTemplateFile(templateFile);
|
rp.setTemplateFile(templateFile);
|
||||||
rp.setVelocityPath(velocityPath);
|
rp.setVelocityPath(velocityPath);
|
||||||
|
rp.setVelocityProperties(velocityProperties);
|
||||||
rp.writeAll(targetType, targetDirectory, null, targetPackage);
|
rp.writeAll(targetType, targetDirectory, null, targetPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -471,6 +467,7 @@ public class TinderGeneratorTask extends Task {
|
||||||
dtp.setTemplate(template);
|
dtp.setTemplate(template);
|
||||||
dtp.setTemplateFile(templateFile);
|
dtp.setTemplateFile(templateFile);
|
||||||
dtp.setVelocityPath(velocityPath);
|
dtp.setVelocityPath(velocityPath);
|
||||||
|
dtp.setVelocityProperties(velocityProperties);
|
||||||
dtp.writeAll(targetType, targetDirectory, null, targetPackage);
|
dtp.writeAll(targetType, targetDirectory, null, targetPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,6 +482,7 @@ public class TinderGeneratorTask extends Task {
|
||||||
vsp.setTemplate(template);
|
vsp.setTemplate(template);
|
||||||
vsp.setTemplateFile(templateFile);
|
vsp.setTemplateFile(templateFile);
|
||||||
vsp.setVelocityPath(velocityPath);
|
vsp.setVelocityPath(velocityPath);
|
||||||
|
vsp.setVelocityProperties(velocityProperties);
|
||||||
vsp.writeMarkedValueSets(targetType, targetDirectory, targetPackage);
|
vsp.writeMarkedValueSets(targetType, targetDirectory, targetPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,6 +497,7 @@ public class TinderGeneratorTask extends Task {
|
||||||
pp.setTemplate(template);
|
pp.setTemplate(template);
|
||||||
pp.setTemplateFile(templateFile);
|
pp.setTemplateFile(templateFile);
|
||||||
pp.setVelocityPath(velocityPath);
|
pp.setVelocityPath(velocityPath);
|
||||||
|
pp.setVelocityProperties(velocityProperties);
|
||||||
pp.writeAll(targetType, targetDirectory, null, targetPackage);
|
pp.writeAll(targetType, targetDirectory, null, targetPackage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -611,6 +610,10 @@ public class TinderGeneratorTask extends Task {
|
||||||
this.velocityPath = velocityPath;
|
this.velocityPath = velocityPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVelocityProperties(String velocityProperties) {
|
||||||
|
this.velocityProperties = velocityProperties;
|
||||||
|
}
|
||||||
|
|
||||||
public void setIncludeResources(String names) {
|
public void setIncludeResources(String names) {
|
||||||
if (null == this.includeResources) {
|
if (null == this.includeResources) {
|
||||||
this.includeResources = new ArrayList<String>();
|
this.includeResources = new ArrayList<String>();
|
||||||
|
|
|
@ -43,6 +43,7 @@ import ca.uhn.fhir.model.primitive.BoundCodeDt;
|
||||||
import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt;
|
import ca.uhn.fhir.model.primitive.BoundCodeableConceptDt;
|
||||||
import ca.uhn.fhir.tinder.TinderStructuresMojo;
|
import ca.uhn.fhir.tinder.TinderStructuresMojo;
|
||||||
import ca.uhn.fhir.tinder.ValueSetGenerator;
|
import ca.uhn.fhir.tinder.ValueSetGenerator;
|
||||||
|
import ca.uhn.fhir.tinder.VelocityHelper;
|
||||||
import ca.uhn.fhir.tinder.model.BaseElement;
|
import ca.uhn.fhir.tinder.model.BaseElement;
|
||||||
import ca.uhn.fhir.tinder.model.BaseRootType;
|
import ca.uhn.fhir.tinder.model.BaseRootType;
|
||||||
import ca.uhn.fhir.tinder.model.Child;
|
import ca.uhn.fhir.tinder.model.Child;
|
||||||
|
@ -73,6 +74,7 @@ public abstract class BaseStructureParser {
|
||||||
private String myTemplate = null;
|
private String myTemplate = null;
|
||||||
private File myTemplateFile = null;
|
private File myTemplateFile = null;
|
||||||
private String myVelocityPath = null;
|
private String myVelocityPath = null;
|
||||||
|
private String myVelocityProperties = null;
|
||||||
|
|
||||||
public BaseStructureParser(String theVersion, String theBaseDir) {
|
public BaseStructureParser(String theVersion, String theBaseDir) {
|
||||||
myVersion = theVersion;
|
myVersion = theVersion;
|
||||||
|
@ -475,6 +477,10 @@ public abstract class BaseStructureParser {
|
||||||
myVelocityPath = theVelocityPath;
|
myVelocityPath = theVelocityPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVelocityProperties(String theVelocityProperties) {
|
||||||
|
myVelocityProperties = theVelocityProperties;
|
||||||
|
}
|
||||||
|
|
||||||
private void write(BaseRootType theResource, File theFile, String thePackageBase) throws IOException, MojoFailureException {
|
private void write(BaseRootType theResource, File theFile, String thePackageBase) throws IOException, MojoFailureException {
|
||||||
FileOutputStream fos = new FileOutputStream(theFile, false);
|
FileOutputStream fos = new FileOutputStream(theFile, false);
|
||||||
OutputStreamWriter w = new OutputStreamWriter(fos, "UTF-8");
|
OutputStreamWriter w = new OutputStreamWriter(fos, "UTF-8");
|
||||||
|
@ -538,27 +544,12 @@ public abstract class BaseStructureParser {
|
||||||
ctx.put("versionCapitalized", capitalize);
|
ctx.put("versionCapitalized", capitalize);
|
||||||
ctx.put("this", theResource);
|
ctx.put("this", theResource);
|
||||||
|
|
||||||
VelocityEngine v = new VelocityEngine();
|
VelocityEngine v = VelocityHelper.configureVelocityEngine(getTemplateFile(), getVelocityPath(), myVelocityProperties);
|
||||||
InputStream templateIs = null;
|
InputStream templateIs = null;
|
||||||
if (getTemplateFile() != null) {
|
if (getTemplateFile() != null) {
|
||||||
templateIs = new FileInputStream(getTemplateFile());
|
|
||||||
v.setProperty("resource.loader", "file");
|
|
||||||
v.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
|
|
||||||
if (getVelocityPath() != null) {
|
|
||||||
v.setProperty("file.resource.loader.path", getVelocityPath());
|
|
||||||
} else {
|
|
||||||
String path = getTemplateFile().getCanonicalFile().getParent();
|
|
||||||
if (null == path) {
|
|
||||||
path = ".";
|
|
||||||
}
|
|
||||||
v.setProperty("file.resource.loader.path", path);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
templateIs = this.getClass().getResourceAsStream(getTemplate());
|
templateIs = this.getClass().getResourceAsStream(getTemplate());
|
||||||
v.setProperty("resource.loader", "cp");
|
|
||||||
v.setProperty("cp.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
|
|
||||||
}
|
}
|
||||||
v.setProperty("runtime.references.strict", Boolean.TRUE);
|
|
||||||
|
|
||||||
InputStreamReader templateReader = new InputStreamReader(templateIs);
|
InputStreamReader templateReader = new InputStreamReader(templateIs);
|
||||||
v.evaluate(ctx, w, "", templateReader);
|
v.evaluate(ctx, w, "", templateReader);
|
||||||
|
|
Loading…
Reference in New Issue