diff --git a/web/src/main/java/org/jboss/as/web/Attribute.java b/web/src/main/java/org/jboss/as/web/Attribute.java index a912c51..9fdc9d3 100644 --- a/web/src/main/java/org/jboss/as/web/Attribute.java +++ b/web/src/main/java/org/jboss/as/web/Attribute.java @@ -39,6 +39,8 @@ CERTIFICATE_KEY_FILE(Constants.CERTIFICATE_KEY_FILE), CHECK_INTERVAL(Constants.CHECK_INTERVAL), CIPHER_SUITE(Constants.CIPHER_SUITE), + COMPRESSION(Constants.COMPRESSION), + COMPRESSABLE_MIME_TYPE(Constants.COMPRESSABLE_MIME_TYPE), DEFAULT_VIRTUAL_SERVER(Constants.DEFAULT_VIRTUAL_SERVER), DEFAULT_WEB_MODULE(Constants.DEFAULT_WEB_MODULE), DEVELOPMENT(Constants.DEVELOPMENT), diff --git a/web/src/main/java/org/jboss/as/web/Constants.java b/web/src/main/java/org/jboss/as/web/Constants.java index 205efc4..a763d39 100644 --- a/web/src/main/java/org/jboss/as/web/Constants.java +++ b/web/src/main/java/org/jboss/as/web/Constants.java @@ -37,6 +37,8 @@ String CERTIFICATE_KEY_FILE = "certificate-key-file"; String CHECK_INTERVAL = "check-interval"; String CIPHER_SUITE = "cipher-suite"; + String COMPRESSION = "compression"; + String COMPRESSABLE_MIME_TYPE = "compressableMimeType"; String CONDITION = "condition"; String CONFIGURATION = "configuration"; String CONNECTOR = "connector"; diff --git a/web/src/main/java/org/jboss/as/web/WebConnectorAdd.java b/web/src/main/java/org/jboss/as/web/WebConnectorAdd.java index e22db87..c73b29e 100644 --- a/web/src/main/java/org/jboss/as/web/WebConnectorAdd.java +++ b/web/src/main/java/org/jboss/as/web/WebConnectorAdd.java @@ -27,6 +27,8 @@ import static org.jboss.as.web.Constants.ENABLED; import static org.jboss.as.web.Constants.ENABLE_LOOKUPS; import static org.jboss.as.web.Constants.EXECUTOR; +import static org.jboss.as.web.Constants.COMPRESSION; +import static org.jboss.as.web.Constants.COMPRESSABLE_MIME_TYPE; import static org.jboss.as.web.Constants.MAX_CONNECTIONS; import static org.jboss.as.web.Constants.MAX_POST_SIZE; import static org.jboss.as.web.Constants.MAX_SAVE_POST_SIZE; @@ -148,6 +150,10 @@ service.setMaxSavePostSize(operation.get(MAX_SAVE_POST_SIZE).asInt()); if (operation.hasDefined(MAX_CONNECTIONS)) service.setMaxConnections(operation.get(MAX_CONNECTIONS).asInt()); + if (operation.hasDefined(COMPRESSION)) + service.setCompression(operation.get(COMPRESSION).asString()); + if (operation.hasDefined(COMPRESSABLE_MIME_TYPE)) + service.setCompression(operation.get(COMPRESSABLE_MIME_TYPE).asString()); if (operation.hasDefined(VIRTUAL_SERVER)) service.setVirtualServers(operation.get(VIRTUAL_SERVER).clone()); if (operation.hasDefined(SSL)) { diff --git a/web/src/main/java/org/jboss/as/web/WebConnectorService.java b/web/src/main/java/org/jboss/as/web/WebConnectorService.java index a384832..b4499c0 100644 --- a/web/src/main/java/org/jboss/as/web/WebConnectorService.java +++ b/web/src/main/java/org/jboss/as/web/WebConnectorService.java @@ -59,6 +59,8 @@ private Integer maxPostSize = null; private Integer maxSavePostSize = null; private Integer maxConnections = null; + private String compression = null; + private String compressableMimeType = null; private ModelNode ssl; private ModelNode virtualServers; @@ -127,6 +129,17 @@ m.invoke(connector.getProtocolHandler(), maxConnections); } } + + if (compression != null) { + Method m = connector.getProtocolHandler().getClass().getMethod("setAttribute", String.class, Object.class); + m.invoke(connector.getProtocolHandler(), "compression", compression); + } + + if (compressableMimeType != null) { + Method m = connector.getProtocolHandler().getClass().getMethod("setAttribute", String.class, Object.class); + m.invoke(connector.getProtocolHandler(), "compressableMimeType", compressableMimeType); + } + if (virtualServers != null) { HashSet virtualServersList = new HashSet(); for (final ModelNode virtualServer : virtualServers.asList()) { @@ -340,6 +353,22 @@ this.maxConnections = maxConnections; } + protected String getCompression() { + return compression; + } + + protected void setCompression(String compression) { + this.compression = compression; + } + + protected String getCompressableMimeType() { + return this.compressableMimeType; + } + + protected void setCompressableMimeType(String compressedMimeTypes) { + this.compressableMimeType = compressedMimeTypes; + } + InjectedValue getExecutor() { return executor; } diff --git a/web/src/main/java/org/jboss/as/web/WebSubsystemParser.java b/web/src/main/java/org/jboss/as/web/WebSubsystemParser.java index 745cbeb..04dafa8 100644 --- a/web/src/main/java/org/jboss/as/web/WebSubsystemParser.java +++ b/web/src/main/java/org/jboss/as/web/WebSubsystemParser.java @@ -44,6 +44,8 @@ import static org.jboss.as.web.Constants.CONNECTOR; import static org.jboss.as.web.Constants.CONTAINER; import static org.jboss.as.web.Constants.CONTAINER_CONFIG; +import static org.jboss.as.web.Constants.COMPRESSION; +import static org.jboss.as.web.Constants.COMPRESSABLE_MIME_TYPE; import static org.jboss.as.web.Constants.DEFAULT_WEB_MODULE; import static org.jboss.as.web.Constants.DIRECTORY; import static org.jboss.as.web.Constants.DISABLED; @@ -831,6 +833,9 @@ String secure = null; String redirectPort = null; String maxConnections = null; + String compression = null; + String compressedMimeTypes = null; + final int count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { requireNoNamespaceAttribute(reader, i); @@ -878,6 +883,12 @@ break; case MAX_CONNECTIONS: maxConnections = value; + break; + case COMPRESSION: + compression = value; + break; + case COMPRESSABLE_MIME_TYPE: + compressedMimeTypes=value; break; default: throw unexpectedAttribute(reader, i); @@ -927,6 +938,8 @@ if(secure != null) connector.get(SECURE).set(secure); if(redirectPort != null) connector.get(REDIRECT_PORT).set(redirectPort); if(maxConnections != null) connector.get(MAX_CONNECTIONS).set(maxConnections); + if(compression != null) connector.get(COMPRESSION).set(compression); + if(compressedMimeTypes != null) connector.get(COMPRESSABLE_MIME_TYPE).set(compressedMimeTypes); list.add(connector); }