<!--
 * Copyright 2001-2009 The Apache Software Foundation.
 *
 * Licensed 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.
 *
 * -->
 
        Release Notes - jUDDI - Version 3.3.9
                
<h2>        Bug
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-1006'>JUDDI-1006</a>] -         Saving an Access Point Type
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-1011'>JUDDI-1011</a>] -         MS SQL Server table - length of field too large
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-1015'>JUDDI-1015</a>] -         Oracle database start up issue due to max string length
</li>
</ul>
                
<h2>        Improvement
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-1016'>JUDDI-1016</a>] -         Add DDL generators for all available hibernate supported dialetcs
</li>
</ul>
                                                                                                                                                            

        Release Notes - jUDDI - Version 3.3.8
            
<h2>        Bug
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-937'>JUDDI-937</a>] -         PolicyRoundRobin not working without service cache
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-1003'>JUDDI-1003</a>] -         spring-web jar supplied with latest JUDDI distribution has security vulnerability
</li>
</ul>
                
<h2>        Improvement
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-993'>JUDDI-993</a>] -         InVm transport for embedded juddi needs to handle authentication and a sample for usage
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-1002'>JUDDI-1002</a>] -         tModelInstanceInfo value does not check for maximum length
</li>
</ul>
                                                                                                                                                        
        Release Notes - jUDDI - Version 3.3.7
            
<h2>        Bug
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-991'>JUDDI-991</a>] -         JUDDI Uses EOL Version of Apache CXF
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-996'>JUDDI-996</a>] -         Admin gui, get all client subscriptions throws a classcast error
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-997'>JUDDI-997</a>] -         Admin gui has strange behavior and no feedback if the login fails
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-999'>JUDDI-999</a>] -         Issue with SQL Server Database with JUDDI 3.3.6 : The size (8192) given to the column &#39;instance_parms&#39; exceeds the maximum allowed for any data type (8000)
</li>
</ul>
                
<h2>        Improvement
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-995'>JUDDI-995</a>] -         Add automated generation of sha512 hashes during the build
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-1000'>JUDDI-1000</a>] -         Update embedded tomcat to the latest version available
</li>
</ul>
                                                                                                                                                        

        Release Notes - jUDDI - Version 3.3.6
            
<h2>        Bug
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-992'>JUDDI-992</a>] -         FindBinding API call doesn&#39;t exactly match the spec, can&#39;t search for just the service key
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-994'>JUDDI-994</a>] -         Bash scripts containing windows CRLF line endings
</li>
</ul>
                
<h2>        Improvement
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-988'>JUDDI-988</a>] -         Update to tomcat 9
</li>
</ul>
            
<h2>        Task
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-962'>JUDDI-962</a>] -         Convert juddi.apache.org back to mvn site
</li>
</ul>
                                                                                                                                        
                                                                                                                                        
        Release Notes - jUDDI - Version 3.3.5
                                
<h2>        Bug
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-904'>JUDDI-904</a>] -         intermittent test failures
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-943'>JUDDI-943</a>] -         WebHelper class: Client name not set in servletContext after getUDDIClient is called
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-948'>JUDDI-948</a>] -         API_070_FindEntityTest is not passing anymore
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-957'>JUDDI-957</a>] -         Integration test not passing. org.apache.juddi.v3.tck.UDDI_070_FindEntityIntegrationTest:findSignedEntities()
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-960'>JUDDI-960</a>] -         TCK tests not passing (windows 7, java 1.8)
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-970'>JUDDI-970</a>] -         Code smell that ignores InvalidValueException
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-975'>JUDDI-975</a>] -         mvn site is broken
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-977'>JUDDI-977</a>] -         reduce findbugs warnings
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-978'>JUDDI-978</a>] -         Build instability with Replication tests
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-983'>JUDDI-983</a>] -         Unable to compile under centos, openjdk8, sun.security.provider.certpath.OCSP api mismatch
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-984'>JUDDI-984</a>] -         Hibernate profile fails to deploy due to extraneous class in the orm xml file
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-985'>JUDDI-985</a>] -         Replication change record delete fails with hibernate
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-987'>JUDDI-987</a>] -         TBD
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-989'>JUDDI-989</a>] -         catalina.sh start script needs to remove DOS line endings
</li>
</ul>
                                        
<h2>        Improvement
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-955'>JUDDI-955</a>] -         Pom maintenance
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-974'>JUDDI-974</a>] -         Add findbugs to the site reporting tasks
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-979'>JUDDI-979</a>] -         Add maven enforcer rules 
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-980'>JUDDI-980</a>] -         Update juddi&#39;s parent pom to the latest apache pom
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-981'>JUDDI-981</a>] -         Force all tests to run in a random order
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-986'>JUDDI-986</a>] -         Update hibernate dependencies
</li>
</ul>
                                                                                
<h2>        Task
</h2>
<ul>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-971'>JUDDI-971</a>] -         Update embedded tomcat to a more recent version
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-973'>JUDDI-973</a>] -         Code clean up juddi-client-cli
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-976'>JUDDI-976</a>] -         Add jacoco test results to mvn site
</li>
<li>[<a href='https://issues.apache.org/jira/browse/JUDDI-982'>JUDDI-982</a>] -         Removing the juddi-client-plugins module
</li>
</ul>
                                                                                                    
