Webservices4PM 19032021

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 6

Date : 19/03/2021

Webservices 4:30PM
Mr. RAGHU
-------------------------------
https://www.facebook.com/groups/thejavatemple
javabyraghu@gmail.com
JAX-B Annotations:

a. @XmlRootElement
b. @XmlTransient
c. @XmlAttribute
d. @XmlElement
e. @XmlAccessorType
-------------------------------------------
Complex Types using JAX-B

*) List/Set
Tag/Element/variableName is repeated multiple times in XML
file for given data.

ex: List<String> data =...


<data>A</data>
<data>B</data>
<data>C</data>

=> We can add even one @XmlElementWrapper(name="my-sample")


<my-sample>
<data>A</data>
<data>B</data>
<data>C</data>
<my-sample>
----------------------
*) Map : Here data is provided as entry(key+val)
We can even call Map is Set of Entries (Set<Entry<K,V>>)
Entry is a Inner interface for Map

interface Map<K,V> {
interface Entry<K,V> {

}
}

XML Format is given as


<entry>
<key> </key>
<value> </value>
</entry>

*) For Map @XmlElement has no meaning.


But we can apply @XmlElementWrapper.

---code for Iterator using Map.Entry------------


package in.nit.test;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class TestTwo {

public static void main(String[] args) {

Map<String,String> clients = new LinkedHashMap<>();


clients.put("C3", "HORKYO");
clients.put("C2", "MEGA CORP");
clients.put("C1", "ACT-COM");

//convert Map to Set<Entry>


Set<Entry<String,String>> entries = clients.entrySet();
// call iterator
Iterator<Entry<String,String>> itr = entries.iterator();

while (itr.hasNext()) {
Map.Entry<String, String> entry = itr.next();
System.out.println(entry.getKey()+"-"+entry.getValue());
}

}
}

-------------------------------------
*) Association Mapping (HAS-A)

Employee---<>Address

Here, Child class(Address) behaves like child element to


Parent class(Employee) root element.

<employee>
...
<address>
..
</address>
</employee>
--------------------------------------------
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>in.nit</groupId>
<artifactId>JaxbExTwo</artifactId>
<version>1.0</version>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>

<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>

</dependencies>
</project>

2. Models
package in.nit.model;

public class Address {

private String hno;


private String loc;

public String getHno() {


return hno;
}
public void setHno(String hno) {
this.hno = hno;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
@Override
public String toString() {
return "Address [hno=" + hno + ", loc=" + loc + "]";
}

}
------------
package in.nit.model;

import java.util.Map;
//ctrl+shift+O
import java.util.Set;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {

@XmlAttribute(name = "id")
private Integer empId;
@XmlElement(name = "employee-name")
private String empName;
@XmlElement(name="employee-salary")
private Double empSal;
@XmlTransient
private String empPwd;

@XmlElementWrapper(name="projects")
@XmlElement(name="project-name")
private Set<String> empPrjs;

@XmlElementWrapper(name="project-clients")
//@XmlElement(name="project-client")--not applicable
private Map<String,String> clients;

@XmlElement(name="address")
private Address addr; //HAS-A

public Integer getEmpId() {


return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Double getEmpSal() {
return empSal;
}
public void setEmpSal(Double empSal) {
this.empSal = empSal;
}
public String getEmpPwd() {
return empPwd;
}
public void setEmpPwd(String empPwd) {
this.empPwd = empPwd;
}
public Set<String> getEmpPrjs() {
return empPrjs;
}
public void setEmpPrjs(Set<String> empPrjs) {
this.empPrjs = empPrjs;
}
public Map<String, String> getClients() {
return clients;
}
public void setClients(Map<String, String> clients) {
this.clients = clients;
}
public Address getAddr() {
return addr;
}
public void setAddr(Address addr) {
this.addr = addr;
}
@Override
public String toString() {
return "Employee [empId=" + empId + ", empName=" + empName + ",
empSal=" + empSal + ", empPwd=" + empPwd
+ ", empPrjs=" + empPrjs + ", clients=" + clients + ",
addr=" + addr + "]";
}

3. Test class
package in.nit.test;

import java.io.File;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;

import in.nit.model.Address;
import in.nit.model.Employee;

public class Test {

public static void main(String[] args) {


try {
Employee emp = new Employee();
emp.setEmpId(10);
emp.setEmpName("SAMPLE");
emp.setEmpSal(200.0);
emp.setEmpPwd("ABCD");

//JDK 1.7 Empty <> - Collections Type Inference


Set<String> prjs = new HashSet<>();
prjs.add("NIT");
prjs.add("ORCL");
prjs.add("ABT");

emp.setEmpPrjs(prjs);

Map<String,String> clients = new LinkedHashMap<>();


clients.put("C3", "HORKYO");
clients.put("C2", "MEGA CORP");
clients.put("C1", "ACT-COM");

emp.setClients(clients);

Address addr = new Address();


addr.setHno("9-99/A-5");
addr.setLoc("HYD");

emp.setAddr(addr);

JAXBContext context = JAXBContext.newInstance(Employee.class);


Marshaller m = context.createMarshaller();
m.marshal(emp, new File("E:/logs/emps.xml"));
System.out.println("DONE");
} catch (Exception e) {
e.printStackTrace();
}
}
}
------Task-----------------
Student---<>Course

Student(C)
sid
sname
subjects:Set<String>
marks : Map<String,Integer>
course:Course

Course(C)
cid
cname
sfee
*) Create Student class object --> XML File

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy