[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-2143) Hotdeployed components can't be configured through components.xml
by Pete Muir (JIRA)
Hotdeployed components can't be configured through components.xml
-----------------------------------------------------------------
Key: JBSEAM-2143
URL: http://jira.jboss.com/jira/browse/JBSEAM-2143
Project: JBoss Seam
Issue Type: Bug
Components: Core
Affects Versions: 2.0.0.CR2
Reporter: Pete Muir
Priority: Critical
Fix For: 2.0.1.GA
he hot deployment scanner is isolated, using a URLClassloader that is not available once that method comes to a close. The only way to make this work would be to keep that classloader alive during the rest of the startup process. I can direct you to the line of code that you need to look at if you are curious about it.
Check out lines 540 and 541 or org.jboss.seam.init.Initialiation. The scanForHotDeployableComponents uses the following logic to create a component scanner:
URL[] urls = { url };
classLoader = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
paths = new File[] { directory };
Once it processes the classes, that classloader is discarded and obviously, since it is a URLclassloader, the classes aren't going to be found later on.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 8 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-2381) EntityQuery to stop fetching maxResults + 1 rows
by Brian Kalbfus (JIRA)
EntityQuery to stop fetching maxResults + 1 rows
------------------------------------------------
Key: JBSEAM-2381
URL: http://jira.jboss.com/jira/browse/JBSEAM-2381
Project: JBoss Seam
Issue Type: Feature Request
Components: EJB3
Affects Versions: 2.0.1.CR1, 2.0.0.GA
Reporter: Brian Kalbfus
In using a hibernate interceptor to audit instantiating entities, I noticed one extra record in excess of getMaxResults() is instantiated that isn't used - thus rendering a false audit. This was because of the following code in EntityQuery (copied from CVS head):
<code>
protected javax.persistence.Query createQuery()
{
parseEjbql();
evaluateAllParameters();
joinTransaction();
javax.persistence.Query query = getEntityManager().createQuery( getRenderedEjbql() );
setParameters( query, getQueryParameterValues(), 0 );
setParameters( query, getRestrictionParameterValues(), getQueryParameterValues().size() );
if ( getFirstResult()!=null) query.setFirstResult( getFirstResult() );
if ( getMaxResults()!=null) query.setMaxResults( getMaxResults()+1 ); //add one, so we can tell if there is another page
if ( getHints()!=null )
{
for ( Map.Entry<String, String> me: getHints().entrySet() )
{
query.setHint(me.getKey(), me.getValue());
}
}
return query;
}
</code>
Specifically:
if ( getMaxResults()!=null) query.setMaxResults( getMaxResults()+1 ); //add one, so we can tell if there is another page
The code says it is adding one so that it knows if there is another page. I see its use here:
<code>
public boolean isNextExists()
{
return resultList!=null &&
resultList.size() > getMaxResults();
}
</code>
I propose this for isNextExists():
<code>
public boolean isNextExists()
{
return getResultCount() > (getFirstResult()!=null?getFirstResult():0) + getMaxResults();
}
</code>
Then we can change that line in createQuery() to:
if ( getMaxResults()!=null) query.setMaxResults( getMaxResults() );
I did this in my subclass by overriding these two methods for my project; I had to copy in some of the private members of EntityQuery to do this.
Thanks,
Brian Kalbfus
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 8 months