org.netbeans.modules.i18n.ResourceHolder Maven / Gradle / Ivy
The newest version!
/* * 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. */ package org.netbeans.modules.i18n; import java.io.IOException; import java.util.Arrays; import org.openide.loaders.DataObject; /** * Abstract class which implementation's are wrappers for holders of properties resources. * Typically such object is
resource. */ public void setResource(DataObject resource) { if (resource == null) { this.resource = null; return; } Class> clazz = resource.getClass(); // Check if the class of parameter is valid for this ResourceHolder. if(!Arrays.asList(resourceClasses).contains(clazz)) throw new IllegalArgumentException(); if(!resource.equals(this.resource)) this.resource = resource; } /** Getter for resource. */ public DataObject getResource() { return resource; } /** Getter for supportedPropertiesDataObject
which represents bundle * of .properties files. But it can be also some object representing other type of resources * e.g. subclass ofListResourceBundle
class or in case of i18n-ing JSP pages * object representing tag library etc. * * @author Peter Zavadsky */ public abstract class ResourceHolder { /** Instance of resource bundle object. */ protected DataObject resource; /** Classes which instances as resources can be hold by thisResourceHolder
. */ protected final Class[] resourceClasses; /** Construct resource holder. */ public ResourceHolder(Class[] resourceClasses) { if(resourceClasses == null || resourceClasses.length == 0) throw new IllegalArgumentException(); this.resourceClasses = resourceClasses; } /** Setter forresourceClasses
. */ public Class[] getResourceClasses() { return resourceClasses; } /** Gets all keys which are stored in underlying resource object. */ public abstract String[] getAllKeys(); /** Gets value for specified key. * @return value for key or null if such key os not stored in resource */ public abstract String getValueForKey(String key); /** Gets comment for specified key. * @return value for key or null if such key os not stored in resource */ public abstract String getCommentForKey(String key); /** * Adds new property (key-value pair) to resource object. * Behave according to settings. */ public void addProperty(Object key, Object value, String comment) { boolean overwriteValues = I18nUtil.getOptions().isReplaceResourceValue(); addProperty(key, value, comment, overwriteValues); } /** Adds new property (key-value pair) to resource object, with forcing * of reset the value for existing key in all locales. */ public abstract void addProperty(Object key, Object value, String comment, boolean forceNewValue); /** Gets template for reosurce data object. Used by instatianing. * @param clazzClass
of object to instantaniate. Have to be one of supported classes. */ public final DataObject getTemplate(Class clazz) throws IOException { if(!Arrays.asList(resourceClasses).contains(clazz)) throw new IllegalArgumentException(); return createTemplate(clazz); } /** Creates template of type clazz. */ protected abstract DataObject createTemplate(Class clazz) throws IOException; @Override public String toString() { return super.toString() + "[resource=" + String.valueOf(resource) + ", resourceClasses=" + Arrays.toString(resourceClasses) + ']'; // NOI18N } }
© 2015 - 2025 Weber Informatics LLC | Privacy Policy