blob: 1cca7492174637ceec98198b86418382db2b26e4 [file] [log] [blame]
~~ 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.
-----------------------------------
Apache Neethi - Migration Guide
-----------------------------------
Migrating from Apache Neethi 2 to 3
Neethi 3 is a major upgrade from Neethi 2 providing several new features
and enhanced capabilities. While effort was made to make it easy to
transition from Neeth 2 to Neethi 3, some changes are required.
* Java 5 collections - all the collections and iterators have been
updated to specify the proper types they contain. Upgrading to Neethi
3 will likely require proper typing in existing code to reduce warnings.
* Assertion.isIgnorable() - to support WS-Policy 1.5, an isIgnorable
method was added to the Assertion interface and any policy assertions
that implement that interface must be updated to add that method.
In addition, it is recommend that all AssertionBuilders builders be
updated to look for the ignorable attribute and set it appropriately.
* AssertionBuilders - AssertionBuilders are no longer tied to Axiom.
The AssertionBuilder interface is now typed to specify the object model
the builder expects for the first parameter for the build method. The
type can be any type for which there is a Converter registered. By
default, there are converters for DOM Elements and XMLStreamReaders.
If the Axiom jars are available, there are Converters for OMElement as
well. The easiest migration path is to make your builders implement
"AssertionBuilder<OMElement>".
* The default assertion implement has changed. In 2.x, the default
implementation was the XmlPrimitiveAssertion which just wrappered
the OMElement. With 3.x, the default depends on the assertion
being built. If its a single element with either no content or
text content, it will be a PrimitiveAssertion. If it contains
a single child Policy element, it will be a
PolicyContainingPrimitiveAssertion. Otherwise it will be a
XmlPrimitiveAssertion. These changes to the default assertions allows
the runtime to know more about the policy so methods like intersect
could be added.
* Two new interfaces were added that Assertions can (optionally)
implement. The PolicyContainingAssertion interface is used
to mark assertions that contain an internal Policy. This allows
the normalization and intersect operations to examine the internal
policy as well. The IntersectableAssertion interface adds methods
that an Assertion can override algorithms in the intersection
process to provide custom behavoir. For example, per spec, the
intersection algorithm should not consider attributes. However,
an application internal policy may want to consider them for
various reasons.