001
014
015 package com.liferay.portal.kernel.security.pacl.permission;
016
017 import com.liferay.portal.kernel.util.StringBundler;
018 import com.liferay.portal.kernel.util.StringPool;
019 import com.liferay.portal.kernel.util.StringUtil;
020 import com.liferay.portal.kernel.util.Validator;
021
022 import java.lang.reflect.Method;
023
024 import java.security.BasicPermission;
025
026
029 public class PortalServicePermission extends BasicPermission {
030
031 public static void checkService(
032 Object object, Method method, Object[] arguments) {
033
034 _pacl.checkService(object, method, arguments);
035 }
036
037 public PortalServicePermission(String name, String methodName) {
038 super(name);
039
040 _methodName = methodName;
041
042 _init();
043 }
044
045 public PortalServicePermission(
046 String name, String servletContextName, String className,
047 String methodName) {
048
049 super(_createLongName(name, servletContextName, className));
050
051 _methodName = methodName;
052
053 _init();
054 }
055
056 @Override
057 public String getActions() {
058 return _methodName;
059 }
060
061 public String getClassName() {
062 return _className;
063 }
064
065 public String getMethodName() {
066 return _methodName;
067 }
068
069 public String getServletContextName() {
070 return _servletContextName;
071 }
072
073 public String getShortName() {
074 return _shortName;
075 }
076
077 public static interface PACL {
078
079 public void checkService(
080 Object object, Method method, Object[] arguments);
081
082 }
083
084 private static String _createLongName(
085 String name, String servletContextName, String className) {
086
087 StringBundler sb = new StringBundler(5);
088
089 sb.append(name);
090 sb.append(StringPool.POUND);
091
092 if (Validator.isNull(servletContextName)) {
093 sb.append("portal");
094 }
095 else {
096 sb.append(servletContextName);
097 }
098
099 sb.append(StringPool.POUND);
100 sb.append(className);
101
102 return sb.toString();
103 }
104
105 private void _init() {
106 String[] nameParts = StringUtil.split(getName(), StringPool.POUND);
107
108 if (nameParts.length != 3) {
109 throw new IllegalArgumentException(
110 "Name " + getName() + " does not follow the format " +
111 "[name]#[servletContextName]#[subject]");
112 }
113
114 _shortName = nameParts[0];
115 _servletContextName = nameParts[1];
116 _className = nameParts[2];
117 }
118
119 private static PACL _pacl = new NoPACL();
120
121 private String _className;
122 private String _methodName;
123 private String _servletContextName;
124 private String _shortName;
125
126 private static class NoPACL implements PACL {
127
128 @Override
129 public void checkService(
130 Object object, Method method, Object[] arguments) {
131 }
132
133 }
134
135 }