1/*
2 * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package com.sun.istack.internal.localization;
27
28import com.sun.istack.internal.localization.LocalizableMessageFactory.ResourceBundleSupplier;
29
30import java.util.Arrays;
31import java.util.Locale;
32import java.util.ResourceBundle;
33
34
35/**
36 * @author WS Development Team
37 */
38public final class LocalizableMessage implements Localizable {
39
40    private final String _bundlename;
41    private final ResourceBundleSupplier _rbSupplier;
42
43    private final String _key;
44    private final Object[] _args;
45
46    @Deprecated
47    public LocalizableMessage(String bundlename, String key, Object... args) {
48        this(bundlename, null, key, args);
49    }
50
51    public LocalizableMessage(String bundlename, ResourceBundleSupplier rbSupplier,
52                              String key, Object... args) {
53        _bundlename = bundlename;
54        _rbSupplier = rbSupplier;
55        _key = key;
56        if(args==null)
57            args = new Object[0];
58        _args = args;
59    }
60
61    @Override
62    public String getKey() {
63        return _key;
64    }
65
66    @Override
67    public Object[] getArguments() {
68        return Arrays.copyOf(_args, _args.length);
69    }
70
71    @Override
72    public String getResourceBundleName() {
73        return _bundlename;
74    }
75
76    @Override
77    public ResourceBundle getResourceBundle(Locale locale) {
78        if (_rbSupplier == null)
79            return null;
80
81        return _rbSupplier.getResourceBundle(locale);
82    }
83}
84