|  | {{> header}} | 
|  | {{#if (chip_has_client_clusters)}} | 
|  |  | 
|  | package chip.devicecontroller; | 
|  |  | 
|  | import chip.clusterinfo.CommandParameterInfo; | 
|  | import chip.clusterinfo.InteractionInfo; | 
|  | import java.util.HashMap; | 
|  | import java.util.LinkedHashMap; | 
|  | import java.util.Map; | 
|  |  | 
|  | public class ClusterReadMapping { | 
|  |  | 
|  | public Map<String, Map<String, InteractionInfo>> getReadAttributeMap() { | 
|  | Map<String, Map<String, InteractionInfo>> readAttributeMap = new HashMap<>(); | 
|  | {{#chip_client_clusters}} | 
|  | Map<String, InteractionInfo> read{{asUpperCamelCase name}}InteractionInfo = new LinkedHashMap<>(); | 
|  | {{#chip_server_cluster_attributes}} | 
|  | {{! TODO: Add support for struct-typed attributes }} | 
|  | {{#unless (isStrEqual chipCallback.name "Unsupported")}} | 
|  | Map<String, CommandParameterInfo> read{{asUpperCamelCase ../name}}{{asUpperCamelCase name}}CommandParams = new LinkedHashMap<String, CommandParameterInfo>(); | 
|  | InteractionInfo read{{asUpperCamelCase ../name}}{{asUpperCamelCase name}}AttributeInteractionInfo = new InteractionInfo( | 
|  | (cluster, callback, commandArguments) -> { | 
|  | ((ChipClusters.{{asUpperCamelCase ../name}}Cluster) cluster).read{{asUpperCamelCase name}}Attribute( | 
|  | ({{#if_basic_global_response}} | 
|  | ChipClusters.{{convertAttributeCallbackTypeToJavaName chipCallback.type}}AttributeCallback | 
|  | {{else}} | 
|  | ChipClusters.{{asUpperCamelCase ../name}}Cluster.{{asUpperCamelCase name}}AttributeCallback | 
|  | {{/if_basic_global_response}}) callback | 
|  | ); | 
|  | }, | 
|  | {{#if isArray}} | 
|  | () -> new ClusterInfoMapping.Delegated{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}AttributeCallback(), | 
|  | {{else}} | 
|  | () -> new ClusterInfoMapping.Delegated{{convertAttributeCallbackTypeToJavaName chipCallback.type}}AttributeCallback(), | 
|  | {{/if}} | 
|  | read{{asUpperCamelCase ../name}}{{asUpperCamelCase name}}CommandParams | 
|  | ); | 
|  | read{{asUpperCamelCase ../name}}InteractionInfo.put("read{{asUpperCamelCase name}}Attribute", read{{asUpperCamelCase ../name}}{{asUpperCamelCase name}}AttributeInteractionInfo); | 
|  | {{/unless}} | 
|  | {{/chip_server_cluster_attributes}} | 
|  | readAttributeMap.put("{{asLowerCamelCase name}}", read{{asUpperCamelCase name}}InteractionInfo); | 
|  | {{/chip_client_clusters}} | 
|  | return readAttributeMap; | 
|  | } | 
|  | } | 
|  |  | 
|  | {{/if}} |