Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Mar 11, 2022
2 parents 91a1431 + ee15e64 commit e27b0b1
Show file tree
Hide file tree
Showing 150 changed files with 4,598 additions and 986 deletions.
35 changes: 17 additions & 18 deletions dist/src/main/bin/midpoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,23 @@ fi

mkdir -p "${MIDPOINT_HOME}/log"

# shellcheck disable=SC2034 # ORIG_JAVA_OPTS can be used used in setenv.sh lower
ORIG_JAVA_OPTS="${JAVA_OPTS:-}"
#To prevent error for netenv.sh processing (set -u).
JAVA_OPTS="${JAVA_OPTS:- }"

# Apply bin/setenv.sh if it exists. This setenv.sh does not depend on MIDPOINT_HOME.
# The script can either append or overwrite JAVA_OPTS, e.g. to set -Dmidpoint.nodeId.
if [[ -r "${SCRIPT_DIR}/setenv.sh" ]]; then
echo "Applying setenv.sh from ${SCRIPT_DIR} directory."
# shellcheck disable=SC1091
. "${SCRIPT_DIR}/setenv.sh"
fi

# Apply $MIDPOINT_HOME/setenv.sh if it exists. This is flexible and related to chosen MIDPOINT_HOME.
if [[ -r "${MIDPOINT_HOME}/setenv.sh" ]]; then
echo "Applying setenv.sh from ${MIDPOINT_HOME} directory."
# shellcheck disable=SC1091
. "${MIDPOINT_HOME}/setenv.sh"
fi

#############################
# Originally Docker related #
Expand Down Expand Up @@ -340,22 +355,6 @@ if $(echo "${JAVA_OPTS:-}" | grep -v -q "\-Djava.util.logging.manager=") ; then
#clean up white spaces in case of key/value removal from the original JAVA_OPTS parameter set
JAVA_OPTS="$(echo "${JAVA_OPTS:-}" | tr -s [[:space:]] " " | sed "s/^[[:space:]]//;s/[[:space:]]$//" )"

# Apply bin/setenv.sh if it exists. This setenv.sh does not depend on MIDPOINT_HOME.
# The script can either append or overwrite JAVA_OPTS, e.g. to set -Dmidpoint.nodeId.
# It can also utilize ORIG_JAVA_OPTS that is original JAVA_OPTS before running midpoint.sh.
if [[ -r "${SCRIPT_DIR}/setenv.sh" ]]; then
echo "Applying setenv.sh from ${SCRIPT_DIR} directory."
# shellcheck disable=SC1091
. "${SCRIPT_DIR}/setenv.sh"
fi

# Apply $MIDPOINT_HOME/setenv.sh if it exists. This is flexible and related to chosen MIDPOINT_HOME.
if [[ -r "${MIDPOINT_HOME}/setenv.sh" ]]; then
echo "Applying setenv.sh from ${MIDPOINT_HOME} directory."
# shellcheck disable=SC1091
. "${MIDPOINT_HOME}/setenv.sh"
fi

: "${BOOT_OUT:="${MIDPOINT_HOME}/log/midpoint.out"}"
: "${PID_FILE:="${MIDPOINT_HOME}/log/midpoint.pid"}"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
Expand All @@ -48,6 +49,10 @@ public class DefaultGuiConfigurationCompiler implements GuiProfileCompilable {
@Autowired private PrismContext prismContext;
@Autowired private AdminGuiConfigurationMergeManager adminGuiConfigurationMergeManager;

@Value("${midpoint.additionalPackagesToScan:}") private String additionalPackagesToScan;

private static final String COLLECTION_PACKAGES_KEY = "collectionPackages";

private static final String[] COLLECTION_PACKAGES_TO_SCAN = {
"com.evolveum.midpoint.web.page.admin.archetype",
"com.evolveum.midpoint.web.page.admin.cases",
Expand All @@ -66,9 +71,51 @@ public class DefaultGuiConfigurationCompiler implements GuiProfileCompilable {
private final Map<String, SimpleCounter> countersMap = new HashMap<>();

private Boolean experimentalFeaturesEnabled = false;
private Collection<Class<?>> panelInstanceClasses;
private Collection<Class<?>> panelTypeClasses;
private Collection<Class<?>> collectionClasses;

private static final Map<Object, Collection<Class<?>>> SCANNED_CLASSES_MAP = new HashMap<>();

private static synchronized Collection<Class<?>> getClassesForAnnotation(Class<? extends Annotation> annotation, String additionalPackagesToScan) {
Collection<Class<?>> result = SCANNED_CLASSES_MAP.get(annotation);
if (result != null) {
return result;
}

result = ClassPathUtil.scanClasses(annotation,
StringUtils.joinWith(",", ClassPathUtil.DEFAULT_PACKAGE_TO_SCAN, additionalPackagesToScan));

result = Collections.unmodifiableCollection(result);

SCANNED_CLASSES_MAP.put(annotation, result);

return result;
}

private static synchronized Collection<Class<?>> getCollectionClasses() {
Collection<Class<?>> result = SCANNED_CLASSES_MAP.get(COLLECTION_PACKAGES_KEY);
if (result != null) {
return result;
}

result = ClassPathUtil.listClasses(COLLECTION_PACKAGES_TO_SCAN);

result = Collections.unmodifiableCollection(result);

SCANNED_CLASSES_MAP.put(COLLECTION_PACKAGES_KEY, result);

return result;
}

private Collection<Class<?>> getPanelInstanceClasses() {
Collection<Class<?>> result = new ArrayList<>();
result.addAll(getClassesForAnnotation(PanelInstance.class, additionalPackagesToScan));
result.addAll(getClassesForAnnotation(PanelInstances.class, additionalPackagesToScan));

return Collections.unmodifiableCollection(result);
}

private Collection<Class<?>> getPanelTypeClasses() {
return getClassesForAnnotation(PanelType.class, additionalPackagesToScan);
}

@Override
@PostConstruct
Expand All @@ -88,9 +135,6 @@ public SimpleCounter findCounter(String identifier) {
public void postProcess(CompiledGuiProfile compiledGuiProfile) {
experimentalFeaturesEnabled = compiledGuiProfile.isEnableExperimentalFeatures();

collectPanelInstanceClasses();
collectPanelTypeClasses();

fillInPanelsMap();
fillInCountersMap();

Expand Down Expand Up @@ -118,7 +162,7 @@ private void compileDefaultDetailsPages(CompiledGuiProfile compiledGuiProfile) {
}

private void mergeCollectionViewsWithDefault(CompiledGuiProfile compiledGuiProfile) {
Collection<Class<?>> classes = collectCollectionClasses();
Collection<Class<?>> classes = getCollectionClasses();
List<CompiledObjectCollectionView> defaultCollectionViews = compileDefaultCollectionViews(classes);

for (CompiledObjectCollectionView defaultCollectionView : defaultCollectionViews) {
Expand Down Expand Up @@ -163,7 +207,7 @@ private List<CompiledObjectCollectionView> compileDefaultCollectionViews(Collect

private void processShadowPanels(CompiledGuiProfile compiledGuiProfile) {
List<ContainerPanelConfigurationType> shadowPanels = new ArrayList<>();
for (Class<?> clazz : panelInstanceClasses) {
for (Class<?> clazz : getPanelInstanceClasses()) {
PanelInstance instance = clazz.getAnnotation(PanelInstance.class);
if (instance == null) {
continue;
Expand Down Expand Up @@ -198,7 +242,7 @@ private void fillInPanelsMap() {
if (!panelsMap.isEmpty()) {
return;
}
for (Class<?> clazz : panelTypeClasses) {
for (Class<?> clazz : getPanelTypeClasses()) {
PanelType panelType = clazz.getAnnotation(PanelType.class);
if (isNotPanelTypeDefinition(clazz, panelType)) {
continue;
Expand All @@ -225,7 +269,7 @@ private void fillInCountersMap() {
if (!countersMap.isEmpty()) {
return;
}
for (Class<?> clazz : panelInstanceClasses) {
for (Class<?> clazz : getPanelInstanceClasses()) {
Counter counterDefinition = clazz.getAnnotation(Counter.class);
if (counterDefinition != null) {
Class<? extends SimpleCounter> counterProvider = counterDefinition.provider();
Expand Down Expand Up @@ -261,7 +305,7 @@ private GuiObjectDetailsSetType compileDefaultGuiObjectDetailsSetType() {
private Set<Class<? extends Containerable>> findSupportedContainerables() {
Set<Class<? extends Containerable>> containerables = new HashSet<>();

for (Class<?> clazz : panelInstanceClasses) {
for (Class<?> clazz : getPanelInstanceClasses()) {
PanelInstances pis = clazz.getAnnotation(PanelInstances.class);
if (pis != null) {
Arrays.asList(pis.value()).forEach(pi -> addSupportedContainerable(containerables, pi));
Expand Down Expand Up @@ -319,7 +363,7 @@ private GuiObjectDetailsPageType compileDefaultGuiObjectDetailsPage(Class<? exte
private List<ContainerPanelConfigurationType> getPanelsFor(Class<? extends Containerable> containerable) {
List<ContainerPanelConfigurationType> panels = new ArrayList<>();

for (Class<?> clazz : panelInstanceClasses) {
for (Class<?> clazz : getPanelInstanceClasses()) {
PanelInstances pis = clazz.getAnnotation(PanelInstances.class);
if (pis != null) {
Arrays.asList(pis.value()).forEach(pi -> addPanelsFor(panels, containerable, clazz, pi));
Expand Down Expand Up @@ -348,39 +392,6 @@ private void addPanelsFor(List<ContainerPanelConfigurationType> panels, Class<?
panels.add(config);
}

private void collectPanelInstanceClasses() {
if (panelInstanceClasses == null) {
panelInstanceClasses = collectClasses(PanelInstance.class);
panelInstanceClasses.addAll(collectClasses(PanelInstances.class));
}
}

private void collectPanelTypeClasses() {
if (panelTypeClasses == null) {
panelTypeClasses = collectClasses(PanelType.class);
}
}

private Collection<Class<?>> collectClasses(Class<? extends Annotation> annotationClass) {
return ClassPathUtil.scanClasses(annotationClass);
}

private Collection<Class<?>> collectCollectionClasses() {
if (collectionClasses == null) {
collectionClasses = collectClasses(COLLECTION_PACKAGES_TO_SCAN);
}
return collectionClasses;
}

private Set<Class<?>> collectClasses(String[] packagesToScan) {
Set<Class<?>> allClasses = new HashSet<>();
for (String packageToScan : packagesToScan) {
Set<Class<?>> classes = ClassPathUtil.listClasses(packageToScan);
allClasses.addAll(classes);
}
return allClasses;
}

private boolean isNotApplicableFor(Class<? extends Containerable> containerable, PanelInstance pi) {
if (pi == null || Containerable.class.equals(pi.applicableForType())) {
// if there's no applicableForType defined, it shouldn't be applicable
Expand Down Expand Up @@ -417,7 +428,7 @@ private ContainerPanelConfigurationType compileContainerPanelConfiguration(Class
config.setApplicableForOperation(panelInstance.applicableForOperation()[0]);
}

createDefaultVirtualContainer(config, panelInstance.containerPath(), panelInstance.expanded());
createDefaultVirtualContainer(config, panelInstance.containerPath(), panelInstance.expanded());
if (panelInstance.hiddenContainers().length > 0) {
for (String path : panelInstance.hiddenContainers()) {
VirtualContainersSpecificationType c = new VirtualContainersSpecificationType();
Expand Down Expand Up @@ -481,7 +492,7 @@ private void compileDisplay(PanelInstance panelInstance, ContainerPanelConfigura

private List<ContainerPanelConfigurationType> processChildren(Class<? extends Containerable> containerable, Class<?> parentClass) {
List<ContainerPanelConfigurationType> configs = new ArrayList<>();
for (Class<?> clazz : panelInstanceClasses) {
for (Class<?> clazz : getPanelInstanceClasses()) {
PanelInstance panelInstance = clazz.getAnnotation(PanelInstance.class);
if (isNotApplicableFor(containerable, panelInstance)) {
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,55 +6,50 @@
*/
package com.evolveum.midpoint.gui.impl.page.admin;

import java.util.*;

import com.evolveum.midpoint.gui.api.component.result.MessagePanel;
import com.evolveum.midpoint.gui.api.prism.ItemStatus;
import com.evolveum.midpoint.gui.impl.component.menu.DetailsNavigationPanel;
import com.evolveum.midpoint.gui.impl.page.admin.component.OperationalButtonsPanel;

import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.util.exception.*;

import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

import com.evolveum.midpoint.gui.api.component.result.MessagePanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.ItemStatus;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.component.menu.DetailsNavigationPanel;
import com.evolveum.midpoint.gui.impl.page.admin.component.OperationalButtonsPanel;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.form.MidpointForm;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.users.component.ExecuteChangeOptionsDto;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.validation.SimpleValidationError;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

public abstract class AbstractPageObjectDetails<O extends ObjectType, ODM extends ObjectDetailsModels<O>> extends PageBase {

Expand Down Expand Up @@ -436,7 +431,7 @@ public void replacePanel(ContainerPanelConfigurationType config, AjaxRequestTarg
LOGGER.debug("Can't instantiate panel based on config\n {}", config.debugDump(), e);
}

error("Cannot instantiate panel, " + e.getMessage());
error("Cannot instantiate panel, " + e.getMessage() + " (" + e.getClass().getSimpleName() + ").");
target.add(getFeedbackPanel());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ public static TaskType createResourceTask(PrismContext prismContext, String task
ObjectReferenceType resourceRef = new ObjectReferenceType();
resourceRef.setOid(resource.getOid());
resourceRef.setType(ResourceType.COMPLEX_TYPE);
resourceRef.setTargetName(new PolyStringType(resource.getName()));
newTask.setObjectRef(resourceRef);

String name = createNewTaskName(taskNamePrefix, resource);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public AdditionalMenuLinkContentPanel(String id, AssignmentHolderDetailsModel mo

@Override
protected UserProfileStorage.TableId getTableId() {
return UserProfileStorage.TableId.PAGE_MESSAGE_TEMPLATE_LOCALIZED_CONTENT_PANEL; // todo fix
return UserProfileStorage.TableId.PANEL_ADDITIONAL_MENU_LINK_CONTENT;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ protected MultivalueContainerDetailsPanel<AppenderConfigurationType> getMultival

@Override
protected UserProfileStorage.TableId getTableId() {
return UserProfileStorage.TableId.PAGE_MESSAGE_TEMPLATE_LOCALIZED_CONTENT_PANEL; // todo fix
return UserProfileStorage.TableId.PANEL_APPENDERS_CONTENT;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ protected MultivalueContainerDetailsPanel<ClassLoggerConfigurationType> getMulti

@Override
protected UserProfileStorage.TableId getTableId() {
return UserProfileStorage.TableId.PAGE_MESSAGE_TEMPLATE_LOCALIZED_CONTENT_PANEL; // todo fix
return UserProfileStorage.TableId.PANEL_CLASS_LOGGERS_CONTENT;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ protected MultivalueContainerDetailsPanel<ConfigurableUserDashboardType> getMult

@Override
protected UserProfileStorage.TableId getTableId() {
return UserProfileStorage.TableId.PAGE_MESSAGE_TEMPLATE_LOCALIZED_CONTENT_PANEL; // todo fix
return UserProfileStorage.TableId.PANEL_CONFIGURABLE_USER_DASHBOARD_CONTENT;
}

@Override
Expand Down

0 comments on commit e27b0b1

Please sign in to comment.