Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Mar 15, 2023
2 parents a296429 + d5d1f29 commit 48058bb
Show file tree
Hide file tree
Showing 141 changed files with 3,306 additions and 1,152 deletions.
3 changes: 2 additions & 1 deletion dist/src/main/bin/midpoint.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Portions Copyright (C) 2017-2022 Evolveum and contributors
# Portions Copyright (C) 2017-2023 Evolveum and contributors
#
# This work is dual-licensed under the Apache License 2.0
# and European Union Public License. See LICENSE file for details.
Expand Down Expand Up @@ -166,6 +166,7 @@ if [ "${1}" = "init-native" ]; then
fi
exit 0
fi
# end of init-native

mkdir -p "${MIDPOINT_HOME}/log"

Expand Down
176 changes: 173 additions & 3 deletions dist/src/main/bin/ninja.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (C) 2017-2020 Evolveum and contributors
# Copyright (C) 2017-2023 Evolveum and contributors
#
# This work is dual-licensed under the Apache License 2.0
# and European Union Public License. See LICENSE file for details.
Expand All @@ -21,6 +21,176 @@ fi
: "${UMASK:="0027"}"
umask ${UMASK}

# Support for JAVA_OPTS + SET/UNSET environment variables, for better Docker support
# To prevent error for setenv.sh processing (set -u).
JAVA_OPTS="${JAVA_OPTS:- }"

JAVA_def_Xms="1g"
JAVA_def_Xmx="2g"
ENV_MAP_PREFIX="MP_SET_"
ENV_UNMAP_PREFIX="MP_UNSET_"

# 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 #
#############################

################
# entry point for source of the files to copy into midpoint home directory before the application start
################

if [ "${MP_ENTRY_POINT:-}" != "" ]; then # /opt/midpoint-dirs-docker-entrypoint
if [ -e "${MP_ENTRY_POINT}" ]; then
echo "Processing ${MP_ENTRY_POINT} directory..."
for i in $(find "${MP_ENTRY_POINT}" -mindepth 1 -maxdepth 1 -type d); do
l_name="$(basename "${i}")"
[ ! -e "${MIDPOINT_HOME}/${l_name}" ] && mkdir -p "${MIDPOINT_HOME}/${l_name}"
for s in $(find "${i}" -mindepth 1 -maxdepth 1 -type f -follow -exec basename \{\} \;); do
if [ ! -e "${MIDPOINT_HOME}/${l_name}/${s}" -a ! -e "${MIDPOINT_HOME}/${l_name}/${s}.done" ]; then
echo "COPY ${i}/${s} => ${MIDPOINT_HOME}/${l_name}/${s}"
cp "${i}/${s}" "${MIDPOINT_HOME}/${l_name}/${s}"
else
echo "SKIP: ${i}/${s}"
fi
done
done
echo "- - - - - - - - - - - - - - - - - - - - -"
unset l_name
fi
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 ####

if [ "${MP_NO_ENV_COMPAT:-}" != "1" ]; then
[ "${REPO_PORT:-}" != "" ] && db_port=${REPO_PORT}
if [ "${REPO_DATABASE_TYPE:-}" != "" ]; then
export ${ENV_MAP_PREFIX}midpoint_repository_database="${REPO_DATABASE_TYPE}"
[ "${db_port:-}" == "default" ] && db_port=""
case ${REPO_DATABASE_TYPE} in
h2)
[ "${db_port:-}" == "" ] && db_port=5437
db_prefix="jdbc:h2:tcp://"
db_path="/${REPO_DATABASE:-midpoint}"
;;
oracle)
[ "${db_port:-}" == "" ] && db_port=1521
db_prefix="jdbc:oracle:thin:@"
db_path="/xe"
;;
postgresql)
[ "${db_port:-}" == "" ] && db_port=5432
db_prefix="jdbc:postgresql://"
db_path="/${REPO_DATABASE:-midpoint}"
;;
sqlserver)
[ "${db_port:-}" == "" ] && db_port=1433
db_prefix="jdbc:sqlserver://"
db_path=";databse=${REPO_DATABASE:-midpoint}"
;;
*)
if [ "${db_port:-}" == "" -a "${REPO_URL:-}" == "" ]; then
echo "~~~~~ please supply JDBC port for your repository ~~~~~"
exit 1
fi
;;
esac
[ "${REPO_URL:-}" = "" ] && export ${ENV_MAP_PREFIX}midpoint_repository_jdbcUrl="${db_prefix}${REPO_HOST:-localhost}:${db_port}${db_path}"
fi

[ "${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}"

[ "${MP_KEYSTORE_PASSWORD_FILE:-}" != "" ] && export ${ENV_MAP_PREFIX}midpoint_keystore_keyStorePassword_FILE="${MP_KEYSTORE_PASSWORD_FILE}"
fi

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

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

JAVA_OPTS=" ${JAVA_OPTS:-}"

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"
###

echo "Processing variable (MAP) ... ${_key} .:. ${_val}"

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

while read line; do
_to_process="${line:${#ENV_UNMAP_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"
###

echo "Processing variable (UNMAP) ... ${_key} .:. ${_val}"

JAVA_OPTS="$(echo -n "${JAVA_OPTS:-}" | sed "s/ -D${_key}=\"[^\"]*\"//g;s/ -D${_key}=[^[:space:]]*//g")"
done < <(env | grep "^${ENV_UNMAP_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).

if $(echo "${JAVA_OPTS:-}" | grep -v -q "\-Xmx[0-9]"); then
if $(echo "${JAVA_OPTS:-}" | grep -q "\-\-Xmx"); then
JAVA_OPTS="$(echo "${JAVA_OPTS:-}" | sed "s/\-\-Xmx//")"
else
JAVA_OPTS="-Xmx${JAVA_def_Xmx} ${JAVA_OPTS:-}"
fi
fi
if $(echo "${JAVA_OPTS:-}" | grep -v -q "\-Xms[0-9]"); then
if $(echo "${JAVA_OPTS:-}" | grep -q "\-\-Xms"); then
JAVA_OPTS="$(echo "${JAVA_OPTS:-}" | sed "s/\-\-Xms//")"
else
JAVA_OPTS="-Xms${JAVA_def_Xms} ${JAVA_OPTS:-}"
fi
fi

if $(echo "${JAVA_OPTS:-}" | grep -v -q "\-Dmidpoint.home="); then JAVA_OPTS="${JAVA_OPTS:-} -Dmidpoint.home=\"${MIDPOINT_HOME}\""; fi

# 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:]]$//")"

# can't use -v here because of bash 3.2 support
if [[ -z "${JAVA_HOME:-}" ]]; then
_RUNJAVA=java
Expand All @@ -41,7 +211,7 @@ done
# would be empty and considered a class name by the "java -jar" command.
if [ -n "${JDBC_DRIVER:-}" ]; then
echo "Using JDBC driver path: ${JDBC_DRIVER}"
exec "${_RUNJAVA}" "-Dloader.path=${JDBC_DRIVER}" -jar "${BASE_DIR}/lib/ninja.jar" -m "${MIDPOINT_HOME}" "$@"
eval "${_RUNJAVA}" ${JAVA_OPTS} "-Dloader.path=${JDBC_DRIVER}" -jar "${BASE_DIR}/lib/ninja.jar" -m "${MIDPOINT_HOME}" "$@"
else
exec "${_RUNJAVA}" -jar "${BASE_DIR}/lib/ninja.jar" -m "${MIDPOINT_HOME}" "$@"
eval "${_RUNJAVA}" ${JAVA_OPTS} -jar "${BASE_DIR}/lib/ninja.jar" -m "${MIDPOINT_HOME}" "$@"
fi
15 changes: 8 additions & 7 deletions gui/admin-gui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion gui/admin-gui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"sparklines": "^1.3.0",
"style-loader": "^3.3.1",
"tempusdominus-bootstrap-4": "^5.39.2",
"webpack": "^5.75.0",
"webpack": "^5.76.0",
"webpack-cli": "^5.0.0",
"webpack-merge": "^5.8.0"
}
Expand Down
12 changes: 2 additions & 10 deletions gui/admin-gui/src/frontend/scss/midpoint.scss
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,7 @@ li.dropdown.user.user-menu {
}

.summary-tag-box {
max-width: 220px;
max-width: 250px;
}

.summary-tag-box-wide {
Expand All @@ -565,19 +565,11 @@ li.dropdown.user.user-menu {
}

.summary-tag {
display: block;
padding-left: 10px;
padding-right: 10px;
margin: 3px;
border: 1px solid #e0e0e0;
border-radius: 3px;
background-color: #fbfbfb;
margin-right: 0px;

}

.summary-tag-icon {
width: 20px;
margin-right: 2px;
}

// form input for binary data upload (used e.g. for photo)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ public class GuiStyleConstants {
public static final String CLASS_ICON_NOT_SHOW_EMPTY_FIELDS = "fa fa-square";
public static final String CLASS_ICON_SHOW_METADATA = "fa fa-asterisk";
public static final String CLASS_ICON_SUPERUSER = "fa fa-shield-alt";
public static final String CLASS_ICON_NO_OBJECTS = "fa fa-times";
public static final String CLASS_ICON_ACTIVATION_ACTIVE = "fa fa-check";
public static final String CLASS_ICON_NO_OBJECTS = "fa fa-fw fa-times";
public static final String CLASS_ICON_ACTIVATION_ACTIVE = "fa fa-fw fa-check";
public static final String CLASS_ICON_ACTIVATION_INACTIVE = "fa fa-times";
public static final String CLASS_ICON_RESOURCE_BROKEN = "fa fa-exclamation";
public static final String CLASS_ICON_RESOURCE_UNKNOWN = "fa fa-question";
Expand Down Expand Up @@ -245,6 +245,7 @@ public class GuiStyleConstants {

public static final String CLASS_ICON_SIGN_OUT = "fa fa-sign-out-alt";
public static final String CLASS_ICON_CLAIM = "far fa-paper-plane";
public static final String CLASS_ICON_RELEASE = "fa fa-fw fa-repeat";
public static final String CLASS_ICON_TEXT = "fa fa-text-width";

public static final String CLASS_ICON_TRASH = "far fa-trash-alt";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1433,6 +1433,21 @@ public static String getDisplayNameOrName(Referencable ref, boolean translate) {
return StringUtils.isNotEmpty(displayName) ? displayName : getName(ref, translate);
}

public static String getDisplayNameAndName(PrismObject<?> object) {
String displayName = getDisplayName(object);
String name = getName(object);

if (StringUtils.isEmpty(displayName)) {
return name;
}

if (StringUtils.isEmpty(name)) {
return displayName;
}

return displayName + " (" + name + ")";
}

// <display-name> (<name>) OR simply <name> if there's no display name
public static String getDisplayNameAndName(ObjectReferenceType ref) {
return getDisplayNameOrName(ref, true);
Expand Down Expand Up @@ -4745,7 +4760,7 @@ public static void claimWorkItemActionPerformed(CaseWorkItemType workItemToClaim
} catch (ObjectNotFoundException | SecurityViolationException | RuntimeException | SchemaException |
ObjectAlreadyExistsException | CommunicationException | ConfigurationException |
ExpressionEvaluationException e) {
result.recordPartialError(pageBase.createStringResource("pageWorkItems.message.partialError.claimed").getString(), e);
result.recordPartialError(pageBase.createStringResource("pageWorkItems.message.partialError.released").getString(), e);
}
if (mainResult.isUnknown()) {
mainResult.recomputeStatus();
Expand All @@ -4763,6 +4778,34 @@ public static void claimWorkItemActionPerformed(CaseWorkItemType workItemToClaim

}

public static void releaseWorkItemActionPerformed(CaseWorkItemType workItemToClaim,
String operation, AjaxRequestTarget target, PageBase pageBase) {
Task task = pageBase.createSimpleTask(operation);
OperationResult mainResult = task.getResult();
CaseService caseService = pageBase.getCaseService();
OperationResult result = mainResult.createSubresult(operation);

try {
caseService.releaseWorkItem(WorkItemId.of(workItemToClaim), task, result);
result.computeStatusIfUnknown();
} catch (ObjectNotFoundException | SecurityViolationException | RuntimeException | SchemaException |
ObjectAlreadyExistsException | CommunicationException | ConfigurationException |
ExpressionEvaluationException e) {
result.recordPartialError(pageBase.createStringResource("pageWorkItems.message.partialError.released").getString(), e);
}
if (mainResult.isUnknown()) {
mainResult.recomputeStatus();
}

if (mainResult.isSuccess()) {
mainResult.recordStatus(OperationResultStatus.SUCCESS,
pageBase.createStringResource("pageWorkItems.message.success.simple.released").getString());
}

pageBase.showResult(mainResult);
target.add(pageBase);
}

public static void assumePowerOfAttorneyIfRequested(OperationResult result, PrismObject<UserType> powerDonor, PageBase pageBase) {
if (powerDonor != null) {
WebModelServiceUtils.assumePowerOfAttorney(powerDonor, pageBase.getModelInteractionService(), pageBase.getTaskManager(), result);
Expand Down Expand Up @@ -5370,7 +5413,7 @@ public static <C extends Containerable> GuiObjectListViewType getPrincipalUserOb
}

public static <T> DropDownChoicePanel createDropDownChoices(String id, IModel<DisplayableValue<T>> model,
IModel<List<DisplayableValue<T>>> choices, boolean allowNull) {
IModel<List<DisplayableValue<T>>> choices, boolean allowNull) {
return new DropDownChoicePanel(id, model, choices, new DisplayableChoiceRenderer(), allowNull);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ private void initTimestampForAudit(Search<C> search) {
&& !isViewForDashboard && !isPreview) {
Date todayDate = Date.from(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant());
timestampItem.setSingleDate(MiscUtil.asXMLGregorianCalendar(todayDate));
timestampItem.setInterval(true);
}
}

Expand Down

0 comments on commit 48058bb

Please sign in to comment.