<!--                                                                        -->
<!-- Copyright 2010 Google Inc.                                             -->
<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
<!-- may not use this file except in compliance with the License. You may   -->
<!-- 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. License for the specific language governing permissions and   -->
<!-- limitations under the License.                                         -->

<module>
  <inherits name="com.google.gwt.json.JSON"/>
  <inherits name="com.google.gwt.user.UI" />
  <inherits name="com.google.gwt.user.RemoteService" />
  <inherits name="com.google.gwt.logging.LogImpl"/>
  <source path="client" />
  <source path="shared" />
  <public path="public" />

  <replace-with class="com.google.gwt.logging.client.LogConfiguration.LogConfigurationImplRegular">
    <when-type-is class="com.google.gwt.logging.client.LogConfiguration.LogConfigurationImplNull"/>
    <when-property-is name="gwt.logging.enabled" value="TRUE" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.LogConfiguration.LogConfigurationImplSevere">
    <when-type-is class="com.google.gwt.logging.client.LogConfiguration.LogConfigurationImplNull"/>
    <when-property-is name="gwt.logging.enabled" value="SEVERE" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.LogConfiguration.LogConfigurationImplWarning">
    <when-type-is class="com.google.gwt.logging.client.LogConfiguration.LogConfigurationImplNull"/>
    <when-property-is name="gwt.logging.enabled" value="WARNING" />
  </replace-with>

  <!-- Set up and handle the gwt.logging.logLevel property -->
  <define-property name="gwt.logging.logLevel" values="ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE" />
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.All">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="ALL" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.Finest">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="FINEST" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.Finer">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="FINER" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.Fine">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="FINE" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.Config">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="CONFIG" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.Info">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="INFO" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.Warning">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="WARNING" />
  </replace-with>
  <replace-with class="com.google.gwt.logging.client.DefaultLevel.Severe">
    <when-type-is class="com.google.gwt.logging.client.DefaultLevel" />
    <when-property-is name="gwt.logging.logLevel" value="SEVERE" />
  </replace-with>

  <!-- Set the default implementation for HasWidgetsLogHandler -->
  <replace-with class="com.google.gwt.logging.client.PopupLogHandler">
    <when-type-is class="com.google.gwt.logging.client.HasWidgetsLogHandler" />
  </replace-with>

  <!-- Replace default consoleHandler for better SuperDevMode logging -->
  <replace-with class="java.util.logging.SimpleConsoleLogHandler">
    <when-type-is class="com.google.gwt.logging.client.ConsoleLogHandler" />
    <all>
      <when-property-is name="superdevmode" value="on"/>
      <when-property-is name="compiler.stackMode" value="native"/>
    </all>
  </replace-with>

  <!-- Set up and handle the gwt.logging.xxxHandler properties -->
  <define-property name="gwt.logging.consoleHandler" values="ENABLED, DISABLED" />
  <replace-with class="com.google.gwt.logging.client.NullLogHandler">
    <when-type-is class="com.google.gwt.logging.client.ConsoleLogHandler" />
    <any>
      <when-property-is name="gwt.logging.enabled" value="FALSE" />
      <when-property-is name="gwt.logging.consoleHandler" value="DISABLED" />
    </any>
  </replace-with>
  <define-property name="gwt.logging.developmentModeHandler" values="ENABLED, DISABLED" />
  <replace-with class="com.google.gwt.logging.client.NullLogHandler">
    <when-type-is class="com.google.gwt.logging.client.DevelopmentModeLogHandler" />
    <any>
      <when-property-is name="gwt.logging.enabled" value="FALSE" />
      <when-property-is name="gwt.logging.developmentModeHandler" value="DISABLED" />
    </any>
  </replace-with>
  <define-property name="gwt.logging.systemHandler" values="ENABLED, DISABLED" />
  <replace-with class="com.google.gwt.logging.client.NullLogHandler">
    <when-type-is class="com.google.gwt.logging.client.SystemLogHandler" />
    <any>
      <when-property-is name="gwt.logging.enabled" value="FALSE" />
      <when-property-is name="gwt.logging.systemHandler" value="DISABLED" />
    </any>
  </replace-with>
  <define-property name="gwt.logging.simpleRemoteHandler" values="ENABLED, DISABLED" />
  <replace-with class="com.google.gwt.logging.client.NullLogHandler">
    <when-type-is class="com.google.gwt.logging.client.SimpleRemoteLogHandler" />
    <any>
      <when-property-is name="gwt.logging.enabled" value="FALSE" />
      <when-property-is name="gwt.logging.simpleRemoteHandler" value="DISABLED" />
    </any>
  </replace-with>
  <define-property name="gwt.logging.hasWidgetsHandler" values="ENABLED, DISABLED" />
  <replace-with class="com.google.gwt.logging.client.NullLogHandler">
    <when-type-is class="com.google.gwt.logging.client.HasWidgetsLogHandler" />
    <any>
      <when-property-is name="gwt.logging.enabled" value="FALSE" />
      <when-property-is name="gwt.logging.hasWidgetsHandler" value="DISABLED" />
    </any>
  </replace-with>

  <!-- Default values for all properties -->
  <set-property name="gwt.logging.logLevel" value="INFO"/>
  <set-property name="gwt.logging.consoleHandler" value="ENABLED" />
  <set-property name="gwt.logging.developmentModeHandler" value="ENABLED" />
  <set-property name="gwt.logging.hasWidgetsHandler" value="DISABLED" />
  <set-property name="gwt.logging.systemHandler" value="DISABLED" />
  <set-property name="gwt.logging.simpleRemoteHandler" value="DISABLED" />

  <entry-point class="com.google.gwt.logging.client.LogConfiguration"/>

  <!-- Disable simple logging as the app already opted into Logging by inheriting this module -->
  <set-property name="gwt.logging.simpleConsoleHandler" value="DISABLED"/>
</module>
