[nbj2ee] Can't Implement @post method

  • From: "Mahmoud_Amin" < >
  • To:
  • Subject: [nbj2ee] Can't Implement @post method
  • Date: Thu, 28 Jun 2012 17:47:02 -0400

hi, I have followed this tutorial to build my restful web service 
http://netbeans.org/kb/docs/websvc/rest.html

this is the entity created by creating Mysql table android_client_location

Code:

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

import java.io.Serializable;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Mahmoud
 */
@Entity
@Table(name = "android_client_location")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "AndroidClientLocation.findAll", query = "SELECT a 
FROM AndroidClientLocation a"),
    @NamedQuery(name = "AndroidClientLocation.findById", query = "SELECT a 
FROM AndroidClientLocation a WHERE a.id = :id"),
    @NamedQuery(name = "AndroidClientLocation.findByUserName", query = 
"SELECT a FROM AndroidClientLocation a WHERE a.userName = :userName"),
    @NamedQuery(name = "AndroidClientLocation.findByPassword", query = 
"SELECT a FROM AndroidClientLocation a WHERE a.password = :password"),
    @NamedQuery(name = "AndroidClientLocation.findByEmail", query = "SELECT a 
FROM AndroidClientLocation a WHERE a.email = :email"),
    @NamedQuery(name = "AndroidClientLocation.findByLongitude", query = 
"SELECT a FROM AndroidClientLocation a WHERE a.longitude = :longitude"),
    @NamedQuery(name = "AndroidClientLocation.findByLatitude", query = 
"SELECT a FROM AndroidClientLocation a WHERE a.latitude = :latitude")})
public class AndroidClientLocation 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 = 50)
    @Column(name = "User_Name")
    private String userName;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "Password")
    private String password;
    // 
@Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
 message="Invalid email")//if the field contains email address consider using 
this annotation to enforce field validation
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "Email")
    private String email;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields 
consider using these annotations to enforce field validation
    @Column(name = "Longitude")
    private Double longitude;
    @Column(name = "Latitude")
    private Double latitude;

    public AndroidClientLocation() {
    }

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

    public AndroidClientLocation(Integer id, String userName, String 
password, String email) {
        this.id = id;
        this.userName = userName;
        this.password = password;
        this.email = email;
    }

    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;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Double getLongitude() {
        return longitude;
    }

    public void setLongitude(Double longitude) {
        this.longitude = longitude;
    }

    public Double getLatitude() {
        return latitude;
    }

    public void setLatitude(Double latitude) {
        this.latitude = latitude;
    }

    @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 AndroidClientLocation)) {
            return false;
        }
        AndroidClientLocation other = (AndroidClientLocation) 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 "com.AndroidClientLocation[ id=" + id + " ]";
    }
    
}





and this is the facade "the service class for this entity"


Code:

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

import com.AndroidClientLocation;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.ws.rs.*;

/**
 *
 * @author Mahmoud
 */
@Stateless
@Path("com.androidclientlocation")
public class AndroidClientLocationFacadeREST extends 
AbstractFacade<AndroidClientLocation> {
    @PersistenceContext(unitName = "HOSTPU")
    private EntityManager em;

    public AndroidClientLocationFacadeREST() {
        super(AndroidClientLocation.class);
    }

    @POST
    @Path("{login}")
    @Override
    @Consumes({"application/xml", "application/json"})
    public void create(AndroidClientLocation entity) {
        super.create(entity);
    }
    
    @PUT
    @Override
    @Consumes({"application/xml", "application/json"})
    public void edit(AndroidClientLocation 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 AndroidClientLocation find(@PathParam("id") Integer id) {
        return super.find(id);
    }

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

    @GET
    @Path("{from}/{to}")
    @Produces({"application/xml", "application/json"})
    public List<AndroidClientLocation> 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());
    }

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




i am using android client for http post method for path {login} the @POST 
method is not working and the mysql table has not added the new post 
parameters 

here is the client android code 


Code:

 package com.com;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class Main extends Activity {
    
    int id = 4;
    String user_name  = "Mahmoud";
    String password = "mahmoud123";
    String email = 
" ";
    Double longitude  = 32.215;
    Double latitude  = 23.3214;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        String post_body = "User_Name=" + user_name + "Password=" + 
"password="+ password + "Email"+ email
                        + "Longitude" + longitude + "Latitude" + latitude;


        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new 
HttpPost("http://192.168.0.12/HOST/resources/com.androidclientlocation/login";);
        httppost.setHeader("Content-Type", 
"application/x-www-form-urlencoded");

        try 
        {
        StringEntity se = new StringEntity(post_body,HTTP.UTF_8); 
        httppost.setEntity(se);
        httpclient.execute(httppost);
        } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
          
    }

}




Could any one help me to impelemnt the @POST method based on the android 
Client






[nbj2ee] Can't Implement @post method

Mahmoud_Amin 06/28/2012

Project Features

About this Project

www was started in November 2009, is owned by jpirek, and has 21 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20140418.2d69abc). © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
 
 
Close
loading
Please Confirm
Close