Vijay Singh Rajput created OLINGO-963:
-----------------------------------------
Summary: Testing JPA based Delta Token is not working
Key: OLINGO-963
URL: https://issues.apache.org/jira/browse/OLINGO-963
Project: Olingo
Issue Type: Question
Components: odata2-jpa
Affects Versions: V2 2.0.6
Environment: Window 8
Reporter: Vijay Singh Rajput
Priority: Minor
Dear Team,
I am testing the JPA based delta token functionality using
olingo-odata2-jpa-processor-core-2.0.6 , but it is not working for me. issue is
i am not getting delta token value when create Query using
ODataJPATombstoneEntityListener method getQuery. All the time value is coming
as null even i am tring with !deltatoken=1464260329818 query paramter in OData
service call. may be i am missing some step. Kindly guide me.
Thanks in advance.
Following is step which i follow:
1. Extend Class ODataJPATombstoneEntityListener and override following method
@Override
public String generateDeltaToken(final List<Object> deltas, final
Query query) {
return String.valueOf(System.currentTimeMillis());
}
@Override
public Query getQuery(final GetEntitySetUriInfo resultsView, final
EntityManager em) {
JPQLContextType contextType = null;
try {
if
(!resultsView.getStartEntitySet().getName().equals(resultsView.getTargetEntitySet().getName()))
{
contextType = JPQLContextType.JOIN;
} else {
contextType = JPQLContextType.SELECT;
}
JPQLContext jpqlContext =
JPQLContext.createBuilder(contextType, resultsView).build();
JPQLStatement jpqlStatement =
JPQLStatement.createBuilder(jpqlContext).build();
String deltaToken = ODataJPATombstoneContext.getDeltaToken();
System.out.println("Delta Token:"+deltaToken);
Query query = null;
if (deltaToken != null) {
String statement = jpqlStatement.toString();
/*String[] statementParts =
statement.split(JPQLStatement.KEYWORD.WHERE);
String deltaCondition = jpqlContext.getJPAEntityAlias() +
".creationDate >= {ts '" + deltaToken + "'}";
if (statementParts.length > 1) {
statement =
statementParts[0] + JPQLStatement.DELIMITER.SPACE +
JPQLStatement.KEYWORD.WHERE
+ JPQLStatement.DELIMITER.SPACE + deltaCondition +
JPQLStatement.DELIMITER.SPACE
+ JPQLStatement.Operator.AND + statementParts[1];
} else {
statement =
statementParts[0] + JPQLStatement.DELIMITER.SPACE +
JPQLStatement.KEYWORD.WHERE
+ JPQLStatement.DELIMITER.SPACE + deltaCondition;
}*/
query = em.createQuery(statement);
} else {
query = em.createQuery(jpqlStatement.toString());
}
return query;
} catch (EdmException e) {
return null;
} catch (ODataJPAModelException e) {
return null;
} catch (ODataJPARuntimeException e) {
return null;
}
}
2. Add Annotation
@EntityListeners(com.sap.sdc.hcp.bootcamp.listeners.JobTombstoneListener.class)
in my Entity Class.
All the functionality is working fine if i remove @EntityListeners means
without Delta token functionality.
Kindly Help.
Best Regards,
Vijay
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)