gt: 			boolean preResult = pre.copyProperties(contentlet, properties);
context: /**
   *
   */
  package com.dotmarketing.portlets.contentlet.business;
  
  import java.io.File;
  import java.io.Serializable;
  import java.util.*;
  
  import com.dotcms.content.business.DotMappingException;
  import com.dotcms.content.elasticsearch.business.ESSearchResults;
  import com.dotcms.repackage.org.elasticsearch.action.search.SearchResponse;
  import com.dotmarketing.beans.Host;
  import com.dotmarketing.beans.Identifier;
  import com.dotmarketing.beans.Permission;
  import com.dotmarketing.business.APILocator;
  import com.dotmarketing.business.DotStateException;
  import com.dotmarketing.business.Interceptor;
  import com.dotmarketing.business.Role;
  import com.dotmarketing.business.query.GenericQueryFactory.Query;
  import com.dotmarketing.business.query.ValidationException;
  import com.dotmarketing.common.model.ContentletSearch;
  import com.dotmarketing.exception.DotDataException;
  import com.dotmarketing.exception.DotRuntimeException;
  import com.dotmarketing.exception.DotSecurityException;
  import com.dotmarketing.portlets.categories.model.Category;
  import com.dotmarketing.portlets.contentlet.model.Contentlet;
  import com.dotmarketing.portlets.folders.model.Folder;
  import com.dotmarketing.portlets.links.model.Link;
  import com.dotmarketing.portlets.structure.model.ContentletRelationships;
  import com.dotmarketing.portlets.structure.model.ContentletRelationships.ContentletRelationshipRecords;
  import com.dotmarketing.portlets.structure.model.Field;
  import com.dotmarketing.portlets.structure.model.Relationship;
  import com.dotmarketing.portlets.structure.model.Structure;
  import com.dotmarketing.util.Logger;
  import com.liferay.portal.model.User;
  
  /**
   * @author Jason Tesser
   * @since 1.6.5c
   *
   */
  public class ContentletAPIInterceptor implements ContentletAPI, Interceptor {
  
  	private List<ContentletAPIPreHook> preHooks = new ArrayList<ContentletAPIPreHook>();
  	private List<ContentletAPIPostHook> postHooks = new ArrayList<ContentletAPIPostHook>();
  	private ContentletAPI conAPI;
  
  	public ContentletAPIInterceptor() {
  		conAPI = APILocator.getContentletAPIImpl();
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#addFileToContentlet(com.dotmarketing.portlets.contentlet.model.Contentlet, java.lang.String, java.lang.String, com.liferay.portal.model.User, boolean)
  	 */
  	public void addFileToContentlet(Contentlet contentlet, String fileInode, String relationName, User user, boolean respectFrontendRoles)	throws DotSecurityException, DotDataException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.addFileToContentlet(contentlet, fileInode, relationName, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		conAPI.addFileToContentlet(contentlet, fileInode, relationName, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.addFileToContentlet(contentlet, fileInode, relationName, user, respectFrontendRoles);
  		}
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#addImageToContentlet(com.dotmarketing.portlets.contentlet.model.Contentlet,java.lang.String, java.lang.String, com.liferay.portal.model.User, boolean)
  	 */
  	public void addImageToContentlet(Contentlet contentlet, String imageInode, String relationName, User user, boolean respectFrontendRoles)	throws DotSecurityException, DotDataException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.addImageToContentlet(contentlet, imageInode, relationName, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		conAPI.addImageToContentlet(contentlet, imageInode, relationName, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.addImageToContentlet(contentlet, imageInode, relationName, user, respectFrontendRoles);
  		}
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#addLinkToContentlet(com.dotmarketing.portlets.contentlet.model.Contentlet,java.lang.String, java.lang.String, com.liferay.portal.model.User, boolean)
  	 */
  	public void addLinkToContentlet(Contentlet contentlet, String linkInode,String relationName, User user, boolean respectFrontendRoles)	throws DotSecurityException, DotDataException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.addLinkToContentlet(contentlet, linkInode, relationName, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		conAPI.addLinkToContentlet(contentlet, linkInode, relationName, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.addLinkToContentlet(contentlet, linkInode, relationName, user, respectFrontendRoles);
  		}
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#archive(com.dotmarketing.portlets.contentlet.model.Contentlet, com.liferay.portal.model.User, boolean)
  	 */
  	public void archive(Contentlet contentlet, User user, boolean respectFrontendRoles) throws DotDataException, DotSecurityException, DotContentletStateException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.archive(contentlet, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		conAPI.archive(contentlet, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.archive(contentlet, user, respectFrontendRoles);
  		}
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#archive(java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public void archive(List<Contentlet> contentlets, User user,boolean respectFrontendRoles) throws DotDataException,DotSecurityException, DotContentletStateException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.archive(contentlets, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		conAPI.archive(contentlets, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.archive(contentlets, user, respectFrontendRoles);
  		}
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, java.util.Map, java.util.List, java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkin(Contentlet contentlet,Map<Relationship, List<Contentlet>> contentRelationships,List<Category> cats, List<Permission> permissions, User user,	boolean respectFrontendRoles) throws IllegalArgumentException,		DotDataException, DotSecurityException,		DotContentletStateException, DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(contentlet, contentRelationships, cats, permissions, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(contentlet, contentRelationships, cats, permissions, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(contentlet, contentRelationships, cats, permissions, user, respectFrontendRoles, c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, com.dotmarketing.portlets.structure.model.ContentletRelationships, java.util.List, java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkin(Contentlet currentContentlet,	ContentletRelationships relationshipsData, List<Category> cats,	List<Permission> selectedPermissions, User user,	boolean respectFrontendRoles) throws IllegalArgumentException,	DotDataException, DotSecurityException,	DotContentletStateException, DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(currentContentlet, relationshipsData, cats, selectedPermissions, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(currentContentlet, relationshipsData, cats, selectedPermissions, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(currentContentlet, relationshipsData, cats, selectedPermissions, user, respectFrontendRoles, c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, java.util.List, java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkin(Contentlet contentlet, List<Category> cats,List<Permission> permissions, User user,boolean respectFrontendRoles) throws IllegalArgumentException,	DotDataException, DotSecurityException,	DotContentletStateException, DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(contentlet, cats, permissions, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(contentlet, cats, permissions, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(contentlet, cats, permissions, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkin(Contentlet contentlet,List<Permission> permissions, User user,boolean respectFrontendRoles) throws IllegalArgumentException,	DotDataException, DotSecurityException,DotContentletStateException, DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(contentlet, permissions, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(contentlet, permissions, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(contentlet, permissions, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, com.liferay.portal.model.User, boolean, java.util.List)
  	 */
  	public Contentlet checkin(Contentlet contentlet, User user,boolean respectFrontendRoles, List<Category> cats) throws IllegalArgumentException, DotDataException,DotSecurityException, DotContentletStateException,	DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(contentlet, user, respectFrontendRoles, cats);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(contentlet, user, respectFrontendRoles, cats);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(contentlet, user, respectFrontendRoles, cats, c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, java.util.Map, java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkin(Contentlet contentlet, Map<Relationship, List<Contentlet>> contentRelationships,List<Category> cats, User user, boolean respectFrontendRoles)throws IllegalArgumentException, DotDataException,	DotSecurityException, DotContentletStateException,DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(contentlet, contentRelationships, cats, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(contentlet, contentRelationships, cats, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(contentlet, contentRelationships, cats, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkin(Contentlet contentlet, User user,	boolean respectFrontendRoles) throws IllegalArgumentException, DotDataException, DotSecurityException,	DotContentletStateException, DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(contentlet, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(contentlet, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(contentlet, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkin(com.dotmarketing.portlets.contentlet.model.Contentlet, java.util.Map, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkin(Contentlet contentlet, Map<Relationship, List<Contentlet>> contentRelationships, User user, boolean respectFrontendRoles)	throws IllegalArgumentException, DotDataException,	DotSecurityException, DotContentletStateException,	DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkin(contentlet, contentRelationships, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkin(contentlet, contentRelationships, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkin(contentlet, contentRelationships, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkinWithoutVersioning(com.dotmarketing.portlets.contentlet.model.Contentlet, java.util.Map, java.util.List, java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkinWithoutVersioning(Contentlet contentlet, Map<Relationship, List<Contentlet>> contentRelationships,	List<Category> cats, List<Permission> permissions, User user,	boolean respectFrontendRoles) throws DotDataException,	DotSecurityException, DotContentletStateException, DotContentletValidationException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkinWithoutVersioning(contentlet, contentRelationships, cats, permissions, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkinWithoutVersioning(contentlet, contentRelationships, cats, permissions, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkinWithoutVersioning(contentlet, contentRelationships, cats, permissions, user, respectFrontendRoles, c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkout(String, com.liferay.portal.model.User, boolean)
  	 */
  	public Contentlet checkout(String contentletInode, User user,	boolean respectFrontendRoles) throws DotDataException,DotSecurityException, DotContentletStateException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkout(contentletInode, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.checkout(contentletInode, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkout(contentletInode, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkout(java.util.List, com.liferay.portal.model.User, boolean)
  	 */
  	public List<Contentlet> checkout(List<Contentlet> contentlets, User user,boolean respectFrontendRoles) throws DotDataException,DotSecurityException, DotContentletStateException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkout(contentlets, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		List<Contentlet> c = conAPI.checkout(contentlets, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkout(contentlets, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkout(java.lang.String, com.liferay.portal.model.User, boolean)
  	 */
  	public List<Contentlet> checkoutWithQuery(String luceneQuery, User user,	boolean respectFrontendRoles) throws DotDataException,DotSecurityException, DotContentletStateException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkoutWithQuery(luceneQuery, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		List<Contentlet> c = conAPI.checkoutWithQuery(luceneQuery, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkout(luceneQuery, user, respectFrontendRoles,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#checkout(java.lang.String, com.liferay.portal.model.User, boolean, int, int)
  	 */
  	public List<Contentlet> checkout(String luceneQuery, User user, boolean respectFrontendRoles, int offset, int limit) throws DotDataException, DotSecurityException,	DotContentletStateException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.checkout(luceneQuery, user, respectFrontendRoles, offset, limit);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		List<Contentlet> c = conAPI.checkout(luceneQuery, user, respectFrontendRoles, offset, limit);
  		for(ContentletAPIPostHook post : postHooks){
  			post.checkout(luceneQuery, user, respectFrontendRoles, offset, limit,c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#cleanField(com.dotmarketing.portlets.structure.model.Structure, com.dotmarketing.portlets.structure.model.Field, com.liferay.portal.model.User, boolean)
  	 */
  	public void cleanField(Structure structure, Field field, User user,	boolean respectFrontendRoles) throws DotSecurityException,	DotDataException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.cleanField(structure, field, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		conAPI.cleanField(structure, field, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.cleanField(structure, field, user, respectFrontendRoles);
  		}
  	}
  
  
  	public void cleanHostField(Structure structure, User user, boolean respectFrontendRoles)
  			throws DotSecurityException, DotDataException, DotMappingException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.cleanHostField(structure, user, respectFrontendRoles);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		conAPI.cleanHostField(structure, user, respectFrontendRoles);
  		for(ContentletAPIPostHook post : postHooks){
  			post.cleanHostField(structure, user, respectFrontendRoles);
  		}
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#convertContentletToFatContentlet(com.dotmarketing.portlets.contentlet.model.Contentlet, com.dotmarketing.portlets.contentlet.business.Contentlet)
  	 */
  	public com.dotmarketing.portlets.contentlet.business.Contentlet convertContentletToFatContentlet(Contentlet cont,com.dotmarketing.portlets.contentlet.business.Contentlet fatty)	throws DotDataException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.convertContentletToFatContentlet(cont, fatty);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		com.dotmarketing.portlets.contentlet.business.Contentlet c = conAPI.convertContentletToFatContentlet(cont, fatty);
  		for(ContentletAPIPostHook post : postHooks){
  			post.convertContentletToFatContentlet(cont, fatty, c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#convertFatContentletToContentlet(com.dotmarketing.portlets.contentlet.business.Contentlet)
  	 */
  	public Contentlet convertFatContentletToContentlet(com.dotmarketing.portlets.contentlet.business.Contentlet fatty) throws DotDataException, DotSecurityException {
  		for(ContentletAPIPreHook pre : preHooks){
  			boolean preResult = pre.convertFatContentletToContentlet(fatty);
  			if(!preResult){
  				Logger.error(this, "The following prehook failed " + pre.getClass().getName());
  				throw new DotRuntimeException("The following prehook failed " + pre.getClass().getName());
  			}
  		}
  		Contentlet c = conAPI.convertFatContentletToContentlet(fatty);
  		for(ContentletAPIPostHook post : postHooks){
  			post.convertFatContentletToContentlet(fatty, c);
  		}
  		return c;
  	}
  
  	/* (non-Javadoc)
  	 * @see com.dotmarketing.portlets.contentlet.business.ContentletAPI#copyProperties(com.dotmarketing.portlets.contentlet.model.Contentlet, java.util.Map)
  	 */
  	public void copyProperties(Contentlet contentlet, Map<String, Object> properties) throws DotContentletStateException, DotSecurityException {
  		for(ContentletAPIPreHook pre : preHooks){
  