Skip to content

Commit

Permalink
Merge pull request #1415 from jodygarnett/wicket7-admin
Browse files Browse the repository at this point in the history
Wicket7 admin
  • Loading branch information
jdeolive committed Jan 18, 2016
2 parents 1cc3e32 + dccad61 commit f84f659
Show file tree
Hide file tree
Showing 9 changed files with 137 additions and 107 deletions.
@@ -1,18 +1,19 @@
/* (c) 2014 - 2015 Open Source Geospatial Foundation - all rights reserved
/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.admin;

import java.util.Arrays;
import java.util.List;

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.NumberTextField;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.validation.AbstractFormValidator;
import org.apache.wicket.model.CompoundPropertyModel;
Expand All @@ -29,6 +30,7 @@
* Edits the Coverage configuration parameters
*/
public class CoverageAccessPage extends ServerAdminPage {
private static final long serialVersionUID = -5028265196560034398L;

class PoolSizeValidator extends AbstractFormValidator {

Expand All @@ -45,18 +47,14 @@ public void validate(Form<?> form) {
}

// Getting pool components
final Component maxPoolComponent = form.get("maxPoolSize");
final Component corePoolComponent = form.get("corePoolSize");
final TextField<?> maxPoolField = (TextField<?>) form.get("maxPoolSize");
final TextField<?> corePoolField = (TextField<?>) form.get("corePoolSize");

int maxPool;
int corePool;

// checking limits are properly set
if (maxPoolComponent != null && maxPoolComponent instanceof TextField<?>
&& corePoolComponent != null
&& corePoolComponent instanceof TextField<?>) {
final TextField maxPoolField = (TextField) maxPoolComponent;
final TextField corePoolField = (TextField) corePoolComponent;
if (maxPoolField != null && corePoolField != null) {
final String mp = maxPoolField.getValue();
final String cp = corePoolField.getValue();
if (!(mp == null || cp == null || mp.trim().isEmpty() || cp.trim()
Expand All @@ -76,47 +74,47 @@ public void validate(Form<?> form) {
}

if (maxPool >= 1 && corePool >= 1 && maxPool < corePool) {
form.error(new ParamResourceModel("poolSizeCheck", getPage())
.getString());
form.error(new ParamResourceModel("poolSizeCheck", getPage()).getString());
}
}
}
}
}

public CoverageAccessPage(){
final IModel geoServerModel = getGeoServerModel();
final IModel<?> geoServerModel = getGeoServerModel();

// this invokation will trigger a clone of the CoverageAccessInfo,
// this invocation will trigger a clone of the CoverageAccessInfo,
// which will allow the modification proxy seeing changes on the
// CoverageAccess page with respect to the original CoverageAccessInfo object
final IModel coverageModel = getCoverageAccessModel();
final IModel<CoverageAccessInfo> coverageModel = getCoverageAccessModel();

// form and submit
Form form = new Form("form", new CompoundPropertyModel(coverageModel));
Form<CoverageAccessInfo> form = new Form<CoverageAccessInfo>("form", new CompoundPropertyModel<CoverageAccessInfo>(coverageModel));
add( form );
form.add(new PoolSizeValidator());
// All the fields
TextField corePoolSize = new TextField("corePoolSize");
corePoolSize.add(RangeValidator.minimum(1));
NumberTextField<Integer> corePoolSize = new NumberTextField<Integer>("corePoolSize",Integer.class);
corePoolSize.setMinimum(1);
form.add(corePoolSize);

TextField maxPoolSize = new TextField("maxPoolSize");
TextField<String> maxPoolSize = new TextField<String>("maxPoolSize");
maxPoolSize.add(RangeValidator.minimum(1));
form.add(maxPoolSize);

TextField keepAliveTime = new TextField("keepAliveTime");
TextField<String> keepAliveTime = new TextField<String>("keepAliveTime");
keepAliveTime.add(RangeValidator.minimum(1));
form.add(keepAliveTime);

final DropDownChoice queueType = new DropDownChoice("queueType", Arrays.asList(CoverageAccessInfo.QueueType.values()), new QueueTypeRenderer());
final DropDownChoice<QueueType> queueType = new DropDownChoice<QueueType>("queueType", Arrays.asList(CoverageAccessInfo.QueueType.values()), new QueueTypeRenderer());
form.add(queueType);

TextField imageIOCacheThreshold = new TextField("imageIOCacheThreshold");
TextField<String> imageIOCacheThreshold = new TextField<String>("imageIOCacheThreshold");
imageIOCacheThreshold.add(RangeValidator.minimum(0l));
form.add(imageIOCacheThreshold);

Button submit = new Button("submit", new StringResourceModel("submit", this, null)) {
private static final long serialVersionUID = 4149741045073254811L;
@Override
public void onSubmit() {
GeoServer gs = (GeoServer) geoServerModel.getObject();
Expand All @@ -129,6 +127,7 @@ public void onSubmit() {
form.add(submit);

Button cancel = new Button("cancel") {
private static final long serialVersionUID = -57093747603810865L;
@Override
public void onSubmit() {
doReturn();
Expand All @@ -137,14 +136,23 @@ public void onSubmit() {
form.add(cancel);
}

private class QueueTypeRenderer implements IChoiceRenderer {
/**
* Display and ID mapping adapter for QueueType.
*/
// TODO: consider use of EnumChoiceRenderer<QueueType>
private class QueueTypeRenderer implements IChoiceRenderer<QueueType> {
private static final long serialVersionUID = -702911785346928083L;
public String getDisplayValue(QueueType type) {
return new StringResourceModel(type.name(), CoverageAccessPage.this, null).getString();
}

public Object getDisplayValue(Object object) {
return new StringResourceModel(((QueueType) object).name(), CoverageAccessPage.this, null).getString();
public String getIdValue(QueueType type, int index) {
return type.name();
}

public String getIdValue(Object object, int index) {
return ((QueueType) object).name();
@Override
public QueueType getObject(String id, IModel<? extends List<? extends QueueType>> choices) {
return QueueType.valueOf(id);
}
}
}
Expand Up @@ -62,28 +62,28 @@ public class GlobalSettingsPage extends ServerAdminPage {
public static final ArrayList<String> AVAILABLE_CHARSETS = new ArrayList<String>(Charset.availableCharsets().keySet());

public GlobalSettingsPage() {
final IModel globalInfoModel = getGlobalInfoModel();
final IModel loggingInfoModel = getLoggingInfoModel();
final IModel<GeoServerInfo> globalInfoModel = getGlobalInfoModel();
final IModel<LoggingInfo> loggingInfoModel = getLoggingInfoModel();

CompoundPropertyModel compoundPropertyModel = new CompoundPropertyModel(globalInfoModel);
Form form = new Form("form", compoundPropertyModel);
CompoundPropertyModel<GeoServerInfo> compoundPropertyModel = new CompoundPropertyModel<GeoServerInfo>(globalInfoModel);
Form<GeoServerInfo> form = new Form<GeoServerInfo>("form", compoundPropertyModel);

add(form);

form.add(new CheckBox("verbose"));
form.add(new CheckBox("verboseExceptions"));
form.add(new CheckBox("globalServices"));
form.add(new TextField<Integer>("numDecimals").add(RangeValidator.minimum(0)));
form.add(new DropDownChoice("charset", AVAILABLE_CHARSETS));
form.add(new DropDownChoice<String>("charset", AVAILABLE_CHARSETS));
form.add(new DropDownChoice<ResourceErrorHandling>("resourceErrorHandling", Arrays.asList(ResourceErrorHandling.values()),
new ResourceErrorHandlingRenderer()));
form.add(new TextField("proxyBaseUrl").add(new UrlValidator()));
form.add(new TextField<String>("proxyBaseUrl").add(new UrlValidator()));

logLevelsAppend(form, loggingInfoModel);
form.add(new CheckBox("stdOutLogging", new PropertyModel( loggingInfoModel, "stdOutLogging")));
form.add(new TextField("loggingLocation", new PropertyModel( loggingInfoModel, "location")) );
form.add(new CheckBox("stdOutLogging", new PropertyModel<Boolean>( loggingInfoModel, "stdOutLogging")));
form.add(new TextField<String>("loggingLocation", new PropertyModel<String>( loggingInfoModel, "location")) );

TextField xmlPostRequestLogBufferSize = new TextField("xmlPostRequestLogBufferSize", new PropertyModel(
TextField<String> xmlPostRequestLogBufferSize = new TextField<String>("xmlPostRequestLogBufferSize", new PropertyModel<String>(
globalInfoModel, "xmlPostRequestLogBufferSize"));
xmlPostRequestLogBufferSize.add(RangeValidator.minimum(0));
form.add(xmlPostRequestLogBufferSize);
Expand Down Expand Up @@ -128,7 +128,7 @@ public void onSubmit() {
form.add(cancel);
}

private void logLevelsAppend(Form form, IModel loggingInfoModel) {
private void logLevelsAppend(Form<GeoServerInfo> form, IModel<LoggingInfo> loggingInfoModel) {
// search for *LOGGING.properties files in the data directory
GeoServerResourceLoader loader = GeoServerApplication.get().getBeanOfType(
GeoServerResourceLoader.class);
Expand Down Expand Up @@ -156,11 +156,12 @@ public boolean accept(Resource obj) {
if(logProfiles == null || logProfiles.size() == 0)
logProfiles = DEFAULT_LOG_PROFILES;

form.add(new ListChoice("log4jConfigFile", new PropertyModel(loggingInfoModel,
"level"), logProfiles));
form.add(new ListChoice<String>("log4jConfigFile",
new PropertyModel<String>(loggingInfoModel, "level"), logProfiles));
}

class ResourceErrorHandlingRenderer implements IChoiceRenderer<ResourceErrorHandling> {
private static final long serialVersionUID = 4183327535180465575L;

@Override
public Object getDisplayValue(ResourceErrorHandling object) {
Expand All @@ -172,5 +173,10 @@ public String getIdValue(ResourceErrorHandling object, int index) {
return object.name();
}

@Override
public ResourceErrorHandling getObject(String id,
IModel<? extends List<? extends ResourceErrorHandling>> choices) {
return ResourceErrorHandling.valueOf(id);
}
}
}
Expand Up @@ -7,7 +7,7 @@
import org.apache.wicket.Component;
import org.apache.wicket.extensions.markup.html.form.palette.Palette;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
Expand All @@ -18,16 +18,21 @@
import org.geoserver.web.wicket.ParamResourceModel;

public class JAIEXTPanel extends Panel {
private static final long serialVersionUID = -4274061927074052166L;


public JAIEXTPanel(String id, IModel<JAIInfo> model) {
super(id, model);

PropertyModel<JAIEXTInfo> jaiextModel = new PropertyModel<JAIEXTInfo>(model, "JAIEXTInfo");

Palette jaiextSelector = new Palette("jaiextOps",
@SuppressWarnings({ "rawtypes", "unchecked" })
Palette jaiextSelector = new Palette<String>("jaiextOps",
LiveCollectionModel.set(new PropertyModel(jaiextModel, "JAIOperations")),
LiveCollectionModel.set(new PropertyModel(jaiextModel, "JAIEXTOperations")),
new ChoiceRenderer(), 7, false) {
new JAIChoiceRenderer(), 7, false) {
private static final long serialVersionUID = -4665147378650094510L;

/**
* Override otherwise the header is not i18n'ized
*/
Expand All @@ -48,12 +53,13 @@ public Component newAvailableHeader(final String componentId) {
}


static class ChoiceRenderer implements IChoiceRenderer<String>{

static class JAIChoiceRenderer extends ChoiceRenderer<String> {
private static final long serialVersionUID = -1978519626641784908L;

private static final String ALGEBRIC = "algebric";
private static final String OPERATION_CONST = "operationConst";
private static final String STATS = "Stats";

@Override
public Object getDisplayValue(String object) {
if(object.equalsIgnoreCase(STATS)){
Expand All @@ -71,6 +77,8 @@ public Object getDisplayValue(String object) {
public String getIdValue(String object, int index) {
return object;
}



}
}
29 changes: 19 additions & 10 deletions src/web/core/src/main/java/org/geoserver/web/admin/JAIPage.java
Expand Up @@ -113,18 +113,27 @@ private void addPngEncoderEditor(Form form) {
encoders.remove(PngEncoderType.NATIVE);
}
// create the editor, eventually set a default value
DropDownChoice<JAIInfo.PngEncoderType> editor = new DropDownChoice<JAIInfo.PngEncoderType>("pngEncoderType", encoders, new IChoiceRenderer<JAIInfo.PngEncoderType>() {
DropDownChoice<JAIInfo.PngEncoderType> editor = new DropDownChoice<JAIInfo.PngEncoderType>(
"pngEncoderType", encoders, new IChoiceRenderer<JAIInfo.PngEncoderType>() {
private static final long serialVersionUID = 1L;

@Override
public Object getDisplayValue(PngEncoderType type) {
return new ParamResourceModel("pngEncoder." + type.name(), JAIPage.this).getString();
}
@Override
public Object getDisplayValue(PngEncoderType type) {
return new ParamResourceModel("pngEncoder." + type.name(), JAIPage.this)
.getString();
}

@Override
public String getIdValue(PngEncoderType type, int index) {
return type.name();
}
});
@Override
public String getIdValue(PngEncoderType type, int index) {
return type.name();
}

@Override
public PngEncoderType getObject(String id,
IModel<? extends List<? extends PngEncoderType>> choices) {
return PngEncoderType.valueOf(id);
}
});
form.add(editor);
if(!encoders.contains(editor.getModelObject())) {
editor.setModelObject(PngEncoderType.PNGJ);
Expand Down
51 changes: 22 additions & 29 deletions src/web/core/src/main/java/org/geoserver/web/admin/LogPage.java
Expand Up @@ -21,10 +21,17 @@
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.Response;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.ContentDisposition;
import org.apache.wicket.request.resource.ResourceStreamResource;
import org.apache.wicket.util.io.Streams;
import org.apache.wicket.util.resource.FileResourceStream;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.validation.validator.RangeValidator;
import org.geoserver.config.GeoServerDataDirectory;
import org.geoserver.logging.LoggingUtils;
Expand All @@ -46,7 +53,8 @@ public class LogPage extends GeoServerSecuredPage {
File logFile;

public LogPage(PageParameters params) {
Form form = new Form("form");
@SuppressWarnings("rawtypes")
Form<?> form = new Form("form");
add(form);

/**
Expand Down Expand Up @@ -106,35 +114,20 @@ public void onSubmit() {

@Override
public void onClick() {
RequestCycle.get().setRequestTarget(new IRequestTarget() {

public void detach(RequestCycle requestCycle) {
}

public void respond(RequestCycle requestCycle) {

InputStream is = null;
try {
is = new FileInputStream(logFile);

WebResponse r = (WebResponse) requestCycle.getResponse();
r.setAttachmentHeader("geoserver.log");
r.setContentType("text/plain");
Streams.copy(is, r.getOutputStream());
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if(is != null) {
try {
is.close();
} catch (IOException e) {
}
}
}
IResourceStream stream = new FileResourceStream(logFile){
public String getContentType() {
return "text/plain";
}

});

};
IRequestHandler handler = new ResourceStreamRequestHandler(stream){
@Override
protected void configure(ResourceStreamResource resource) {
resource.setFileName("geoserver.log");
resource.setContentDisposition(ContentDisposition.ATTACHMENT);
super.configure(resource);
}
};
RequestCycle.get().scheduleRequestHandlerAfterCurrent(handler);
}
});

Expand Down

0 comments on commit f84f659

Please sign in to comment.