001 /** 002 * Copyright (c) 2000-2011 Liferay, Inc. All rights reserved. 003 * 004 * The contents of this file are subject to the terms of the Liferay Enterprise 005 * Subscription License ("License"). You may not use this file except in 006 * compliance with the License. You can obtain a copy of the License by 007 * contacting Liferay, Inc. See the License for the specific language governing 008 * permissions and limitations under the License, including but not limited to 009 * distribution rights of the Software. 010 * 011 * 012 * 013 */ 014 015 package com.liferay.portal.service; 016 017 import com.liferay.portal.kernel.exception.PortalException; 018 import com.liferay.portal.kernel.exception.SystemException; 019 import com.liferay.portal.kernel.transaction.Isolation; 020 import com.liferay.portal.kernel.transaction.Propagation; 021 import com.liferay.portal.kernel.transaction.Transactional; 022 023 /** 024 * The interface for the resource permission local service. 025 * 026 * <p> 027 * This is a local service. Methods of this service will not have security checks based on the propagated JAAS credentials because this service can only be accessed from within the same VM. 028 * </p> 029 * 030 * @author Brian Wing Shun Chan 031 * @see ResourcePermissionLocalServiceUtil 032 * @see com.liferay.portal.service.base.ResourcePermissionLocalServiceBaseImpl 033 * @see com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl 034 * @generated 035 */ 036 @Transactional(isolation = Isolation.PORTAL, rollbackFor = { 037 PortalException.class, SystemException.class}) 038 public interface ResourcePermissionLocalService 039 extends PersistedModelLocalService { 040 /* 041 * NOTE FOR DEVELOPERS: 042 * 043 * Never modify or reference this interface directly. Always use {@link ResourcePermissionLocalServiceUtil} to access the resource permission local service. Add custom service methods to {@link com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl} and rerun ServiceBuilder to automatically copy the method declarations to this interface. 044 */ 045 046 /** 047 * Adds the resource permission to the database. Also notifies the appropriate model listeners. 048 * 049 * @param resourcePermission the resource permission 050 * @return the resource permission that was added 051 * @throws SystemException if a system exception occurred 052 */ 053 public com.liferay.portal.model.ResourcePermission addResourcePermission( 054 com.liferay.portal.model.ResourcePermission resourcePermission) 055 throws com.liferay.portal.kernel.exception.SystemException; 056 057 /** 058 * Creates a new resource permission with the primary key. Does not add the resource permission to the database. 059 * 060 * @param resourcePermissionId the primary key for the new resource permission 061 * @return the new resource permission 062 */ 063 public com.liferay.portal.model.ResourcePermission createResourcePermission( 064 long resourcePermissionId); 065 066 /** 067 * Deletes the resource permission with the primary key from the database. Also notifies the appropriate model listeners. 068 * 069 * @param resourcePermissionId the primary key of the resource permission 070 * @throws PortalException if a resource permission with the primary key could not be found 071 * @throws SystemException if a system exception occurred 072 */ 073 public void deleteResourcePermission(long resourcePermissionId) 074 throws com.liferay.portal.kernel.exception.PortalException, 075 com.liferay.portal.kernel.exception.SystemException; 076 077 /** 078 * Deletes the resource permission from the database. Also notifies the appropriate model listeners. 079 * 080 * @param resourcePermission the resource permission 081 * @throws SystemException if a system exception occurred 082 */ 083 public void deleteResourcePermission( 084 com.liferay.portal.model.ResourcePermission resourcePermission) 085 throws com.liferay.portal.kernel.exception.SystemException; 086 087 /** 088 * Performs a dynamic query on the database and returns the matching rows. 089 * 090 * @param dynamicQuery the dynamic query 091 * @return the matching rows 092 * @throws SystemException if a system exception occurred 093 */ 094 @SuppressWarnings("rawtypes") 095 public java.util.List dynamicQuery( 096 com.liferay.portal.kernel.dao.orm.DynamicQuery dynamicQuery) 097 throws com.liferay.portal.kernel.exception.SystemException; 098 099 /** 100 * Performs a dynamic query on the database and returns a range of the matching rows. 101 * 102 * <p> 103 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. 104 * </p> 105 * 106 * @param dynamicQuery the dynamic query 107 * @param start the lower bound of the range of model instances 108 * @param end the upper bound of the range of model instances (not inclusive) 109 * @return the range of matching rows 110 * @throws SystemException if a system exception occurred 111 */ 112 @SuppressWarnings("rawtypes") 113 public java.util.List dynamicQuery( 114 com.liferay.portal.kernel.dao.orm.DynamicQuery dynamicQuery, int start, 115 int end) throws com.liferay.portal.kernel.exception.SystemException; 116 117 /** 118 * Performs a dynamic query on the database and returns an ordered range of the matching rows. 119 * 120 * <p> 121 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. 122 * </p> 123 * 124 * @param dynamicQuery the dynamic query 125 * @param start the lower bound of the range of model instances 126 * @param end the upper bound of the range of model instances (not inclusive) 127 * @param orderByComparator the comparator to order the results by (optionally <code>null</code>) 128 * @return the ordered range of matching rows 129 * @throws SystemException if a system exception occurred 130 */ 131 @SuppressWarnings("rawtypes") 132 public java.util.List dynamicQuery( 133 com.liferay.portal.kernel.dao.orm.DynamicQuery dynamicQuery, int start, 134 int end, 135 com.liferay.portal.kernel.util.OrderByComparator orderByComparator) 136 throws com.liferay.portal.kernel.exception.SystemException; 137 138 /** 139 * Returns the number of rows that match the dynamic query. 140 * 141 * @param dynamicQuery the dynamic query 142 * @return the number of rows that match the dynamic query 143 * @throws SystemException if a system exception occurred 144 */ 145 public long dynamicQueryCount( 146 com.liferay.portal.kernel.dao.orm.DynamicQuery dynamicQuery) 147 throws com.liferay.portal.kernel.exception.SystemException; 148 149 /** 150 * Returns the resource permission with the primary key. 151 * 152 * @param resourcePermissionId the primary key of the resource permission 153 * @return the resource permission 154 * @throws PortalException if a resource permission with the primary key could not be found 155 * @throws SystemException if a system exception occurred 156 */ 157 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 158 public com.liferay.portal.model.ResourcePermission getResourcePermission( 159 long resourcePermissionId) 160 throws com.liferay.portal.kernel.exception.PortalException, 161 com.liferay.portal.kernel.exception.SystemException; 162 163 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 164 public com.liferay.portal.model.PersistedModel getPersistedModel( 165 java.io.Serializable primaryKeyObj) 166 throws com.liferay.portal.kernel.exception.PortalException, 167 com.liferay.portal.kernel.exception.SystemException; 168 169 /** 170 * Returns a range of all the resource permissions. 171 * 172 * <p> 173 * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. 174 * </p> 175 * 176 * @param start the lower bound of the range of resource permissions 177 * @param end the upper bound of the range of resource permissions (not inclusive) 178 * @return the range of resource permissions 179 * @throws SystemException if a system exception occurred 180 */ 181 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 182 public java.util.List<com.liferay.portal.model.ResourcePermission> getResourcePermissions( 183 int start, int end) 184 throws com.liferay.portal.kernel.exception.SystemException; 185 186 /** 187 * Returns the number of resource permissions. 188 * 189 * @return the number of resource permissions 190 * @throws SystemException if a system exception occurred 191 */ 192 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 193 public int getResourcePermissionsCount() 194 throws com.liferay.portal.kernel.exception.SystemException; 195 196 /** 197 * Updates the resource permission in the database or adds it if it does not yet exist. Also notifies the appropriate model listeners. 198 * 199 * @param resourcePermission the resource permission 200 * @return the resource permission that was updated 201 * @throws SystemException if a system exception occurred 202 */ 203 public com.liferay.portal.model.ResourcePermission updateResourcePermission( 204 com.liferay.portal.model.ResourcePermission resourcePermission) 205 throws com.liferay.portal.kernel.exception.SystemException; 206 207 /** 208 * Updates the resource permission in the database or adds it if it does not yet exist. Also notifies the appropriate model listeners. 209 * 210 * @param resourcePermission the resource permission 211 * @param merge whether to merge the resource permission with the current session. See {@link com.liferay.portal.service.persistence.BatchSession#update(com.liferay.portal.kernel.dao.orm.Session, com.liferay.portal.model.BaseModel, boolean)} for an explanation. 212 * @return the resource permission that was updated 213 * @throws SystemException if a system exception occurred 214 */ 215 public com.liferay.portal.model.ResourcePermission updateResourcePermission( 216 com.liferay.portal.model.ResourcePermission resourcePermission, 217 boolean merge) 218 throws com.liferay.portal.kernel.exception.SystemException; 219 220 /** 221 * Returns the Spring bean ID for this bean. 222 * 223 * @return the Spring bean ID for this bean 224 */ 225 public java.lang.String getBeanIdentifier(); 226 227 /** 228 * Sets the Spring bean ID for this bean. 229 * 230 * @param beanIdentifier the Spring bean ID for this bean 231 */ 232 public void setBeanIdentifier(java.lang.String beanIdentifier); 233 234 /** 235 * Grants the role permission at the scope to perform the action on 236 * resources of the type. Existing actions are retained. 237 * 238 * <p> 239 * This method cannot be used to grant individual scope permissions, but is 240 * only intended for adding permissions at the company, group, and 241 * group-template scopes. For example, this method could be used to grant a 242 * company scope permission to edit message board posts. 243 * </p> 244 * 245 * <p> 246 * If a company scope permission is granted to resources that the role 247 * already had group scope permissions to, the group scope permissions are 248 * deleted. Likewise, if a group scope permission is granted to resources 249 * that the role already had company scope permissions to, the company scope 250 * permissions are deleted. Be aware that this latter behavior can result in 251 * an overall reduction in permissions for the role. 252 * </p> 253 * 254 * <p> 255 * Depending on the scope, the value of <code>primKey</code> will have 256 * different meanings. For more information, see {@link 257 * com.liferay.portal.model.impl.ResourcePermissionImpl}. 258 * </p> 259 * 260 * @param companyId the primary key of the company 261 * @param name the resource's name, which can be either a class name or a 262 portlet ID 263 * @param scope the scope. This method only supports company, group, and 264 group-template scope. 265 * @param primKey the primary key 266 * @param roleId the primary key of the role 267 * @param actionId the action ID 268 * @throws PortalException if scope was set to individual scope or if a role 269 with the primary key or a resource action with the name and 270 action ID could not be found 271 * @throws SystemException if a system exception occurred 272 */ 273 public void addResourcePermission(long companyId, java.lang.String name, 274 int scope, java.lang.String primKey, long roleId, 275 java.lang.String actionId) 276 throws com.liferay.portal.kernel.exception.PortalException, 277 com.liferay.portal.kernel.exception.SystemException; 278 279 /** 280 * Grants the role permissions at the scope to perform the actions on all 281 * resources of the type. Existing actions are retained. 282 * 283 * <p> 284 * This method should only be used to add default permissions to existing 285 * resources en masse during upgrades or while verifying permissions. For 286 * example, this method could be used to grant site members individual scope 287 * permissions to view all blog posts. 288 * </p> 289 * 290 * @param resourceName the resource's name, which can be either a class 291 name or a portlet ID 292 * @param roleName the role's name 293 * @param scope the scope 294 * @param resourceActionBitwiseValue the bitwise IDs of the actions 295 * @throws SystemException if a system exception occurred 296 */ 297 public void addResourcePermissions(java.lang.String resourceName, 298 java.lang.String roleName, int scope, long resourceActionBitwiseValue) 299 throws com.liferay.portal.kernel.exception.SystemException; 300 301 /** 302 * Deletes all resource permissions at the scope to resources of the type. 303 * This method should not be confused with any of the 304 * <code>removeResourcePermission</code> methods, as its purpose is very 305 * different. This method should only be used for deleting resource 306 * permissions that refer to a resource when that resource is deleted. For 307 * example this method could be used to delete all individual scope 308 * permissions to a blog post when it is deleted. 309 * 310 * <p> 311 * Depending on the scope, the value of <code>primKey</code> will have 312 * different meanings. For more information, see {@link 313 * com.liferay.portal.model.impl.ResourcePermissionImpl}. 314 * </p> 315 * 316 * @param companyId the primary key of the company 317 * @param name the resource's name, which can be either a class name or a 318 portlet ID 319 * @param scope the scope 320 * @param primKey the primary key 321 * @throws PortalException if a portal exception occurred 322 * @throws SystemException if a system exception occurred 323 */ 324 public void deleteResourcePermissions(long companyId, 325 java.lang.String name, int scope, long primKey) 326 throws com.liferay.portal.kernel.exception.PortalException, 327 com.liferay.portal.kernel.exception.SystemException; 328 329 /** 330 * Deletes all resource permissions at the scope to resources of the type. 331 * This method should not be confused with any of the 332 * <code>removeResourcePermission</code> methods, as its purpose is very 333 * different. This method should only be used for deleting resource 334 * permissions that refer to a resource when that resource is deleted. For 335 * example this method could be used to delete all individual scope 336 * permissions to a blog post when it is deleted. 337 * 338 * <p> 339 * Depending on the scope, the value of <code>primKey</code> will have 340 * different meanings. For more information, see {@link 341 * com.liferay.portal.model.impl.ResourcePermissionImpl}. 342 * </p> 343 * 344 * @param companyId the primary key of the company 345 * @param name the resource's name, which can be either a class name or a 346 portlet ID 347 * @param scope the scope 348 * @param primKey the primary key 349 * @throws PortalException if a portal exception occurred 350 * @throws SystemException if a system exception occurred 351 */ 352 public void deleteResourcePermissions(long companyId, 353 java.lang.String name, int scope, java.lang.String primKey) 354 throws com.liferay.portal.kernel.exception.PortalException, 355 com.liferay.portal.kernel.exception.SystemException; 356 357 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 358 public java.util.List<java.lang.String> getAvailableResourcePermissionActionIds( 359 long companyId, java.lang.String name, int scope, 360 java.lang.String primKey, long roleId, 361 java.util.List<java.lang.String> actionIds) 362 throws com.liferay.portal.kernel.exception.PortalException, 363 com.liferay.portal.kernel.exception.SystemException; 364 365 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 366 public com.liferay.portal.model.ResourcePermission getResourcePermission( 367 long companyId, java.lang.String name, int scope, 368 java.lang.String primKey, long roleId) 369 throws com.liferay.portal.kernel.exception.PortalException, 370 com.liferay.portal.kernel.exception.SystemException; 371 372 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 373 public java.util.List<com.liferay.portal.model.ResourcePermission> getResourcePermissions( 374 long companyId, java.lang.String name, int scope, 375 java.lang.String primKey) 376 throws com.liferay.portal.kernel.exception.SystemException; 377 378 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 379 public int getResourcePermissionsCount(long companyId, 380 java.lang.String name, int scope, java.lang.String primKey) 381 throws com.liferay.portal.kernel.exception.SystemException; 382 383 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 384 public java.util.List<com.liferay.portal.model.ResourcePermission> getRoleResourcePermissions( 385 long roleId) throws com.liferay.portal.kernel.exception.SystemException; 386 387 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 388 public java.util.List<com.liferay.portal.model.ResourcePermission> getRoleResourcePermissions( 389 long roleId, int[] scopes, int start, int end) 390 throws com.liferay.portal.kernel.exception.SystemException; 391 392 /** 393 * Returns <code>true</code> if the resource permission grants permission to 394 * perform the resource action. Note that this method does not ensure that 395 * the resource permission refers to the same type of resource as the 396 * resource action. 397 * 398 * @param resourcePermission the resource permission 399 * @param resourceAction the resource action 400 * @return <code>true</code> if the resource permission grants permission to 401 perform the resource action 402 */ 403 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 404 public boolean hasActionId( 405 com.liferay.portal.model.ResourcePermission resourcePermission, 406 com.liferay.portal.model.ResourceAction resourceAction); 407 408 /** 409 * Returns <code>true</code> if the role has permission at the scope to 410 * perform the action on resources of the type. 411 * 412 * <p> 413 * Depending on the scope, the value of <code>primKey</code> will have 414 * different meanings. For more information, see {@link 415 * com.liferay.portal.model.impl.ResourcePermissionImpl}. 416 * </p> 417 * 418 * @param companyId the primary key of the company 419 * @param name the resource's name, which can be either a class name or a 420 portlet ID 421 * @param scope the scope 422 * @param primKey the primary key 423 * @param roleId the primary key of the role 424 * @param actionId the action ID 425 * @return <code>true</code> if the role has permission to perform the 426 action on the resource; <code>false</code> otherwise 427 * @throws PortalException if a role with the primary key or a resource 428 action with the name and action ID could not be found 429 * @throws SystemException if a system exception occurred 430 */ 431 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 432 public boolean hasResourcePermission(long companyId, java.lang.String name, 433 int scope, java.lang.String primKey, long roleId, 434 java.lang.String actionId) 435 throws com.liferay.portal.kernel.exception.PortalException, 436 com.liferay.portal.kernel.exception.SystemException; 437 438 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) 439 public boolean hasScopeResourcePermission(long companyId, 440 java.lang.String name, int scope, long roleId, java.lang.String actionId) 441 throws com.liferay.portal.kernel.exception.PortalException, 442 com.liferay.portal.kernel.exception.SystemException; 443 444 /** 445 * Reassigns all the resource permissions from the source role to the 446 * destination role, and deletes the source role. 447 * 448 * @param fromRoleId the primary key of the source role 449 * @param toRoleId the primary key of the destination role 450 * @throws PortalException if a role with the primary key could not be found 451 * @throws SystemException if a system exception occurred 452 */ 453 public void mergePermissions(long fromRoleId, long toRoleId) 454 throws com.liferay.portal.kernel.exception.PortalException, 455 com.liferay.portal.kernel.exception.SystemException; 456 457 /** 458 * Grants the role default permissions to all the resources of the type and 459 * at the scope stored in the resource permission, deletes the resource 460 * permission, and deletes the resource permission's role if it has no 461 * permissions remaining. 462 * 463 * @param resourcePermissionId the primary key of the resource permission 464 * @param toRoleId the primary key of the role 465 * @throws PortalException if a resource permission or role with the primary 466 key could not be found 467 * @throws SystemException if a system exception occurred 468 */ 469 public void reassignPermissions(long resourcePermissionId, long toRoleId) 470 throws com.liferay.portal.kernel.exception.PortalException, 471 com.liferay.portal.kernel.exception.SystemException; 472 473 /** 474 * Revokes permission at the scope from the role to perform the action on 475 * resources of the type. For example, this method could be used to revoke a 476 * group scope permission to edit blog posts. 477 * 478 * <p> 479 * Depending on the scope, the value of <code>primKey</code> will have 480 * different meanings. For more information, see {@link 481 * com.liferay.portal.model.impl.ResourcePermissionImpl}. 482 * </p> 483 * 484 * @param companyId the primary key of the company 485 * @param name the resource's name, which can be either a class name or a 486 portlet ID 487 * @param scope the scope 488 * @param primKey the primary key 489 * @param roleId the primary key of the role 490 * @param actionId the action ID 491 * @throws PortalException if a role with the primary key or a resource 492 action with the name and action ID could not be found 493 * @throws SystemException if a system exception occurred 494 */ 495 public void removeResourcePermission(long companyId, java.lang.String name, 496 int scope, java.lang.String primKey, long roleId, 497 java.lang.String actionId) 498 throws com.liferay.portal.kernel.exception.PortalException, 499 com.liferay.portal.kernel.exception.SystemException; 500 501 /** 502 * Revokes all permissions at the scope from the role to perform the action 503 * on resources of the type. For example, this method could be used to 504 * revoke all individual scope permissions to edit blog posts from site 505 * members. 506 * 507 * @param companyId the primary key of the company 508 * @param name the resource's name, which can be either a class name or a 509 portlet ID 510 * @param scope the scope 511 * @param roleId the primary key of the role 512 * @param actionId the action ID 513 * @throws PortalException if a role with the primary key or a resource 514 action with the name and action ID could not be found 515 * @throws SystemException if a system exception occurred 516 */ 517 public void removeResourcePermissions(long companyId, 518 java.lang.String name, int scope, long roleId, java.lang.String actionId) 519 throws com.liferay.portal.kernel.exception.PortalException, 520 com.liferay.portal.kernel.exception.SystemException; 521 522 /** 523 * Updates the role's permissions at the scope, setting the actions that can 524 * be performed on resources of the type, also setting the owner of any 525 * newly created resource permissions. Existing actions are replaced. 526 * 527 * <p> 528 * This method can be used to set permissions at any scope, but it is 529 * generally only used at the individual scope. For example, it could be 530 * used to set the guest permissions on a blog post. 531 * </p> 532 * 533 * <p> 534 * Depending on the scope, the value of <code>primKey</code> will have 535 * different meanings. For more information, see {@link 536 * com.liferay.portal.model.impl.ResourcePermissionImpl}. 537 * </p> 538 * 539 * @param companyId the primary key of the company 540 * @param name the resource's name, which can be either a class name or a 541 portlet ID 542 * @param scope the scope 543 * @param primKey the primary key 544 * @param roleId the primary key of the role 545 * @param ownerId the primary key of the owner (generally the user that 546 created the resource) 547 * @param actionIds the action IDs of the actions 548 * @throws PortalException if a role with the primary key or a resource 549 action with the name and action ID could not be found 550 * @throws SystemException if a system exception occurred 551 */ 552 public void setOwnerResourcePermissions(long companyId, 553 java.lang.String name, int scope, java.lang.String primKey, 554 long roleId, long ownerId, java.lang.String[] actionIds) 555 throws com.liferay.portal.kernel.exception.PortalException, 556 com.liferay.portal.kernel.exception.SystemException; 557 558 /** 559 * Updates the role's permissions at the scope, setting the actions that can 560 * be performed on resources of the type. Existing actions are replaced. 561 * 562 * <p> 563 * This method can be used to set permissions at any scope, but it is 564 * generally only used at the individual scope. For example, it could be 565 * used to set the guest permissions on a blog post. 566 * </p> 567 * 568 * <p> 569 * Depending on the scope, the value of <code>primKey</code> will have 570 * different meanings. For more information, see {@link 571 * com.liferay.portal.model.impl.ResourcePermissionImpl}. 572 * </p> 573 * 574 * @param companyId the primary key of the company 575 * @param name the resource's name, which can be either a class name or a 576 portlet ID 577 * @param scope the scope 578 * @param primKey the primary key 579 * @param roleId the primary key of the role 580 * @param actionIds the action IDs of the actions 581 * @throws PortalException if a role with the primary key or a resource 582 action with the name and action ID could not be found 583 * @throws SystemException if a system exception occurred 584 */ 585 public void setResourcePermissions(long companyId, java.lang.String name, 586 int scope, java.lang.String primKey, long roleId, 587 java.lang.String[] actionIds) 588 throws com.liferay.portal.kernel.exception.PortalException, 589 com.liferay.portal.kernel.exception.SystemException; 590 }