Implemented all test cases of RenderState and MutableRenderState. 6 Tests in this module are still failing both on browser and test suite.
diff --git a/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC1_12_RenderState.java b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC1_12_RenderState.java
index 0c16bd3..e4337ca 100644
--- a/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC1_12_RenderState.java
+++ b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC1_12_RenderState.java
@@ -78,6 +78,22 @@
       ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
 
       /*
+       * TestCase: V3RenderStateTests_SPEC1_12_RenderState_general
+       */
+      /*
+       * Details:
+       * "RenderState interface provides read-only access to the render state."
+       */
+      {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GENERAL);
+         result.setTcSuccess(true);
+         result.appendTcDetail(
+               "There are no setter methods in RenderState interface.");
+         result.writeTo(writer);
+      }
+
+      /*
        * TestCase: V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters
        */
       /*
@@ -101,7 +117,7 @@
          mutableRenderParams.setValue("tr0_private", "true");
          mutableRenderParams.setValue("tr0_public", "true");
          TestLink tb = new TestLink(
-               "V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters",
+               V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS,
                renderURL);
          tb.writeTo(writer);
       }
@@ -152,7 +168,7 @@
          RenderURL renderURL = portletResp.createRenderURL();
          // renderURL.setPortletMode(PortletMode.UNDEFINED);
          TestLink tb = new TestLink(
-               "V3RenderStateTests_SPEC1_12_RenderState_getPortletMode2",
+               V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETPORTLETMODE2,
                renderURL);
          tb.writeTo(writer);
       }
@@ -187,7 +203,7 @@
          RenderURL renderURL = portletResp.createRenderURL();
          // renderURL.setWindowState(WindowState.UNDEFINED);
          TestLink tb = new TestLink(
-               "V3RenderStateTests_SPEC1_12_RenderState_getWindowState2",
+               V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETWINDOWSTATE2,
                renderURL);
          tb.writeTo(writer);
       }
diff --git a/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC1_12_RenderState2.java b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC1_12_RenderState2.java
new file mode 100644
index 0000000..ea9c9de
--- /dev/null
+++ b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC1_12_RenderState2.java
@@ -0,0 +1,92 @@
+/*  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 javax.portlet.tck.portlets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.Portlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.annotations.PortletConfiguration;
+import javax.portlet.tck.beans.TestResult;
+import javax.portlet.tck.util.ModuleTestCaseDetails;
+
+import static javax.portlet.tck.util.ModuleTestCaseDetails.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case
+ * names are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the
+ * additionalTCs.xml file into the complete list of test case names for
+ * execution by the driver.
+ *
+ */
+
+@PortletConfiguration(portletName = "RenderStateTests_SPEC1_12_RenderState2")
+public class RenderStateTests_SPEC1_12_RenderState2 implements Portlet {
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq,
+         ActionResponse portletResp) throws PortletException, IOException {
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /*
+       * TestCase: V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters3
+       */
+      /*
+       * Details:
+       * "If no render parameters are available, the object will be empty."
+       */
+      {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS3);
+         if (portletReq.getRenderParameters().isEmpty()) {
+            result.setTcSuccess(true);
+         } else {
+            result.appendTcDetail(
+                  "Failed because render parameters are not empty. RenderState.getRenderParameters() method returned "
+                        + portletReq.getRenderParameters().size()
+                        + " render parameters.");
+         }
+         result.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC2_12_MutableRenderState.java b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC2_12_MutableRenderState.java
new file mode 100644
index 0000000..415985c
--- /dev/null
+++ b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC2_12_MutableRenderState.java
@@ -0,0 +1,633 @@
+/*  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 javax.portlet.tck.portlets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import javax.portlet.ActionParameters;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.ActionURL;
+import javax.portlet.GenericPortlet;
+import javax.portlet.MutableRenderParameters;
+import javax.portlet.PortletException;
+import javax.portlet.PortletMode;
+import javax.portlet.PortletModeException;
+import javax.portlet.PortletSession;
+import javax.portlet.RenderMode;
+import javax.portlet.RenderParameters;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+import javax.portlet.WindowStateException;
+import javax.portlet.annotations.CustomPortletMode;
+import javax.portlet.annotations.CustomWindowState;
+import javax.portlet.annotations.PortletApplication;
+import javax.portlet.annotations.PortletConfiguration;
+import javax.portlet.annotations.Supports;
+import javax.portlet.tck.beans.TestButton;
+import javax.portlet.tck.beans.TestResult;
+import javax.portlet.tck.constants.Constants;
+import javax.portlet.tck.util.ModuleTestCaseDetails;
+
+import static javax.portlet.tck.util.ModuleTestCaseDetails.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case
+ * names are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the
+ * additionalTCs.xml file into the complete list of test case names for
+ * execution by the driver.
+ *
+ */
+
+@PortletApplication(customPortletModes = {
+      @CustomPortletMode(name = "custom1", portalManaged = false) }, customWindowStates = {
+            @CustomWindowState(name = "custom1") })
+@PortletConfiguration(portletName = "RenderStateTests_SPEC2_12_MutableRenderState", publicParams = {
+      "tr0_public" }, supports = {
+            @Supports(mimeType = "text/html", portletModes = { "view", "help",
+                  "edit", "custom1" }, windowStates = {
+                        "maximized, minimized, normal, custom1" }) })
+public class RenderStateTests_SPEC2_12_MutableRenderState
+      extends GenericPortlet {
+
+   @Override
+   public void processAction(ActionRequest portletReq,
+         ActionResponse portletResp) throws PortletException, IOException {
+
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+      StringWriter writer = new StringWriter();
+
+      ActionParameters actionParams = portletReq.getActionParameters();
+      String action = actionParams.getValue(Constants.BUTTON_PARAM_NAME);
+      MutableRenderParameters renderParams = portletResp.getRenderParameters();
+
+      if (action != null) {
+         if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters
+             */
+            /*
+             * Details:
+             * "Returns an MutableRenderParameters object representing the private and public render parameters."
+             */
+            if (!renderParams.isEmpty() && renderParams.isPublic("tr0_public")
+                  && renderParams.getValue("tr0_public") != null
+                  && renderParams.getValue("tr0_public").equals("true")
+                  && renderParams.getValue("tr0_private") != null
+                  && renderParams.getValue("tr0_private").equals("true")) {
+               TestResult result = tcd.getTestResultFailed(
+                     V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS);
+               result.setTcSuccess(true);
+               result.writeTo(writer);
+            }
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS2)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters2
+             */
+            /*
+             * Details:
+             * "The MutableRenderParameters object return by this method is mutable."
+             */
+            renderParams.setValue("tr1", "true");
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode
+             */
+            /*
+             * Details:
+             * "Sets the portlet mode of a portlet to the given portlet mode."
+             */
+            portletResp.setPortletMode(PortletMode.HELP);
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE2)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode2
+             */
+            /*
+             * Details:
+             * "A custom portlet mode declared in deployment descriptor could be set."
+             */
+            portletResp.setPortletMode(new PortletMode("custom1"));
+            renderParams.setValue("tr_setPortlet2", "true");
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE3)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode3
+             */
+            /*
+             * Details:
+             * "Not more than one portlet mode can be set. If more than one portlet mode is set, only the last one set is valid."
+             */
+            portletResp.setPortletMode(PortletMode.EDIT);
+            portletResp.setPortletMode(PortletMode.HELP);
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE4)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode4
+             */
+            /*
+             * Details:
+             * "Throws PortletModeException if the portlet cannot switch to this mode."
+             */
+            TestResult result = tcd.getTestResultFailed(
+                  V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE4);
+            try {
+               portletResp.setPortletMode(PortletMode.UNDEFINED);
+            } catch (PortletModeException e) {
+               result.setTcSuccess(true);
+               result.appendTcDetail(e.toString());
+            }
+            result.writeTo(writer);
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE5)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode5
+             */
+            /*
+             * Details:
+             * "Throws IllegalStateException if the method is invoked after sendRedirect has been called."
+             */
+             // TODO: Fix it.
+            TestResult result = tcd.getTestResultFailed(
+                  V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE5);
+            try {
+               portletResp.sendRedirect("");
+               portletResp.setPortletMode(PortletMode.UNDEFINED);
+            } catch (IllegalStateException e) {
+               result.setTcSuccess(true);
+               result.appendTcDetail(e.toString());
+            }
+            result.writeTo(writer);
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE6)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode6
+             */
+            /*
+             * Details:
+             * "Throws IllegalArgumentException if the input parameter is null."
+             */
+            TestResult result = tcd.getTestResultFailed(
+                  V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE6);
+            try {
+               portletResp.setPortletMode(null);
+            } catch (IllegalArgumentException e) {
+               result.setTcSuccess(true);
+               result.appendTcDetail(e.toString());
+            }
+            result.writeTo(writer);
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState
+             */
+            /*
+             * Details:
+             * "Sets the window state of a portlet to the given window state."
+             */
+            portletResp.setWindowState(WindowState.NORMAL);
+            renderParams.setValue("tr_setWindow", "true");
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE2)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState2
+             */
+            /*
+             * Details:
+             * "A custom window state declared in deployment descriptor could be set."
+             */
+            portletResp.setWindowState(new WindowState("custom1"));
+            renderParams.setValue("tr_setWindow2", "true");
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE3)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState3
+             */
+            /*
+             * Details:
+             * "Not more than one window state can be set. If more than one window state is set, only the last one set is valid."
+             */
+            portletResp.setWindowState(WindowState.MAXIMIZED);
+            portletResp.setWindowState(WindowState.NORMAL);
+            renderParams.setValue("tr_setWindow3", "true");
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE4)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState4
+             */
+            /*
+             * Details:
+             * "Throws WindowStateException if the portlet cannot switch to this state."
+             */
+            TestResult result = tcd.getTestResultFailed(
+                  V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE4);
+            try {
+               portletResp.setWindowState(WindowState.UNDEFINED);
+            } catch (WindowStateException e) {
+               result.setTcSuccess(true);
+               result.appendTcDetail(e.toString());
+            }
+            result.writeTo(writer);
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE5)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState5
+             */
+            /*
+             * Details:
+             * "Throws IllegalStateException if the method is invoked after sendRedirect has been called."
+             */
+             // TODO: Fix it.
+            TestResult result = tcd.getTestResultFailed(
+                  V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE5);
+            try {
+               portletResp.sendRedirect("");
+               portletResp.setWindowState(WindowState.UNDEFINED);
+            } catch (IllegalStateException e) {
+               result.setTcSuccess(true);
+               result.appendTcDetail(e.toString());
+            }
+            result.writeTo(writer);
+         } else if (action.equals(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE6)) {
+            /*
+             * TestCase:
+             * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState6
+             */
+            /*
+             * Details:
+             * "Throws IllegalArgumentException if the input parameter is null."
+             */
+            TestResult result = tcd.getTestResultFailed(
+                  V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE6);
+            try {
+               portletResp.setWindowState(null);
+            } catch (IllegalArgumentException e) {
+               result.setTcSuccess(true);
+               result.appendTcDetail(e.toString());
+            }
+            result.writeTo(writer);
+         }
+      }
+
+      PortletSession ps = portletReq.getPortletSession();
+      ps.setAttribute(
+            Constants.RESULT_ATTR_PREFIX
+                  + "RenderStateTests_SPEC2_12_MutableRenderState",
+            writer.toString());
+
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+
+      portletResp.setContentType("text/html");
+      PrintWriter writer = portletResp.getWriter();
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      PortletSession ps = portletReq.getPortletSession();
+      String msg = (String) ps.getAttribute(Constants.RESULT_ATTR_PREFIX
+            + "RenderStateTests_SPEC2_12_MutableRenderState");
+      ps.removeAttribute(Constants.RESULT_ATTR_PREFIX
+            + "RenderStateTests_SPEC2_12_MutableRenderState");
+
+      if (msg != null && msg.length() > 0) {
+         writer.write("<p>" + msg + "</p>\n");
+      }
+
+      RenderParameters renderParams = portletReq.getRenderParameters();
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters
+       */
+      /*
+       * Details:
+       * "Returns an MutableRenderParameters object representing the private and public render parameters."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         MutableRenderParameters mutableRenderParams = actionURL
+               .getRenderParameters();
+         mutableRenderParams.setValue("tr0_private", "true");
+         mutableRenderParams.setValue("tr0_public", "true");
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters2
+       */
+      /*
+       * Details:
+       * "The MutableRenderParameters object return by this method is mutable."
+       */
+      if (renderParams.getValue("tr1") != null
+            && renderParams.getValue("tr1").equals("true")) {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS2);
+         result.setTcSuccess(true);
+         result.writeTo(writer);
+      } else {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS2,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase: V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode
+       */
+      /*
+       * Details:
+       * "Sets the portlet mode of a portlet to the given portlet mode."
+       */
+      if (portletReq.getPortletMode().equals(PortletMode.HELP)) {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE);
+         result.setTcSuccess(true);
+         result.writeTo(writer);
+      } else {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode2
+       */
+      /*
+       * Details:
+       * "A custom portlet mode declared in deployment descriptor could be set."
+       */
+      if (renderParams.getValue("tr_setPortlet2") == null) {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE2,
+               actionURL);
+         tb.writeTo(writer);
+      } else {
+         // TODO: Weird exception here.. Fix it.
+         super.render(portletReq, portletResp);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode3
+       */
+      /*
+       * Details:
+       * "Not more than one portlet mode can be set. If more than one portlet mode is set, only the last one set is valid."
+       */
+      if (portletReq.getPortletMode().equals(PortletMode.HELP)) {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE3);
+         result.setTcSuccess(true);
+         result.writeTo(writer);
+      } else {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE3,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode4
+       */
+      /*
+       * Details:
+       * "Throws PortletModeException if the portlet cannot switch to this mode."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE4,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode5
+       */
+      /*
+       * Details:
+       * "Throws IllegalStateException if the method is invoked after sendRedirect has been called."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE5,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode6
+       */
+      /*
+       * Details:
+       * "Throws IllegalArgumentException if the input parameter is null."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE6,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase: V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState
+       */
+      /*
+       * Details:
+       * "Sets the window state of a portlet to the given window state."
+       */
+      if (renderParams.getValue("tr_setWindow") != null
+            && renderParams.getValue("tr_setWindow").equals("true")
+            && portletReq.getWindowState().equals(WindowState.NORMAL)) {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE);
+         result.setTcSuccess(true);
+         result.writeTo(writer);
+      } else {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState2
+       */
+      /*
+       * Details:
+       * "A custom window state declared in deployment descriptor could be set."
+       */
+      if (renderParams.getValue("tr_setWindow2") == null) {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE2,
+               actionURL);
+         tb.writeTo(writer);
+      } else {
+         //TODO: Implement test case
+         //super.render(portletReq, portletResp);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState3
+       */
+      /*
+       * Details:
+       * "Not more than one window state can be set. If more than one window state is set, only the last one set is valid."
+       */
+      if (renderParams.getValue("tr_setWindow3") != null
+            && renderParams.getValue("tr_setWindow3").equals("true")
+            && portletReq.getWindowState().equals(WindowState.NORMAL)) {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE3);
+         result.setTcSuccess(true);
+         result.writeTo(writer);
+      } else {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE3,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState4
+       */
+      /*
+       * Details:
+       * "Throws WindowStateException if the portlet cannot switch to this state."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE4,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState5
+       */
+      /*
+       * Details:
+       * "Throws IllegalStateException if the method is invoked after sendRedirect has been called."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE5,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState6
+       */
+      /*
+       * Details:
+       * "Throws IllegalArgumentException if the input parameter is null."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE6,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+   }
+
+   @RenderMode(name = "custom1")
+   public void doView(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+
+      PrintWriter writer = portletResp.getWriter();
+
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode2
+       */
+      /*
+       * Details:
+       * "A custom portlet mode declared in deployment descriptor could be set."
+       */
+      RenderParameters renderParams = portletReq.getRenderParameters();
+      if (renderParams.getValue("tr_setPortlet2") != null
+            && renderParams.getValue("tr_setPortlet2").equals("true")) {
+         TestResult result = tcd.getTestResultFailed(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE2);
+         if (portletReq.getPortletMode().equals(new PortletMode("custom1"))) {
+            result.setTcSuccess(true);
+         } else {
+            result.appendTcDetail(
+                  "Failed because portlet mode is not CUSTOM1 but "
+                        + portletReq.getPortletMode().toString());
+         }
+         result.writeTo(writer);
+      }
+   }
+
+}
diff --git a/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC2_12_MutableRenderState2.java b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC2_12_MutableRenderState2.java
new file mode 100644
index 0000000..af4b9d0
--- /dev/null
+++ b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/portlets/RenderStateTests_SPEC2_12_MutableRenderState2.java
@@ -0,0 +1,126 @@
+/*  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 javax.portlet.tck.portlets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.ActionURL;
+import javax.portlet.MutableActionParameters;
+import javax.portlet.Portlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletSession;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.annotations.PortletConfiguration;
+import javax.portlet.tck.beans.TestButton;
+import javax.portlet.tck.beans.TestResult;
+import javax.portlet.tck.constants.Constants;
+import javax.portlet.tck.util.ModuleTestCaseDetails;
+
+import static javax.portlet.tck.util.ModuleTestCaseDetails.*;
+
+/**
+ * This portlet implements several test cases for the JSR 362 TCK. The test case
+ * names are defined in the /src/main/resources/xml-resources/additionalTCs.xml
+ * file. The build process will integrate the test case names defined in the
+ * additionalTCs.xml file into the complete list of test case names for
+ * execution by the driver.
+ *
+ */
+
+@PortletConfiguration(portletName = "RenderStateTests_SPEC2_12_MutableRenderState2")
+public class RenderStateTests_SPEC2_12_MutableRenderState2 implements Portlet {
+
+   @Override
+   public void init(PortletConfig config) throws PortletException {
+   }
+
+   @Override
+   public void destroy() {
+   }
+
+   @Override
+   public void processAction(ActionRequest portletReq,
+         ActionResponse portletResp) throws PortletException, IOException {
+      
+      ModuleTestCaseDetails tcd = new ModuleTestCaseDetails();
+      StringWriter writer = new StringWriter();
+      
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters3
+       */
+      /*
+       * Details:
+       * "If no render parameters are available, the object will be empty."
+       */
+      TestResult result = tcd.getTestResultFailed(
+            V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS3);
+      if(portletResp.getRenderParameters().isEmpty()){
+         result.setTcSuccess(true);
+      }
+      result.writeTo(writer);
+      
+      PortletSession ps = portletReq.getPortletSession();
+      ps.setAttribute(Constants.RESULT_ATTR_PREFIX + "RenderStateTests_SPEC2_12_MutableRenderState2", writer.toString());
+      
+   }
+
+   @Override
+   public void render(RenderRequest portletReq, RenderResponse portletResp)
+         throws PortletException, IOException {
+
+      portletResp.setContentType("text/html");
+      PrintWriter writer = portletResp.getWriter();
+
+      PortletSession ps = portletReq.getPortletSession();
+      String msg = (String) ps.getAttribute(Constants.RESULT_ATTR_PREFIX + "RenderStateTests_SPEC2_12_MutableRenderState2");
+      ps.removeAttribute(Constants.RESULT_ATTR_PREFIX + "RenderStateTests_SPEC2_12_MutableRenderState2");
+
+      if (msg != null && msg.length() > 0) {
+         writer.write("<p>" + msg + "</p>\n");
+      }
+      
+      /*
+       * TestCase:
+       * V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters3
+       */
+      /*
+       * Details:
+       * "If no render parameters are available, the object will be empty."
+       */
+      {
+         ActionURL actionURL = portletResp.createActionURL();
+         MutableActionParameters mutableActionParams = actionURL
+               .getActionParameters();
+         mutableActionParams.clear();
+         TestButton tb = new TestButton(
+               V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS3,
+               actionURL);
+         tb.writeTo(writer);
+      }
+
+   }
+
+}
diff --git a/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java
index 399697a..71d7d60 100644
--- a/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java
+++ b/portlet-tck_3.0/V3RenderStateTests/src/main/java/javax/portlet/tck/util/ModuleTestCaseDetails.java
@@ -34,24 +34,57 @@
  */
 public class ModuleTestCaseDetails extends TestCaseDetails {
 
+   public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GENERAL = "V3RenderStateTests_SPEC1_12_RenderState_general";
    public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS = "V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters";
    public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS2 = "V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters2";
+   public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS3 = "V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters3";
    public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETPORTLETMODE = "V3RenderStateTests_SPEC1_12_RenderState_getPortletMode";
    public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETPORTLETMODE2 = "V3RenderStateTests_SPEC1_12_RenderState_getPortletMode2";
    public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETWINDOWSTATE = "V3RenderStateTests_SPEC1_12_RenderState_getWindowState";
    public final static String V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETWINDOWSTATE2 = "V3RenderStateTests_SPEC1_12_RenderState_getWindowState2";
-
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS = "V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS2 = "V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters2";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS3 = "V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters3";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE = "V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE2 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode2";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE3 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode3";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE4 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode4";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE5 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode5";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE6 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode6";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE = "V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE2 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState2";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE3 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState3";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE4 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState4";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE5 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState5";
+   public final static String V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE6 = "V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState6";
    
    private final static Map<String, String> tcd = new HashMap<String, String>();
    static {
 
+      tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GENERAL, "RenderState interface provides read-only access to the render state.");
       tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS, "Returns an RenderParameters object representing the private and public render parameters.");
       tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS2, "The RenderParameters object return by this method is immutable.");
+      tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETRENDERPARAMETERS3, "If no render parameters are available, the object will be empty.");
       tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETPORTLETMODE, "Returns the current portlet mode of the portlet.");
       tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETPORTLETMODE2, "If the portlet mode is not available, PortletMode.UNDEFINED is returned.");
       tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETWINDOWSTATE, "Returns the current window state of the portlet.");
       tcd.put(V3RENDERSTATETESTS_SPEC1_12_RENDERSTATE_GETWINDOWSTATE2, "If the window state is not available, WindowState.UNDEFINED is returned.");
-
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS, "Returns an MutableRenderParameters object representing the private and public render parameters.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS2, "The MutableRenderParameters object return by this method is mutable.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_GETRENDERPARAMETERS3, "If no render parameters are available, the object will be empty.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE, "Sets the portlet mode of a portlet to the given portlet mode.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE2, "A custom portlet mode declared in deployment descriptor could be set.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE3, "Not more than one portlet mode can be set. If more than one portlet mode is set, only the last one set is valid.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE4, "Throws PortletModeException if the portlet cannot switch to this mode.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE5, "Throws IllegalStateException if the method is invoked after sendRedirect has been called.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETPORTLETMODE6, "Throws IllegalArgumentException if the input parameter is null.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE, "Sets the window state of a portlet to the given window state.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE2, "A custom window state declared in deployment descriptor could be set.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE3, "Not more than one window state can be set. If more than one window state is set, only the last one set is valid.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE4, "Throws WindowStateException if the portlet cannot switch to this state.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE5, "Throws IllegalStateException if the method is invoked after sendRedirect has been called.");
+      tcd.put(V3RENDERSTATETESTS_SPEC2_12_MUTABLERENDERSTATE_SETWINDOWSTATE6, "Throws IllegalArgumentException if the input parameter is null.");
+      
    }
 
    /**
diff --git a/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalPages.xml b/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalPages.xml
index a08270c..557b3eb 100644
--- a/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalPages.xml
+++ b/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalPages.xml
@@ -33,6 +33,9 @@
 <render-config default="About Apache Pluto">
 <page xmlns="" name="V3RenderStateTests" uri="/WEB-INF/themes/pluto-default-theme.jsp">
 <portlet context="/tck-V3RenderStateTests-3.0-SNAPSHOT" name="RenderStateTests_SPEC1_12_RenderState"/>
+<portlet context="/tck-V3RenderStateTests-3.0-SNAPSHOT" name="RenderStateTests_SPEC1_12_RenderState2"/>
+<portlet context="/tck-V3RenderStateTests-3.0-SNAPSHOT" name="RenderStateTests_SPEC2_12_MutableRenderState"/>
+<portlet context="/tck-V3RenderStateTests-3.0-SNAPSHOT" name="RenderStateTests_SPEC2_12_MutableRenderState2"/>
 </page>
 </render-config>
 </pluto-portal-driver>
diff --git a/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalTCs.xml b/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalTCs.xml
index 8685d64..3495e7b 100644
--- a/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalTCs.xml
+++ b/portlet-tck_3.0/V3RenderStateTests/src/main/resources/xml-resources/additionalTCs.xml
@@ -20,10 +20,27 @@
 <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
 <properties>
 <!-- JSR 362 API RenderStateTests test case names and page mappings -->
+<entry key="V3RenderStateTests_SPEC1_12_RenderState_general">V3RenderStateTests</entry>
 <entry key="V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters">V3RenderStateTests</entry>
 <entry key="V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters2">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC1_12_RenderState_getRenderParameters3">V3RenderStateTests</entry>
 <entry key="V3RenderStateTests_SPEC1_12_RenderState_getPortletMode">V3RenderStateTests</entry>
 <entry key="V3RenderStateTests_SPEC1_12_RenderState_getPortletMode2">V3RenderStateTests</entry>
 <entry key="V3RenderStateTests_SPEC1_12_RenderState_getWindowState">V3RenderStateTests</entry>
 <entry key="V3RenderStateTests_SPEC1_12_RenderState_getWindowState2">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters2">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_getRenderParameters3">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode2">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode3">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode4">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode5">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setPortletMode6">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState2">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState3">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState4">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState5">V3RenderStateTests</entry>
+<entry key="V3RenderStateTests_SPEC2_12_MutableRenderState_setWindowState6">V3RenderStateTests</entry>
 </properties>