This Java program is to Implement Attributes API.The Attributes class maps Manifest attribute names to associated string values. Valid attribute names are case-insensitive, are restricted to the ASCII characters in the set [0-9a-zA-Z_-], and cannot exceed 70 characters in length. Attribute values can contain any characters and will be UTF8-encoded when written to the output stream.
Here is the source code of the Java program to Implement Attributes API. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.jar.Attributes;
public class AttributesImpl
{
private Attributes attributes;
/** Constructs a new, empty Attributes object with default size. **/
public AttributesImpl()
{
attributes = new Attributes();
}
/**
* Constructs a new Attributes object with the same attribute name-value
* mappings as in the specified Attributes.
**/
public AttributesImpl(Attributes attr)
{
attributes = new Attributes(attr);
}
/**
* Constructs a new, empty Attributes object with the specified initial
* size.
**/
public AttributesImpl(int size)
{
attributes = new Attributes(size);
}
/** Removes all attributes from this Map. **/
public void clear()
{
attributes.clear();
}
/** Returns a copy of the Attributes **/
public Object clone()
{
return attributes.clone();
}
/** Returns true if this Map contains the specified attribute name (key). **/
public boolean containsKey(Object key)
{
return attributes.containsKey(key);
}
/**
* Returns true if this Map maps one or more attribute names (keys) to the
* specified value.
**/
public boolean containsValue(Object value)
{
return attributes.containsValue(value);
}
/**
* Returns a Collection view of the attribute name-value mappings contained
* in this Map.
**/
public Set<Map.Entry<Object, Object>> entrySet()
{
return attributes.entrySet();
}
/**
* Returns the value of the specified attribute name, or null if the
* attribute name was not found.
**/
public Object get(Object key)
{
return attributes.get(key);
}
/**
* Returns the value of the specified Attributes.Name, or null if the
* attribute was not found.
**/
public String getValue(Attributes.Name name)
{
return attributes.getValue(name);
}
/**
* Returns the value of the specified attribute name, specified as a string,
* or null if the attribute was not found.
**/
public String getValue(String name)
{
return attributes.getValue(name);
}
/** Returns true if this Map contains no attributes. **/
public boolean isEmpty()
{
return attributes.isEmpty();
}
/** Returns a Set view of the attribute names (keys) contained in this Map. **/
public Set<Object> keySet()
{
return attributes.keySet();
}
/**
* Associates the specified value with the specified attribute name (key) in
* this Map.
**/
public Object put(Object key, Object value)
{
return attributes.put(key, value);
}
/**
* Copies all of the attribute name-value mappings from the specified
* Attributes to this Map.
**/
public void putAll(Map<?, ?> m)
{
attributes.putAll(m);
}
/**
* Associates the specified value with the specified attribute name,
* specified as a String.
**/
public String putValue(String name, String value)
{
return attributes.putValue(name, value);
}
/** Removes the attribute with the specified name (key) from this Map **/
public Object remove(Object key)
{
return attributes.remove(key);
}
/** Returns the number of attributes in this Map. **/
public int size()
{
return attributes.size();
}
/** Returns a Collection view of the attribute values contained in this Map. **/
public Collection<Object> values()
{
return attributes.values();
}
public static void main(String... arg)
{
Attributes.Name CLASS_PATH = new Attributes.Name("CLASS_PATH");
Attributes.Name CONTENT_TYPE = new Attributes.Name("CONTENT_TYPE");
Attributes.Name MANIFEST_VERSION = new Attributes.Name("MANIFEST_VERSION");
AttributesImpl attribute = new AttributesImpl();
attribute.put(CLASS_PATH, "root/sub_dir/class_path");
attribute.put(CONTENT_TYPE, "UTF-8");
attribute.put(MANIFEST_VERSION, "2");
attribute.putValue("MAIN_CLASS", "TESTMAIN.java");
System.out.println("the key set of the Attributes is ");
Set<Object> keySet = attribute.keySet();
Iterator<Object> itr = keySet.iterator();
while (itr.hasNext())
{
System.out.print(itr.next() + "\t");
}
System.out.println();
System.out.println("the values of the Attributes is ");
Collection<Object> collectionValues = attribute.values();
itr = collectionValues.iterator();
while (itr.hasNext())
{
System.out.print(itr.next() + "\t");
}
System.out.println();
System.out.println("the entry set of the Attributes is ");
Iterator<Entry<Object, Object>> eitr;
Set<Entry<Object, Object>> entrySet = attribute.entrySet();
eitr = entrySet.iterator();
while (eitr.hasNext())
{
System.out.println(eitr.next() + "\t");
}
System.out.println("the Attributes contains Key CLASS_PATH:" + attribute.containsKey(CLASS_PATH));
System.out.println("the Attributes contains Value TESTMAIN.java :"
+ attribute.containsValue("TESTMAIN.java"));
System.out.println("the size of the Attributes is " + attribute.size());
attribute.clear();
if (attribute.isEmpty())
System.out.println("the Attributes is empty");
else
System.out.println("the Attributes is not empty");
}
}
$ javac AttributesImpl.java $ java AttributesImpl the key set of the Attributes is MAIN_CLASS MANIFEST_VERSION CONTENT_TYPE CLASS_PATH the values of the Attributes is TESTMAIN.java 2 UTF-8 root/sub_dir/class_path the entry set of the Attributes is MAIN_CLASS=TESTMAIN.java MANIFEST_VERSION=2 CONTENT_TYPE=UTF-8 CLASS_PATH=root/sub_dir/class_path the Attributes contains Key CLASS_PATH:true the Attributes contains Value TESTMAIN.java :true the size of the Attributes is 4 the Attributes is empty
Related posts:
Java Program to Use rand and srand Functions
Creating Docker Images with Spring Boot
Java Program to Implement Variable length array
Lập trình đa luồng với CompletableFuture trong Java 8
Java Program to Describe the Representation of Graph using Adjacency Matrix
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Java Program to Implement Randomized Binary Search Tree
Java Program to Check if an UnDirected Graph is a Tree or Not Using DFS
Java Program to Find the GCD and LCM of two Numbers
How to Implement Caching using Adonis.js 5
Concurrent Test Execution in Spring 5
Display Auto-Configuration Report in Spring Boot
Java Program to Implement Johnson’s Algorithm
Java Timer
Java Program to implement Priority Queue
Prevent Cross-Site Scripting (XSS) in a Spring Application
Tạo chương trình Java đầu tiên sử dụng Eclipse
Java Program to Perform Right Rotation on a Binary Search Tree
Jackson – Decide What Fields Get Serialized/Deserialized
Spring Data Reactive Repositories with MongoDB
Check if a String is a Palindrome in Java
Convert String to Byte Array and Reverse in Java
Hướng dẫn sử dụng Printing Service trong Java
Java 8 Collectors toMap
Java Program to Implement Sorted Circular Doubly Linked List
Working With Maps Using Streams
Java 8 Stream API Analogies in Kotlin
Java Program to Find the Vertex Connectivity of a Graph
Java Program to Find Strongly Connected Components in Graphs
StringBuilder vs StringBuffer in Java
Spring Data MongoDB – Indexes, Annotations and Converters
Java Program to implement Associate Array