This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 249128 - license template path set incorrectly for unit test creation
Summary: license template path set incorrectly for unit test creation
Status: RESOLVED WORKSFORME
Alias: None
Product: platform
Classification: Unclassified
Component: Data Systems (show other bugs)
Version: 8.0.2
Hardware: PC Mac OS X
: P3 normal (vote)
Assignee: Svata Dedic
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-12-04 20:49 UTC by bondolo
Modified: 2015-08-13 14:37 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description bondolo 2014-12-04 20:49:34 UTC
It looks like there are two problems:

- The property defined in pom.xml 

  <netbeans.hint.license>${project.basedir}/../Bar/license-proprietary.fm</netbeans.hint.license>

is treated as a relative path to the templates directory. If it is an absolute path then it should be not be resolved relative to the templates/Licences

- .txt is appended to the path

A sanitized log is included below:


INFO [org.netbeans.libs.freemarker.FreemarkerEngine]: Failure processing MultiFileObject@5ba22e6b[Templates/UnitTests/JUnit4TestClass.java]
Error reading included file Templates/UnitTests/Templates/Licenses/license-/Users/mikeduigou/code/Foo/../Bar/license-proprietary.fm.txt
The problematic instruction:
----------
==> include "${project.licensePath}" [on line 5, column 1 in Templates/UnitTests/JUnit4TestClass.java]
----------
Java backtrace for programmers:
----------
freemarker.template.TemplateException: Error reading included file Templates/UnitTests/Templates/Licenses/license-/Users/mikeduigou/code/Foo/../Bar/license-proprietary.fm.txt
	at freemarker.core.Include.accept(Include.java:167)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:259)
	at org.netbeans.libs.freemarker.FreemarkerEngine.eval(FreemarkerEngine.java:130)
	at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
	at org.netbeans.modules.templates.ScriptingCreateFromTemplateHandler.createFromTemplate(ScriptingCreateFromTemplateHandler.java:127)
	at org.openide.loaders.MultiDataObject.handleCreateFromTemplate(MultiDataObject.java:884)
	at org.openide.loaders.DataObject$CreateAction.run(DataObject.java:1526)
	at org.openide.loaders.DataObjectPool$1WrapAtomicAction.run(DataObjectPool.java:261)
	at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:127)
	at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:641)
	at org.openide.loaders.DataObjectPool.runAtomicAction(DataObjectPool.java:286)
	at org.openide.loaders.DataObject.invokeAtomicAction(DataObject.java:998)
	at org.openide.loaders.DataObject.createFromTemplate(DataObject.java:930)
	at org.netbeans.modules.junit.DefaultPlugin.createTestClass(DefaultPlugin.java:2150)
	at org.netbeans.modules.junit.DefaultPlugin.createSingleTest(DefaultPlugin.java:1837)
	at org.netbeans.modules.junit.DefaultPlugin.createTests(DefaultPlugin.java:939)
	at org.netbeans.modules.junit.plugin.JUnitPlugin.access$100(JUnitPlugin.java:72)
	at org.netbeans.modules.junit.plugin.JUnitPlugin$1.createTests(JUnitPlugin.java:86)
	at org.netbeans.modules.junit.wizards.SimpleTestCaseWizardIterator.instantiate(SimpleTestCaseWizardIterator.java:350)
	at org.openide.loaders.TemplateWizard.handleInstantiate(TemplateWizard.java:605)
	at org.openide.loaders.TemplateWizard.instantiateNewObjects(TemplateWizard.java:439)
	at org.openide.loaders.TemplateWizardIterImpl.instantiate(TemplateWizardIterImpl.java:248)
	at org.openide.loaders.TemplateWizardIteratorWrapper.instantiate(TemplateWizardIteratorWrapper.java:160)
	at org.openide.WizardDescriptor.callInstantiateOpen(WizardDescriptor.java:1629)
	at org.openide.WizardDescriptor.callInstantiate(WizardDescriptor.java:1570)
	at org.openide.WizardDescriptor.access$2300(WizardDescriptor.java:92)
	at org.openide.WizardDescriptor$Listener$2$1.run(WizardDescriptor.java:2257)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1423)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
Caused by: java.io.FileNotFoundException: Template Templates/UnitTests/Templates/Licenses/license-/Users/mikeduigou/code/Foo/../Bar/license-proprietary.fm.txt not found.
	at freemarker.template.Configuration.getTemplate(Configuration.java:580)
	at freemarker.core.Environment.getTemplateForInclusion(Environment.java:1490)
	at freemarker.core.Include.accept(Include.java:157)
	... 32 more
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]: Bindings:
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: date value: 4-Dec-2014
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: dateTime value: Thu Dec 04 12:29:26 PST 2014
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: package value: com.foo.util
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: javaSourceLevel value: 1.7
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: methodTearDown value: true
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: classSetUp value: true
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: project value: {license=/Users/mikeduigou/code/Foo/../Bar/license-proprietary.fm, displayName=Foo, organization=Some Guys, name=Foo, property={maven={build={timestamp={format=yyyy-MM-dd'T'HH:mm:ssXX}}, compiler={source=1.7, target=1.7}}, project={build={sourceEncoding=UTF-8}}, regulus={version=1.1.0-SNAPSHOT}, netbeans={hint={license=/Users/mikeduigou/code/Foo/../Bar/license-proprietary.fm}}, env={GIT_COMMIT=UNKNOWN, BUILD_TAG=mikeduigou-Foo-1.1.0-SNAPSHOT_${buildNumber}-${maven.build.timestamp}, BUILD_NUMBER=${buildNumber}, EXECUTOR_NUMBER=0, GIT_BRANCH=${scmBranch}, WORKSPACE=/Users/mikeduigou/code/Foo, GIT_URL=http://git.foo.net/gitblit/summary/Bar.git/Foo, BUILD_ID=${maven.build.timestamp}, JENKINS_URL=UNKNOWN, JOB_NAME=Foo}, timestamp=${maven.build.timestamp}}, encoding=UTF-8, licensePath=Templates/Licenses/license-/Users/mikeduigou/code/Foo/../Bar/license-proprietary.fm.txt}
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: nameAndExt value: ContextTest.java
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: encoding value: UTF-8
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: org.openide.filesystems.FileObject value: MultiFileObject@5ba22e6b[Templates/UnitTests/JUnit4TestClass.java]
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: doctype value: <!DOCTYPE html>
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: methodSetUp value: true
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: sourceCodeHint value: true
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: name value: ContextTest
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: context value: javax.script.SimpleScriptContext@103a0abc
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: classTearDown value: true
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: java15style value: true
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: useAnnotations value: true
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: time value: 12:29:26 PM
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: javax.script.filename value: JUnit4TestClass.java
INFO [org.netbeans.libs.freemarker.FreemarkerEngine]:   key: user value: mikeduigou
-----
Comment 1 Tomas Stupka 2015-04-15 13:47:17 UTC
the license path returned by maven's CreateFromTemplateAttributesProvider implementation is

"Users/mikeduigou/code/Foo/../Bar/license-proprietary.fm"

so far not sure what maven could do about the reported problem

please evaluate
Comment 2 Jaroslav Havlin 2015-08-13 14:37:26 UTC
See [1], section "License Header"

The file needs to be registered using Tools -> Templates -> (item) Licenses -> Add... -> (select e.g. license-MY_NAME.txt file) -> Add

If the file name doesn't match "license-*.txt" format, you can use the "Rename" button after adding it.

Then, the property in pom.xml will contain only the middle part of the file name:

<netbeans.hint.license>MY_NAME</netbeans.hint.license>

Hope this helps.

[1] http://wiki.netbeans.org/MavenBestPractices