Its 1.5.1 ( CAS 4.0.1)
from log output:
2015-08-19 15:12:02,288 DEBUG
[org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao]
- <Adding attribute 'id' with value '[myname]' to query builder 'null'>
2015-08-19 15:12:02,289 DEBUG
[org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao]
- <Generated query builder 'sql=[id = ?] args=[myname]' from query Map
{username=[myname]}.>
In last line of following source you can see that executing query passes
querybuilder.arguments which has only one value, whereas replacement
happens twice.
- AbstractJdbcPersonAttributeDao
protected List
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/List.java#List><IPersonAttributes
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-api/1.5.1/org/jasig/services/persondir/IPersonAttributes.java#IPersonAttributes>>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>getPeopleForQuery
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/AbstractQueryPersonAttributeDao.java#AbstractQueryPersonAttributeDao.getPeopleForQuery%28org.jasig.services.persondir.support.jdbc.PartialWhereClause%2Cjava.lang.String%29>(PartialWhereClause
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/PartialWhereClause.java#PartialWhereClause>
queryBuilder, String
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/lang/String.java#String>
queryUserName) {
160
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#160>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
//Execute the query
161
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#161>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
final ParameterizedRowMapper
<http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-jdbc/2.5.6/org/springframework/jdbc/core/simple/ParameterizedRowMapper.java#ParameterizedRowMapper><R>
rowMapper = this.getRowMapper
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java#AbstractJdbcPersonAttributeDao.getRowMapper%28%29>();
162
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#162>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
163
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#163>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
final List
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/List.java#List><R>
results;
164
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#164>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
if (queryBuilder != null) {
165
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#165>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
//Merge the generated SQL with the base query template
166
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#166>
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
final StringBuilder
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/lang/StringBuilder.java#StringBuilder>
partialSqlWhere = queryBuilder.sql;
167
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
final Matcher
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/regex/Matcher.java#Matcher>
queryMatcher = WHERE_PLACEHOLDER
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java#AbstractJdbcPersonAttributeDao.0WHERE_PLACEHOLDER>.matcher
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/regex/Pattern.java#Pattern.matcher%28java.lang.CharSequence%29>(this.queryTemplate
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java#AbstractJdbcPersonAttributeDao.0queryTemplate>);
168
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
final String
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/lang/String.java#String>
querySQL = queryMatcher.replaceAll
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/regex/Matcher.java#Matcher.replaceAll%28java.lang.String%29>(partialSqlWhere.toString
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/lang/StringBuilder.java#StringBuilder.toString%28%29>());
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java/#>
results = this.simpleJdbcTemplate
<http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.service.persondir/person-directory-impl/1.5.1/org/jasig/services/persondir/support/jdbc/AbstractJdbcPersonAttributeDao.java#AbstractJdbcPersonAttributeDao.0simpleJdbcTemplate>.query
<http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-jdbc/2.5.6/org/springframework/jdbc/core/simple/SimpleJdbcTemplate.java#SimpleJdbcTemplate.query%28java.lang.String%2Corg.springframework.jdbc.core.simple.ParameterizedRowMapper%2Cjava.lang.Object%5B%5D%29>(querySQL,
rowMapper, queryBuilder.arguments.toArray
<http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/List.java#List.toArray%28%29>())
Regards Manfredo
2015-08-19 17:45 GMT-03:00 Misagh Moayyed <[email protected]>:
> This “may” be an issue with person directory. Don’t know yet, but your
> other option for now would be to have 2 DAOs and merge the result together
> finally.
>
>
>
> What version of person directory is this by the way? Can you dulicate the
> problem with the latest?
>
>
>
> *From:* Manfredo Hopp [mailto:[email protected]]
> *Sent:* Wednesday, August 19, 2015 11:26 AM
> *To:* [email protected]
> *Subject:* [cas-user] Resolving attirbutes dao results in "no value
> specified for parameter 2"
>
>
>
> Hello I am using singleRowJdbcPersonAttributeDao to resolve principal
> attributes defined as:
>
>
>
> singleRowJdbcPersonAttributeDao
>
>
> class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
>
> <constructor-arg index="0" ref="dataSourceA" />
>
> <constructor-arg index="1"
>
> value="(SELECT a, b, c , d
>
> FROM u WHERE {0}
>
> UNION
>
> (SELECT a, b ,c d
>
> FROM r WHERE {0})" />
>
> <property name="queryAttributeMapping">
>
> <map>
>
> <entry key="username"
> value="id" />
>
> </map>
>
> </property>
>
>
>
> And get SQLException->No value specified for parameter 2
>
>
>
> NO replacement for second {0}, so I am not able to use this query.
>
>
>
> Is there any reason for the behaviour of this implementation?
>
>
>
> Regards Manfredo
>
>
>
> --
>
> You are currently subscribed to [email protected] as:
> [email protected]
>
> To unsubscribe, change settings or access archives, see
> http://www.ja-sig.org/wiki/display/JSG/cas-user
>
> --
> You are currently subscribed to [email protected] as:
> [email protected]
> To unsubscribe, change settings or access archives, see
> http://www.ja-sig.org/wiki/display/JSG/cas-user
>
>
--
You are currently subscribed to [email protected] as:
[email protected]
To unsubscribe, change settings or access archives, see
http://www.ja-sig.org/wiki/display/JSG/cas-user