Skip to content

Commit

Permalink
Moved canRead, canModify, canAdd to separate interface
Browse files Browse the repository at this point in the history
Signed-off-by: Tony Tkacik <tonydamage@gmail.com>
  • Loading branch information
tonydamage committed May 18, 2021
1 parent ab13359 commit 407e219
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 40 deletions.
Expand Up @@ -23,7 +23,7 @@
/**
* @author mederly
*/
public interface ItemDefinition<I extends Item> extends Definition {
public interface ItemDefinition<I extends Item> extends Definition, PrismItemAccessDefinition {

@NotNull
ItemName getItemName();
Expand Down Expand Up @@ -71,45 +71,6 @@ default boolean isMultiValue() {
*/
boolean isDynamic();

/**
* Returns true if this item can be read (displayed).
* In case of containers this flag is, strictly speaking, not applicable. Container is an
* empty shell. What matters is access to individual sub-item. However, for containers this
* value has a "hint" meaning. It means that the container itself contains something that is
* readable. Which can be used as a hint by the presentation to display container label or block.
* This usually happens if the container contains at least one readable item.
* This does NOT mean that also all the container items can be displayed. The sub-item permissions
* are controlled by similar properties on the items. This property only applies to the container
* itself: the "shell" of the container.
* <p>
* Note: It was considered to use a different meaning for this flag - a meaning that would allow
* canRead()=false containers to have readable items. However, this was found not to be very useful.
* Therefore the "something readable inside" meaning was confirmed instead.
*/
boolean canRead();

/**
* Returns true if this item can be modified (updated).
* In case of containers this means that the container itself should be displayed in modification forms
* E.g. that the container label or block should be displayed. This usually happens if the container
* contains at least one modifiable item.
* This does NOT mean that also all the container items can be modified. The sub-item permissions
* are controlled by similar properties on the items. This property only applies to the container
* itself: the "shell" of the container.
*/
boolean canModify();

/**
* Returns true if this item can be added: it can be part of an object that is created.
* In case of containers this means that the container itself should be displayed in creation forms
* E.g. that the container label or block should be displayed. This usually happens if the container
* contains at least one createable item.
* This does NOT mean that also all the container items can be created. The sub-item permissions
* are controlled by similar properties on the items. This property only applies to the container
* itself: the "shell" of the container.
*/
boolean canAdd();

/**
* Returns the name of an element this one can be substituted for (e.g. c:user -&gt; c:object,
* s:pipeline -&gt; s:expression, etc). EXPERIMENTAL
Expand Down
@@ -0,0 +1,49 @@
/*
* Copyright (c) 2021 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.prism;

public interface PrismItemAccessDefinition {

/**
* Returns true if this item can be read (displayed).
* In case of containers this flag is, strictly speaking, not applicable. Container is an
* empty shell. What matters is access to individual sub-item. However, for containers this
* value has a "hint" meaning. It means that the container itself contains something that is
* readable. Which can be used as a hint by the presentation to display container label or block.
* This usually happens if the container contains at least one readable item.
* This does NOT mean that also all the container items can be displayed. The sub-item permissions
* are controlled by similar properties on the items. This property only applies to the container
* itself: the "shell" of the container.
* <p>
* Note: It was considered to use a different meaning for this flag - a meaning that would allow
* canRead()=false containers to have readable items. However, this was found not to be very useful.
* Therefore the "something readable inside" meaning was confirmed instead.
*/
boolean canRead();

/**
* Returns true if this item can be modified (updated).
* In case of containers this means that the container itself should be displayed in modification forms
* E.g. that the container label or block should be displayed. This usually happens if the container
* contains at least one modifiable item.
* This does NOT mean that also all the container items can be modified. The sub-item permissions
* are controlled by similar properties on the items. This property only applies to the container
* itself: the "shell" of the container.
*/
boolean canModify();

/**
* Returns true if this item can be added: it can be part of an object that is created.
* In case of containers this means that the container itself should be displayed in creation forms
* E.g. that the container label or block should be displayed. This usually happens if the container
* contains at least one createable item.
* This does NOT mean that also all the container items can be created. The sub-item permissions
* are controlled by similar properties on the items. This property only applies to the container
* itself: the "shell" of the container.
*/
boolean canAdd();
}

0 comments on commit 407e219

Please sign in to comment.