<?xml version="1.0" encoding="UTF-8"?>
<!--

  Copyright (c) 2009 The JOMC Project
  Copyright (c) 2005 Christian Schulte <cs@jomc.org>
  All rights reserved.

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.

    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in
      the documentation and/or other materials provided with the
      distribution.

  THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  $Id: changes.xml 1241 2010-01-09 21:24:32Z schulte2005 $

-->
<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Changelog</title>
    <author email="cs@jomc.org">Christian Schulte</author>
  </properties>
  <body>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-1" date="2009-09-19"/>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-2" date="2009-09-25">
      <action dev="schulte2005" type="update"><![CDATA[
      Added support for inheriting from multiple implementations to the model and made model validation more strict.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Added goal <code>validate-runtime-modules</code> to <code>maven-jomc-plugin</code>.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected a <code>MissingResourceException</code> thrown by class <code>org.jomc.model.DefaultModelManager</code>.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected an <code>InstantiationException</code> thrown by method <code>getJavaValue</code> of class <code>org.jomc.model.Property</code>
      for <code>null</code> values.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      <code>http://jomc.org/model</code> schema updates<ul>
      <li>Added <code>deprecated</code> attribute to <code>ModelObject</code> complex type.</li>
      <li>Added <code>final</code> and <code>override</code> attributes to
      <ul>
        <li><code>SpecificationReference</code></li>
        <li><code>Implementation</code></li>
        <li><code>Property</code></li>
        <li><code>PropertyReference</code></li>
        <li><code>Message</code></li>
        <li><code>MessageReference</code></li>
      </ul>
      complex types.</li>
      <li>Added <code>abstract</code> attribute to <code>Implementation</code> complex type.</li>
      <li>Removed <code>parent</code> attribute from <code>Implemenation</code> complex type and added <code>implementations</code> element.</li>
      <li>Added <code>reference</code> element to <code>Implementations</code> complex type.</li>
      <li>Added <code>version</code> attribute to <code>ImplementationReference</code> complex type.</li>
      </ul>]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      <code>http://jomc.org/model</code> schema updates<ul>
      <li>Corrected <code>text-key</code> selector of <code>texts</code> element.</li>
      <li>Corrected <code>documentation-key</code> selector of <code>documentation</code> element.</li>
      <li>Corrected <code>template-key</code> selector of <code>template</code> element.</li>
      <li>Corrected <code>module-key</code> selector of <code>modules</code> element.</li>
      <li>Corrected <code>specification-key</code> selector of <code>modules</code> element.</li>
      <li>Corrected <code>implementation-key</code> selector of <code>modules</code> element.</li>
      <li>Corrected <code>specification-uniqueness</code> selector of <code>specifications</code> element.</li>
      <li>Corrected <code>specification-reference-uniqueness</code> selector of <code>specifications</code> element.</li>
      <li>Corrected <code>implementation-uniqueness</code> selector of <code>implementations</code> element.</li>
      <li>Corrected <code>implementation-uniqueness</code> selector of <code>implementations</code> element.</li>
      <li>Corrected <code>dependency-uniqueness</code> selector of <code>dependencies</code> element.</li>
      <li>Corrected <code>property-name-uniqueness</code> selector of <code>properties</code> element.</li>
      <li>Corrected <code>property-reference-uniqueness</code> selector of <code>properties</code> element.</li>
      <li>Corrected <code>message-name-uniqueness</code> selector of <code>messages</code> element.</li>
      <li>Corrected <code>message-reference-uniqueness</code> selector of <code>messages</code> element.</li>
      <li>Corrected <code>argument-name-uniqueness</code> selector of <code>arguments</code> element.</li>
      <li>Corrected <code>argument-index-uniqueness</code> selector of <code>arguments</code> element.</li>
      <li>Corrected <code>instance-uniqueness</code> selector of <code>instances</code> element.</li>
      <li>Corrected <code>argument-index-uniqueness</code> selector of <code>instances</code> element.</li>
      </ul>]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-3" date="2009-10-01">
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.tools.JavaClasses</code> to correct a <code>NullPointerException</code> thrown for
      missing classpath resources.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated tools to support classes without package.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Improved error handling of class <code>org.jomc.util.SectionEditor</code>.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Renamed mojo parameters <code>javaSourceProcessingDisabled</code> and <code>javaClassProcessingDisabled</code> to
      <code>javaSourceProcessingEnabled</code> and <code>javaClassProcessingEnabled</code>. Renamed corresponding
      expressions <code>jomc.javaSources.disabled</code> and <code>jomc.javaClasses.disabled</code> to
      <code>jomc.javaSources.enabled</code> and <code>jomc.javaClasses.enabled</code>.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-4" date="2009-10-04">
      <action dev="schulte2005" type="fix">Build updates.</action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-5" date="2009-10-06">
      <action dev="schulte2005" type="update"><![CDATA[
      Updated class <code>org.jomc.tools.JomcTool</code> to support overriding templates. Instead of having to copy all
      templates from the default profile, only templates differing from the default profile need to be added to new
      profiles.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.tools.JavaSources</code> to close any writers after merging templates.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected a <code>NullPointerException</code> thrown by method <code>getDependency(Object, String)</code> of class
      <code>org.jomc.ri.DefaultObjectManager</code> when trying to get a dependency of an instance without any
      dependencies.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected a <code>NullPointerException</code> thrown by method <code>getProperty(Object, String)</code> of class
      <code>org.jomc.ri.DefaultObjectManager</code> when trying to get a property of an instance without any properties.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected a <code>NullPointerException</code> thrown by method <code>getMessage(Object, String, Locale, Object)</code>
      of class <code>org.jomc.ri.DefaultObjectManager</code> when trying to get a message of an instance without any
      messages.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected a <code>NullPointerException</code> thrown by method <code>getLocator(URI)</code> of class
      <code>org.jomc.ri.DefaultObjectManager</code> when trying to get a locator using an URI with an undefined scheme.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.tools.JomcTool</code> to avoid generating implementation source files leading to
      <code>repeated interface</code> compile errors.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-6" date="2009-10-08">
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated CLI classes to correctly support the platform encoding when producing output.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-7" date="2009-10-12">
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected an <code>EmptyStackException</code> thrown by method <code>editLine</code> of class
      <code>org.jomc.util.SectionEditor</code> when encountering a section end marker without a matching section start
      marker.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.model.DefaultModelManager</code> to correctly maintain the state of an object
      created using a static factory method.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Updated command line tool to display illegal XML elements when using the <code>--debug</code> option.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Added <code>org.jomc.spi.Invoker</code> interface to the <code>jomc-spi</code> artifact to allow customization of
      object invocations. Added corresponding default implementation classes <code>org.jomc.ri.DefaultInvocation</code>
      and <code>org.jomc.ri.DefaultInvoker</code> to <code>jomc-ri</code> artifact and updated class
      <code>org.jomc.ri.DefaultObjectManager</code>.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Added parameter <code>modelObjectStylesheet</code> to goals <code>main-java-classes</code> and
      <code>test-java-classes</code> of the <code>maven-jomc-plugin</code>.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-8" date="2009-11-18">
      <action dev="schulte2005" type="update"><![CDATA[
      Added interface <code>org.jomc.spi.Invocation</code> to the <code>jomc-spi</code> artifact and updated interface
      <code>org.jomc.spi.Invoker</code> and classes <code>org.jomc.ri.DefaultInvoker</code>,
      <code>org.jomc.ri.DefaultInvocation</code> and <code>org.jomc.ri.DefaultObjectManager</code> to no longer force
      the use of the <code>jomc-ri</code> artifact at compile time for customizing invocation handling.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Updated various classes to support programmatic configuration of defaults in addition to system properties.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected a <code>NullPointerException</code> thrown by the <code>resolveEntity</code> method of the
      <code>EntityResolver</code> returned by method <code>getEntityResolver</code> of class
      <code>org.jomc.model.DefaultModelManager</code> when given a <code>null</code> public id.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated the <code>LSResourceResolver</code> returned by method <code>getResourceResolver</code> of class
      <code>org.jomc.model.DefaultModelManager</code> to correctly support resolving resources of type
      <code>http://www.w3.org/2001/XMLSchema</code> and to log a warning when used to resolve resources of unsupported
      type.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected a <code>MissingResourceException</code> thrown by the <code>getSchemaResources</code> method of class
      <code>org.jomc.model.DefaultModelManager</code> when the log level of the instance is lower or equal to
      <code>Level.FINE</code> and schema resources are found in <code>MANIFEST.MF</code> files.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected the 'documents' and 'classpath' options of the command line interface to use the platform path separator
      instead of a hardcoded ':' character for separating values.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected the <code>validateClasses</code> methods of class <code>org.jomc.tools.JavaClasses</code> taking a class
      loader to correctly build resource names from class names.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Added interface <code>org.jomc.model.ModelObjectValidator</code> and moved validation methods from interface
      <code>org.jomc.model.ModelManager</code>.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Updated to support static factory methods in abstract classes.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Added parameters <code>moduleIncludes</code> and <code>moduleExcludes</code> to class
      <code>org.jomc.mojo.JomcResourceTransformer</code>.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Added options <code>module-includes</code> and <code>module-excludes</code> to the <code>merge-modules</code>
      command of the command line interface.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-9" date="2009-11-20">
      <action dev="schulte2005" type="update"><![CDATA[
      <code>http://jomc.org/model</code> schema updates<ul>
      <li>Updated <code>class</code> attribute of <code>Specification</code> complex type from <code>required</code> to
      <code>optional</code>.</li>
      </ul>]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.ri.DefaultObjectManager</code> to correctly close open streams/readers.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-10" date="2009-11-27">
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected the help output of the command line interface to include options 'debug', 'verbose' and
      'fail-on-warnings'.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.ri.DefaultObjectManager</code> to report errors when initialization fails due to an
      illegal model.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.ri.DefaultInvoker</code> to correctly call the <code>postInvoke</code> method when an
      exception is thrown by the <code>preInvoke</code> method.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.model.Modules</code> to not build instances from implementations not declaring a
      class.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Updated classes <code>org.jomc.ri.DefaultObjectManager</code> and <code>org.jomc.ri.DefaultInvocation</code>
      adding the modules and the class loader corresponding to an invocation to the invocation context.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-11" date="2009-12-07">
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected the <code>getInstance</code> methods of class <code>org.jomc.model.Modules</code> to support collecting
      <code>xs:any</code> objects not bound with a JAXB context.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Added validation of dependency property override constraints to class
      <code>org.jomc.model.DefaultModelObjectValidator</code>.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.tools.JomcTool</code> to stop the <code>getJavaTypeName(org.jomc.model.Property, boolean)</code>
      method from ignoring the given type of a property when property <code>any</code> holds a non-<code>null</code>
      value.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Removed all <code>appinfo</code> elements with XML namespace <code>http://java.sun.com/xml/ns/jaxb</code> from
      the <code>jomc-1.0.xsd</code> and <code>jomc-bootstrap-1.0.xsd</code> schemas.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated the <code>minOccurs</code> facet of the <code>template</code> element reference of the
      <code>Message</code> complex type of the <code>http://jomc.org/model</code> namespace from <code>0</code>
      to <code>1</code>.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Renamed the <code>implementationName</code> attribute of the <code>Instance</code> complex type of the
      <code>http://jomc.org/model</code> namespace to <code>name</code>.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-12" date="2009-12-11">
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected the <code>createObject</code> method of class <code>org.jomc.model.Modules</code> to stop throwing
      a <code>NullPointerException</code> when a factory method returns <code>null</code>.]]>
      </action>
    </release>
    <!-- *********************************************************************************************************** -->
    <release version="1.0-alpha-13" date="2010-01-10">
      <action dev="schulte2005" type="update"><![CDATA[
      Updated methods<ul>
      <li><code>public String getJavaPackageName( final Specification specification )</code></li>
      <li><code>public String getJavaTypeName( final Specification specification, final boolean qualified )</code></li>
      <li><code>public String getJavaClasspathLocation( final Specification specification )</code></li>
      <li><code>public String getJavaPackageName( final SpecificationReference reference )</code></li>
      <li><code>public String getJavaTypeName( final SpecificationReference reference, final boolean qualified )</code></li>
      <li><code>public String getJavaPackageName( final Implementation implementation )</code></li>
      <li><code>public String getJavaTypeName( final Implementation implementation, final boolean qualified )</code></li>
      <li><code>public String getJavaClasspathLocation( final Implementation implementation )</code></li>
      <li><code>public String getJavaTypeName( final Dependency dependency )</code></li>
      <li><code>public boolean isJavaDefaultPackage( final Specification specification )</code></li>
      <li><code>public boolean isJavaDefaultPackage( final Implementation implementation )</code></li>
      </ul> of class <code>org.jomc.tools.JomcTool</code> to return <code>null</code> rather than throwing a
      <code>NullPointerException</code> when passed a model object with a <code>null</code> class value.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Added attribute <code>classDeclaration</code> to <code>Specification</code> and <code>Implementation</code>
      complex types of the <code>http://jomc.org/model</code> namespace.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Split <code>org.jomc.model.ModelManager</code> into <code>org.jomc.model.ModelContext</code>,
      <code>org.jomc.model.ModelProvider</code>, <code>org.jomc.model.ModelProcessor</code> and
      <code>org.jomc.model.ModelValidator</code> to add support for extending the model by using the standard
      <code>META-INF/services</code> extension mechanism.]]>
      </action>
      <action dev="schulte2005" type="update"><![CDATA[
      Updated class <code>org.jomc.mojo.JomcResourceTransformer</code> to support version 1.3 of the
      <code>maven-shade-plugin</code>.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Updated class <code>org.jomc.model.DefaultModelValidator</code> to use constant report detail identifiers
      for any caught <code>org.jomc.util.ParseException</code> and <code>org.jomc.util.TokenMgrError</code> exceptions
      instead of simple class names.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Removed the <code>setElement</code> method of class <code>org.jomc.model.ModelValidationReport.Detail</code>
      and added a corresponding parameter to the constructor making report details immutable.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Added validation of message templates to class <code>org.jomc.model.DefaultModelValidator</code>.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Added validation of simple type property values or object type values to class
      <code>org.jomc.model.DefaultModelValidator</code>.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Added validation of property types to class <code>org.jomc.model.DefaultModelValidator</code>.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected method
      <code>public List&lt;String&gt; getJavaInterfaceNames( final Implementation implementation, final boolean qualified )</code>
      of class <code>org.jomc.tools.JomcTool</code> to ignore specifications with a <code>null</code> class value.]]>
      </action>
      <action dev="schulte2005" type="fix"><![CDATA[
      Corrected <pre>Can't find bundle for base name org/jomc/mojo/ValidateMainJavaClassesMojo</pre> and
      <pre>Can't find bundle for base name org/jomc/mojo/ValidateTestJavaClassesMojo</pre> build errors when using
      <code>-Djomc.javaClasses.enabled=false</code> command line argument.]]>
      </action>
    </release>
  </body>
</document>
