Skip to content

Commit

Permalink
Prism: Added Delegator interfaces
Browse files Browse the repository at this point in the history
Delegator interfaces delegates most of the calls to delegate(),
useful for implementation of wrappers which modifies only few items.
  • Loading branch information
tonydamage committed May 25, 2021
1 parent 407e219 commit 4a3912a
Show file tree
Hide file tree
Showing 8 changed files with 934 additions and 0 deletions.
@@ -0,0 +1,171 @@
/*
* 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.deleg;

import java.util.Collection;
import java.util.List;
import java.util.Optional;
import javax.xml.namespace.QName;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import com.evolveum.midpoint.prism.ComplexTypeDefinition;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;

public interface ComplexTypeDefinitionDelegator extends TypeDefinitionDelegator, ComplexTypeDefinition {

@Override
ComplexTypeDefinition delegate();

@Override
default <ID extends ItemDefinition> ID findLocalItemDefinition(@NotNull QName name, @NotNull Class<ID> clazz,
boolean caseInsensitive) {
return delegate().findLocalItemDefinition(name, clazz, caseInsensitive);
}


@Override
default <ID extends ItemDefinition> ID findLocalItemDefinition(@NotNull QName name) {
return delegate().findLocalItemDefinition(name);
}


@Override
default boolean isShared() {
return delegate().isShared();
}

@Override
default <ID extends ItemDefinition> ID findItemDefinition(@NotNull ItemPath path) {
return delegate().findItemDefinition(path);
}

@Override
default @Nullable QName getExtensionForType() {
return delegate().getExtensionForType();
}

@Override
default PrismReferenceDefinition findReferenceDefinition(@NotNull ItemName name) {
return delegate().findReferenceDefinition(name);
}

@Override
default <C extends Containerable> PrismContainerDefinition<C> findContainerDefinition(@NotNull String name) {
return delegate().findContainerDefinition(name);
}

@Override
default boolean isReferenceMarker() {
return delegate().isReferenceMarker();
}

@Override
default boolean isContainerMarker() {
return delegate().isContainerMarker();
}

@Override
default <ID extends ItemDefinition> ID findItemDefinition(@NotNull ItemPath path, @NotNull Class<ID> clazz) {
return delegate().findItemDefinition(path, clazz);
}

@Override
default <ID extends ItemDefinition> ID findNamedItemDefinition(@NotNull QName firstName, @NotNull ItemPath rest,
@NotNull Class<ID> clazz) {
return delegate().findNamedItemDefinition(firstName, rest, clazz);
}

@Override
default <T> PrismPropertyDefinition<T> findPropertyDefinition(@NotNull ItemPath path) {
return delegate().findPropertyDefinition(path);
}

@Override
default boolean isObjectMarker() {
return delegate().isObjectMarker();
}

@Override
default PrismReferenceDefinition findReferenceDefinition(@NotNull ItemPath path) {
return delegate().findReferenceDefinition(path);
}

@Override
default boolean isXsdAnyMarker() {
return delegate().isXsdAnyMarker();
}

@Override
default <C extends Containerable> PrismContainerDefinition<C> findContainerDefinition(@NotNull ItemPath path) {
return delegate().findContainerDefinition(path);
}

@Override
default boolean isListMarker() {
return delegate().isListMarker();
}

@Override
default @Nullable String getDefaultNamespace() {
return delegate().getDefaultNamespace();
}

@Override
default @NotNull List<String> getIgnoredNamespaces() {
return delegate().getIgnoredNamespaces();
}

@Override
default void merge(ComplexTypeDefinition otherComplexTypeDef) {
delegate().merge(otherComplexTypeDef);
}

@Override
default boolean isEmpty() {
return delegate().isEmpty();
}

@Override
default void trimTo(@NotNull Collection<ItemPath> paths) {
delegate().trimTo(paths);
}

@Override
default boolean containsItemDefinition(QName itemName) {
return delegate().containsItemDefinition(itemName);
}

@Override
default boolean hasSubstitutions() {
return delegate().hasSubstitutions();
}

@Override
default Optional<ItemDefinition<?>> substitution(QName name) {
return delegate().substitution(name);
}

@Override
default Optional<ItemDefinition<?>> itemOrSubstitution(QName name) {
return delegate().itemOrSubstitution(name);
}

@Override
default @NotNull List<? extends ItemDefinition> getDefinitions() {
return delegate().getDefinitions();
}

}
@@ -0,0 +1,161 @@
/*
* 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.deleg;

import java.util.Collection;
import java.util.List;
import java.util.Optional;
import javax.xml.namespace.QName;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.prism.ComplexTypeDefinition;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.delta.ContainerDelta;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;

public interface ContainerDefinitionDelegator<C extends Containerable> extends ItemDefinitionDelegator<PrismContainer<C>>, PrismContainerDefinition<C> {

@Override
PrismContainerDefinition<C> delegate();

@Override
default Class<C> getCompileTimeClass() {
return delegate().getCompileTimeClass();
}

@Override
default ComplexTypeDefinition getComplexTypeDefinition() {
return delegate().getComplexTypeDefinition();
}

@Override
default String getDefaultNamespace() {
return delegate().getDefaultNamespace();
}

@Override
default List<String> getIgnoredNamespaces() {
return delegate().getIgnoredNamespaces();
}

@Override
default List<? extends ItemDefinition> getDefinitions() {
return delegate().getDefinitions();
}

@Override
default Collection<ItemName> getItemNames() {
return delegate().getItemNames();
}

@Override
default <ID extends ItemDefinition> ID findLocalItemDefinition(@NotNull QName name, @NotNull Class<ID> clazz,
boolean caseInsensitive) {
return delegate().findLocalItemDefinition(name, clazz, caseInsensitive);
}

@Override
default <ID extends ItemDefinition> ID findLocalItemDefinition(@NotNull QName name) {
return delegate().findLocalItemDefinition(name);
}

@Override
default boolean isCompletelyDefined() {
return delegate().isCompletelyDefined();
}

@Override
default List<PrismPropertyDefinition> getPropertyDefinitions() {
return delegate().getPropertyDefinitions();
}

@Override
default <ID extends ItemDefinition> ID findItemDefinition(@NotNull ItemPath path) {
return delegate().findItemDefinition(path);
}

@Override
default PrismReferenceDefinition findReferenceDefinition(@NotNull ItemName name) {
return delegate().findReferenceDefinition(name);
}

@Override
default PrismContainerDefinition<C> cloneWithReplacedDefinition(QName itemName, ItemDefinition newDefinition) {
return delegate().cloneWithReplacedDefinition(itemName, newDefinition);
}

@Override
default void replaceDefinition(QName itemName, ItemDefinition newDefinition) {
delegate().replaceDefinition(itemName, newDefinition);
}

@Override
default PrismContainerValue<C> createValue() {
return delegate().createValue();
}

@Override
default <C extends Containerable> PrismContainerDefinition<C> findContainerDefinition(@NotNull String name) {
return delegate().findContainerDefinition(name);
}

@Override
default boolean isEmpty() {
return delegate().isEmpty();
}

@Override
default boolean canRepresent(@NotNull QName type) {
return delegate().canRepresent(type);
}

@Override
default <ID extends ItemDefinition> ID findNamedItemDefinition(@NotNull QName firstName, @NotNull ItemPath rest,
@NotNull Class<ID> clazz) {
return delegate().findNamedItemDefinition(firstName, rest, clazz);
}

@Override
default <T> PrismPropertyDefinition<T> findPropertyDefinition(@NotNull ItemPath path) {
return delegate().findPropertyDefinition(path);
}

@Override
default PrismReferenceDefinition findReferenceDefinition(@NotNull ItemPath path) {
return delegate().findReferenceDefinition(path);
}

@Override
default <C extends Containerable> PrismContainerDefinition<C> findContainerDefinition(@NotNull ItemPath path) {
return delegate().findContainerDefinition(path);
}

@Override
default ContainerDelta<C> createEmptyDelta(ItemPath path) {
return delegate().createEmptyDelta(path);
}

@Override
default Class<C> getTypeClass() {
return delegate().getTypeClass();
}

@Override
default Optional<ComplexTypeDefinition> structuredType() {
return delegate().structuredType();
}

}

0 comments on commit 4a3912a

Please sign in to comment.