diff --git a/gui/admin-gui-en-US/src/main/resources/com/evolveum/midpoint/web/page/forgetpassword/PageMyPasswordQuestions_en_US.utf8.properties b/gui/admin-gui-en-US/src/main/resources/com/evolveum/midpoint/web/page/admin/home/PageMyPasswordQuestions_en_US.utf8.properties similarity index 100% rename from gui/admin-gui-en-US/src/main/resources/com/evolveum/midpoint/web/page/forgetpassword/PageMyPasswordQuestions_en_US.utf8.properties rename to gui/admin-gui-en-US/src/main/resources/com/evolveum/midpoint/web/page/admin/home/PageMyPasswordQuestions_en_US.utf8.properties diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DatePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DatePanel.java index 515026a54e2..9689d0ab939 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DatePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DatePanel.java @@ -37,7 +37,6 @@ public DatePanel(String id, IModel model) { DateInput date = new DateInput(ID_INPUT, new XmlGregorianCalendarModel(model)); add(date); } - @Override public FormComponent getBaseFormComponent() { return (FormComponent) get(ID_INPUT); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java index 46ede247258..b729f712029 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java @@ -384,10 +384,14 @@ private List createResourceContainerWrapper(PrismObject r public void populateItem(Item> cellItem, String componentId, IModel rowModel) { // TODO Auto-generated method stub - CheckBoxPanel checkBox = new CheckBoxPanel(componentId, new PropertyModel(rowModel, getPropertyExpression()), new PropertyModel(rowModel, getPropertyExpression())); + CheckBoxPanel checkBox = new CheckBoxPanel(componentId, new PropertyModel(rowModel, getPropertyExpression()), new Model(true)); cellItem.add(checkBox); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java index 2de38a6ea79..a95caa881d6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/component/RunReportPopupPanel.java @@ -1,6 +1,7 @@ package com.evolveum.midpoint.web.page.admin.reports.component; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.xml.datatype.XMLGregorianCalendar; @@ -10,15 +11,19 @@ import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; +import org.apache.wicket.datetime.markup.html.form.DateTextField; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.form.FormComponent; +import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; +import com.evolveum.midpoint.audit.api.AuditEventStage; +import com.evolveum.midpoint.audit.api.AuditEventType; import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismContainerValue; @@ -30,13 +35,16 @@ import com.evolveum.midpoint.report.api.ReportConstants; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.util.MiscUtil; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.DateInput; import com.evolveum.midpoint.web.component.data.TablePanel; import com.evolveum.midpoint.web.component.data.column.EditablePropertyColumn; +import com.evolveum.midpoint.web.component.input.DatePanel; import com.evolveum.midpoint.web.component.input.DropDownChoicePanel; import com.evolveum.midpoint.web.component.input.TextPanel; +import com.evolveum.midpoint.web.component.prism.InputPanel; import com.evolveum.midpoint.web.component.util.ListDataProvider; import com.evolveum.midpoint.web.component.util.LoadableModel; import com.evolveum.midpoint.web.component.util.SimplePanel; @@ -44,6 +52,8 @@ import com.evolveum.midpoint.web.page.admin.reports.dto.JasperReportParameterDto; import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDto; import com.evolveum.midpoint.web.util.WebMiscUtil; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventStageType; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventTypeType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportParameterType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType; @@ -138,7 +148,7 @@ public void populateItem(Item> cellItem final IModel rowModel) { Component component = createTypedInputPanel(componentId, rowModel, getPropertyExpression()); cellItem.add(component); - cellItem.setOutputMarkupId(true); +// cellItem.setOutputMarkupId(true); } }); @@ -161,18 +171,37 @@ private Component createTypedInputPanel(String componentId, final IModel(model, expression))); - } - TextPanel panel = new TextPanel(componentId, new PropertyModel(model, expression)); - - FormComponent component = panel.getBaseFormComponent(); - component.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); + panel = new DatePanel(componentId, new PropertyModel(model, expression)); +// c.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); +// FormComponent component = date.getBaseFormComponent(); +// component.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); +// return date; +// return new DateInput(componentId, new XmlGregorianCalendarModel(new PropertyModel(model, expression))); + } else { + panel = new TextPanel(componentId, new PropertyModel(model, expression)); + } + List components = panel.getFormComponents(); + for (FormComponent component : components){ + Component c = component.get("date"); + if (c != null){ + c.add(new AjaxFormComponentUpdatingBehavior("change") { + + @Override + protected void onUpdate(AjaxRequestTarget target) { + model.getObject().setValue(MiscUtil.asXMLGregorianCalendar((Date) getFormComponent().getConvertedInput())); + int i = 0; + } + }); + } + component.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); + } return panel; } @@ -194,16 +223,26 @@ private void runConfirmPerformed(AjaxRequestTarget target, IModel mod continue; } QName typeName = null; - if (XmlTypeConverter.canConvert(paramDto.getType())){ - typeName = XsdTypeMapper.toXsdType(paramDto.getType()); + Object realValue = paramDto.getValue(); + Class paramClass = paramDto.getType(); + if (XmlTypeConverter.canConvert(paramClass)){ + typeName = XsdTypeMapper.toXsdType(paramClass); } else { - typeName = getPrismContext().getBeanConverter().determineTypeForClass(paramDto.getType()); - } + + if (AuditEventType.class.isAssignableFrom(paramClass)){ + paramClass = AuditEventTypeType.class; + realValue = AuditEventType.fromAuditEventType((AuditEventType)realValue); + } else if (AuditEventStage.class.isAssignableFrom(paramClass)){ + paramClass = AuditEventStageType.class; + realValue = AuditEventStage.fromAuditEventStage((AuditEventStage)realValue); + } + typeName = getPrismContext().getBeanConverter().determineTypeForClass(paramClass); + } PrismPropertyDefinition def = new PrismPropertyDefinition<>(new QName(ReportConstants.NS_EXTENSION, paramDto.getName()), typeName, getPrismContext()); def.setDynamic(true); def.setRuntimeSchema(true); PrismProperty prop = def.instantiate(); - prop.addRealValue(paramDto.getValue()); + prop.addRealValue(realValue); reportParamValue.add(prop); //setPropertyRealValue(new QName(ReportConstants.NS_EXTENSION, paramDto.getName()), paramDto.getValue(), getPrismContext()); } @@ -228,7 +267,7 @@ protected void runConfirmPerformed(AjaxRequestTarget target, ReportType reportTy private static class EmptyOnBlurAjaxFormUpdatingBehaviour extends AjaxFormComponentUpdatingBehavior { public EmptyOnBlurAjaxFormUpdatingBehaviour() { - super("onBlur"); + super("change"); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/forgetpassword/PageForgetPassword.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/forgetpassword/PageForgetPassword.properties new file mode 100644 index 00000000000..8fce0ef1fcb --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/forgetpassword/PageForgetPassword.properties @@ -0,0 +1,22 @@ +# +# Copyright (c) 2010-2013 Evolveum +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +page.title=Forgot Password +PageForgetPassword.resetPassword=Reset Password +PageForgetPassword.username=Username +PageForgetPassword.password=Password +PageForgetPassword.email=E-mail +pageForgetPassword.message.usernotfound=User Not Found diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties index 73a20f309b5..8408bca6d9c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties @@ -108,6 +108,19 @@ AuditEventType.WORK_ITEM=Work item AuditEventType.WORKFLOW_PROCESS_INSTANCE=Workflow process instance AuditEventType.RECONCILIATION=Reconciliation +AuditEventTypeType.null=All +AuditEventTypeType.GET_OBJECT=Get object +AuditEventTypeType.ADD_OBJECT=Add object +AuditEventTypeType.MODIFY_OBJECT=Modify object +AuditEventTypeType.DELETE_OBJECT=Delete object +AuditEventTypeType.EXECUTE_CHANGES_RAW=Execute changes raw +AuditEventTypeType.SYNCHRONIZATION=Synchronization +AuditEventTypeType.CREATE_SESSION=Create session +AuditEventTypeType.TERMINATE_SESSION=Terminate session +AuditEventTypeType.WORK_ITEM=Work item +AuditEventTypeType.WORKFLOW_PROCESS_INSTANCE=Workflow process instance +AuditEventTypeType.RECONCILIATION=Reconciliation + ExportType.PDF=PDF ExportType.CSV=CSV ExportType.XML=XML diff --git a/gui/admin-gui/src/main/resources/initial-objects/090-report-audit.xml b/gui/admin-gui/src/main/resources/initial-objects/090-report-audit.xml index 083d5b58e5b..f1e9e0ba4f2 100644 --- a/gui/admin-gui/src/main/resources/initial-objects/090-report-audit.xml +++ b/gui/admin-gui/src/main/resources/initial-objects/090-report-audit.xml @@ -1,17 +1,16 @@ - - Audit logs report + + Audit logs report Report made from audit records. true - + UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQUpDVHh6ZEhsc1pTQm1iMjUwVG1GdFpUMGlSR1ZxWVZaMUlGTmhibk1pSUdadmJuUlRhWHBsUFNJeE1DSWdhRUZzYVdkdVBTSk1aV1owSWlCcGMwUmxabUYxYkhROUluUnlkV1VpSUdselVHUm1SVzFpWldSa1pXUTlJblJ5ZFdVaUlBMEtDUWtKQ1NBZ0lHNWhiV1U5SWtKaGMyVWlJSEJrWmtWdVkyOWthVzVuUFNKSlpHVnVkR2wwZVMxSUlpQndaR1pHYjI1MFRtRnRaVDBpUkdWcVlWWjFVMkZ1Y3k1MGRHWWlJSFpCYkdsbmJqMGlUV2xrWkd4bElqNE5DZ2tKQ1R3dmMzUjViR1UrRFFvSkNRazhjM1I1YkdVZ1ltRmphMk52Ykc5eVBTSWpNalkzT1RrMElpQm1iMjUwVTJsNlpUMGlNallpSUdadmNtVmpiMnh2Y2owaUkwWkdSa1pHUmlJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRiMlJsUFNKUGNHRnhkV1VpSUc1aGJXVTlJbFJwZEd4bElpQnpkSGxzWlQwaVFtRnpaU0l2UGlBTkNna0pDVHh6ZEhsc1pTQm1iMjUwVTJsNlpUMGlNVElpSUdadmNtVmpiMnh2Y2owaUl6QXdNREF3TUNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpVUdGblpTQm9aV0ZrWlhJaURRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdVOUlrSmhjMlVpTHo0TkNna0pDVHh6ZEhsc1pTQmlZV05yWTI5c2IzSTlJaU16TXpNek16TWlJR1p2Ym5SVGFYcGxQU0l4TWlJZ1ptOXlaV052Ykc5eVBTSWpSa1pHUmtaR0lpQm9RV3hwWjI0OUlrTmxiblJsY2lJTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBjMFJsWm1GMWJIUTlJbVpoYkhObElpQnRiMlJsUFNKUGNHRnhkV1VpSUc1aGJXVTlJa052YkhWdGJpQm9aV0ZrWlhJaUlITjBlV3hsUFNKQ1lYTmxJaTgrRFFvSkNRazhjM1I1YkdVZ2FYTkNiMnhrUFNKbVlXeHpaU0lnYVhORVpXWmhkV3gwUFNKbVlXeHpaU0lnYm1GdFpUMGlSR1YwWVdsc0lpQnpkSGxzWlQwaVFtRnpaU0l2UGcwS0NRa0pQSE4wZVd4bElHWnZiblJUYVhwbFBTSTVJaUJtYjNKbFkyOXNiM0k5SWlNd01EQXdNREFpSUdselJHVm1ZWFZzZEQwaVptRnNjMlVpSUc1aGJXVTlJbEJoWjJVZ1ptOXZkR1Z5SWcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBlV3hsUFNKQ1lYTmxJaTgrRFFvSkNUd3ZhbUZ6Y0dWeVZHVnRjR3hoZEdVKw== landscape xls - \ No newline at end of file + diff --git a/gui/admin-gui/src/main/resources/initial-objects/110-report-user-list.xml b/gui/admin-gui/src/main/resources/initial-objects/110-report-user-list.xml index 6b3713a53e9..2d1e6dba7fa 100644 --- a/gui/admin-gui/src/main/resources/initial-objects/110-report-user-list.xml +++ b/gui/admin-gui/src/main/resources/initial-objects/110-report-user-list.xml @@ -22,7 +22,7 @@ account - + UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQUpDVHh6ZEhsc1pTQm1iMjUwVTJsNlpUMGlNVEFpSUdoQmJHbG5iajBpVEdWbWRDSWdhWE5FWldaaGRXeDBQU0owY25WbElpQnBjMUJrWmtWdFltVmtaR1ZrUFNKbVlXeHpaU0lnYm1GdFpUMGlRbUZ6WlNJTkNna0pDUWtnSUNCd1pHWkZibU52WkdsdVp6MGlRM0F4TWpVeUlnMEtDUWtKQ1NBZ0lIQmtaa1p2Ym5ST1lXMWxQU0pJWld4MlpYUnBZMkVpRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RrRnNhV2R1UFNKTmFXUmtiR1VpTHo0TkNna0pDVHh6ZEhsc1pTQmlZV05yWTI5c2IzSTlJaU15TmpjNU9UUWlJR1p2Ym5SVGFYcGxQU0l5TmlJZ1ptOXlaV052Ykc5eVBTSWpSa1pHUmtaR0lpQnBjMFJsWm1GMWJIUTlJbVpoYkhObElnMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzF2WkdVOUlrOXdZWEYxWlNJTkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVZVzFsUFNKVWFYUnNaU0lOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRIbHNaVDBpUW1GelpTSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqTURBd01EQXdJaUJwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ1WVcxbFBTSlFZV2RsSUdobFlXUmxjaUlOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRIbHNaVDBpUW1GelpTSXZQZzBLQ1FrSlBITjBlV3hsSUdKaFkydGpiMnh2Y2owaUl6TXpNek16TXlJZ1ptOXVkRk5wZW1VOUlqRXlJaUJtYjNKbFkyOXNiM0k5SWlOR1JrWkdSa1lpSUdoQmJHbG5iajBpUTJWdWRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdselJHVm1ZWFZzZEQwaVptRnNjMlVpRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXOWtaVDBpVDNCaGNYVmxJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1aGJXVTlJa052YkhWdGJpQm9aV0ZrWlhJaURRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdVOUlrSmhjMlVpTHo0TkNna0pDVHh6ZEhsc1pTQnBjMEp2YkdROUltWmhiSE5sSWlCcGMwUmxabUYxYkhROUltWmhiSE5sSWlCdVlXMWxQU0pFWlhSaGFXd2lJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdabTl1ZEZOcGVtVTlJamtpSUdadmNtVmpiMnh2Y2owaUl6QXdNREF3TUNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpVUdGblpTQm1iMjkwWlhJaURRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdVOUlrSmhjMlVpTHo0TkNna0pQQzlxWVhOd1pYSlVaVzF3YkdGMFpUND0= landscape xls diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/MidPointPrismContextFactory.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/MidPointPrismContextFactory.java index 1a639ffd12c..9ea9bc5783d 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/MidPointPrismContextFactory.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/MidPointPrismContextFactory.java @@ -122,6 +122,9 @@ private void registerBuiltinSchemas(SchemaRegistry schemaRegistry) throws Schema schemaRegistry.registerPrismDefaultSchemaResource("xml/ns/public/common/common-3.xsd", "c", com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectFactory.class.getPackage()); // declared by default + schemaRegistry.registerPrismSchemaResource("xml/ns/public/common/audit-3.xsd", "aud", + com.evolveum.midpoint.xml.ns._public.common.audit_3.ObjectFactory.class.getPackage()); + schemaRegistry.registerPrismSchemaResource("xml/ns/public/common/api-types-3.xsd", "apti", com.evolveum.midpoint.xml.ns._public.common.api_types_3.ObjectFactory.class.getPackage()); diff --git a/infra/schema/src/main/resources/xml/ns/private/fake/fake-1.wsdl b/infra/schema/src/main/resources/xml/ns/private/fake/fake-1.wsdl index b175284fcc9..1e2d9252732 100644 --- a/infra/schema/src/main/resources/xml/ns/private/fake/fake-1.wsdl +++ b/infra/schema/src/main/resources/xml/ns/private/fake/fake-1.wsdl @@ -54,6 +54,8 @@ schemaLocation="http://prism.evolveum.com/xml/ns/public/query-3"/> + diff --git a/infra/schema/src/main/resources/xml/ns/public/common/audit-3.xsd b/infra/schema/src/main/resources/xml/ns/public/common/audit-3.xsd new file mode 100644 index 00000000000..b51348298ce --- /dev/null +++ b/infra/schema/src/main/resources/xml/ns/public/common/audit-3.xsd @@ -0,0 +1,324 @@ + + + + + + + + + Schema for audit event serialization. + + Version: 3.1.1 + Recommended namespace prefix: audit + + + + + + + Importing the schema of XSD schema definition explicitly. This causes that we can use "strict" matching + for the xsd:schema elements used in runtime. + + + + + + + + Common midPoint schema. + + + + + + + + Common midPoint annotations used in various XSD schemas. + + + + + + + + Prism data types. + + + + + + + + Audit event record describes a single event (usually data change) in a format suitable for audit. + + + + + + + Timestamp when the event occured. + + + + + + + Unique identification of the event. + + + + + + + Identitification of (interactive) session in which the event occured. + + + + + + + TODO + + + + + + + TODO + + + + + + + TODO + + + + + + + TODO + + + c:UserType + + + + + + + TODO + + + + + + + TODO + + + c:UserType + + + + + + + TODO + + + + + + + TODO + + + + + + + + TODO + + + + + + + Operation outcome (success, failure) + + + + + + + result (e.g. number of entries, returned object, business result of workflow task or process instance - approved, rejected) + + + + + + + TODO + + + + + + + TODO + + + + + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/model/report-api/src/main/java/com/evolveum/midpoint/report/api/ReportService.java b/model/report-api/src/main/java/com/evolveum/midpoint/report/api/ReportService.java index 9a2ab343e3b..be7c18b190f 100644 --- a/model/report-api/src/main/java/com/evolveum/midpoint/report/api/ReportService.java +++ b/model/report-api/src/main/java/com/evolveum/midpoint/report/api/ReportService.java @@ -5,6 +5,7 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.audit.api.AuditEventRecord; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.GetOperationOptions; @@ -27,6 +28,6 @@ public interface ReportService { public Collection> evaluateScript(String script, Map parameters) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException; - + public Collection evaluateAuditScript(String script, Map parameters) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException; } diff --git a/model/report-ds-impl/src/main/java/com/evolveum/midpoint/report/ds/impl/MidPointQueryExecutor.java b/model/report-ds-impl/src/main/java/com/evolveum/midpoint/report/ds/impl/MidPointQueryExecutor.java index 9f9d39999e7..a1ad0b88c68 100644 --- a/model/report-ds-impl/src/main/java/com/evolveum/midpoint/report/ds/impl/MidPointQueryExecutor.java +++ b/model/report-ds-impl/src/main/java/com/evolveum/midpoint/report/ds/impl/MidPointQueryExecutor.java @@ -14,11 +14,13 @@ import net.sf.jasperreports.engine.JRValueParameter; import net.sf.jasperreports.engine.JasperReportsContext; import net.sf.jasperreports.engine.base.JRBaseParameter; +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.fill.JRFillParameter; import net.sf.jasperreports.engine.query.JRAbstractQueryExecuter; import org.apache.commons.lang.StringUtils; +import com.evolveum.midpoint.audit.api.AuditEventRecord; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.prism.query.ObjectQuery; @@ -81,6 +83,29 @@ private Map getParameters(){ return expressionParameters; } + private Map getPromptingParameters(){ + JRParameter[] params = dataset.getParameters(); + Map expressionParameters = new HashMap(); + for (JRParameter param : params){ + if (param.isSystemDefined()){ + continue; + } + if (!param.isForPrompting()){ + continue; + } + LOGGER.trace(((JRBaseParameter)param).getName()); + Object v = getParameterValue(param.getName()); + try{ + expressionParameters.put(new QName(param.getName()), new PrismPropertyValue(v)); + } catch (Exception e){ + //just skip properties that are not important for midpoint + } + + LOGGER.trace("p.val: {}", v); + } + return expressionParameters; + } + @Override protected void parseQuery() { // TODO Auto-generated method stub @@ -153,7 +178,12 @@ public JRDataSource createDatasource() throws JRException { if (query != null){ results = reportService.searchObjects(query, SelectorOptions.createCollection(GetOperationOptions.createRaw())); } else { - results = reportService.evaluateScript(script, getParameters()); + if (script.contains("AuditEventRecord")){ + Collection audtiEventRecords = reportService.evaluateAuditScript(script, getPromptingParameters()); + return new JRBeanCollectionDataSource(audtiEventRecords); + } else { + results = reportService.evaluateScript(script, getParameters()); + } } } catch (SchemaException | ObjectNotFoundException | SecurityViolationException | CommunicationException | ConfigurationException | ExpressionEvaluationException e) { diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java index 77199d57007..9337ad72f2e 100644 --- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java +++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportFunctions.java @@ -18,8 +18,11 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; import javax.xml.namespace.QName; @@ -29,6 +32,8 @@ import ch.qos.logback.classic.Logger; import com.evolveum.midpoint.audit.api.AuditEventRecord; +import com.evolveum.midpoint.audit.api.AuditEventStage; +import com.evolveum.midpoint.audit.api.AuditEventType; import com.evolveum.midpoint.audit.api.AuditService; import com.evolveum.midpoint.model.api.ModelService; import com.evolveum.midpoint.prism.PrismContainer; @@ -50,6 +55,8 @@ import com.evolveum.midpoint.util.exception.SecurityViolationException; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventStageType; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventTypeType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; @@ -203,6 +210,17 @@ public List searchAuditRecords(String query, Map(); } + Map resultSet = new HashMap(); + Set> paramSet = params.entrySet(); + for (Entry p : paramSet){ + if (p.getValue() instanceof AuditEventTypeType){ + resultSet.put(p.getKey(), AuditEventType.toAuditEventType((AuditEventTypeType) p.getValue())); + } else if (p.getValue() instanceof AuditEventStageType){ + resultSet.put(p.getKey(), AuditEventStage.toAuditEventStage((AuditEventStageType) p.getValue())); + } else { + resultSet.put(p.getKey(), p.getValue()); + } + } return auditService.listRecords(query, params); } diff --git a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportServiceImpl.java b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportServiceImpl.java index 9fdd57b52b3..63b8514a59b 100644 --- a/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportServiceImpl.java +++ b/model/report-impl/src/main/java/com/evolveum/midpoint/report/impl/ReportServiceImpl.java @@ -2,8 +2,11 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; import javax.xml.namespace.QName; @@ -12,6 +15,7 @@ import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; +import com.evolveum.midpoint.audit.api.AuditEventRecord; import com.evolveum.midpoint.audit.api.AuditService; import com.evolveum.midpoint.model.api.ModelService; import com.evolveum.midpoint.model.common.expression.ExpressionFactory; @@ -23,6 +27,7 @@ import com.evolveum.midpoint.prism.Objectable; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.PrismPropertyValue; import com.evolveum.midpoint.prism.parser.QueryConvertor; import com.evolveum.midpoint.prism.query.InOidFilter; import com.evolveum.midpoint.prism.query.ObjectFilter; @@ -172,6 +177,9 @@ public Collection> evaluateScript(String scrip ExpressionVariables variables = new ExpressionVariables(); variables.addVariableDefinitions(parameters); + //special variable for audit report + variables.addVariableDefinition(new QName("auditParams"), getConvertedParams(parameters)); + Task task = taskManager.createTaskInstance(ReportService.class.getName() + ".searchObjects()"); OperationResult parentResult = task.getResult(); @@ -184,8 +192,12 @@ public Collection> evaluateScript(String scrip if (Collection.class.isAssignableFrom(o.getClass())) { Collection resultSet = (Collection) o; if (resultSet != null && !resultSet.isEmpty()){ - if (resultSet.iterator().next() instanceof PrismObject){ - results.addAll((Collection>) o); + for (Object obj : resultSet){ + if (obj instanceof PrismObject){ + results.add((PrismObject) obj); + } else if (obj instanceof Objectable){ + results.add(((Objectable) obj).asPrismObject()); + } } } @@ -197,6 +209,66 @@ public Collection> evaluateScript(String scrip return results; } + public Collection evaluateAuditScript(String script, Map parameters) throws SchemaException, ExpressionEvaluationException, ObjectNotFoundException{ + Collection results = new ArrayList(); + +// + ExpressionVariables variables = new ExpressionVariables(); +// variables.addVariableDefinitions(parameters); +// + //special variable for audit report + variables.addVariableDefinition(new QName("auditParams"), getConvertedParams(parameters)); + + Task task = taskManager.createTaskInstance(ReportService.class.getName() + ".searchObjects()"); + OperationResult parentResult = task.getResult(); + + Collection functions = createFunctionLibraries(); + + Jsr223ScriptEvaluator scripts = new Jsr223ScriptEvaluator("Groovy", prismContext, prismContext.getDefaultProtector()); + Object o = scripts.evaluateReportScript(script, variables, objectResolver, functions, "desc", parentResult); + if (o != null){ + + if (Collection.class.isAssignableFrom(o.getClass())) { + Collection resultSet = (Collection) o; + if (resultSet != null && !resultSet.isEmpty()){ + for (Object obj : resultSet){ + if (!(obj instanceof AuditEventRecord)){ + LOGGER.warn("Skipping result, not an audit event record " + obj); + continue; + } + results.add((AuditEventRecord) obj); + } + + } + + } else { + results.add((AuditEventRecord) o); + } + } + + return results; + } + + private Map getConvertedParams(Map parameters){ + if (parameters == null){ + return null; + } + + Map resultParams = new HashMap(); + Set> paramEntries = parameters.entrySet(); + for (Entry e : paramEntries){ + if (e.getValue() instanceof PrismPropertyValue){ + resultParams.put(e.getKey().getLocalPart(), ((PrismPropertyValue) e.getValue()).getValue()); + } else { + resultParams.put(e.getKey().getLocalPart(), e.getValue()); + } + } + + return resultParams; + } + + + private Collection createFunctionLibraries(){ FunctionLibrary functionLib = ExpressionUtil.createBasicFunctionLibrary(prismContext, prismContext.getDefaultProtector()); FunctionLibrary midPointLib = new FunctionLibrary(); diff --git a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java index 5a07d369e01..779159846ae 100644 --- a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java +++ b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2014 Evolveum + * Copyright (c) 2010-2015 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,12 +31,15 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; /** - * @author semancik + * Audit event record describes a single event (usually data change) in a format suitable for audit. + * + * @author Radovan Semancik * */ public class AuditEventRecord implements DebugDumpable { /** + * Timestamp when the event occured. * Timestamp in millis. */ private Long timestamp; @@ -46,7 +49,9 @@ public class AuditEventRecord implements DebugDumpable { */ private String eventIdentifier; - // session ID + /** + * Identitification of (interactive) session in which the event occured. + */ private String sessionIdentifier; // channel???? (e.g. web gui, web service, ...) diff --git a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventStage.java b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventStage.java index dea47c3ffc2..7d242ef2d4d 100644 --- a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventStage.java +++ b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventStage.java @@ -15,6 +15,9 @@ */ package com.evolveum.midpoint.audit.api; +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventStageType; +import com.itextpdf.text.pdf.PdfStructTreeController.returnType; + /** * @author semancik * @@ -24,5 +27,35 @@ public enum AuditEventStage { REQUEST, EXECUTION; + + public static AuditEventStage toAuditEventStage(AuditEventStageType stage){ + if (stage == null){ + return null; + } + + switch (stage){ + case EXECUTION : + return AuditEventStage.EXECUTION; + case REQUEST: + return AuditEventStage.REQUEST; + default: + throw new IllegalArgumentException("Unknown audit event stage: " + stage); + } + } + + public static AuditEventStageType fromAuditEventStage(AuditEventStage stage){ + if (stage == null){ + return null; + } + + switch (stage){ + case EXECUTION : + return AuditEventStageType.EXECUTION; + case REQUEST: + return AuditEventStageType.REQUEST; + default: + throw new IllegalArgumentException("Unknown audit event stage: " + stage); + } + } } diff --git a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventType.java b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventType.java index 6601176ccd0..e1412a5850f 100644 --- a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventType.java +++ b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventType.java @@ -15,6 +15,10 @@ */ package com.evolveum.midpoint.audit.api; +import javax.xml.namespace.QName; + +import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventTypeType; + /** * @author semancik * @@ -51,7 +55,7 @@ public enum AuditEventType { WORKFLOW_PROCESS_INSTANCE, - RECONCILIATION + RECONCILIATION; /** * Queury session, modify session @@ -66,5 +70,75 @@ public enum AuditEventType { */ // backup, restores + + public static AuditEventType toAuditEventType(AuditEventTypeType event){ + if (event == null){ + return null; + } + + switch (event){ + case ADD_OBJECT: + return AuditEventType.ADD_OBJECT; + case CREATE_SESSION: + return AuditEventType.CREATE_SESSION; + case DELETE_OBJECT: + return AuditEventType.DELETE_OBJECT; + case EXECUTE_CHANGES_RAW: + return AuditEventType.EXECUTE_CHANGES_RAW; + case GET_OBJECT: + return AuditEventType.GET_OBJECT; + case MODIFY_OBJECT: + return AuditEventType.MODIFY_OBJECT; + case RECONCILIATION: + return AuditEventType.RECONCILIATION; + case SYNCHRONIZATION: + return AuditEventType.SYNCHRONIZATION; + case TERMINATE_SESSION: + return AuditEventType.TERMINATE_SESSION; + case WORK_ITEM: + return AuditEventType.WORK_ITEM; + case WORKFLOW_PROCESS_INSTANCE: + return AuditEventType.WORKFLOW_PROCESS_INSTANCE; + default: + throw new IllegalArgumentException("Unknown audit event type: " + event); + + } + + } + + public static AuditEventTypeType fromAuditEventType(AuditEventType event){ + if (event == null){ + return null; + } + + switch (event){ + case ADD_OBJECT: + return AuditEventTypeType.ADD_OBJECT; + case CREATE_SESSION: + return AuditEventTypeType.CREATE_SESSION; + case DELETE_OBJECT: + return AuditEventTypeType.DELETE_OBJECT; + case EXECUTE_CHANGES_RAW: + return AuditEventTypeType.EXECUTE_CHANGES_RAW; + case GET_OBJECT: + return AuditEventTypeType.GET_OBJECT; + case MODIFY_OBJECT: + return AuditEventTypeType.MODIFY_OBJECT; + case RECONCILIATION: + return AuditEventTypeType.RECONCILIATION; + case SYNCHRONIZATION: + return AuditEventTypeType.SYNCHRONIZATION; + case TERMINATE_SESSION: + return AuditEventTypeType.TERMINATE_SESSION; + case WORK_ITEM: + return AuditEventTypeType.WORK_ITEM; + case WORKFLOW_PROCESS_INSTANCE: + return AuditEventTypeType.WORKFLOW_PROCESS_INSTANCE; + default: + throw new IllegalArgumentException("Unknown audit event type: " + event); + + } + + } } diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java index 0c685a594e8..410f7c59514 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java @@ -17,10 +17,14 @@ package com.evolveum.midpoint.repo.sql; import com.evolveum.midpoint.audit.api.AuditEventRecord; +import com.evolveum.midpoint.audit.api.AuditEventStage; +import com.evolveum.midpoint.audit.api.AuditEventType; import com.evolveum.midpoint.audit.api.AuditService; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.repo.sql.data.audit.RAuditEventRecord; +import com.evolveum.midpoint.repo.sql.data.audit.RAuditEventStage; +import com.evolveum.midpoint.repo.sql.data.audit.RAuditEventType; import com.evolveum.midpoint.repo.sql.data.audit.RObjectDeltaOperation; import com.evolveum.midpoint.repo.sql.data.common.RObject; import com.evolveum.midpoint.repo.sql.util.DtoTranslationException; @@ -28,6 +32,7 @@ import com.evolveum.midpoint.repo.sql.util.RUtil; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.MiscUtil; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.exception.SystemException; import com.evolveum.midpoint.util.logging.Trace; @@ -47,12 +52,15 @@ import org.hibernate.transform.Transformers; import javax.xml.datatype.Duration; +import javax.xml.datatype.XMLGregorianCalendar; import java.sql.*; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; /** * @author lazyman @@ -103,9 +111,23 @@ private List listRecordsAttempt(String query, Map> paramSet = params.entrySet(); + for (Entry p : paramSet){ + if (p.getValue() == null){ + q.setParameter(p.getKey(), null); + continue; + } + if (XMLGregorianCalendar.class.isAssignableFrom(p.getValue().getClass())){ + q.setParameter(p.getKey(), MiscUtil.asDate((XMLGregorianCalendar) p.getValue())); + } else if (p.getValue() instanceof AuditEventType){ + q.setParameter(p.getKey(), RAuditEventType.toRepo((AuditEventType) p.getValue())); + } else if (p.getValue() instanceof AuditEventStage){ + q.setParameter(p.getKey(), RAuditEventStage.toRepo((AuditEventStage) p.getValue())); + } else { + q.setParameter(p.getKey(), p.getValue()); + } } + // q.setResultTransformer(Transformers.aliasToBean(RAuditEventRecord.class)); List resultList = q.list(); diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryConfiguration.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryConfiguration.java index 6e3d0f38d4b..fc195a6a195 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryConfiguration.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryConfiguration.java @@ -78,15 +78,15 @@ enum Database { public static final String PROPERTY_SKIP_ORG_CLOSURE_STRUCTURE_CHECK = "skipOrgClosureStructureCheck"; public static final String PROPERTY_STOP_ON_ORG_CLOSURE_STARTUP_FAILURE = "stopOnOrgClosureStartupFailure"; - private String database; + private String database = Database.H2.name(); //embedded configuration - private boolean embedded; - private boolean asServer; + private boolean embedded = true; + private boolean asServer = false; private String baseDir; private String fileName; private boolean tcpSSL; - private int port; + private int port = 5437; private boolean dropIfExists; //connection for hibernate private String driverClassName; @@ -96,8 +96,8 @@ enum Database { private String hibernateDialect; private String hibernateHbm2ddl; private String dataSource; - private int minPoolSize; - private int maxPoolSize; + private int minPoolSize = 8; + private int maxPoolSize = 20; private boolean useZip; private TransactionIsolation transactionIsolation; @@ -116,27 +116,27 @@ enum Database { private boolean stopOnOrgClosureStartupFailure; public SqlRepositoryConfiguration(Configuration configuration) { - setDatabase(configuration.getString(PROPERTY_DATABASE, Database.H2.name())); + setDatabase(configuration.getString(PROPERTY_DATABASE, database)); computeDefaultDatabaseParameters(); - setAsServer(configuration.getBoolean(PROPERTY_AS_SERVER, false)); + setAsServer(configuration.getBoolean(PROPERTY_AS_SERVER, embedded)); setBaseDir(configuration.getString(PROPERTY_BASE_DIR, baseDir)); setDriverClassName(configuration.getString(PROPERTY_DRIVER_CLASS_NAME, driverClassName)); - setEmbedded(configuration.getBoolean(PROPERTY_EMBEDDED, true)); + setEmbedded(configuration.getBoolean(PROPERTY_EMBEDDED, embedded)); setHibernateDialect(configuration.getString(PROPERTY_HIBERNATE_DIALECT, hibernateDialect)); setHibernateHbm2ddl(configuration.getString(PROPERTY_HIBERNATE_HBM2DDL, hibernateHbm2ddl)); setJdbcPassword(configuration.getString(PROPERTY_JDBC_PASSWORD, jdbcPassword)); setJdbcUrl(configuration.getString(PROPERTY_JDBC_URL, jdbcUrl)); setJdbcUsername(configuration.getString(PROPERTY_JDBC_USERNAME, jdbcUsername)); - setPort(configuration.getInt(PROPERTY_PORT, 5437)); + setPort(configuration.getInt(PROPERTY_PORT, port)); setTcpSSL(configuration.getBoolean(PROPERTY_TCP_SSL, tcpSSL)); setFileName(configuration.getString(PROPERTY_FILE_NAME, fileName)); setDropIfExists(configuration.getBoolean(PROPERTY_DROP_IF_EXISTS, dropIfExists)); setDataSource(configuration.getString(PROPERTY_DATASOURCE, null)); - setMinPoolSize(configuration.getInt(PROPERTY_MIN_POOL_SIZE, 8)); - setMaxPoolSize(configuration.getInt(PROPERTY_MAX_POOL_SIZE, 20)); - setUseZip(configuration.getBoolean(PROPERTY_USE_ZIP, false)); + setMinPoolSize(configuration.getInt(PROPERTY_MIN_POOL_SIZE, minPoolSize)); + setMaxPoolSize(configuration.getInt(PROPERTY_MAX_POOL_SIZE, maxPoolSize)); + setUseZip(configuration.getBoolean(PROPERTY_USE_ZIP, useZip)); computeDefaultConcurrencyParameters(); @@ -159,10 +159,6 @@ public SqlRepositoryConfiguration(Configuration configuration) { } private void computeDefaultDatabaseParameters() { - if (getDatabase() == null) { - setDatabase(Database.H2.name()); - } - if (Database.H2.name().equalsIgnoreCase(getDatabase())) { embedded = true; hibernateHbm2ddl = "update";