Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MyBatipse is marking all generated mappers with an error indicator. #95

Closed
l-scott-warner opened this issue Apr 23, 2019 · 7 comments
Closed

Comments

@l-scott-warner
Copy link

l-scott-warner commented Apr 23, 2019

Mybatipse is putting an error indicator on all generated mappers. I found the following error in the eclipse log.

MyBatipse Version: 1.2.2.201903190116
Mybatis Generator Version: 1.3.5

eclipse.buildId=4.11.0.I20190307-0500
java.version=1.8.0_181
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments: -product org.eclipse.epp.package.jee.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product

Created Time: 2019-04-19 06:05:47.850

net.harawata.mybatipse
Error
Fri Apr 19 06:45:07 MDT 2019
Error occurred while validating reference: BaseResultMap

javax.xml.transform.TransformerException: Unable to evaluate expression using this context
	at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:368)
	at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:209)
	at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:271)
	at net.harawata.mybatipse.util.XpathUtil.evaluateXpath(XpathUtil.java:74)
	at net.harawata.mybatipse.util.XpathUtil.xpathBool(XpathUtil.java:40)
	at net.harawata.mybatipse.mybatis.ValidatorHelper.elementExists(ValidatorHelper.java:89)
	at net.harawata.mybatipse.mybatis.ValidatorHelper.isReferenceValid(ValidatorHelper.java:74)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateReference(XmlValidator.java:267)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateResultMapId(XmlValidator.java:233)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateElement(XmlValidator.java:181)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateElement(XmlValidator.java:212)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateFile(XmlValidator.java:121)
	at net.harawata.mybatipse.mybatis.XmlValidator.validate(XmlValidator.java:95)
	at org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1178)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)
	at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)
	at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:783)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
	at org.eclipse.wst.validation.internal.ValBuilderJob$Visitor.visit(ValBuilderJob.java:327)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:67)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:51)
	at org.eclipse.wst.validation.internal.ValBuilderJob.deltaBuild(ValBuilderJob.java:211)
	at org.eclipse.wst.validation.internal.ValBuilderJob.run(ValBuilderJob.java:179)
	at org.eclipse.wst.validation.internal.ValBuilderJob.runInWorkspace(ValBuilderJob.java:126)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context
	at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:266)
	at com.sun.org.apache.xpath.internal.axes.LocPathIterator.asIterator(LocPathIterator.java:271)
	at com.sun.org.apache.xpath.internal.functions.FuncCount.execute(FuncCount.java:60)
	at com.sun.org.apache.xpath.internal.Expression.execute(Expression.java:157)
	at com.sun.org.apache.xpath.internal.operations.Operation.execute(Operation.java:111)
	at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:339)
	... 35 more
---------
java.lang.RuntimeException: Unable to evaluate expression using this context
	at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:266)
	at com.sun.org.apache.xpath.internal.axes.LocPathIterator.asIterator(LocPathIterator.java:271)
	at com.sun.org.apache.xpath.internal.functions.FuncCount.execute(FuncCount.java:60)
	at com.sun.org.apache.xpath.internal.Expression.execute(Expression.java:157)
	at com.sun.org.apache.xpath.internal.operations.Operation.execute(Operation.java:111)
	at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:339)
	at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:209)
	at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:271)
	at net.harawata.mybatipse.util.XpathUtil.evaluateXpath(XpathUtil.java:74)
	at net.harawata.mybatipse.util.XpathUtil.xpathBool(XpathUtil.java:40)
	at net.harawata.mybatipse.mybatis.ValidatorHelper.elementExists(ValidatorHelper.java:89)
	at net.harawata.mybatipse.mybatis.ValidatorHelper.isReferenceValid(ValidatorHelper.java:74)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateReference(XmlValidator.java:267)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateResultMapId(XmlValidator.java:233)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateElement(XmlValidator.java:181)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateElement(XmlValidator.java:212)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateFile(XmlValidator.java:121)
	at net.harawata.mybatipse.mybatis.XmlValidator.validate(XmlValidator.java:95)
	at org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1178)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)
	at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)
	at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:783)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
	at org.eclipse.wst.validation.internal.ValBuilderJob$Visitor.visit(ValBuilderJob.java:327)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:67)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:51)
	at org.eclipse.wst.validation.internal.ValBuilderJob.deltaBuild(ValBuilderJob.java:211)
	at org.eclipse.wst.validation.internal.ValBuilderJob.run(ValBuilderJob.java:179)
	at org.eclipse.wst.validation.internal.ValBuilderJob.runInWorkspace(ValBuilderJob.java:126)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
--------------- linked to ------------------
javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Unable to evaluate expression using this context
	at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:285)
	at net.harawata.mybatipse.util.XpathUtil.evaluateXpath(XpathUtil.java:74)
	at net.harawata.mybatipse.util.XpathUtil.xpathBool(XpathUtil.java:40)
	at net.harawata.mybatipse.mybatis.ValidatorHelper.elementExists(ValidatorHelper.java:89)
	at net.harawata.mybatipse.mybatis.ValidatorHelper.isReferenceValid(ValidatorHelper.java:74)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateReference(XmlValidator.java:267)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateResultMapId(XmlValidator.java:233)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateElement(XmlValidator.java:181)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateElement(XmlValidator.java:212)
	at net.harawata.mybatipse.mybatis.XmlValidator.validateFile(XmlValidator.java:121)
	at net.harawata.mybatipse.mybatis.XmlValidator.validate(XmlValidator.java:95)
	at org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1178)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)
	at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)
	at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:783)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
	at org.eclipse.wst.validation.internal.ValBuilderJob$Visitor.visit(ValBuilderJob.java:327)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:67)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:51)
	at org.eclipse.wst.validation.internal.ValBuilderJob.deltaBuild(ValBuilderJob.java:211)
	at org.eclipse.wst.validation.internal.ValBuilderJob.run(ValBuilderJob.java:179)
	at org.eclipse.wst.validation.internal.ValBuilderJob.runInWorkspace(ValBuilderJob.java:126)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: javax.xml.transform.TransformerException: Unable to evaluate expression using this context
	at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:368)
	at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:209)
	at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:271)
	... 33 more
Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context
	at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:266)
	at com.sun.org.apache.xpath.internal.axes.LocPathIterator.asIterator(LocPathIterator.java:271)
	at com.sun.org.apache.xpath.internal.functions.FuncCount.execute(FuncCount.java:60)
	at com.sun.org.apache.xpath.internal.Expression.execute(Expression.java:157)
	at com.sun.org.apache.xpath.internal.operations.Operation.execute(Operation.java:111)
	at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:339)
	... 35 more
@harawata
Copy link
Member

Hi @l-scott-warner ,

I'm not sure, but it might be caused by out-of-sync files.
Have you tried 'Refresh' and 'Clean' ?
If it didn't resolve the problem, please post a set of XML and Java files that reproduce the problem.

@l-scott-warner
Copy link
Author

Refresh and clean don't make any difference. This happens every time I generate the files using the mybatis generator in gradle. I will try to put together a sample project that demonstrates the problem. This did not happen until I upgraded to this version of mybatipse.

@l-scott-warner
Copy link
Author

This turns out to have something to do with sub-projects where the sub-project is a mybatis project and the errors are showing up on the parent project. I haven't been able to create a small project structure that duplicates the problem yet.

@l-scott-warner
Copy link
Author

I was able to work around this issue by making sure that my parent projects are not java projects in eclipse. This issue has more to do with eclipse sub-projects that any particular set of XML and java files.

I attached an eclipse project with a subproject that has mybatis files. If you import it and run a validate on the parent project, you should get all kinds of mybatis errors. If you filter your errors by selected project you will see that the errors are on the parent project, not the subproject with the mapper.

mybatipsebug.zip

@harawata
Copy link
Member

harawata commented May 3, 2019

@l-scott-warner ,

Thanks a lot for the demo!
When I validate the parent project, I got 42 errors of type "MyBatis XML Problem" on the AhaLookupMapper.xml (there actually are 21 errors, but this XML file is in both src and bin) and no errors on Java files.

As the subproject folder is not in the build path of mybatipsebug project, MyBatipse should not validate AhaLookupMapper.xml.
I haven't find a way to achieve it yet, but there are several workarounds.

  1. In the parent project, disable manual validation.

  2. In the parent project, add subproject folder to 'Exclude Group' of MyBatis XML Mapper Validator's validation filter (detailed instruction).

Please let me know if these didn't work for you.

@l-scott-warner
Copy link
Author

Thanks for the quick response. Your solution #2 is what I used and it works. Since this is the way the eclipse validation works,the issue is resolved as far as I'm concerned.

@harawata
Copy link
Member

harawata commented May 4, 2019

Yeah, this might be a case that requires the validation filter.
Closing as 'resolved' for now, but if anyone knows a plugin side solution, please let us know.
Thank you again for the detailed report and repro!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants