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 Sep 24, 2021
2 parents cdfd91f + f665e4b commit 4da34ad
Show file tree
Hide file tree
Showing 51 changed files with 716 additions and 639 deletions.
58 changes: 36 additions & 22 deletions dist/src/main/bin/midpoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ JAVA_def_trustStoreType="jceks"

USE_NOHUP="true"

ENV_MAP_PREFIX="MP_SET_"

######################

set -eu
Expand Down Expand Up @@ -76,10 +78,12 @@ fi
[ "${MP_MEM_MAX:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Xmx[^[:space:]]*//") -Xmx${MP_MEM_MAX}"
[ "${MP_MEM_INIT:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Xms[^[:space:]]*//") -Xms${MP_MEM_INIT}"

###### Backward compatibility for ENV variables ####

[ "${REPO_PORT:-}" != "" ] && db_port=${REPO_PORT}
if [ "${REPO_DATABASE_TYPE:-}" != "" ]
then
JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.database=[^[:space:]]*//") -Dmidpoint.repository.database=${REPO_DATABASE_TYPE}"
export ${ENV_MAP_PREFIX}midpoint_repository_database="${REPO_DATABASE_TYPE}"
[ "${db_port:-}" == "default" ] && db_port=""
case ${REPO_DATABASE_TYPE} in
h2)
Expand Down Expand Up @@ -120,33 +124,43 @@ then
fi
;;
esac
if [ "${REPO_URL:-}" != "" ]
then
JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.jdbcUrl=[^[:space:]]*//") -Dmidpoint.repository.jdbcUrl=${REPO_URL}"
else
JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.jdbcUrl=[^[:space:]]*//") -Dmidpoint.repository.jdbcUrl=${db_prefix}${REPO_HOST:-localhost}:${db_port}${db_path}"
fi
[ "${REPO_URL:-}" = "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_jdbcUrl="${db_prefix}${REPO_HOST:-localhost}:${db_port}${db_path}"
fi
[ "${REPO_USER:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.jdbcUsername=[^[:space:]]*//") -Dmidpoint.repository.jdbcUsername=${REPO_USER}"
[ "${REPO_PASSWORD_FILE:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.jdbcPassword_FILE=[^[:space:]]*//") -Dmidpoint.repository.jdbcPassword_FILE=${REPO_PASSWORD_FILE}"
[ "${REPO_MISSING_SCHEMA_ACTION:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.missingSchemaAction=[^[:space:]]*//") -Dmidpoint.repository.missingSchemaAction=${REPO_MISSING_SCHEMA_ACTION}"
[ "${REPO_UPGRADEABLE_SCHEMA_ACTION:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.upgradeableSchemaAction=[^[:space:]]*//") -Dmidpoint.repository.upgradeableSchemaAction=${REPO_UPGRADEABLE_SCHEMA_ACTION}"
[ "${REPO_SCHEMA_VARIANT:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.schemaVariant=[^[:space:]]*//") -Dmidpoint.repository.schemaVariant=${REPO_SCHEMA_VARIANT}"
[ "${REPO_SCHEMA_VERSION_IF_MISSING:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.repository.schemaVersionIfMissing=[^[:space:]]*//") -Dmidpoint.repository.schemaVersionIfMissing=${REPO_SCHEMA_VERSION_IF_MISSING}"

[ "${MP_KEYSTORE_PASSWORD_FILE:-}" != "" ] && JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-Dmidpoint.keystore.keyStorePassword_FILE=[^[:space:]]*//") -Dmidpoint.keystore.keyStorePassword_FILE=${MP_KEYSTORE_PASSWORD_FILE}"

if [ -e /.dockerenv ]
then
JAVA_OPTS="${JAVA_OPTS:-} -Dmidpoint.repository.hibernateHbm2ddl=none"
JAVA_OPTS="${JAVA_OPTS:-} -Dmidpoint.repository.initializationFailTimeout=60000"
[ "${REPO_URL:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_jdbcUrl="${REPO_URL}"
[ "${REPO_USER:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_jdbcUsername="${REPO_USER}"
[ "${REPO_PASSWORD_FILE:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_jdbcPassword_FILE="${REPO_PASSWORD_FILE}"
[ "${REPO_MISSING_SCHEMA_ACTION:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_missingSchemaAction="${REPO_MISSING_SCHEMA_ACTION}"
[ "${REPO_UPGRADEABLE_SCHEMA_ACTION:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_upgradeableSchemaAction="${REPO_UPGRADEABLE_SCHEMA_ACTION}"
[ "${REPO_SCHEMA_VARIANT:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_schemaVariant="${REPO_SCHEMA_VARIANT}"
[ "${REPO_SCHEMA_VERSION_IF_MISSING:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_schemaVersionIfMissing="${REPO_SCHEMA_VERSION_IF_MISSING}"

JAVA_OPTS="${JAVA_OPTS:-} -Dfile.encoding=UTF8"
JAVA_OPTS="${JAVA_OPTS:-} -Dmidpoint.logging.alt.enabled=true"
fi
[ "${MP_KEYSTORE_PASSWORD_FILE:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_keystore_keyStorePassword_FILE="${MP_KEYSTORE_PASSWORD_FILE}"

#############################

###### ENV Variables mapping ######

while read line
do
_to_process="${line:${#ENV_MAP_PREFIX}}"
_key="$(echo -n "${_to_process}" | cut -d = -f 1 | sed "s/_/./g")"
_val="$(echo -n "${_to_process}" | cut -d = -f 2-)"

### exception for *_FILE key name ###
[ "${_key: -5}" = ".FILE" ] && _key="${_key::$(( ${#_key} - 5 ))}_FILE"
###

if [ "${_key:0:1}" = "." ]
then
JAVA_OPTS="${JAVA_OPTS:-} -D${_key:1}=${_val}"
else
JAVA_OPTS="$(echo ${JAVA_OPTS:-} | sed "s/-D${_key}=[^[:space:]]*//") -D${_key}=${_val}"
fi
done < <(env | grep "^${ENV_MAP_PREFIX}")

###################################

# Check for the default JAVA_OPTS values. In case the specific key is already set the value is kept untouched.
# To prevent Xms to be set pass the --Xms to JAVA_OPTS (double dash).
# To prevent Xmx to be set pass the --Xmx to JAVA_OPTS (double dash).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
import java.util.*;
import javax.annotation.PostConstruct;

import com.evolveum.midpoint.gui.api.prism.ItemStatus;
import com.evolveum.midpoint.prism.polystring.PolyString;

import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType;

import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -103,7 +103,11 @@ public void postProcess(CompiledGuiProfile compiledGuiProfile) {
GuiObjectDetailsPageType compiledPageType = compiledGuiProfile.findObjectDetailsConfiguration(defaultDetailsPage.getType());
GuiObjectDetailsPageType mergedDetailsPage = adminGuiConfigurationMergeManager.mergeObjectDetailsPageConfiguration(defaultDetailsPage, compiledPageType);

compiledGuiProfile.getObjectDetails().getObjectDetailsPage().removeIf(p -> QNameUtil.match(p.getType(), defaultDetailsPage.getType()));
if (compiledGuiProfile.getObjectDetails() == null) {
compiledGuiProfile.setObjectDetails(new GuiObjectDetailsSetType(prismContext));
} else {
compiledGuiProfile.getObjectDetails().getObjectDetailsPage().removeIf(p -> QNameUtil.match(p.getType(), defaultDetailsPage.getType()));
}
compiledGuiProfile.getObjectDetails().getObjectDetailsPage().add(mergedDetailsPage.cloneWithoutId());
}
}
Expand Down Expand Up @@ -220,8 +224,8 @@ private boolean isNotApplicableFor(Class<? extends ObjectType> objectType, Panel
return true;
}

if (panelInstance.notApplicableFor() != null && !panelInstance.notApplicableFor().equals(SystemConfigurationType.class)) {
return panelInstance.notApplicableFor().isAssignableFrom(objectType);
if (panelInstance.excludeTypes() != null && panelInstance.excludeTypes().length > 0) {
return Arrays.stream(panelInstance.excludeTypes()).anyMatch(o -> o.equals(objectType));
}

return !panelInstance.applicableForType().isAssignableFrom(objectType);
Expand Down Expand Up @@ -282,6 +286,7 @@ private void compileDefaultContainerSpecification(PanelType panelType, Container
ItemPathType path = prismContext.itemPathParser().asItemPathType(panelType.defaultContainerPath());
defaultContainer.setPath(path);
}
defaultContainer.setDisplayOrder(10);
config.getContainer().add(defaultContainer);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,17 @@ protected ExecuteChangeOptionsDto load() {
};
}

public MainObjectListPanel(String id, Class<O> type, Collection<SelectorOptions<GetOperationOptions>> options, ContainerPanelConfigurationType config) {
super(id, type, options, config);
executeOptionsModel = new LoadableModel<>(false) {

@Override
protected ExecuteChangeOptionsDto load() {
return ExecuteChangeOptionsDto.createFromSystemConfiguration();
}
};
}

@Override
protected void onInitialize() {
super.onInitialize();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@
import com.evolveum.midpoint.gui.impl.component.ContainerableListPanel;
import com.evolveum.midpoint.web.component.search.*;

import com.evolveum.midpoint.xml.ns._public.common.common_3.GuiObjectColumnType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.prism.query.ObjectOrdering;

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

import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationTypeType;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
Expand All @@ -42,8 +40,6 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.SerializableSupplier;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

/**
* @author katkav
Expand All @@ -61,6 +57,10 @@ public ObjectListPanel(String id, Class<O> defaultType, Collection<SelectorOptio
super(id, defaultType, options);
}

public ObjectListPanel(String id, Class<O> defaultType, Collection<SelectorOptions<GetOperationOptions>> options, ContainerPanelConfigurationType config) {
super(id, defaultType, options, config);
}

protected String getSearchByNameParameterValue() {
PageParameters parameters = getPageBase().getPageParameters();
if (parameters == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.evolveum.midpoint.web.component.CompositedIconButtonDto;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -128,6 +129,9 @@ public abstract class ContainerableListPanel<C extends Containerable, PO extends
private Boolean manualRefreshEnabled;

private CompiledObjectCollectionView dashboardWidgetView;
private CompiledObjectCollectionView compiledCollectionViewFromPanelConfiguration;

private ContainerPanelConfigurationType config;

/**
* @param defaultType specifies type of the object that will be selected by default. It can be changed.
Expand All @@ -142,6 +146,13 @@ public ContainerableListPanel(String id, Class<C> defaultType, Collection<Select
this.options = options;
}

public ContainerableListPanel(String id, Class<C> defaultType, Collection<SelectorOptions<GetOperationOptions>> options, ContainerPanelConfigurationType configurationType) {
super(id);
this.defaultType = defaultType;
this.options = options;
this.config = configurationType;
}

@Override
protected void onInitialize() {
super.onInitialize();
Expand Down Expand Up @@ -392,12 +403,8 @@ protected boolean enableSavePageSize() {
}

private List<IColumn<PO, String>> createColumns() {
List<IColumn<PO, String>> columns;
if (isCustomColumnsListConfigured()) {
columns = initViewColumns();
} else {
columns = initColumns();
}
List<IColumn<PO, String>> columns = collectColumns();

List<InlineMenuItem> menuItems = createInlineMenu();
if (menuItems == null) {
menuItems = new ArrayList<>();
Expand All @@ -416,8 +423,25 @@ public String getCssClass() {
return columns;
}

private final List<IColumn<PO, String>> collectColumns() {
List<IColumn<PO, String>> columns = new ArrayList<>();

if (!isCustomColumnsListConfigured()) {
return initColumns();
}

boolean checkForNameColumn = true;
if (shouldIncludeDefaultColumns()) {
columns = initColumns();
checkForNameColumn = false;
}

columns.addAll(initViewColumns(checkForNameColumn));
return columns;
}

@NotNull
private List<IColumn<PO, String>> initViewColumns() {
private List<IColumn<PO, String>> initViewColumns(boolean checkForNameColumn) {
LOGGER.trace("Start to init custom columns for table of type {}", getType());
List<IColumn<PO, String>> columns = new ArrayList<>();
List<GuiObjectColumnType> customColumns = getGuiObjectColumnTypeList();
Expand All @@ -427,7 +451,7 @@ private List<IColumn<PO, String>> initViewColumns() {

addingCheckAndIconColumnIfExists(columns);

columns.addAll(getViewColumnsTransformed(customColumns));
columns.addAll(getViewColumnsTransformed(customColumns, checkForNameColumn));
LOGGER.trace("Finished to init custom columns, created columns {}", columns);
return columns;
}
Expand All @@ -445,6 +469,10 @@ private void addingCheckAndIconColumnIfExists(List<IColumn<PO, String>> columns)
}

protected List<IColumn<PO, String>> getViewColumnsTransformed(List<GuiObjectColumnType> customColumns){
return getViewColumnsTransformed(customColumns, true);
}

protected List<IColumn<PO, String>> getViewColumnsTransformed(List<GuiObjectColumnType> customColumns, boolean shoudlCheckForNameColumn){
List<IColumn<PO, String>> columns = new ArrayList<>();
if (customColumns == null || customColumns.isEmpty()) {
return columns;
Expand All @@ -463,7 +491,7 @@ protected List<IColumn<PO, String>> getViewColumnsTransformed(List<GuiObjectColu

if (WebComponentUtil.getElementVisibility(customColumn.getVisibility())) {
IModel<String> columnDisplayModel = createColumnDisplayModel(customColumn);
if (customColumns.indexOf(customColumn) == 0) {
if (customColumns.indexOf(customColumn) == 0 && shoudlCheckForNameColumn) {
// TODO what if a complex path is provided here?
column = createNameColumn(columnDisplayModel, customColumn, customColumn.getPath() == null ? "" : customColumn.getPath().toString(), expression);
} else {
Expand Down Expand Up @@ -909,6 +937,10 @@ protected int getAutoRefreshInterval() {
}

protected CompiledObjectCollectionView getObjectCollectionView() {
CompiledObjectCollectionView containerPanelCollectionView = getCompiledCollectionViewFromPanelConfiguration();
if (containerPanelCollectionView != null) {
return containerPanelCollectionView;
}
CompiledObjectCollectionView view = getWidgetCollectionView();
if (view != null) {
return view;
Expand All @@ -918,6 +950,36 @@ protected CompiledObjectCollectionView getObjectCollectionView() {
(WebComponentUtil.containerClassToQName(getPageBase().getPrismContext(), getType()), collectionName);
}

private CompiledObjectCollectionView getCompiledCollectionViewFromPanelConfiguration() {
if (compiledCollectionViewFromPanelConfiguration != null) {
return compiledCollectionViewFromPanelConfiguration;
}
if (config == null) {
return null;
}
if (config.getListView() == null) {
return null;
}
CollectionRefSpecificationType collectionRefSpecificationType = config.getListView().getCollection();

if (collectionRefSpecificationType == null) {
compiledCollectionViewFromPanelConfiguration = new CompiledObjectCollectionView();
getPageBase().getModelInteractionService().applyView(compiledCollectionViewFromPanelConfiguration, config.getListView());
return compiledCollectionViewFromPanelConfiguration;
}
Task task = getPageBase().createSimpleTask("Compile collection");
OperationResult result = task.getResult();
try {
compiledCollectionViewFromPanelConfiguration = getPageBase().getModelInteractionService().compileObjectCollectionView(collectionRefSpecificationType, AssignmentType.class, task, result);
} catch (Throwable e) {
LOGGER.error("Cannot compile object collection view for panel configuration {}. Reason: {}", config, e.getMessage(), e);
result.recordFatalError("Cannot compile object collection view for panel configuration " + config + ". Reason: " + e.getMessage(), e);
getPageBase().showResult(result);
}
return compiledCollectionViewFromPanelConfiguration;

}

private CompiledObjectCollectionView getWidgetCollectionView() {
PageParameters parameters = getPageBase().getPageParameters();
String dashboardOid = parameters == null ? null : parameters.get(PageBase.PARAMETER_DASHBOARD_TYPE_OID).toString();
Expand Down Expand Up @@ -984,7 +1046,7 @@ protected boolean isCollectionViewPanelForCompiledView() {
}

protected boolean isCollectionViewPanel() {
return isCollectionViewPanelForCompiledView() || isCollectionViewPanelForWidget() || defaultCollectionExists();
return isCollectionViewPanelForCompiledView() || isCollectionViewPanelForWidget() || defaultCollectionExists() || getCompiledCollectionViewFromPanelConfiguration() != null;
}

private boolean defaultCollectionExists() {
Expand Down Expand Up @@ -1074,6 +1136,14 @@ private boolean isCustomColumnsListConfigured(){
return columnList != null && !columnList.isEmpty();
}

private boolean shouldIncludeDefaultColumns(){
if (!isCollectionViewPanel()){
return false;
}
CompiledObjectCollectionView guiObjectListViewType = getObjectCollectionView();
return BooleanUtils.isTrue(guiObjectListViewType.isIncludeDefaultColumns());
}

private String getItemDisplayName(GuiObjectColumnType column){
ItemDefinition itemDefinition = getPageBase().getPrismContext().getSchemaRegistry()
.findContainerDefinitionByCompileTimeClass(getType()).findItemDefinition(column.getPath().getItemPath());
Expand Down Expand Up @@ -1213,4 +1283,8 @@ && getObjectCollectionView().getPaging().getOrderBy() != null) {
((SortableDataProvider)provider).setSort(new SortParam(name.getLocalPart(), ascending));
}
}

public ContainerPanelConfigurationType getPanelConfiguration() {
return config;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import com.evolveum.midpoint.gui.impl.page.admin.user.PageUser;
import com.evolveum.midpoint.web.component.*;

import com.evolveum.midpoint.xml.ns._public.common.common_3.ContainerPanelConfigurationType;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -66,6 +68,10 @@ public MultivalueContainerListPanel(String id, Class<C> type) {
super(id, type);
}

public MultivalueContainerListPanel(String id, Class<C> type, ContainerPanelConfigurationType config) {
super(id, type, null, config);
}

@Override
protected Search createSearch(Class<C> type) {
PrismContainerDefinition<C> containerDefinition = getTypeDefinitionForSearch();
Expand Down

0 comments on commit 4da34ad

Please sign in to comment.