Java XML JAXB Marshaller isSunCanonicalization(@Nonnull final Marshaller aMarshaller)

Here you can find the source of isSunCanonicalization(@Nonnull final Marshaller aMarshaller)

Description

is Sun Canonicalization

License

Apache License

Declaration

public static boolean isSunCanonicalization(@Nonnull final Marshaller aMarshaller) 

Method Source Code

//package com.java2s;
/**/*from  ww w  .  j  ava 2s.  co  m*/
 * Copyright (C) 2014-2017 Philip Helger (www.helger.com)
 * philip[at]helger[dot]com
 *
 * 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.
 */

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import javax.xml.bind.Marshaller;
import javax.xml.bind.PropertyException;

public class Main {
    private static final String JAXB_INTERNAL_CLASS_NAME = "com.sun.xml.internal.bind.v2.runtime.MarshallerImpl";
    private static final String SUN_C14N = "com.sun.xml.bind.c14n";
    private static final String SUN_C14N_INTERNAL = "com.sun.xml.internal.bind.c14n";

    public static boolean isSunCanonicalization(@Nonnull final Marshaller aMarshaller) {
        final String sPropertyName = isInternalSunJAXB2Marshaller(aMarshaller) ? SUN_C14N_INTERNAL : SUN_C14N;
        return _getBooleanProperty(aMarshaller, sPropertyName);
    }

    /**
     * Check if the passed marshaller is an internal one contained in the runtime.
     *
     * @param aMarshaller
     *        The marshaller to check. May be <code>null</code>.
     * @return <code>true</code> if it is a JAXB marshaller from the runtime
     *         library package
     */
    public static boolean isInternalSunJAXB2Marshaller(@Nullable final Marshaller aMarshaller) {
        return aMarshaller != null && aMarshaller.getClass().getName().equals(JAXB_INTERNAL_CLASS_NAME);
    }

    private static boolean _getBooleanProperty(@Nonnull final Marshaller aMarshaller,
            @Nonnull final String sPropertyName) throws IllegalArgumentException {
        return ((Boolean) _getProperty(aMarshaller, sPropertyName)).booleanValue();
    }

    @Nullable
    private static Object _getProperty(@Nonnull final Marshaller aMarshaller, @Nonnull final String sPropertyName)
            throws IllegalArgumentException {
        try {
            return aMarshaller.getProperty(sPropertyName);
        } catch (final PropertyException ex) {
            throw new IllegalArgumentException("Failed to get JAXB property '" + sPropertyName + "'", ex);
        }
    }
}

Related

  1. getMarshaller(final String contextPath)
  2. getMarshaller(String jaxbContext, boolean pretty)
  3. getSchemaLocation(@Nonnull final Marshaller aMarshaller)
  4. getSunNamespacePrefixMapper(@Nonnull final Marshaller aMarshaller)
  5. isInternalSunJAXB2Marshaller(@Nullable final Marshaller aMarshaller)
  6. isSunJAXB2Marshaller(@Nullable final Marshaller aMarshaller)
  7. marshal(Class clz, T marshalObj)
  8. marshal(Class c, String xml)
  9. marshal(Class c, String xml)