You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2015/03/19 15:07:30 UTC
[12/19] incubator-brooklyn git commit: Rename filter to follow naming
convention
Rename filter to follow naming convention
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/86cf35f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/86cf35f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/86cf35f1
Branch: refs/heads/master
Commit: 86cf35f1062ff8e71c843572b8a05b7035dd6586
Parents: cc95fa7
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Mar 5 15:11:07 2015 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Mar 19 16:01:29 2015 +0200
----------------------------------------------------------------------
.../brooklyn/launcher/BrooklynWebServer.java | 4 +-
.../rest/filter/HaHotCheckResourceFilter.java | 114 +++++++++++++++++++
.../rest/filter/HaStateCheckResourceFilter.java | 114 -------------------
.../brooklyn/rest/BrooklynRestApiLauncher.java | 2 +-
4 files changed, 117 insertions(+), 117 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/86cf35f1/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
index aaac004..56df07a 100644
--- a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
+++ b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynWebServer.java
@@ -60,7 +60,7 @@ import brooklyn.rest.BrooklynRestApi;
import brooklyn.rest.BrooklynWebConfig;
import brooklyn.rest.filter.BrooklynPropertiesSecurityFilter;
import brooklyn.rest.filter.HaMasterCheckFilter;
-import brooklyn.rest.filter.HaStateCheckResourceFilter;
+import brooklyn.rest.filter.HaHotCheckResourceFilter;
import brooklyn.rest.filter.LoggingFilter;
import brooklyn.rest.filter.NoCacheFilter;
import brooklyn.rest.filter.RequestTaggingFilter;
@@ -324,7 +324,7 @@ public class BrooklynWebServer {
config.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, GZIPContentEncodingFilter.class.getName());
config.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, ImmutableList.of(GZIPContentEncodingFilter.class, NoCacheFilter.class));
// Checks if appropriate request given HA status
- config.getProperties().put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES, HaStateCheckResourceFilter.class.getName());
+ config.getProperties().put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES, HaHotCheckResourceFilter.class.getName());
// configure to match empty path, or any thing which looks like a file path with /assets/ and extension html, css, js, or png
// and treat that as static content
config.getProperties().put(ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX, "(/?|[^?]*/assets/[^?]+\\.[A-Za-z0-9_]+)");
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/86cf35f1/usage/rest-server/src/main/java/brooklyn/rest/filter/HaHotCheckResourceFilter.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/main/java/brooklyn/rest/filter/HaHotCheckResourceFilter.java b/usage/rest-server/src/main/java/brooklyn/rest/filter/HaHotCheckResourceFilter.java
new file mode 100644
index 0000000..55f5467
--- /dev/null
+++ b/usage/rest-server/src/main/java/brooklyn/rest/filter/HaHotCheckResourceFilter.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 brooklyn.rest.filter;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import brooklyn.entity.rebind.RebindManagerImpl.RebindTracker;
+import brooklyn.management.ManagementContext;
+import brooklyn.management.ha.ManagementNodeState;
+import brooklyn.util.time.Duration;
+
+import com.google.common.collect.ImmutableSet;
+import com.sun.jersey.api.model.AbstractMethod;
+import com.sun.jersey.spi.container.ContainerRequest;
+import com.sun.jersey.spi.container.ContainerRequestFilter;
+import com.sun.jersey.spi.container.ContainerResponseFilter;
+import com.sun.jersey.spi.container.ResourceFilter;
+import com.sun.jersey.spi.container.ResourceFilterFactory;
+
+public class HaHotCheckResourceFilter implements ResourceFilterFactory {
+ private static final Set<ManagementNodeState> HOT_STATES = ImmutableSet.of(
+ ManagementNodeState.MASTER, ManagementNodeState.HOT_STANDBY, ManagementNodeState.HOT_BACKUP);
+ private static final long STATE_CHANGE_SETTLE_OFFSET = Duration.seconds(10).toMilliseconds();
+
+ @Context
+ private ManagementContext mgmt;
+
+ private static class MethodFilter implements ResourceFilter, ContainerRequestFilter {
+
+ private AbstractMethod am;
+ private ManagementContext mgmt;
+
+ public MethodFilter(AbstractMethod am, ManagementContext mgmt) {
+ this.am = am;
+ this.mgmt = mgmt;
+ }
+
+ @Override
+ public ContainerRequestFilter getRequestFilter() {
+ return this;
+ }
+
+ @Override
+ public ContainerResponseFilter getResponseFilter() {
+ return null;
+ }
+
+ @Override
+ public ContainerRequest filter(ContainerRequest request) {
+ if (!isStateLoaded() && isUnsafe(request)) {
+ Response response = Response.status(Response.Status.FORBIDDEN)
+ .type(MediaType.APPLICATION_JSON)
+ .entity("{\"error\":403,\"message\":\"Requests should be made to the master Brooklyn server\"}")
+ .build();
+ throw new WebApplicationException(response);
+ }
+ return request;
+ }
+
+ private boolean isStateLoaded() {
+ return isHaHotStatus() && !RebindTracker.isRebinding() && !recentlySwitchedState();
+ }
+
+ // Ideally there will be a separate state to indicate that we switched state
+ // but still haven't finished rebinding. There's a gap between changing the state
+ // and starting rebind so add a time offset just to be sure.
+ private boolean recentlySwitchedState() {
+ long lastStateChange = mgmt.getHighAvailabilityManager().getLastStateChange();
+ return System.currentTimeMillis() - lastStateChange < STATE_CHANGE_SETTLE_OFFSET;
+ }
+
+ private boolean isUnsafe(ContainerRequest request) {
+ boolean isOverriden = "true".equalsIgnoreCase(request.getHeaderValue(HaMasterCheckFilter.SKIP_CHECK_HEADER));
+ return !isOverriden &&
+ (am.getAnnotation(HaHotStateRequired.class) != null ||
+ am.getResource().getAnnotation(HaHotStateRequired.class) != null);
+ }
+
+ private boolean isHaHotStatus() {
+ ManagementNodeState state = mgmt.getHighAvailabilityManager().getNodeState();
+ return HOT_STATES.contains(state);
+ }
+
+ }
+
+ @Override
+ public List<ResourceFilter> create(AbstractMethod am) {
+ return Collections.<ResourceFilter>singletonList(new MethodFilter(am, mgmt));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/86cf35f1/usage/rest-server/src/main/java/brooklyn/rest/filter/HaStateCheckResourceFilter.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/main/java/brooklyn/rest/filter/HaStateCheckResourceFilter.java b/usage/rest-server/src/main/java/brooklyn/rest/filter/HaStateCheckResourceFilter.java
deleted file mode 100644
index 86a5b9b..0000000
--- a/usage/rest-server/src/main/java/brooklyn/rest/filter/HaStateCheckResourceFilter.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.rest.filter;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import brooklyn.entity.rebind.RebindManagerImpl.RebindTracker;
-import brooklyn.management.ManagementContext;
-import brooklyn.management.ha.ManagementNodeState;
-import brooklyn.util.time.Duration;
-
-import com.google.common.collect.ImmutableSet;
-import com.sun.jersey.api.model.AbstractMethod;
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-import com.sun.jersey.spi.container.ResourceFilterFactory;
-
-public class HaStateCheckResourceFilter implements ResourceFilterFactory {
- private static final Set<ManagementNodeState> HOT_STATES = ImmutableSet.of(
- ManagementNodeState.MASTER, ManagementNodeState.HOT_STANDBY, ManagementNodeState.HOT_BACKUP);
- private static final long STATE_CHANGE_SETTLE_OFFSET = Duration.seconds(10).toMilliseconds();
-
- @Context
- private ManagementContext mgmt;
-
- private static class MethodFilter implements ResourceFilter, ContainerRequestFilter {
-
- private AbstractMethod am;
- private ManagementContext mgmt;
-
- public MethodFilter(AbstractMethod am, ManagementContext mgmt) {
- this.am = am;
- this.mgmt = mgmt;
- }
-
- @Override
- public ContainerRequestFilter getRequestFilter() {
- return this;
- }
-
- @Override
- public ContainerResponseFilter getResponseFilter() {
- return null;
- }
-
- @Override
- public ContainerRequest filter(ContainerRequest request) {
- if (!isStateLoaded() && isUnsafe(request)) {
- Response response = Response.status(Response.Status.FORBIDDEN)
- .type(MediaType.APPLICATION_JSON)
- .entity("{\"error\":403,\"message\":\"Requests should be made to the master Brooklyn server\"}")
- .build();
- throw new WebApplicationException(response);
- }
- return request;
- }
-
- private boolean isStateLoaded() {
- return isHaHotStatus() && !RebindTracker.isRebinding() && !recentlySwitchedState();
- }
-
- // Ideally there will be a separate state to indicate that we switched state
- // but still haven't finished rebinding. There's a gap between changing the state
- // and starting rebind so add a time offset just to be sure.
- private boolean recentlySwitchedState() {
- long lastStateChange = mgmt.getHighAvailabilityManager().getLastStateChange();
- return System.currentTimeMillis() - lastStateChange < STATE_CHANGE_SETTLE_OFFSET;
- }
-
- private boolean isUnsafe(ContainerRequest request) {
- boolean isOverriden = "true".equalsIgnoreCase(request.getHeaderValue(HaMasterCheckFilter.SKIP_CHECK_HEADER));
- return !isOverriden &&
- (am.getAnnotation(HaHotStateRequired.class) != null ||
- am.getResource().getAnnotation(HaHotStateRequired.class) != null);
- }
-
- private boolean isHaHotStatus() {
- ManagementNodeState state = mgmt.getHighAvailabilityManager().getNodeState();
- return HOT_STATES.contains(state);
- }
-
- }
-
- @Override
- public List<ResourceFilter> create(AbstractMethod am) {
- return Collections.<ResourceFilter>singletonList(new MethodFilter(am, mgmt));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/86cf35f1/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncher.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncher.java b/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncher.java
index db54b40..5baf2d2 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncher.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncher.java
@@ -331,7 +331,7 @@ public class BrooklynRestApiLauncher {
// disable caching for dynamic content
config.getProperties().put(ResourceConfig.PROPERTY_CONTAINER_RESPONSE_FILTERS, NoCacheFilter.class.getName());
// Checks if appropriate request given HA status
- config.getProperties().put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES, brooklyn.rest.filter.HaStateCheckResourceFilter.class.getName());
+ config.getProperties().put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES, brooklyn.rest.filter.HaHotCheckResourceFilter.class.getName());
// configure to match empty path, or any thing which looks like a file path with /assets/ and extension html, css, js, or png
// and treat that as static content
config.getProperties().put(ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX, "(/?|[^?]*/assets/[^?]+\\.[A-Za-z0-9_]+)");