http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
new file mode 100644
index 0000000..e3a3267
--- /dev/null
+++ 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
@@ -0,0 +1,104 @@
+// 
***************************************************************************************************************************
+// * 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 org.apache.juneau.dto.html5;
+
+import static org.apache.juneau.TestUtils.*;
+
+import static org.apache.juneau.dto.html5.HtmlBuilder.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
+
+/**
+ * Tests serialization of HTML5 templates.
+ */
+@RunWith(Parameterized.class)
+@SuppressWarnings({"javadoc"})
+public class Html5TemplateComboTest extends ComboRoundTripTest {
+
+       @Parameterized.Parameters
+       public static Collection<Object[]> getParameters() {
+               return Arrays.asList(new Object[][] {
+                       {
+                               new ComboInput<FormTemplate>(
+                                       "FormTemplate-1",
+                                       FormTemplate.class,
+                                       new FormTemplate("http://myaction";, 
123, true),
+                                       /* Json */              
"{a:{action:'http://myaction'},c:[{_type:'input',a:{type:'text',name:'v1',value:123}},{_type:'input',a:{type:'text',name:'v2',value:true}}]}",
+                                       /* JsonT */             
"{a:{action:'http://myaction'},c:[{t:'input',a:{type:'text',name:'v1',value:123}},{t:'input',a:{type:'text',name:'v2',value:true}}]}",
+                                       /* JsonR */             "{\n\ta: 
{\n\t\taction: 'http://myaction'\n\t},\n\tc: [\n\t\t{\n\t\t\t_type: 
'input',\n\t\t\ta: {\n\t\t\t\ttype: 'text',\n\t\t\t\tname: 
'v1',\n\t\t\t\tvalue: 123\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t_type: 
'input',\n\t\t\ta: {\n\t\t\t\ttype: 'text',\n\t\t\t\tname: 
'v2',\n\t\t\t\tvalue: true\n\t\t\t}\n\t\t}\n\t]\n}",
+                                       /* Xml */               "<form 
action='http://myaction'><input type='text' name='v1' value='123'/><input 
type='text' name='v2' value='true'/></form>",
+                                       /* XmlT */              "<form 
action='http://myaction'><input type='text' name='v1' value='123'/><input 
type='text' name='v2' value='true'/></form>",
+                                       /* XmlR */              "<form 
action='http://myaction'><input type='text' name='v1' value='123'/><input 
type='text' name='v2' value='true'/></form>\n",
+                                       /* XmlNs */             "<form 
action='http://myaction'><input type='text' name='v1' value='123'/><input 
type='text' name='v2' value='true'/></form>",
+                                       /* Html */              "<form 
action='http://myaction'><input type='text' name='v1' value='123'/><input 
type='text' name='v2' value='true'/></form>",
+                                       /* HtmlT */             "<form 
action='http://myaction'><input type='text' name='v1' value='123'/><input 
type='text' name='v2' value='true'/></form>",
+                                       /* HtmlR */             "<form 
action='http://myaction'><input type='text' name='v1' value='123'/><input 
type='text' name='v2' value='true'/></form>\n",
+                                       /* Uon */               
"(a=(action=http://myaction),c=@((_type=input,a=(type=text,name=v1,value=123)),(_type=input,a=(type=text,name=v2,value=true))))",
+                                       /* UonT */              
"(a=(action=http://myaction),c=@((t=input,a=(type=text,name=v1,value=123)),(t=input,a=(type=text,name=v2,value=true))))",
+                                       /* UonR */              
"(\n\ta=(\n\t\taction=http://myaction\n\t),\n\tc=@(\n\t\t(\n\t\t\t_type=input,\n\t\t\ta=(\n\t\t\t\ttype=text,\n\t\t\t\tname=v1,\n\t\t\t\tvalue=123\n\t\t\t)\n\t\t),\n\t\t(\n\t\t\t_type=input,\n\t\t\ta=(\n\t\t\t\ttype=text,\n\t\t\t\tname=v2,\n\t\t\t\tvalue=true\n\t\t\t)\n\t\t)\n\t)\n)",
+                                       /* UrlEnc */    
"a=(action=http://myaction)&c=@((_type=input,a=(type=text,name=v1,value=123)),(_type=input,a=(type=text,name=v2,value=true)))",
+                                       /* UrlEncT */   
"a=(action=http://myaction)&c=@((t=input,a=(type=text,name=v1,value=123)),(t=input,a=(type=text,name=v2,value=true)))",
+                                       /* UrlEncR */   
"a=(\n\taction=http://myaction\n)\n&c=@(\n\t(\n\t\t_type=input,\n\t\ta=(\n\t\t\ttype=text,\n\t\t\tname=v1,\n\t\t\tvalue=123\n\t\t)\n\t),\n\t(\n\t\t_type=input,\n\t\ta=(\n\t\t\ttype=text,\n\t\t\tname=v2,\n\t\t\tvalue=true\n\t\t)\n\t)\n)",
+                                       /* MsgPack */   
"82A16181A6616374696F6EAF687474703A2F2F6D79616374696F6EA1639282A55F74797065A5696E707574A16183A474797065A474657874A46E616D65A27631A576616C75657B82A55F74797065A5696E707574A16183A474797065A474657874A46E616D65A27632A576616C7565C3",
+                                       /* MsgPackT */  
"82A16181A6616374696F6EAF687474703A2F2F6D79616374696F6EA1639282A174A5696E707574A16183A474797065A474657874A46E616D65A27631A576616C75657B82A174A5696E707574A16183A474797065A474657874A46E616D65A27632A576616C7565C3",
+                                       /* RdfXml */    
"<rdf:RDF>\n<rdf:Description>\n<jp:a rdf:parseType='Resource'>\n<jp:action 
rdf:resource='http://myaction'/>\n</jp:a>\n<jp:c>\n<rdf:Seq>\n<rdf:li 
rdf:parseType='Resource'>\n<jp:_type>input</jp:_type>\n<jp:a 
rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v1</jp:name>\n<jp:value>123</jp:value>\n</jp:a>\n</rdf:li>\n<rdf:li
 rdf:parseType='Resource'>\n<jp:_type>input</jp:_type>\n<jp:a 
rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v2</jp:name>\n<jp:value>true</jp:value>\n</jp:a>\n</rdf:li>\n</rdf:Seq>\n</jp:c>\n</rdf:Description>\n</rdf:RDF>\n",
+                                       /* RdfXmlT */   
"<rdf:RDF>\n<rdf:Description>\n<jp:a rdf:parseType='Resource'>\n<jp:action 
rdf:resource='http://myaction'/>\n</jp:a>\n<jp:c>\n<rdf:Seq>\n<rdf:li 
rdf:parseType='Resource'>\n<jp:t>input</jp:t>\n<jp:a 
rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v1</jp:name>\n<jp:value>123</jp:value>\n</jp:a>\n</rdf:li>\n<rdf:li
 rdf:parseType='Resource'>\n<jp:t>input</jp:t>\n<jp:a 
rdf:parseType='Resource'>\n<jp:type>text</jp:type>\n<jp:name>v2</jp:name>\n<jp:value>true</jp:value>\n</jp:a>\n</rdf:li>\n</rdf:Seq>\n</jp:c>\n</rdf:Description>\n</rdf:RDF>\n",
+                                       /* RdfXmlR */   "<rdf:RDF>\n  
<rdf:Description>\n    <jp:a rdf:parseType='Resource'>\n      <jp:action 
rdf:resource='http://myaction'/>\n    </jp:a>\n    <jp:c>\n      <rdf:Seq>\n    
    <rdf:li rdf:parseType='Resource'>\n          <jp:_type>input</jp:_type>\n   
       <jp:a rdf:parseType='Resource'>\n            <jp:type>text</jp:type>\n   
         <jp:name>v1</jp:name>\n            <jp:value>123</jp:value>\n          
</jp:a>\n        </rdf:li>\n        <rdf:li rdf:parseType='Resource'>\n         
 <jp:_type>input</jp:_type>\n          <jp:a rdf:parseType='Resource'>\n        
    <jp:type>text</jp:type>\n            <jp:name>v2</jp:name>\n            
<jp:value>true</jp:value>\n          </jp:a>\n        </rdf:li>\n      
</rdf:Seq>\n    </jp:c>\n  </rdf:Description>\n</rdf:RDF>\n"
+                               )
+                               {
+                                       @Override
+                                       public void verify(FormTemplate o) {
+                                               assertType(FormTemplate.class, 
o);
+                                       }
+                               }
+                       },
+               });
+       }
+
+
+       @Bean(beanDictionary=HtmlBeanDictionary.class)
+       public static class FormTemplate {
+
+               private String action;
+               private int value1;
+               private boolean value2;
+
+               public FormTemplate(Form f) {
+                       this.action = f.getAttr("action");
+                       this.value1 = f.getChild(Input.class, 
0).getAttr(int.class, "value");
+                       this.value2 = f.getChild(Input.class, 
1).getAttr(boolean.class, "value");
+               }
+
+               public FormTemplate(String action, int value1, boolean value2) {
+                       this.action = action;
+                       this.value1 = value1;
+                       this.value2 = value2;
+               }
+
+               public Form swap(BeanSession session) {
+                       return form(action,
+                               input("text").name("v1").value(value1),
+                               input("text").name("v2").value(value2)
+                       );
+               }
+       }
+
+       public Html5TemplateComboTest(ComboInput<?> comboInput) {
+               super(comboInput);
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
new file mode 100755
index 0000000..19d95e9
--- /dev/null
+++ 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
@@ -0,0 +1,204 @@
+// 
***************************************************************************************************************************
+// * 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 org.apache.juneau.dto.jsonschema;
+
+import static org.junit.Assert.*;
+
+import java.net.*;
+
+import org.apache.juneau.json.*;
+import org.junit.*;
+
+@SuppressWarnings("javadoc")
+public class JsonSchemaTest {
+
+       @Test
+       public void testSchema1() throws Exception {
+               JsonSerializer s = new 
JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
+               JsonParser p = JsonParser.DEFAULT;
+               String r;
+               Schema t, t2;
+
+               String expected =
+                       "{\n"
+                       +"      id: 'http://id',\n"
+                       +"      '$schema': 'http://schemaVersionUri',\n"
+                       +"      title: 'title',\n"
+                       +"      description: 'description',\n"
+                       +"      type: 'number',\n"
+                       +"      definitions: {\n"
+                       +"              definition: {\n"
+                       +"                      '$ref': 'http://definition'\n"
+                       +"              }\n"
+                       +"      },\n"
+                       +"      properties: {\n"
+                       +"              property: {\n"
+                       +"                      type: 'number'\n"
+                       +"              }\n"
+                       +"      },\n"
+                       +"      patternProperties: {\n"
+                       +"              '/pattern/': {\n"
+                       +"                      type: 'number'\n"
+                       +"              }\n"
+                       +"      },\n"
+                       +"      dependencies: {\n"
+                       +"              dependency: {\n"
+                       +"                      '$ref': 'http://dependency'\n"
+                       +"              }\n"
+                       +"      },\n"
+                       +"      items: [\n"
+                       +"              {\n"
+                       +"                      type: 'number'\n"
+                       +"              }\n"
+                       +"      ],\n"
+                       +"      multipleOf: 1,\n"
+                       +"      maximum: 2,\n"
+                       +"      exclusiveMaximum: true,\n"
+                       +"      minimum: 3,\n"
+                       +"      exclusiveMinimum: true,\n"
+                       +"      maxLength: 4,\n"
+                       +"      minLength: 5,\n"
+                       +"      pattern: '/pattern/',\n"
+                       +"      additionalItems: [\n"
+                       +"              {\n"
+                       +"                      type: 'number'\n"
+                       +"              }\n"
+                       +"      ],\n"
+                       +"      maxItems: 6,\n"
+                       +"      minItems: 7,\n"
+                       +"      uniqueItems: true,\n"
+                       +"      maxProperties: 8,\n"
+                       +"      minProperties: 9,\n"
+                       +"      required: [\n"
+                       +"              'required'\n"
+                       +"      ],\n"
+                       +"      additionalProperties: {\n"
+                       +"              '$ref': 'http://additionalProperty'\n"
+                       +"      },\n"
+                       +"      'enum': [\n"
+                       +"              'enum'\n"
+                       +"      ],\n"
+                       +"      allOf: [\n"
+                       +"              {\n"
+                       +"                      '$ref': 'http://allOf'\n"
+                       +"              }\n"
+                       +"      ],\n"
+                       +"      anyOf: [\n"
+                       +"              {\n"
+                       +"                      '$ref': 'http://anyOf'\n"
+                       +"              }\n"
+                       +"      ],\n"
+                       +"      oneOf: [\n"
+                       +"              {\n"
+                       +"                      '$ref': 'http://oneOf'\n"
+                       +"              }\n"
+                       +"      ],\n"
+                       +"      not: {\n"
+                       +"              '$ref': 'http://not'\n"
+                       +"      }\n"
+                       +"}";
+
+               t = getTest1();
+               r = s.serialize(t);
+               assertEquals(expected, r);
+               t2 = p.parse(r, Schema.class);
+               r = s.serialize(t2);
+               assertEquals(expected, r);
+       }
+
+       @Test
+       public void testSchema2() throws Exception {
+               JsonSerializer s = new 
JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
+               JsonParser p = JsonParser.DEFAULT;
+               String r;
+               Schema t, t2;
+
+               String expected =
+                       "{\n"
+                       +"      id: 'http://id',\n"
+                       +"      '$schema': 'http://schemaVersionUri',\n"
+                       +"      type: [\n"
+                       +"              'string',\n"
+                       +"              'number'\n"
+                       +"      ],\n"
+                       +"      definitions: {\n"
+                       +"              definition: {\n"
+                       +"                      id: 'http://definition'\n"
+                       +"              }\n"
+                       +"      },\n"
+                       +"      items: [\n"
+                       +"              {\n"
+                       +"                      '$ref': 'http://items'\n"
+                       +"              }\n"
+                       +"      ],\n"
+                       +"      additionalItems: true,\n"
+                       +"      additionalProperties: true\n"
+                       +"}";
+
+               t = getTest2();
+               r = s.serialize(t);
+               assertEquals(expected, r);
+               t2 = p.parse(r, Schema.class);
+               r = s.serialize(t2);
+               assertEquals(expected, r);
+       }
+
+       /** Bean with simple values for each property */
+       public static Schema getTest1() {
+               return new Schema()
+                       .setId("http://id";)
+                       .setSchemaVersionUri("http://schemaVersionUri";)
+                       .setTitle("title")
+                       .setDescription("description")
+                       .setType(JsonType.NUMBER)
+                       .addDefinition("definition", new 
SchemaRef("http://definition";))
+                       .addProperties(new SchemaProperty("property", 
JsonType.NUMBER))
+                       .addPatternProperties(new SchemaProperty("/pattern/", 
JsonType.NUMBER))
+                       .addDependency("dependency", new 
SchemaRef("http://dependency";))
+                       .addItems(new Schema().setType(JsonType.NUMBER))
+                       .setMultipleOf(1)
+                       .setMaximum(2)
+                       .setExclusiveMaximum(true)
+                       .setMinimum(3)
+                       .setExclusiveMinimum(true)
+                       .setMaxLength(4)
+                       .setMinLength(5)
+                       .setPattern("/pattern/")
+                       .addAdditionalItems(new 
SchemaProperty("additionalItem", JsonType.NUMBER))
+                       .setMaxItems(6)
+                       .setMinItems(7)
+                       .setUniqueItems(true)
+                       .setMaxProperties(8)
+                       .setMinProperties(9)
+                       .addRequired("required")
+                       .setAdditionalProperties(new 
SchemaRef("http://additionalProperty";))
+                       .addEnum("enum")
+                       .addAllOf(new SchemaRef("http://allOf";))
+                       .addAnyOf(new SchemaRef("http://anyOf";))
+                       .addOneOf(new SchemaRef("http://oneOf";))
+                       .setNot(new SchemaRef("http://not";))
+               ;
+       }
+
+       /** Bean with other possible property value types not covered in test1 
*/
+       public static Schema getTest2() {
+               return new Schema()
+                       .setId(URI.create("http://id";))
+                       
.setSchemaVersionUri(URI.create("http://schemaVersionUri";))
+                       .setType(new JsonTypeArray(JsonType.STRING, 
JsonType.NUMBER))
+                       .addDefinition("definition", new 
Schema().setId("http://definition";))
+                       .setItems(new SchemaArray(new 
SchemaRef("http://items";)))
+                       .setAdditionalItems(Boolean.TRUE)
+                       .setAdditionalProperties(Boolean.TRUE);
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.java
 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.java
new file mode 100755
index 0000000..3a0e026
--- /dev/null
+++ 
b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/encoders/EncoderGroupTest.java
@@ -0,0 +1,116 @@
+// 
***************************************************************************************************************************
+// * 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 org.apache.juneau.encoders;
+
+import static org.apache.juneau.TestUtils.*;
+
+import org.junit.*;
+
+@SuppressWarnings({"javadoc"})
+public class EncoderGroupTest {
+
+       
//====================================================================================================
+       // Test matching
+       
//====================================================================================================
+       @Test
+       public void testEncoderGroupMatching() throws Exception {
+
+               EncoderGroup g = new 
EncoderGroupBuilder().append(Encoder1.class, Encoder2.class, 
Encoder3.class).build();
+               assertType(Encoder1.class, g.getEncoder("gzip1"));
+               assertType(Encoder2.class, g.getEncoder("gzip2"));
+               assertType(Encoder2.class, g.getEncoder("gzip2a"));
+               assertType(Encoder3.class, g.getEncoder("gzip3"));
+               assertType(Encoder3.class, g.getEncoder("gzip3a"));
+               assertType(Encoder3.class, g.getEncoder("gzip3,gzip2,gzip1"));
+               assertType(Encoder1.class, 
g.getEncoder("gzip3;q=0.9,gzip2;q=0.1,gzip1"));
+               assertType(Encoder3.class, 
g.getEncoder("gzip2;q=0.9,gzip1;q=0.1,gzip3"));
+               assertType(Encoder2.class, 
g.getEncoder("gzip1;q=0.9,gzip3;q=0.1,gzip2"));
+       }
+
+       public static class Encoder1 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"gzip1"};
+               }
+       }
+
+       public static class Encoder2 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"gzip2","gzip2a"};
+               }
+       }
+
+       public static class Encoder3 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"gzip3","gzip3a"};
+               }
+       }
+
+       
//====================================================================================================
+       // Test inheritence
+       
//====================================================================================================
+       @Test
+       public void testInheritence() throws Exception {
+               EncoderGroupBuilder gb = null;
+               EncoderGroup g = null;
+
+               gb = new EncoderGroupBuilder().append(E1.class, E2.class);
+               g = gb.build();
+               assertObjectEquals("['E1','E2','E2a']", 
g.getSupportedEncodings());
+
+               gb = new EncoderGroupBuilder(g).append(E3.class, E4.class);
+               g = gb.build();
+               assertObjectEquals("['E3','E4','E4a','E1','E2','E2a']", 
g.getSupportedEncodings());
+
+               gb = new EncoderGroupBuilder(g).append(E5.class);
+               g = gb.build();
+               assertObjectEquals("['E5','E3','E4','E4a','E1','E2','E2a']", 
g.getSupportedEncodings());
+       }
+
+       public static class E1 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"E1"};
+               }
+       }
+
+       public static class E2 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"E2","E2a"};
+               }
+       }
+
+       public static class E3 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"E3"};
+               }
+       }
+
+       public static class E4 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"E4","E4a"};
+               }
+       }
+
+       public static class E5 extends GzipEncoder {
+               @Override /* Encoder */
+               public String[] getCodings() {
+                       return new String[]{"E5"};
+               }
+       }
+}

Reply via email to