1
votes

I use this tutorrial and I created this table (id ,username) prints; and now I want to insert data to it using the restful web service

enter image description here

what should I put in the content text box to do that ?

this is my paints class

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author subhi
 */
@Entity
@Table(name = "prints")

@XmlRootElement(name = "prints") @NamedQueries({ @NamedQuery(name = "Prints.findAll", query = "SELECT p FROM Prints p"), @NamedQuery(name = "Prints.findById", query = "SELECT p FROM Prints p WHERE p.id = :id"), @NamedQuery(name = "Prints.findByUsername", query = "SELECT p FROM Prints p WHERE p.username = :username")}) public class Prints implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @NotNull @Column(name = "id") private Integer id; @Basic(optional = false) @NotNull @Size(min = 1, max = 30) @Column(name = "username") private String username;

    public Prints() {
    }

    public Prints(Integer id) {
        this.id = id;
    }

    public Prints(Integer id, String username) {
        this.id = id;
        this.username = username;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Prints)) {
            return false;
        }
        Prints other = (Prints) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Prints[ id=" + id + " ]";
    }

}

I tried use put method but I got this error enter image description here

and why I didn't have post method in combobox?

controller code java EE 6

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package service;

import entities.Prints;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import org.netbeans.saas.RestResponse;
import org.netbeans.saas.google.GoogleMapService;

/**
 *
 * @author subhi
 */
@Stateless
@Path("entities.prints")
public class PrintsFacadeREST extends AbstractFacade<Prints> {

    @PersistenceContext(unitName = "test3PU")
    private EntityManager em;

    public PrintsFacadeREST() {
        super(Prints.class);
    }

    @POST
    @Override
    @Consumes({"application/xml", "application/json"})
    public void create(Prints entity) {
        super.create(entity);
    }

    @PUT
    @Override
    @Consumes({"application/xml", "application/json"})
    public void edit(Prints entity) {
        super.edit(entity);
    }

    @DELETE
    @Path("{id}")
    public void remove(@PathParam("id") Integer id) {
        super.remove(super.find(id));
    }

    @GET
    @Path("{id}")
    @Produces({"application/xml", "application/json"})
    public Prints find(@PathParam("id") Integer id) {
        return super.find(id);
    }

    @GET
    @Override
    @Produces({"application/xml", "application/json"})
    public List<Prints> findAll() {
        return super.findAll();
    }

    @GET
    @Path("{from}/{to}")
    @Produces({"application/xml", "application/json"})
    public List<Prints> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
        return super.findRange(new int[]{from, to});
    }

    @GET
    @Path("count")
    @Produces("text/plain")
    public String countREST() {
        return String.valueOf(super.count());
    }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    @GET
    @Produces("text/html")
    public String getGoogleMap() {
// Drag and drop the getGoogleMap operation here

        try {
            String address = "16 Network Circle, Menlo Park";
            java.lang.Integer zoom = 15;
            String iframe = "false";

            RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
            return result.getDataAsString();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return "";
    }
}
2

2 Answers

0
votes

Put the request body part there.If you going to update some entity then you should pass the dto with data which should be updated.I didn't go through your link.this part can be in Json or XML.(like below)

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<prints>
<id>1</id>
<username>test</username>
</prints>

you have to annotate your dto lets say printsDTO as below

@XmlRootElement(name = "prints") 
public class PrintsDTO {
private int id;
private String username;
// have getters and setteres for above
}
0
votes

I used code to insert data to my restful web service using restful client application as follow

 NewJerseyClient client = new NewJerseyClient();
        Prints p = new Prints();
        p.setId(235);
        p.setUsername("subhi");
        client.create_XML(p); 

and this is sufficient for my case