19 changed files with 362 additions and 138 deletions
@ -0,0 +1,64 @@
@@ -0,0 +1,64 @@
|
||||
/* |
||||
* Copyright 2012-2013 the original author or authors. |
||||
* |
||||
* 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. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.endpoint.mvc; |
||||
|
||||
import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint; |
||||
import org.springframework.context.EnvironmentAware; |
||||
import org.springframework.core.env.Environment; |
||||
import org.springframework.http.HttpStatus; |
||||
import org.springframework.web.bind.annotation.PathVariable; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.ResponseBody; |
||||
import org.springframework.web.bind.annotation.ResponseStatus; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
*/ |
||||
@FrameworkEndpoint |
||||
public class EnvironmentMvcEndpoint extends GenericMvcEndpoint implements |
||||
EnvironmentAware { |
||||
|
||||
private Environment environment; |
||||
|
||||
public EnvironmentMvcEndpoint(EnvironmentEndpoint delegate) { |
||||
super(delegate); |
||||
} |
||||
|
||||
@RequestMapping("/{name:.*}") |
||||
@ResponseBody |
||||
public Object value(@PathVariable String name) { |
||||
String result = this.environment.getProperty(name); |
||||
if (result == null) { |
||||
throw new NoSuchPropertyException("No such property: " + name); |
||||
} |
||||
return EnvironmentEndpoint.sanitize(name, result); |
||||
} |
||||
|
||||
@Override |
||||
public void setEnvironment(Environment environment) { |
||||
this.environment = environment; |
||||
} |
||||
|
||||
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "No such property") |
||||
public static class NoSuchPropertyException extends RuntimeException { |
||||
|
||||
public NoSuchPropertyException(String string) { |
||||
super(string); |
||||
} |
||||
|
||||
} |
||||
} |
||||
@ -0,0 +1,47 @@
@@ -0,0 +1,47 @@
|
||||
/* |
||||
* Copyright 2012-2013 the original author or authors. |
||||
* |
||||
* 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. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.endpoint.mvc; |
||||
|
||||
import org.springframework.boot.actuate.endpoint.Endpoint; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RequestMethod; |
||||
import org.springframework.web.bind.annotation.ResponseBody; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
*/ |
||||
@FrameworkEndpoint |
||||
public class GenericMvcEndpoint implements MvcEndpoint { |
||||
|
||||
private Endpoint<?> delegate; |
||||
|
||||
public GenericMvcEndpoint(Endpoint<?> delegate) { |
||||
this.delegate = delegate; |
||||
} |
||||
|
||||
@RequestMapping(method = RequestMethod.GET) |
||||
@ResponseBody |
||||
public Object invoke() { |
||||
return this.delegate.invoke(); |
||||
} |
||||
|
||||
@Override |
||||
public String getPath() { |
||||
return this.delegate.getPath(); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
/* |
||||
* Copyright 2012-2013 the original author or authors. |
||||
* |
||||
* 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. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.endpoint.mvc; |
||||
|
||||
import org.springframework.boot.actuate.endpoint.MetricsEndpoint; |
||||
import org.springframework.http.HttpStatus; |
||||
import org.springframework.web.bind.annotation.PathVariable; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.ResponseBody; |
||||
import org.springframework.web.bind.annotation.ResponseStatus; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
*/ |
||||
@FrameworkEndpoint |
||||
public class MetricsMvcEndpoint extends GenericMvcEndpoint { |
||||
|
||||
private MetricsEndpoint delegate; |
||||
|
||||
public MetricsMvcEndpoint(MetricsEndpoint delegate) { |
||||
super(delegate); |
||||
this.delegate = delegate; |
||||
} |
||||
|
||||
@RequestMapping("/{name:.*}") |
||||
@ResponseBody |
||||
public Object value(@PathVariable String name) { |
||||
Object value = this.delegate.invoke().get(name); |
||||
if (value == null) { |
||||
throw new NoSuchMetricException("No such metric: " + name); |
||||
} |
||||
return value; |
||||
} |
||||
|
||||
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "No such metric") |
||||
public static class NoSuchMetricException extends RuntimeException { |
||||
|
||||
public NoSuchMetricException(String string) { |
||||
super(string); |
||||
} |
||||
|
||||
} |
||||
} |
||||
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
/* |
||||
* Copyright 2012-2013 the original author or authors. |
||||
* |
||||
* 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. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.endpoint.mvc; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
*/ |
||||
public interface MvcEndpoint { |
||||
|
||||
String getPath(); |
||||
|
||||
} |
||||
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
/* |
||||
* Copyright 2012-2013 the original author or authors. |
||||
* |
||||
* 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. |
||||
*/ |
||||
|
||||
package org.springframework.boot.actuate.endpoint.mvc; |
||||
|
||||
import org.springframework.boot.actuate.endpoint.ShutdownEndpoint; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RequestMethod; |
||||
import org.springframework.web.bind.annotation.ResponseBody; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
*/ |
||||
@FrameworkEndpoint |
||||
public class ShutdownMvcEndpoint extends GenericMvcEndpoint { |
||||
|
||||
public ShutdownMvcEndpoint(ShutdownEndpoint delegate) { |
||||
super(delegate); |
||||
} |
||||
|
||||
@RequestMapping(method = RequestMethod.POST) |
||||
@ResponseBody |
||||
@Override |
||||
public Object invoke() { |
||||
return super.invoke(); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue