From 4a46daa57150ea5918ae27d6ac583cd7dfd0e8b3 Mon Sep 17 00:00:00 2001 From: Pascal Filion Date: Thu, 11 Oct 2012 13:24:39 -0400 Subject: Fix misalignment of text range within a JPQL query and incorrect behavior of content assist due to incorrect location within the query (fix bug#360713, bug#386414) --- .../jpa1/context/java/GenericJavaNamedQuery.java | 12 ++++++++++-- .../internal/jpa1/context/orm/GenericOrmNamedQuery.java | 17 ++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) (limited to 'jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1') diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNamedQuery.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNamedQuery.java index e9cf3c4ab6..82c27209ca 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNamedQuery.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNamedQuery.java @@ -32,7 +32,7 @@ public class GenericJavaNamedQuery } // ********** metadata conversion ********* - + public void convertTo(OrmQueryContainer queryContainer) { queryContainer.addNamedQuery().convertFrom(this); } @@ -45,7 +45,15 @@ public class GenericJavaNamedQuery @Override protected void validateQuery_(JpaJpqlQueryHelper queryHelper, List messages, IReporter reporter) { - queryHelper.validate(this, this.query, this.queryAnnotation.getQueryTextRange(), 1, messages); + queryHelper.validate( + this, + this.query, + this.query, + this.queryAnnotation.getQueryTextRanges(), + 1, + JpaJpqlQueryHelper.EscapeType.JAVA, + messages + ); } // ********** misc ********** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedQuery.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedQuery.java index 6424cdbdae..43c2445d06 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedQuery.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmNamedQuery.java @@ -10,15 +10,14 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm; import java.util.List; - import org.eclipse.jpt.jpa.core.context.JpaContextNode; import org.eclipse.jpt.jpa.core.context.NamedQuery; import org.eclipse.jpt.jpa.core.context.java.JavaNamedQuery; import org.eclipse.jpt.jpa.core.context.orm.OrmNamedQuery; import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmQuery; import org.eclipse.jpt.jpa.core.jpql.JpaJpqlQueryHelper; +import org.eclipse.jpt.jpa.core.jpql.JpaJpqlQueryHelper.EscapeType; import org.eclipse.jpt.jpa.core.resource.orm.XmlNamedQuery; -import org.eclipse.persistence.jpa.jpql.ExpressionTools; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -39,10 +38,18 @@ public class GenericOrmNamedQuery @Override protected void validateQuery_(JpaJpqlQueryHelper queryHelper, List messages, IReporter reporter) { - // Convert the literal escape characters into actual escape characters - String jpqlQuery = ExpressionTools.unescape(this.query, new int[1]); + XmlNamedQuery xmlQuery = this.getXmlQuery(); + EscapeType escapeType = xmlQuery.isQueryInsideCDATASection() ? EscapeType.NONE : EscapeType.XML; - queryHelper.validate(this, jpqlQuery, this.getQueryTextRange(), 0, messages); + queryHelper.validate( + this, + this.query, + xmlQuery.getActualQuery(), + this.getQueryTextRanges(), + xmlQuery.getQueryOffset(), + escapeType, + messages + ); } // ********** misc ********** -- cgit v1.2.3