/*******************************************************************************
* Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Martin Vojtek - 2.6.0 - initial implementation
******************************************************************************/
package org.eclipse.persistence.jaxb;
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import org.eclipse.persistence.internal.oxm.OXMSystemProperties;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
public final class MOXySystemProperties {
private MOXySystemProperties() {};
/**
* User can specify via org.eclipse.persistence.moxy.annotation.xml-id-extension property, that he wants to use extended behavior of XmlId annotation.
* When extended behavior is used, XmlId can be of different type than java.lang.String.
*/
public static final String XML_ID_EXTENSION = "org.eclipse.persistence.moxy.annotation.xml-id-extension";
/**
* User can specify via org.eclipse.persistence.moxy.annotation.xml-value-extension property, that he wants to use extended behavior of XmlValue annotation.
* When extended behavior is used, class with field annotated with XmlValue can extend classes different than java.lang.Object.
*/
public static final String XML_VALUE_EXTENSION = "org.eclipse.persistence.moxy.annotation.xml-value-extension";
/**
* If we should treat unqualified type property in JSON as MOXy type discriminator.
*/
public static final String JSON_TYPE_COMPATIBILITY = OXMSystemProperties.JSON_TYPE_COMPATIBILITY;
/**
* If there should be xsd prefix when using simple types, e.g. xsd.int.
*/
public static final String JSON_USE_XSD_TYPES_PREFIX = OXMSystemProperties.JSON_USE_XSD_TYPES_PREFIX;
public static final Boolean xmlIdExtension = getBoolean(XML_ID_EXTENSION);
public static final Boolean xmlValueExtension = getBoolean(XML_VALUE_EXTENSION);
public static final Boolean jsonTypeCompatibility = getBoolean(JSON_TYPE_COMPATIBILITY);
public static final Boolean jsonUseXsdTypesPrefix = getBoolean(JSON_USE_XSD_TYPES_PREFIX);
/**
* Returns value of system property.
*
* @param propertyName system property
* @return value of the system property
*/
private static Boolean getBoolean(final String propertyName) {
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
return runDoPrivileged(propertyName);
} else {
return getSystemPropertyValue(propertyName);
}
}
private static Boolean runDoPrivileged(final String propertyName) {
try {
return AccessController.doPrivileged(new PrivilegedExceptionAction<Boolean>() {
@Override
public Boolean run() throws Exception {
return getSystemPropertyValue(propertyName);
}});
} catch (PrivilegedActionException e) {
throw (RuntimeException) e.getCause();
}
}
private static Boolean getSystemPropertyValue(final String propertyName) {
return Boolean.getBoolean(propertyName);
}
}