Forums de discussion

Liferay 6 portlet xml file defining resource-action-mapping not being read

Sean Coffey, modifié il y a 13 années.

Liferay 6 portlet xml file defining resource-action-mapping not being read

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
I have been working on this for days now, and can find no other documentation or thread that answers my questions, or helps to get the thing working. Any help would be greatly appreciated!

I have the following xml file in my src/resource-actions folder.

<?xml version="1.0" encoding="UTF-8"?>
<resource-action-mapping>
<portlet-resource>
<portlet-name>roletest</portlet-name>
<supports>
<action-key>CONFIGURATION</action-key>
<action-key>VIEW</action-key>
<action-key>VIEWX</action-key>
<action-key>VIEWY</action-key>
<action-key>VIEWZ</action-key>
<action-key>CHANGEX</action-key>
<action-key>CHANGEY</action-key>
<action-key>CHANGEZ</action-key>
</supports>
<community-defaults>
<action-key>VIEWX</action-key>
<action-key>VIEWY</action-key>
<action-key>VIEWZ</action-key>
<action-key>VIEW</action-key>
</community-defaults>
<guest-defaults>
<action-key>VIEW</action-key>
</guest-defaults>
<guest-unsupported>
<action-key>CONFIGURATION</action-key>
</guest-unsupported>
</portlet-resource>
</resource-action-mapping>

However, when I run the code that checks the action-key VIEWZ, I get an exception:

PortletPermissionUtil.contains(permissionChecker, "roletest", "VIEWZ");

2:04:39,328 ERROR [AdvancedPermissionChecker:651] com.liferay.portal.NoSuchResourceActionException: roletest#VIEWZ
com.liferay.portal.NoSuchResourceActionException: roletest#VIEWZ
at com.liferay.portal.security.permission.ResourceActionsUtil.checkAction(ResourceActionsUtil.java:94)
at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasGuestPermission(AdvancedPermissionChecker.java:584)
at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermissionImpl(AdvancedPermissionChecker.java:638)
at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermission(AdvancedPermissionChecker.java:353)
at com.liferay.portal.service.permission.PortletPermissionImpl.contains(PortletPermissionImpl.java:168)
at com.liferay.portal.service.permission.PortletPermissionImpl.contains(PortletPermissionImpl.java:109)
at com.liferay.portal.service.permission.PortletPermissionImpl.contains(PortletPermissionImpl.java:177)
at com.liferay.portal.service.permission.PortletPermissionUtil.contains(PortletPermissionUtil.java:58)
at com.k12.roletest.RoleTestPortlet.retrieveValue(RoleTestPortlet.java:42)
at com.k12.roletest.RoleTestPortlet.setupValues(RoleTestPortlet.java:64)
at com.k12.roletest.RoleTestPortlet.doView(RoleTestPortlet.java:84)
at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:101)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:638)
at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:723)
at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:425)
at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(Unknown Source)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:3723)
at com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:1180)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:160)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:94)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:256)
at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:181)
at org.apache.jsp.html.portal.layout.view.portlet_jsp._jspService(Unknown Source)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at com.liferay.portal.action.LayoutAction.includeLayoutContent(LayoutAction.java:361)
at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:618)
at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:229)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:152)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:508)
at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:485)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:309)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.themepreview.ThemePreviewFilter.processFilter(ThemePreviewFilter.java:88)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:137)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:182)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:254)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:261)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.themepreview.ThemePreviewFilter.processFilter(ThemePreviewFilter.java:88)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:126)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:182)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:221)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.etag.ETagFilter.processFilter(ETagFilter.java:45)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:254)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:81)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:179)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:239)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.threadlocal.ThreadLocalFilter.processFilter(ThreadLocalFilter.java:35)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:465)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:680)
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
BTW the way I call the contains method is like this:

ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();
boolean contains = PortletPermissionUtil.contains(permissionChecker, "roletest", "VIEWZ")

Thanks to anyone who can help me figure out why this very simple test is not working.
Remember too that I am using Liferay 6.
thumbnail
Thiago Leão Moreira, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

Liferay Legend Publications: 1449 Date d'inscription: 10/10/07 Publications récentes
Hi Sean,

You are missing the tag <permissions>. This is a common problem due the lack of DTD.


  <resource-action-mapping>
	<portlet-resource>
		<portlet-name>my-portlet-name</portlet-name>
		<permissions>
			<supports>
				<action-key>ACCESS_IN_CONTROL_PANEL</action-key>
				<action-key>CONFIGURATION</action-key>
				<action-key>VIEW</action-key>
			</supports>
			<community-defaults />
			<guest-defaults />
			<guest-unsupported>
				<action-key>ACCESS_IN_CONTROL_PANEL</action-key>
				<action-key>CONFIGURATION</action-key>
				<action-key>VIEW</action-key>
			</guest-unsupported>
		</permissions>
	</portlet-resource>
...
</resource-action-mapping>


http://issues.liferay.com/browse/LPS-12970

Hope this helps
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
Thiago Leão Moreira:
Hi Sean,

You are missing the tag <permissions>. This is a common problem due the lack of DTD.
...

Hope this helps


Thanks! However, this did not solve the problem. I am guessing that the entry in the "default.xml" file is what I am missing, but I have no idea where to find the correct "default.xml" file to enter my file into. I also tried naming the file "default.xml" to no avail.

Any help would be wonderful, as the decision to not even use liferay do to difficulty in configuration is about to be made. That would be a shame.
thumbnail
Thiago Leão Moreira, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

Liferay Legend Publications: 1449 Date d'inscription: 10/10/07 Publications récentes
Ok, do you have a portlet.properties file with the following configuration set? The file must be available at in your portlet's classpath (WEB-INF/classes).



##
## Resource Actions
##

    #
    # Input a list of comma delimited resource action configurations that will
    # be read from the class path.
    #
    resource.actions.configs=resource-actions/default.xml

Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
I have that file exactly, here is what I have done.

classes (or src)
- com.mycompany.roletest
- - RoleTestPortlet.class
- resource-actions
- - default.xml
- portlet.properties

% cat portlet.properties
resource.actions.configs=resource-actions/default.xml

%cat resource-actions/default.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
<resource-action-mapping>
<resource file="resource-actions/roletest.xml" />
</resource-action-mapping>
-->

<resource-action-mapping>

<portlet-resource>
<portlet-name>roletest</portlet-name>
<permissions>
<supports>
<action-key>CONFIGURATION</action-key>
<action-key>VIEW</action-key>

<action-key>VIEWX</action-key>
<action-key>VIEWY</action-key>
<action-key>VIEWZ</action-key>

<action-key>CHANGEX</action-key>
<action-key>CHANGEY</action-key>
<action-key>CHANGEZ</action-key>
</supports>

<community-defaults>

<action-key>VIEWX</action-key>
<action-key>VIEWY</action-key>
<action-key>VIEWZ</action-key>

<action-key>VIEW</action-key>
</community-defaults>

<guest-defaults>
<action-key>VIEW</action-key>

</guest-defaults>

<guest-unsupported>
<action-key>CONFIGURATION</action-key>
</guest-unsupported>
</permissions>
</portlet-resource>

% cat com/mycompany/roletest/RoleTestPoertlet.xml
package com.mycompany.roletest;

import java.io.IOException;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.PortletURL;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.security.permission.PermissionChecker;
import com.liferay.portal.service.permission.PortletPermissionUtil;
import com.liferay.portal.theme.ThemeDisplay;


public class RoleTestPortlet extends GenericPortlet
{
protected String editJSP;
protected String viewJSP;
private static Log _log = LogFactoryUtil.getLog(RoleTestPortlet.class);

public void init()
throws PortletException
{
editJSP = getInitParameter("edit-jsp");
viewJSP = getInitParameter("view-jsp");
}


private String retrieveValue(PortletPreferences prefs, PermissionChecker permissionChecker, String key, String permission)
{
try
{
if(! PortletPermissionUtil.contains(permissionChecker, "roletest", permission))
{
return "NOT VIEWABLE";
}
}
catch (Exception e)
{
return "EXCEPTION";
}

return (String)prefs.getValue(key, "undefined");
}

private void setupValues(PortletPreferences prefs, RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException
{
ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

String username = (String)prefs.getValue("name", "no");
String varX = retrieveValue(prefs, permissionChecker, "varX", "VIEWX");
String varY = retrieveValue(prefs, permissionChecker, "varY", "VIEWY");
String varZ = retrieveValue(prefs, permissionChecker, "varZ", "VIEWZ");

if (username.equalsIgnoreCase("no"))
{
username="";
}

renderRequest.setAttribute("userName", username);

renderRequest.setAttribute("varX", varX);
renderRequest.setAttribute("varY", varY);
renderRequest.setAttribute("varZ", varZ);

}

public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException
{
PortletPreferences prefs = renderRequest.getPreferences();

setupValues( prefs, renderRequest, renderResponse);

include(viewJSP, renderRequest, renderResponse);
}

public void doEdit(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException
{
PortletPreferences prefs = renderRequest.getPreferences();

setupValues( prefs, renderRequest, renderResponse);

renderResponse.setContentType("text/html");
PortletURL addName = renderResponse.createActionURL();
addName.setParameter("addName", "addName");
renderRequest.setAttribute("addNameUrl", addName.toString());

include(editJSP, renderRequest, renderResponse);
}

public void processAction( ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException
{
String addName = actionRequest.getParameter("addName");

if (addName != null)
{
PortletPreferences prefs = actionRequest.getPreferences();

prefs.setValue( "name", actionRequest.getParameter("username"));
prefs.setValue( "varX", actionRequest.getParameter("varX"));
prefs.setValue( "varY", actionRequest.getParameter("varY"));
prefs.setValue( "varZ", actionRequest.getParameter("varZ"));

prefs.store();
actionResponse.setPortletMode(PortletMode.VIEW);
}
}

protected void include( String path, RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException
{
PortletRequestDispatcher portletRequestDispatcher = getPortletContext().getRequestDispatcher(path);

if (portletRequestDispatcher == null)
{
_log.error(path + " is not a valid include");
}
else
{
portletRequestDispatcher.include(renderRequest, renderResponse);
}
}
}
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
Hmm, hay, the VIEWX etc. are showing up in the configuration tool now...so it must be my code emoticon

Ok I named the portlet roletest...isn't that the portletId?
If not how do I get the portletId?
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
Solution...of sorts:


public class PermissionState
{
  String portletID;
  PermissionChecker permissionChecker;
		
  public PermissionState(RenderRequest renderRequest)
  {
    ThemeDisplay themeDisplay = 
      (ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
    PortletDisplay portletDisplay= themeDisplay.getPortletDisplay();
    portletID = portletDisplay.getId();
    permissionChecker = themeDisplay.getPermissionChecker();
  }
		
  public boolean hasPermission(String permission) 
    throws PortalException, SystemException
  {
    return PortletPermissionUtil.contains(permissionChecker, portletID, permission);
  }
}


Basically the portletID is per instance not per portlet. You get the portletID from the portletDisplay, which you get from the themeDisplay, which you get from the renderReqest.

The issue I have now is that I can't create a role, give it a permission (like VIEWX) put a user in the role, (through the liferay gui) and then have that user able to "view" the varX field. The administrator can though, and that seems to fit with the xml file, but the benefit is to be able to configure this stuff through the control panel.

That doesn't seem to work.
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
anyone have any ideas? is there some property that has to be set so that the settings in the control panel carry over for the users when the portlet runs?
thumbnail
Thiago Leão Moreira, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

Liferay Legend Publications: 1449 Date d'inscription: 10/10/07 Publications récentes
Hi Sean,

The default.xml file is just a default set of permissions for you portlet and resources. You can add more permissions using Control Panel. Would you mind to reformulate your question?
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
Thiago Leão Moreira:
Hi Sean,

The default.xml file is just a default set of permissions for you portlet and resources. You can add more permissions using Control Panel. Would you mind to reformulate your question?


Yea, it's just like I said, I was using the Control Pannel ( " Liferay GUI" )

The issue I have now is that I can't create a role, give it a permission (like VIEWX) put a user in the role, (through the liferay gui) and then have that user able to "view" the varX field. The administrator can though, and that seems to fit with the xml file, but the benefit is to be able to configure this stuff through the control panel.


So THROUGH THE CONTROL PANNEL I create

User: testx,
Role: TestHasX

I assign the VIEWX permission (Defined in the XML file) to Role TestHasX
I assign the User testx to the Role TestHasX.

put when sign in as the user testx and ask if it has permission VIEWX it does not.

I can ask if it has the role like this:


System.out.println("using RoleServiceUtil:");
List<role> roles = RoleServiceUtil.getUserRoles(userId);
boolean hasRoleServiceUtil = false;

System.out.println("Roles:");
for(Role role : roles)
{  
  long roleId = role.getPrimaryKey();
  String name = role.getName();
  System.out.print("\n" + name);

  if( name.equals(roleForPermission))
  {
    hasRoleServiceUtil = true;
    System.out.println(" = " + roleForPermission);
  }
  else
  {
    System.out.println(" != " + roleForPermission);
  }
					
}
</role>


But this is rather useless as it requires one to first create the Role through the Control Panel and then write code to look specifically for that role.
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
Any Ideas? We are only a few hours away from ditching Liferay compleatly. It would be nice to have a working example so we don't abandon all the benefits Liferay has to offer.
Sean Coffey, modifié il y a 13 années.

RE: Liferay 6 portlet xml file defining resource-action-mapping not being r

New Member Publications: 12 Date d'inscription: 28/03/11 Publications récentes
Well, after even trying to use the API to pull the correct data out (get a user, get it's roles, get it's groups and their roles etc.) Still no luck. Something is terribly broken in Liferay.

Moving on to a different solution.