alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Struts example source code file (LocatableProperties.java)

This example Struts source code file (LocatableProperties.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Struts tags/keywords

hashmap, io, locatableproperties, locatableproperties, location, location, map, object, object, override, propertiesreader, reader, string, string, stringbuilder, util

The Struts LocatableProperties.java source code

package com.opensymphony.xwork2.util.location;

import com.opensymphony.xwork2.util.PropertiesReader;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * Properties implementation that remembers the location of each property.  When
 * loaded, a custom properties file parser is used to remember both the line number
 * and preceeding comments for each property entry.
 */
public class LocatableProperties extends Properties implements Locatable {

    Location location;
    Map<String,Location> propLocations;
    
    public LocatableProperties() {
        this(null);
    }
    
    public LocatableProperties(Location loc) {
        super();
        this.location = loc;
        this.propLocations = new HashMap<String,Location>();
    }
    
    @Override
    public void load(InputStream in) throws IOException {
        Reader reader = new InputStreamReader(in);
        PropertiesReader pr = new PropertiesReader(reader);
        while (pr.nextProperty()) {
            String name = pr.getPropertyName();
            String val = pr.getPropertyValue();
            int line = pr.getLineNumber();
            String desc = convertCommentsToString(pr.getCommentLines());
            
            Location loc = new LocationImpl(desc, location.getURI(), line, 0);
            setProperty(name, val, loc);
        }
    }
    
    String convertCommentsToString(List<String> lines) {
        StringBuilder sb = new StringBuilder();
        if (lines != null && lines.size() > 0) {
            for (String line : lines) {
                sb.append(line).append('\n');
            }
        }
        return sb.toString();
    }
    
    public Object setProperty(String key, String value, Object locationObj) {
        Object obj = super.setProperty(key, value);
        if (location != null) {
            Location loc = LocationUtils.getLocation(locationObj);
            propLocations.put(key, loc);
        }
        return obj;
    }
    
    public Location getPropertyLocation(String key) {
        return propLocations.get(key);
    }
    
    public Location getLocation() {
        return location;
    }

}

Other Struts examples (source code examples)

Here is a short list of links related to this Struts LocatableProperties.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.