/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.security.mapping; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Generic Context used by the Mapping Framework * @author <a href="mailto:Anil.Saldhana@jboss.org">Anil Saldhana</a> * @version $Revision$ * @param <T> * @since Aug 24, 2006 */ public class MappingContext<T> { private List<MappingProvider<T>> modules = new ArrayList<MappingProvider<T>>(); private MappingResult<T> result; public MappingContext(List<MappingProvider<T>> mod) { this.modules = mod; } /** * Get the set of mapping modules * @return */ public List<MappingProvider<T>> getModules() { return this.modules; } /** * Apply mapping semantics on the passed object * @param contextMap Read-only Contextual Map * @param mappedObject an object on which mapping will be applied */ public void performMapping(Map<String,Object> contextMap, T mappedObject) { int len = modules.size(); result = new MappingResult<T>(); for(int i = 0 ; i < len; i++) { MappingProvider<T> mp = (MappingProvider<T>)modules.get(i); mp.setMappingResult(result); mp.performMapping(contextMap, mappedObject); } } /** * * @return Result of previous mapping operation */ public MappingResult<T> getMappingResult() { return result; } /** * Optimization Step to determine if we have configured mapping modules * to avoid unnecessary mapping step * @return true - at least one mapping provider is configured */ public boolean hasModules() { return this.modules.size() > 0; } }