Skip to content

Commit

Permalink
Merge branch 'master' into feature/outbound-multiaccounts
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed May 5, 2020
2 parents 6f3e34c + f7953b1 commit 1d091af
Show file tree
Hide file tree
Showing 41 changed files with 1,167 additions and 378 deletions.
1 change: 0 additions & 1 deletion gui/admin-gui/pom.xml
Expand Up @@ -852,7 +852,6 @@
<!--<version>${spring.boot.version}</version>-->
<configuration>
<fork>true</fork>
<skip>false</skip>
<!-- <jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Dserver.port=${server.port} -Dmidpoint.home=${midpoint.home} -Dmidpoint.schrodinger=${midpoint.schrodinger} -Djavax.net.ssl.trustStore=${javax.net.ssl.trustStore} -Djavax.net.ssl.trustStoreType=${javax.net.ssl.trustStoreType}</jvmArguments> -->
<!-- TODO question: CAN this argument be active by default, or should be there a different profile defined for this? -->
<jvmArguments>-Dserver.port=${server.port} -Dmidpoint.home=${midpoint.home} -Dmidpoint.schrodinger=${midpoint.schrodinger} -Djavax.net.ssl.trustStore=${javax.net.ssl.trustStore} -Djavax.net.ssl.trustStoreType=${javax.net.ssl.trustStoreType}</jvmArguments>
Expand Down
Expand Up @@ -23,19 +23,18 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectList;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -76,7 +75,7 @@ public FocusListInlineMenuHelper(@NotNull Class<F> objectClass, @NotNull PageBas
this.focusListComponent = focusListComponent;
}

public List<InlineMenuItem> createRowActions() {
public List<InlineMenuItem> createRowActions(Class<F> objectType) {
List<InlineMenuItem> menu = new ArrayList<>();
ButtonInlineMenuItem enableItem = new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.enable")) {
private static final long serialVersionUID = 1L;
Expand All @@ -99,7 +98,7 @@ public void onClick(AjaxRequestTarget target) {

@Override
public CompositedIconBuilder getIconCompositedBuilder(){
return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_OBJECT_USER_ICON);
return getDefaultCompositedIconBuilder(getEnableActionDefaultIcon(objectType));
}

@Override
Expand Down Expand Up @@ -139,7 +138,7 @@ public IModel<String> getConfirmationMessageModel(){

@Override
public CompositedIconBuilder getIconCompositedBuilder(){
CompositedIconBuilder builder = getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_OBJECT_USER_ICON);
CompositedIconBuilder builder = getDefaultCompositedIconBuilder(getEnableActionDefaultIcon(objectType));
builder.appendLayerIcon(WebComponentUtil.createIconType(GuiStyleConstants.CLASS_BAN), IconCssStyle.BOTTOM_RIGHT_STYLE);
return builder; }

Expand Down Expand Up @@ -207,6 +206,16 @@ public IModel<String> getConfirmationMessageModel(){
return menu;
}

private String getEnableActionDefaultIcon(Class<F> type){
String iconClass = "";
if (type.equals(RoleType.class)) {
iconClass = GuiStyleConstants.CLASS_OBJECT_ROLE_ICON;
} else if (type.equals(ServiceType.class)){
iconClass = GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON;
}
return iconClass;
}

public void deleteConfirmedPerformed(AjaxRequestTarget target, F selectedObject) {
List<F> objects = getObjectsToActOn(target, selectedObject);
if (objects.isEmpty()) {
Expand Down
Expand Up @@ -75,6 +75,9 @@ private String getStatistics() {
sb.append("Cache performance information:\n")
.append(CachePerformanceInformationUtil.format(CachePerformanceInformationUtil.toCachesPerformanceInformationType(cache)))
.append("\n");
sb.append("Cache performance information (extra - experimental):\n")
.append(CachePerformanceInformationUtil.formatExtra(cache))
.append("\n");
} else {
sb.append("Cache performance information is currently not available."
+ "Please set up cache monitoring in the system configuration.\n\n");
Expand Down
Expand Up @@ -174,6 +174,7 @@ <h3 class="box-title"><wicket:message key="PageAbout.title.jvmProperties"/></h3>
<a class="btn btn-default" wicket:id="testProvisioning"/>
<a class="btn btn-default" wicket:id="checkWorkflowProcesses" />
<a class="btn btn-default" wicket:id="clearCssJsCache" />
<a class="btn btn-default" wicket:id="copyEnvironmentInfo" />
<a class="btn btn-danger" wicket:id="factoryDefault" />
</div>

Expand Down
Expand Up @@ -48,6 +48,7 @@

import com.evolveum.midpoint.repo.cache.RepositoryCache;

import org.apache.catalina.util.ServerInfo;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -77,6 +78,7 @@
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CONFIGURATION_ABOUT_URL,
label = "PageAbout.auth.configAbout.label", description = "PageAbout.auth.configAbout.description")})
public class PageAbout extends PageAdminConfiguration {
private static final long serialVersionUID = 1L;

private static final Trace LOGGER = TraceManager.getTrace(PageAbout.class);

Expand Down Expand Up @@ -116,6 +118,7 @@ public class PageAbout extends PageAdminConfiguration {
private static final String ID_PROVISIONING_DETAIL_NAME = "provisioningDetailName";
private static final String ID_PROVISIONING_DETAIL_VALUE = "provisioningDetailValue";
private static final String ID_JVM_PROPERTIES = "jvmProperties";
private static final String ID_COPY_ENVIRONMENT_INFO = "copyEnvironmentInfo";
private static final String ID_CLEAR_CSS_JS_CACHE = "clearCssJsCache";
private static final String ID_FACTORY_DEFAULT = "factoryDefault";
private static final String ID_NODE_NAME = "nodeName";
Expand All @@ -134,13 +137,15 @@ public class PageAbout extends PageAdminConfiguration {

public PageAbout() {
repoDiagModel = new LoadableModel<RepositoryDiag>(false) {
private static final long serialVersionUID = 1L;

@Override
protected RepositoryDiag load() {
return loadRepoDiagModel();
}
};
provisioningDiagModel = new LoadableModel<ProvisioningDiag>(false) {
private static final long serialVersionUID = 1L;

@Override
protected ProvisioningDiag load() {
Expand All @@ -164,6 +169,7 @@ private void initLayout() {
add(build);

ListView<SystemItem> listSystemItems = new ListView<SystemItem>(ID_LIST_SYSTEM_ITEMS, getItems()) {
private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<SystemItem> item) {
Expand All @@ -189,6 +195,7 @@ protected void populateItem(ListItem<SystemItem> item) {

ListView<LabeledString> additionalDetails = new ListView<LabeledString>(ID_ADDITIONAL_DETAILS,
new PropertyModel<>(repoDiagModel, "additionalDetails")) {
private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<LabeledString> item) {
Expand All @@ -207,6 +214,7 @@ protected void populateItem(ListItem<LabeledString> item) {

ListView<LabeledString> provisioningAdditionalDetails = new ListView<LabeledString>(ID_PROVISIONING_ADDITIONAL_DETAILS,
new PropertyModel<>(provisioningDiagModel, "additionalDetails")) {
private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<LabeledString> item) {
Expand Down Expand Up @@ -260,6 +268,7 @@ protected void populateItem(ListItem<LabeledString> item) {
add(nodeUrl);

Label jvmProperties = new Label(ID_JVM_PROPERTIES, new LoadableModel<String>(false) {
private static final long serialVersionUID = 1L;

@Override
protected String load() {
Expand Down Expand Up @@ -288,6 +297,7 @@ private void addLabel(String id, String propertyName) {
private void initButtons() {
AjaxButton testRepository = new AjaxButton(ID_TEST_REPOSITORY,
createStringResource("PageAbout.button.testRepository")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
Expand All @@ -298,6 +308,7 @@ public void onClick(AjaxRequestTarget target) {

AjaxButton testRepositoryCheckOrgClosure = new AjaxButton(ID_TEST_REPOSITORY_CHECK_ORG_CLOSURE,
createStringResource("PageAbout.button.testRepositoryCheckOrgClosure")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
Expand All @@ -308,6 +319,7 @@ public void onClick(AjaxRequestTarget target) {

AjaxButton reindexRepositoryObjects = new AjaxButton(ID_REINDEX_REPOSITORY_OBJECTS,
createStringResource("PageAbout.button.reindexRepositoryObjects")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
Expand All @@ -318,6 +330,7 @@ public void onClick(AjaxRequestTarget target) {

AjaxButton testProvisioning = new AjaxButton(ID_TEST_PROVISIONING,
createStringResource("PageAbout.button.testProvisioning")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
Expand All @@ -328,6 +341,7 @@ public void onClick(AjaxRequestTarget target) {

AjaxButton checkWorkflowProcesses = new AjaxButton(ID_CHECK_WORKFLOW_PROCESSES,
createStringResource("PageAbout.button.checkWorkflowProcesses")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
Expand All @@ -339,6 +353,7 @@ public void onClick(AjaxRequestTarget target) {

AjaxButton clearCssJsCache = new AjaxButton(ID_CLEAR_CSS_JS_CACHE,
createStringResource("PageAbout.button.clearCssJsCache")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
Expand All @@ -347,8 +362,23 @@ public void onClick(AjaxRequestTarget target) {
};
add(clearCssJsCache);

AjaxButton copyEnvironmentInfo = new AjaxButton(ID_COPY_ENVIRONMENT_INFO,
createStringResource("PageAbout.button.copyEnvironmentInfo")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
copyEnvironmentInfoPerformed(target);
success(createStringResource("PageAbout.button.copyEnvironmentMessage").getString());
target.add(getFeedbackPanel());
}
};
copyEnvironmentInfo.setOutputMarkupId(true);
add(copyEnvironmentInfo);

AjaxButton factoryDefault = new AjaxButton(ID_FACTORY_DEFAULT,
createStringResource("PageAbout.button.factoryDefault")) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
Expand All @@ -358,6 +388,33 @@ public void onClick(AjaxRequestTarget target) {
add(factoryDefault);
}

private void copyEnvironmentInfoPerformed(AjaxRequestTarget target){
StringBuilder sb = new StringBuilder("var $tempInput = document.createElement('INPUT');\n");
sb.append("document.body.appendChild($tempInput);\n");
sb.append("$tempInput.setAttribute('value', '" + getEnvironmentInfo() + "');\n");
sb.append("$tempInput.select();\n");
sb.append("document.execCommand('copy');\n");
sb.append("document.body.removeChild($tempInput);");
target.appendJavaScript(sb.toString());
}

private String getEnvironmentInfo(){
String nodesCount = createStringResource("PageAbout.environmentInfo.nodesCount",
WebModelServiceUtils.countObjects(NodeType.class, null, PageAbout.this)).getString();
Runtime runtime = Runtime.getRuntime();
String processorsCount = createStringResource("PageAbout.environmentInfo.processorsCount", runtime.availableProcessors()).getString();
String totalMemory = createStringResource("PageAbout.environmentInfo.totalMemory", runtime.totalMemory()).getString();
String javaVersion = createStringResource("PageAbout.environmentInfo.javaVersion", System.getProperty("java.version")).getString();
String tomcatVersion = createStringResource("PageAbout.environmentInfo.tomcatVersion", ServerInfo.getServerInfo()).getString();
String mpVersion = createStringResource("PageAbout.environmentInfo.mpVersion",
createStringResource("midpoint.system.version").getString()).getString();
String dbInfo = createStringResource("PageAbout.environmentInfo.databaseInfo",
repoDiagModel.getObject().getDriverShortName() + " " + repoDiagModel.getObject().getDriverVersion()).getString();
String osInfo = createStringResource("PageAbout.environmentInfo.osInfo",
System.getProperty("os.name") + System.getProperty("os.version")).getString();
return nodesCount + processorsCount + totalMemory + javaVersion + tomcatVersion + mpVersion + dbInfo + osInfo;
}

private RepositoryDiag loadRepoDiagModel() {
OperationResult result = new OperationResult(OPERATION_GET_REPO_DIAG);
RepositoryDiag diag = null;
Expand Down Expand Up @@ -402,6 +459,7 @@ private ProvisioningDiag loadProvisioningDiagModel() {

private IModel<List<SystemItem>> getItems() {
return new LoadableModel<List<SystemItem>>(false) {
private static final long serialVersionUID = 1L;

@Override
protected List<SystemItem> load() {
Expand Down
Expand Up @@ -73,7 +73,7 @@ protected IModel<String> getConfirmationMessageModel(ColumnMenuAction action, St

@Override
protected List<InlineMenuItem> createRowActions() {
return listInlineMenuHelper.createRowActions();
return listInlineMenuHelper.createRowActions(getType());
}

@Override
Expand Down
Expand Up @@ -84,7 +84,7 @@ protected List<IColumn<SelectableBean<ServiceType>, String>> initColumns() {

@Override
protected List<InlineMenuItem> createRowActions() {
return listInlineMenuHelper.createRowActions();
return listInlineMenuHelper.createRowActions(getType());
}

@Override
Expand Down
Expand Up @@ -16,18 +16,20 @@

import java.util.*;

import static com.evolveum.midpoint.util.caching.CachePerformanceCollector.isExtra;

import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;

/**
*
*/
public class CachePerformanceInformationUtil {

public static CachesPerformanceInformationType toCachesPerformanceInformationType(
@NotNull Map<String, CachePerformanceCollector.CacheData> performanceMap) {
CachesPerformanceInformationType rv = new CachesPerformanceInformationType();
performanceMap.forEach((cache, info) -> rv.getCache().add(toSingleCachePerformanceInformationType(cache, info)));
return rv;

}

private static SingleCachePerformanceInformationType toSingleCachePerformanceInformationType(String cache,
Expand Down Expand Up @@ -93,4 +95,14 @@ public static String format(CachesPerformanceInformationType information) {
public static String format(Map<String, CachePerformanceCollector.CacheData> performanceMap) {
return performanceMap != null ? format(toCachesPerformanceInformationType(performanceMap)) : "";
}

public static String formatExtra(Map<String, CachePerformanceCollector.CacheData> performanceMap) {
StringBuilder sb = new StringBuilder();
performanceMap.entrySet().stream()
.filter(entry -> isExtra(entry.getKey()))
.sorted(Map.Entry.comparingByKey())
.forEach(entry -> sb.append(String.format("%-30s oversized: %10d stale: %10d", entry.getKey()+":", entry.getValue().overSizedQueries.get(),
entry.getValue().skippedStaleData.get())));
return sb.toString();
}
}
Expand Up @@ -14,7 +14,7 @@
import java.util.concurrent.ConcurrentHashMap;

/**
* @author mederly
* Common supertype for various thread-local caches (parts of RepositoryCache but also others).
*/
public abstract class AbstractThreadLocalCache {

Expand Down

0 comments on commit 1d091af

Please sign in to comment.