-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[GEOS-8096] Align JMS community plugin with the new REST API
- Loading branch information
Nuno Oliveira
committed
Apr 19, 2017
1 parent
36efea1
commit 1329433
Showing
12 changed files
with
272 additions
and
280 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
137 changes: 137 additions & 0 deletions
137
...luster/jms-geoserver/src/main/java/org/geoserver/cluster/impl/rest/ClusterController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
/* (c) 2017 Open Source Geospatial Foundation - all rights reserved | ||
* This code is licensed under the GPL 2.0 license, available at the root | ||
* application directory. | ||
*/ | ||
package org.geoserver.cluster.impl.rest; | ||
|
||
import freemarker.template.SimpleHash; | ||
import freemarker.template.Template; | ||
import org.geoserver.catalog.Catalog; | ||
import org.geoserver.cluster.configuration.BrokerConfiguration; | ||
import org.geoserver.cluster.configuration.ConnectionConfiguration; | ||
import org.geoserver.cluster.configuration.JMSConfiguration; | ||
import org.geoserver.cluster.configuration.ReadOnlyConfiguration; | ||
import org.geoserver.cluster.configuration.ToggleConfiguration; | ||
import org.geoserver.cluster.events.ToggleType; | ||
import org.geoserver.config.util.XStreamPersister; | ||
import org.geoserver.rest.ObjectToMapWrapper; | ||
import org.geoserver.rest.RestBaseController; | ||
import org.geoserver.rest.catalog.AbstractCatalogController; | ||
import org.geoserver.rest.converters.FreemarkerHTMLMessageConverter; | ||
import org.geoserver.rest.converters.XStreamMessageConverter; | ||
import org.geoserver.rest.util.MediaTypeExtensions; | ||
import org.geoserver.rest.wrapper.RestWrapper; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.core.MethodParameter; | ||
import org.springframework.http.HttpHeaders; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.http.converter.HttpMessageConverter; | ||
import org.springframework.web.bind.annotation.ControllerAdvice; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import org.springframework.web.util.UriComponents; | ||
import org.springframework.web.util.UriComponentsBuilder; | ||
|
||
import java.io.IOException; | ||
import java.lang.reflect.Type; | ||
import java.util.Map; | ||
import java.util.Properties; | ||
|
||
@RestController | ||
@ControllerAdvice | ||
@RequestMapping(path = RestBaseController.ROOT_PATH + "/cluster") | ||
public class ClusterController extends AbstractCatalogController { | ||
|
||
@Autowired | ||
private Controller controller; | ||
|
||
@Autowired | ||
private JMSConfiguration config; | ||
|
||
public ClusterController(Catalog catalog) { | ||
super(catalog); | ||
} | ||
|
||
@GetMapping(produces = { | ||
MediaType.APPLICATION_JSON_VALUE, | ||
MediaType.APPLICATION_XML_VALUE, | ||
MediaType.TEXT_HTML_VALUE}) | ||
public RestWrapper<Properties> getClusterConfiguration() { | ||
return wrapObject(config.getConfigurations(), Properties.class); | ||
} | ||
|
||
@PostMapping(consumes = { | ||
MediaType.APPLICATION_JSON_VALUE, | ||
MediaTypeExtensions.TEXT_JSON_VALUE, | ||
MediaType.APPLICATION_XML_VALUE, | ||
MediaType.TEXT_XML_VALUE}) | ||
public ResponseEntity<String> postClusterConfiguration( | ||
@RequestBody Properties props, UriComponentsBuilder builder) throws IOException { | ||
for (Object key : props.keySet()) { | ||
String k = key.toString(); | ||
final String value = props.get(key).toString(); | ||
// store config | ||
config.putConfiguration(key.toString(), value); | ||
final Object oldValue = config.getConfiguration(k); | ||
if (props.get(k).equals(oldValue)) { | ||
continue; | ||
} | ||
if (key.equals(ConnectionConfiguration.CONNECTION_KEY)) { | ||
// CONNECTION | ||
controller.connectClient(Boolean.getBoolean(value)); | ||
} else if (key.equals(ToggleConfiguration.TOGGLE_MASTER_KEY)) { | ||
// toggle MASTER | ||
controller.toggle(Boolean.getBoolean(value), ToggleType.MASTER); | ||
} else if (key.equals(ToggleConfiguration.TOGGLE_SLAVE_KEY)) { | ||
// toggle SLAVE | ||
controller.toggle(Boolean.getBoolean(value), ToggleType.SLAVE); | ||
} else if (key.equals(JMSConfiguration.INSTANCE_NAME_KEY)) { | ||
// InstanceName | ||
controller.setInstanceName(value); | ||
} else if (key.equals(BrokerConfiguration.BROKER_URL_KEY)) { | ||
// BROKER_URL | ||
controller.setBrokerURL(value); | ||
} else if (key.equals(ReadOnlyConfiguration.READ_ONLY_KEY)) { | ||
// ReadOnly | ||
controller.setReadOnly(Boolean.getBoolean(value)); | ||
} else if (key.equals(JMSConfiguration.GROUP_KEY)) { | ||
// group | ||
controller.setGroup(value); | ||
} | ||
} | ||
// SAVE to disk | ||
controller.save(); | ||
UriComponents uriComponents = builder.path("/cluster").build(); | ||
HttpHeaders headers = new HttpHeaders(); | ||
headers.setLocation(uriComponents.toUri()); | ||
return new ResponseEntity<>(props.toString(), headers, HttpStatus.CREATED); | ||
} | ||
|
||
@Override | ||
public boolean supports(MethodParameter methodParameter, Type targetType, | ||
Class<? extends HttpMessageConverter<?>> converterType) { | ||
return Properties.class.isAssignableFrom(methodParameter.getParameterType()); | ||
} | ||
|
||
@Override | ||
public void configureFreemarker(FreemarkerHTMLMessageConverter converter, Template template) { | ||
template.setObjectWrapper(new ObjectToMapWrapper<Properties>( | ||
Properties.class) { | ||
@Override | ||
protected void wrapInternal(Map properties, SimpleHash model, | ||
Properties props) { | ||
properties.putAll(props); | ||
} | ||
}); | ||
} | ||
|
||
@Override | ||
public void configurePersister(XStreamPersister persister, XStreamMessageConverter converter) { | ||
persister.getXStream().allowTypes(new Class[]{Properties.class}); | ||
} | ||
} |
146 changes: 0 additions & 146 deletions
146
...-cluster/jms-geoserver/src/main/java/org/geoserver/cluster/impl/rest/ClusterResource.java
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.