Message Boards

Asset Renderer Error

Arun Pandian, modified 4 Years ago.

Asset Renderer Error

Junior Member Posts: 72 Join Date: 9/26/19 Recent Posts
Hi, Can some one help me i am getting the following error, when my asset renderer and its factory is installed
i am getting this error when assetEntryLocalService.updateEntry is called



com.liferay.asset.categories.internal.validator.CardinalityAssetEntryValidator.isCategorizable(CardinalityAssetEntryValidator.java:96)
    at com.liferay.asset.categories.internal.validator.CardinalityAssetEntryValidator.validate(CardinalityAssetEntryValidator.java:51)
    at com.liferay.portlet.asset.service.impl.AssetEntryLocalServiceImpl.validate(AssetEntryLocalServiceImpl.java:1098)
    at com.liferay.portlet.asset.service.impl.AssetEntryLocalServiceImpl.updateEntry(AssetEntryLocalServiceImpl.java:743)
    at sun.reflect.GeneratedMethodAccessor755.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)
    at com.sun.proxy.$Proxy1862.updateEntry(Unknown Source)
    at com.liferay.asset.kernel.service.AssetEntryLocalServiceWrapper.updateEntry(AssetEntryLocalServiceWrapper.java:980)
    at com.liferay.asset.internal.service.AssetEntryAssetCategoryRelAssetEntryLocalServiceWrapper.updateEntry(AssetEntryAssetCategoryRelAssetEntryLocalServiceWrapper.java:76)
    at sun.reflect.GeneratedMethodAccessor755.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)
    at com.sun.proxy.$Proxy1863.updateEntry(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor755.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.lambda$invoke$0(TransactionInterceptor.java:64)
    at com.liferay.portal.spring.transaction.DefaultTransactionExecutor._execute(DefaultTransactionExecutor.java:128)
    at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:51)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:62)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
    at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)
    at com.sun.proxy.$Proxy144.updateEntry(Unknown Source)
    at com.liferay.portlet.asset.service.impl.AssetEntryLocalServiceImpl.updateEntry(AssetEntryLocalServiceImpl.java:901)
    at sun.reflect.GeneratedMethodAccessor780.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)
    at com.sun.proxy.$Proxy1862.updateEntry(Unknown Source)
    at com.liferay.asset.kernel.service.AssetEntryLocalServiceWrapper.updateEntry(AssetEntryLocalServiceWrapper.java:1006)
    at sun.reflect.GeneratedMethodAccessor780.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)
    at com.sun.proxy.$Proxy1863.updateEntry(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor780.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.lambda$invoke$0(TransactionInterceptor.java:64)
    at com.liferay.portal.spring.transaction.DefaultTransactionExecutor._execute(DefaultTransactionExecutor.java:128)
    at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:51)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:62)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
    at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)
    at com.sun.proxy.$Proxy144.updateEntry(Unknown Source)
    at com.post.entity.service.impl.PostEntityLocalServiceImpl.addPost(PostEntityLocalServiceImpl.java:112)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.lambda$invoke$0(TransactionInterceptor.java:64)
    at com.liferay.portal.spring.transaction.DefaultTransactionExecutor._execute(DefaultTransactionExecutor.java:128)
    at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:51)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:62)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
    at com.liferay.portal.service.ServiceContextAdvice.invoke(ServiceContextAdvice.java:60)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
    at com.liferay.portal.kernel.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:65)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
    at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)
    at com.sun.proxy.$Proxy1979.addPost(Unknown Source)
    at com.post.entity.service.PostEntityLocalServiceUtil.addPost(PostEntityLocalServiceUtil.java:65)
    at com.bm.post.CRUD.portlet.PostCRUDPortlet.addPost(PostCRUDPortlet.java:273)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.liferay.portal.kernel.portlet.LiferayPortlet.callActionMethod(LiferayPortlet.java:189)
    ... 148 more
 

Asset Renderer :
public class PostEntityAssetRenderer extends BaseJSPAssetRenderer<PostEntity> implements TrashRenderer {    private PostEntity postEntity;
    private ResourceBundleLoader resourceBundelLoader;
    public PostEntityAssetRenderer(PostEntity entry) {        postEntity = entry;
    }    @Override
    public PostEntity getAssetObject() {
        // TODO Auto-generated method stub
        return postEntity;
    }    @Override
    public long getGroupId() {
        // TODO Auto-generated method stub
        return postEntity.getGroupId();
    }    @Override
    public long getUserId() {
        // TODO Auto-generated method stub
        return postEntity.getUserId();
    }    @Override
    public String getUserName() {
        // TODO Auto-generated method stub
        return postEntity.getUserName();
    }    @Override
    public String getUuid() {
        // TODO Auto-generated method stub
        return postEntity.getUuid();
    }    @Override
    public String getClassName() {
        // TODO Auto-generated method stub
        return PostEntity.class.getName();
    }    @Override
    public long getClassPK() {
        // TODO Auto-generated method stub
        return postEntity.getPostId();
    }    @Override
    public String getSummary(PortletRequest portletRequest, PortletResponse portletResponse) {
        // TODO Auto-generated method stub
        return postEntity.getContent();
    }    @Override
    public String getTitle(Locale locale) {
        // TODO Auto-generated method stub
        return postEntity.getTitle();
    }    @Override
    public String getJspPath(HttpServletRequest httpServletRequest, String template) {
        if (template.equals(TEMPLATE_ABSTRACT) || template.equals(TEMPLATE_FULL_CONTENT)) {            return "/blogs/asset/" + template + ".jsp";
        } else {
            return null;
        }
    }    @Override
    public boolean include(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
            String template) throws Exception {
        // TODO Auto-generated method stub        httpServletRequest.setAttribute(WebKeys.BLOGS_ENTRY, postEntity);
        return super.include(httpServletRequest, httpServletResponse, template);
    }    @Override
    public String getPortletId() {
        AssetRendererFactory assetRendererFactory = getAssetRendererFactory();        return assetRendererFactory.getPortletId();
    }
    @Override
    public String getType() {
        // TODO Auto-generated method stub
        return PostEntityAssetRendererFactory.TYPE;
    }}

Asset RendererFactory :
@Component(immediate = true, property = {
        "javax.portlet.name=" + PostEntityWebPortletKeys.POSTENTITYWEB }, service = AssetRendererFactory.class)
public class PostEntityAssetRendererFactory extends BaseAssetRendererFactory<PostEntity> {    public static final String CLASS_NAME = PostEntity.class.getName();    public static final String TYPE = "post";    private static final boolean _LINKABLE = true;    private static PostEntityLocalService _postEntityLocalService;    @Override
    public String getIconCssClass() {
        return "blogs";
    }    @Override
    public AssetRenderer<PostEntity> getAssetRenderer(PostEntity entry, int type) throws PortalException {
        // TODO Auto-generated method stub
        PostEntityAssetRenderer postEntityAssetRenderer = new PostEntityAssetRenderer(entry);        postEntityAssetRenderer.setAssetRendererType(type);
        postEntityAssetRenderer.setServletContext(_servletContext);        return postEntityAssetRenderer;
    }    public PostEntityAssetRendererFactory() {
        // TODO Auto-generated constructor stub        setClassName(PostEntity.class.getName());
        setLinkable(true);
        setPortletId(PostEntityWebPortletKeys.POSTENTITYWEemoticon;
        setSearchable(true);
    }    @Override
    public String getClassName() {
        return PostEntity.class.getName();    }    @Override
    public boolean hasAddPermission(PermissionChecker permissionChecker, long groupId, long classTypeId)
            throws Exception {//        return BlogsPermission.contains(permissionChecker, groupId, ActionKeys.ADD_ENTRY);
        return true;
    }    @Override
    public boolean hasPermission(PermissionChecker permissionChecker, long classPK, String actionId) throws Exception {//        return BlogsEntryPermission.contains(permissionChecker, classPK, actionId);
        return true;
    }    @Reference(unbind = "-")
    protected void setPostEntityLocalService(PostEntityLocalService albumLocalService) {
        _postEntityLocalService = albumLocalService;
    }    @Override
    public AssetRenderer<PostEntity> getAssetRenderer(long classPK, int type) throws PortalException {
        // TODO Auto-generated method stub
        return null;
    }    @Override
    public String getType() {
        // TODO Auto-generated method stub
        return TYPE;
    }
    @Reference(target = "(osgi.web.symbolicname=com.post.entity.web)", unbind = "-")
    public void setServletContext(ServletContext servletContext) {
        _servletContext = servletContext;
    }    private ServletContext _servletContext;}
Tom Aerts, modified 4 Years ago.

RE: Asset Renderer Error

New Member Posts: 17 Join Date: 8/25/17 Recent Posts
at com.liferay.asset.kernel.service.AssetEntryLocalServiceWrapper.updateEntry(AssetEntryLocalServiceWrapper.java:980)

This method probably takes a ServiceContext object. You need to provide it with userId & groupid (e.g. ServiceContext s = new ServiceContext; s.setGroupId(group_id))
For some reason some of the validators for updateArticle don't take the properties you provide, but search for them inside the serviceContext.

^This was the issue when I ran into a similar error with .updateArticle() before, so hope it helps in your case as well :-)  
Arun Pandian, modified 4 Years ago.

RE: Asset Renderer Error

Junior Member Posts: 72 Join Date: 9/26/19 Recent Posts
i dont think that will be the error because i dont get the error if i remove the asset Renderer and asset renderer factory.
Arun Pandian, modified 4 Years ago.

RE: Asset Renderer Error

Junior Member Posts: 72 Join Date: 9/26/19 Recent Posts
RESOLVED emoticon

Removed a duplicate method in asset render factory fixed my issue.
 public AssetRenderer<PostEntity> getAssetRenderer(long classPK, int type) throws PortalException {
        // TODO Auto-generated method stub
        return null;
    }