Skip to content

Commit

Permalink
more refactoring for debug pages
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Dec 14, 2017
1 parent 4eee48f commit 7e05811
Showing 1 changed file with 51 additions and 49 deletions.
Expand Up @@ -53,7 +53,6 @@
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.util.string.StringValue;

import javax.xml.namespace.QName;
Expand All @@ -65,9 +64,10 @@
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CONFIGURATION_DEBUG_URL,
label = "PageDebugView.auth.debug.label", description = "PageDebugView.auth.debug.description")})
public class PageDebugView extends PageAdminConfiguration {
private static final long serialVersionUID = 1L;

private static final String DOT_CLASS = PageDebugView.class.getName() + ".";
private static final String OPERATION_LOAD_OBJECT = DOT_CLASS + "loadObjectViewObject";
private static final String OPERATION_LOAD_OBJECT = DOT_CLASS + "initObjectViewObject";
private static final String OPERATION_SAVE_OBJECT = DOT_CLASS + "saveObject";
private static final String ID_PLAIN_TEXTAREA = "plain-textarea";
private static final String ID_VIEW_BUTTON_PANEL = "viewButtonPanel";
Expand All @@ -76,7 +76,6 @@ public class PageDebugView extends PageAdminConfiguration {

public static final String PARAM_OBJECT_ID = "objectId";
public static final String PARAM_OBJECT_TYPE = "objectType";
private IModel<ObjectViewDto> objectViewModel;
private AceEditor editor;
private final IModel<Boolean> encrypt = new Model<>(true);
private final IModel<Boolean> saveAsRaw = new Model<>(true);
Expand All @@ -87,28 +86,17 @@ public class PageDebugView extends PageAdminConfiguration {
final Form mainForm = new com.evolveum.midpoint.web.component.form.Form("mainForm");
private String dataLanguage;
private boolean isInitialized = false;
private ObjectViewDto objectViewDto = new ObjectViewDto();

public PageDebugView() {
objectViewModel = new IModel<ObjectViewDto>() {
private static final long serialVersionUID = 1L;

@Override
public ObjectViewDto getObject() {
if (!isInitialized) {
isInitialized = true;
}
return loadObjectViewObject();
}

@Override
public void setObject(ObjectViewDto o) {
}
}

@Override
public void detach() {
}
};
@Override
protected void onInitialize(){
super.onInitialize();
dataLanguage = determineDataLanguage();
initObjectViewObject();
initLayout();
}

Expand All @@ -119,27 +107,27 @@ protected IModel<String> createPageTitleModel() {

@Override
public String getObject() {
if (objectViewModel == null) {
if (objectViewDto == null) {
return "";
}
ObjectViewDto object;
try {
object = objectViewModel.getObject();
} catch (RuntimeException e) {
// e.g. when the object is unreadable
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get object", e);
return "";
}
if (object == null) {
return "";
} else {
return createStringResource("PageDebugView.title", object.getName()).getString();
}
// ObjectViewDto object;
// try {
// object = objectViewModel.getObject();
// } catch (RuntimeException e) {
// // e.g. when the object is unreadable
// LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get object", e);
// return "";
// }
// if (object == null) {
// return "";
// } else {
return createStringResource("PageDebugView.title", objectViewDto.getName()).getString();
// }
}
};
}

private ObjectViewDto loadObjectViewObject() {
private void initObjectViewObject() {
StringValue objectOid = getPageParameters().get(PARAM_OBJECT_ID);
if (objectOid == null || StringUtils.isEmpty(objectOid.toString())) {
getSession().error(getString("pageDebugView.message.oidNotDefined"));
Expand All @@ -148,7 +136,6 @@ private ObjectViewDto loadObjectViewObject() {

Task task = createSimpleTask(OPERATION_LOAD_OBJECT);
OperationResult result = task.getResult(); //todo is this result != null ?
ObjectViewDto dto = null;
try {
MidPointApplication application = PageDebugView.this.getMidpointApplication();

Expand Down Expand Up @@ -186,14 +173,14 @@ private ObjectViewDto loadObjectViewObject() {
PrismContext context = application.getPrismContext();

String lex = context.serializerFor(dataLanguage).serialize(object);
dto = new ObjectViewDto(object.getOid(), WebComponentUtil.getName(object), object, lex);
objectViewDto = new ObjectViewDto(object.getOid(), WebComponentUtil.getName(object), object, lex);

result.recomputeStatus();
} catch (Exception ex) {
result.recordFatalError("Couldn't load object.", ex);
}

if (dto == null) {
if (objectViewDto == null) {
showResult(result);
throw new RestartResponseException(PageDebugList.class);
}
Expand All @@ -204,8 +191,6 @@ private ObjectViewDto loadObjectViewObject() {
showResult(result, false);
throw new RestartResponseException(PageDebugList.class);
}

return dto;
}

private void initLayout() {
Expand Down Expand Up @@ -254,8 +239,7 @@ protected void onUpdate(AjaxRequestTarget target) {
}
});

plainTextarea = new TextArea<>(ID_PLAIN_TEXTAREA,
new PropertyModel<String>(objectViewModel, ObjectViewDto.F_XML));
plainTextarea = new TextArea<>(ID_PLAIN_TEXTAREA, getObjectViewXmlModel());
plainTextarea.setVisible(false);

mainForm.add(plainTextarea);
Expand All @@ -268,7 +252,7 @@ protected void onUpdate(AjaxRequestTarget target) {
}

private void addOrReplaceEditor(){
editor = new AceEditor("aceEditor", new PropertyModel<>(objectViewModel, ObjectViewDto.F_XML));
editor = new AceEditor("aceEditor", getObjectViewXmlModel());
editor.setModeForDataLanguage(dataLanguage);
editor.add(new AjaxFormComponentUpdatingBehavior("blur") {
private static final long serialVersionUID = 1L;
Expand All @@ -288,14 +272,14 @@ private void initViewButton(Form mainForm) {
@Override
protected void onLanguageSwitched(AjaxRequestTarget target, int updatedIndex, String updatedLanguage,
String objectString) {
objectViewModel.getObject().setXml(objectString);
objectViewDto.setXml(objectString);
dataLanguage = updatedLanguage;
addOrReplaceEditor();
target.add(mainForm);
}
@Override
protected String getObjectStringRepresentation() {
return objectViewModel.getObject().getXml();
return objectViewDto.getXml();
}
@Override
protected boolean isValidateSchema() {
Expand Down Expand Up @@ -348,8 +332,7 @@ private boolean isReport(PrismObject object){
}

public void savePerformed(AjaxRequestTarget target) {
ObjectViewDto dto = objectViewModel.getObject();
if (StringUtils.isEmpty(dto.getXml())) {
if (StringUtils.isEmpty(objectViewDto.getXml())) {
error(getString("pageDebugView.message.cantSaveEmpty"));
target.add(getFeedbackPanel());
return;
Expand All @@ -359,7 +342,7 @@ public void savePerformed(AjaxRequestTarget target) {
OperationResult result = task.getResult();
try {

PrismObject<ObjectType> oldObject = dto.getObject();
PrismObject<ObjectType> oldObject = objectViewDto.getObject();
oldObject.revive(getPrismContext());

Holder<Objectable> objectHolder = new Holder<>(null);
Expand Down Expand Up @@ -414,6 +397,25 @@ public void savePerformed(AjaxRequestTarget target) {
}

private void validateObject(OperationResult result, Holder<Objectable> objectHolder) {
parseObject(objectViewModel.getObject().getXml(), objectHolder, dataLanguage, validateSchema.getObject(), false, Objectable.class, result);
parseObject(objectViewDto.getXml(), objectHolder, dataLanguage, validateSchema.getObject(), false, Objectable.class, result);
}

private IModel<String> getObjectViewXmlModel(){
return new IModel<String>() {
@Override
public String getObject() {
return objectViewDto != null ? objectViewDto.getXml() : "";
}

@Override
public void setObject(String s) {
objectViewDto.setXml(s);
}

@Override
public void detach() {

}
};
}
}

0 comments on commit 7e05811

Please sign in to comment.