tapestry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Canfield (JIRA)" <j...@apache.org>
Subject [jira] Commented: (TAP5-818) JDK5 Generic is not supported by property chain
Date Mon, 16 Aug 2010 04:00:18 GMT

    [ https://issues.apache.org/jira/browse/TAP5-818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12898788#action_12898788
] 

Josh Canfield commented on TAP5-818:
------------------------------------

"As the type of T is not known until runtime, all Tapestry know is that T is Object."

Actually everything needed to support this case is available when the PropertyConduit is created.
Tapestry is currently evaluating the expression without considering the context provided by
the class which owns the property. 


> JDK5 Generic is not supported by property chain
> -----------------------------------------------
>
>                 Key: TAP5-818
>                 URL: https://issues.apache.org/jira/browse/TAP5-818
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.1.0.5
>         Environment: Tapestry 5.1.0.5
> JDK5
>            Reporter: maxyu
>
> Below is the example
> KeyedObject.java:used to store string keyed object
> import java.util.*;
> import java.util.Map.Entry;
> public class KeyedObject<T> {
> 	private String key;
> 	private T value;
> 	public String getKey() {
> 		return key;
> 	}
> 	public void setKey(String key) {
> 		this.key = key;
> 	}
> 	public T getValue() {
> 		return value;
> 	}
> 	public void setValue(T value) {
> 		this.value = value;
> 	}	
> }
> page java class:dbpools simply put BasicDataSource and its key name into a KeyObject
list
> import java.util.Iterator;
> import java.util.LinkedList;
> import java.util.List;
> import java.util.Map;
> import java.util.Map.Entry;
> import org.apache.commons.dbcp.BasicDataSource;
> import org.apache.tapestry5.annotations.Property;
> import org.apache.tapestry5.ioc.annotations.Inject;
> import com.elite.predictob.EliteOBManagerProxy;
> import com.elite.predictob.KeyedObject;
> public class dbpools {
> 	@Inject
> 	private EliteOBManagerProxy proxy;
> 	
> 	@Property
> 	private KeyedObject<BasicDataSource> datasource;
> 	
> 	public List<KeyedObject<BasicDataSource>> getDatasources()
> 	{
> 		Map dbmap=proxy.getManager().getDataSources();
> 		synchronized (dbmap) {
> 			List<KeyedObject<BasicDataSource>> list=new LinkedList<KeyedObject<BasicDataSource>>();
> 			Iterator<Entry<String,BasicDataSource>> it=dbmap.entrySet().iterator();
> 			while(it.hasNext()){
> 				Entry<String,BasicDataSource> entry=it.next();
> 				KeyedObject<BasicDataSource> obj=new KeyedObject<BasicDataSource>();
> 				obj.setKey(entry.getKey());
> 				obj.setValue(entry.getValue());
> 				list.add(obj);
> 			}
> 			return list;
> 		}
> 	}
> }
> page template:
> <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
>       xmlns:p="tapestry:parameter"
>       xmlns:cl="cl">
>   <head>
>   <t:elite.cachecontrol.cachecontrol/>
>     <title>${message:dbpoolconfig}</title>
>   </head>
>   <body>
>   	<table border="1">
>   		<tr t:type="loop" t:element="tr" t:source="datasources" value="datasource">
>   			<td>${datasource.key}</td><td>${datasource.value.numActive}</td>
>   		</tr>
>   	</table>
>   </body>
> </html>
> ${datasource.value.numActive} will cause following error:
> Could not convert 'datasource.value.numActive' into a component parameter binding: Class
java.lang.Object does not contain a property named 'numActive' (within property expression
'datasource.value.numActive'). Available properties: class.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message