| /* |
| * Copyright (c) 1998, 2020 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 v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Oracle - initial API and implementation. |
| // 06/16/2015-2.7 Tomas Kraus |
| // - 254437: Added default value support. |
| package org.eclipse.persistence.internal.security; |
| |
| import java.security.AccessController; |
| import java.security.PrivilegedAction; |
| |
| /** |
| * INTERNAL: |
| * Retrieve {@link System} property with privileges enabled. |
| */ |
| public class PrivilegedGetSystemProperty implements PrivilegedAction<String> { |
| /** The name of the {@link System} property. */ |
| private final String key; |
| /** A default value of the {@link System} property. */ |
| private final String def; |
| |
| /** |
| * INTERNAL: |
| * Creates an instance of {@link System} property getter with privileges enabled. |
| * Selects {@link System} property getter without default value to be executed so getter will return {@code null} |
| * if property with {@code key} does not exist. |
| * @param key The name of the {@link System} property. |
| */ |
| public PrivilegedGetSystemProperty(final String key) { |
| this.key = key; |
| this.def = null; |
| } |
| |
| /** |
| * INTERNAL: |
| * Creates an instance of {@link System} property getter with privileges enabled. |
| * Selects {@link System} property getter with default value to be executed so getter will return {@code def} |
| * if property with {@code key} does not exist. |
| * @param key The name of the {@link System} property. |
| * @since 2.7 |
| */ |
| public PrivilegedGetSystemProperty(final String key, final String def) { |
| this.key = key; |
| this.def = def; |
| } |
| |
| /** |
| * INTERNAL: |
| * Performs {@link System} property retrieval. |
| * This method will be called by {@link AccessController#doPrivileged(PrivilegedAction)} after enabling privileges. |
| * @return The {@link String} value of the system property. |
| */ |
| @Override |
| public String run() { |
| return def != null ? System.getProperty(key, def) : System.getProperty(key); |
| } |
| |
| } |
| |