LinkedIn Connections List code is Required for android application - list
I am new In android and currently working on a project which shows different friend list of different social network.
But Here at the stage I am fail to get LinkedIn Connections List and I have searched rest of the Internet but couldn't find any way. . .
If anyone know the code please help me. . . thanks in advance. .
Cheer!
Sample code is here Bellow. . .
final LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory
.getInstance().createLinkedInOAuthService(
Config.LINKEDIN_CONSUMER_KEY,Config.LINKEDIN_CONSUMER_SECRET, Config.scopeParams);
final LinkedInApiClientFactory factory = LinkedInApiClientFactory
.newInstance(Config.LINKEDIN_CONSUMER_KEY,
Config.LINKEDIN_CONSUMER_SECRET);
LinkedInRequestToken liToken;
LinkedInApiClient client;
LinkedInAccessToken accessToken = null;
#TargetApi(Build.VERSION_CODES.GINGERBREAD)
#SuppressLint("NewApi")
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if( Build.VERSION.SDK_INT >= 9){
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
share = (Button) findViewById(R.id.share);
name = (TextView) findViewById(R.id.name);
et = (EditText) findViewById(R.id.et_share);
login = (Button) findViewById(R.id.login);
photo = (ImageView) findViewById(R.id.photo);
login.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View v) {
linkedInLogin();
}
});
// share on linkedin
share.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View v) {
String share = et.getText().toString();
if (null != share && !share.equalsIgnoreCase("")) {
OAuthConsumer consumer = new CommonsHttpOAuthConsumer(Config.LINKEDIN_CONSUMER_KEY, Config.LINKEDIN_CONSUMER_SECRET);
consumer.setTokenWithSecret(accessToken.getToken(), accessToken.getTokenSecret());
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost("https://api.linkedin.com/v1/people/~/shares");
try {
consumer.sign(post);
} catch (OAuthMessageSignerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OAuthExpectationFailedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OAuthCommunicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // here need the consumer for sign in for post the share
post.setHeader("content-type", "text/XML");
String myEntity = "<share><comment>"+ share +"</comment><visibility><code>anyone</code></visibility></share>";
try {
post.setEntity(new StringEntity(myEntity));
org.apache.http.HttpResponse response = httpclient.execute(post);
Toast.makeText(LinkedInSampleActivity.this,
"Shared sucessfully", Toast.LENGTH_SHORT).show();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
Toast.makeText(LinkedInSampleActivity.this,
"Please enter the text to share",
Toast.LENGTH_SHORT).show();
}
/*String share = et.getText().toString();
if (null != share && !share.equalsIgnoreCase("")) {
client = factory.createLinkedInApiClient(accessToken);
client.postNetworkUpdate(share);
et.setText("");
Toast.makeText(LinkedInSampleActivity.this,
"Shared sucessfully", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(LinkedInSampleActivity.this,
"Please enter the text to share",
Toast.LENGTH_SHORT).show();
}*/
}
});
}
private void linkedInLogin() {
ProgressDialog progressDialog = new ProgressDialog(
LinkedInSampleActivity.this);
LinkedinDialog d = new LinkedinDialog(LinkedInSampleActivity.this,
progressDialog);
d.show();
// set call back listener to get oauth_verifier value
d.setVerifierListener(new OnVerifyListener() {
#Override
public void onVerify(String verifier) {
try {
Log.i("LinkedinSample", "verifier: " + verifier);
accessToken = LinkedinDialog.oAuthService
.getOAuthAccessToken(LinkedinDialog.liToken,
verifier);
LinkedinDialog.factory.createLinkedInApiClient(accessToken);
client = factory.createLinkedInApiClient(accessToken);
// client.postNetworkUpdate("Testing by Mukesh!!! LinkedIn wall post from Android app");
Log.i("LinkedinSample",
"ln_access_token: " + accessToken.getToken());
Log.i("LinkedinSample",
"ln_access_token: " + accessToken.getTokenSecret());
Person p = client.getProfileForCurrentUser();
name.setText("Welcome " + p.getFirstName() + " "
+ p.getLastName());
name.setVisibility(0);
login.setVisibility(4);
share.setVisibility(0);
et.setVisibility(0);
} catch (Exception e) {
Log.i("LinkedinSample", "error to get verifier");
e.printStackTrace();
}
}
});
// set progress dialog
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(true);
progressDialog.show();
}
}
try this get user-Connections
public class LinkCon_Main extends BaseActivityListView {
final LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory
.getInstance().createLinkedInOAuthService(Config.CONSUMER_KEY,
Config.CONSUMER_SECRET);
final LinkedInApiClientFactory factory = LinkedInApiClientFactory
.newInstance(Config.CONSUMER_KEY, Config.CONSUMER_SECRET);
ProgressDialog mPrograss;
String name;
View experiencePage;
TextView prof_Name, prof_Headline, prof_Location, prof_Industry;
String prof_name, prof_headline, prof_location, prof_industry, prof_summary, prof_experience,prof_education,prof_languages,prof_skills, prof_interests,prof_birthdate,prof_contatct,prof_email;
String con_name, con_headline, con_location,con_industry, con_summary,con_experience,con_education,con_languages,con_skills,con_interets,con_birthdate,con_phone;
Connections con_email;
String pic_url,con_pic_url;
String startDate, endDate;
String item;
String dty;
String dtm;
String dtd;
ImageView person_Pic, con_pic;
Map<SearchParameter, String> searchParameters;
ListView connections_list;
ArrayList<Person> itemslist;
#SuppressWarnings({ "rawtypes" })
Iterator localIterator;
Person mylist;
RelativeLayout layout_persondetils,layout_con_profile;
LinkedInApiClient client;
Person person;
Connections connections;
ImageLoader imageLoader;
DisplayImageOptions options;
LinkConApp myLinkCon;
LayoutInflater inflater;
String[] months= {"Jan", "Feb", "March", "April", "May","June", "July", "August","Sep", "Oct", "Nov", "Dec"};
StringBuilder localStringBuilder;
#Override
#SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myLinkCon=new LinkConApp();
prof_Name=(TextView)findViewById(R.id.user_name);
prof_Headline=(TextView)findViewById(R.id.user_headline);
prof_Location=(TextView)findViewById(R.id.user_Location);
prof_Industry=(TextView)findViewById(R.id.user_industry);
person_Pic=(ImageView)findViewById(R.id.profile_pic);
layout_persondetils=(RelativeLayout)findViewById(R.id.layout_profiledetils);
layout_con_profile=(RelativeLayout)findViewById(R.id.layout_con_profile);
layout_persondetils.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View v) {
// TODO Auto-generated method stub
userpersons();
}
});
mPrograss=new ProgressDialog(LinkCon_Main.this);
inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// ImageLoader options
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)
.showImageForEmptyUri(R.drawable.photo)
.showImageOnFail(R.drawable.ic_launcher).cacheInMemory(true)
.cacheOnDisc(true).considerExifParams(true).build();
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(this));
connections_list=(ListView)findViewById(R.id.connectionslist);
itemslist = new ArrayList<Person>();
if( Build.VERSION.SDK_INT >= 9){
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
final SharedPreferences pref = getSharedPreferences(Config.OAUTH_PREF,
MODE_PRIVATE);
final String token = pref.getString(Config.PREF_TOKEN, null);
final String tokenSecret = pref.getString(Config.PREF_TOKENSECRET, null);
if (token == null || tokenSecret == null) {
startAutheniticate();
} else {
showCurrentUser(new LinkedInAccessToken(token, tokenSecret));
}
}
void startAutheniticate() {
mPrograss.setMessage("Loading...");
mPrograss.setCancelable(true);
mPrograss.show();
new AsyncTask<Void, Void, LinkedInRequestToken>() {
#Override
protected LinkedInRequestToken doInBackground(Void... params) {
return oAuthService.getOAuthRequestToken(Config.OAUTH_CALLBACK_URL);
}
#Override
protected void onPostExecute(LinkedInRequestToken liToken) {
final String uri = liToken.getAuthorizationUrl();
getSharedPreferences(Config.OAUTH_PREF, MODE_PRIVATE)
.edit()
.putString(Config.PREF_REQTOKENSECRET,
liToken.getTokenSecret()).commit();
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(i);
}
}.execute();
mPrograss.dismiss();
}
void finishAuthenticate(final Uri uri) {
if (uri != null && uri.getScheme().equals(Config.OAUTH_CALLBACK_SCHEME)) {
final String problem = uri.getQueryParameter(Config.OAUTH_QUERY_PROBLEM);
if (problem == null) {
new AsyncTask<Void, Void, LinkedInAccessToken>() {
#Override
protected LinkedInAccessToken doInBackground(Void... params) {
final SharedPreferences pref = getSharedPreferences(
Config.OAUTH_PREF, MODE_PRIVATE);
final LinkedInAccessToken accessToken = oAuthService
.getOAuthAccessToken(
new LinkedInRequestToken(
uri.getQueryParameter(Config.OAUTH_QUERY_TOKEN),
pref.getString(
Config.PREF_REQTOKENSECRET,
null)),
uri.getQueryParameter(Config.OAUTH_QUERY_VERIFIER));
pref.edit()
.putString(Config.PREF_TOKEN, accessToken.getToken())
.putString(Config.PREF_TOKENSECRET,
accessToken.getTokenSecret())
.remove(Config.PREF_REQTOKENSECRET).commit();
return accessToken;
}
#Override
protected void onPostExecute(LinkedInAccessToken accessToken) {
mPrograss.dismiss();
showCurrentUser(accessToken);
}
}.execute();
} else {
Toast.makeText(this,
"Appliaction down due OAuth problem: " + problem,
Toast.LENGTH_LONG).show();
finish();
}
}
}
void clearTokens() {
getSharedPreferences(Config.OAUTH_PREF, MODE_PRIVATE).edit()
.remove(Config.PREF_TOKEN).remove(Config.PREF_TOKENSECRET)
.remove(Config.PREF_REQTOKENSECRET).commit();
}
void showCurrentUser(final LinkedInAccessToken accessToken) {
client = factory.createLinkedInApiClient(accessToken);
mPrograss.setMessage("Loading..");
mPrograss.show();
new AsyncTask<Void, Void, Object>() {
#Override
protected Object doInBackground(Void... params) {
try {
final Person user_Profile = client.getProfileForCurrentUser(EnumSet.of(ProfileField.ID));
person = client.getProfileById(user_Profile.getId(), EnumSet.of(
ProfileField.FIRST_NAME,
ProfileField.LAST_NAME,
ProfileField.PICTURE_URL,
ProfileField.INDUSTRY,
ProfileField.MAIN_ADDRESS,
ProfileField.HEADLINE,
ProfileField.SUMMARY,
ProfileField.POSITIONS,
ProfileField.EDUCATIONS,
ProfileField.LANGUAGES,
ProfileField.SKILLS,
ProfileField.INTERESTS,
ProfileField.PHONE_NUMBERS,
ProfileField.EMAIL_ADDRESS,
ProfileField.DATE_OF_BIRTH,
ProfileField.PUBLIC_PROFILE_URL));
prof_name = person.getFirstName() + " " + person.getLastName();
prof_headline = person.getHeadline();
prof_location = person.getMainAddress();
prof_industry = person.getIndustry();
return person;
} catch (LinkedInApiClientException ex) {
return ex;
}
}
#Override
protected void onPostExecute(Object result) {
if (result instanceof Exception) {
//result is an Exception :)
final Exception ex = (Exception) result;
clearTokens();
Toast.makeText(
LinkCon_Main.this,
"Appliaction down due LinkedInApiClientException: "
+ ex.getMessage()
+ " Authokens cleared - try run application again.",
Toast.LENGTH_LONG).show();
finish();
} else if (result instanceof Person) {
final Person person = (Person) result;
prof_Name.setText( person.getFirstName() + " " + person.getLastName());
prof_Headline.setText(person.getHeadline());
prof_Location.setText(person.getMainAddress());
prof_Industry.setText(person.getIndustry());
prof_Name.setVisibility(0);
prof_Headline.setVisibility(0);
prof_Location.setVisibility(0);
prof_Industry.setVisibility(0);
person_Pic.setVisibility(0);
userConnections();
userDetails();
}
}
}.execute();
mPrograss.dismiss();
}
#Override
protected void onNewIntent(Intent intent) {
finishAuthenticate(intent.getData());
}
public void userDetails(){
if(person.getPictureUrl()!=null){
pic_url = person.getPictureUrl().toString();
imageLoader.displayImage(pic_url, person_Pic);
}else{
person_Pic.setImageResource(R.drawable.ic_launcher);
}
/*************** person Details Summary/experience/education/languages/skills/contacts/interests **********************/
if (person.getSummary()!=null) {
prof_summary = person.getSummary();
}
prof_experience="";
for (Position position:person.getPositions().getPositionList())
{
if(position.isIsCurrent()){
startDate=months[(int) (position.getStartDate().getMonth()-1)]+"-"+position.getStartDate().getYear();
endDate="Currently Working";
}else{
startDate=months[(int) (position.getStartDate().getMonth()-1)]+"-"+position.getStartDate().getYear();
endDate=months[(int) (position.getEndDate().getMonth()-1)]+"-"+position.getEndDate().getYear();
}
prof_experience=prof_experience+"<b>" +"Position :"+"</b>"+position.getTitle()+"<br><b>" +"Company :"+ "</b>"+ position.getCompany().getName()+"<br><b>" +"Start Date:"+ "</b>"+ startDate +"<br><b>" +"End Date:"+ "</b>"+ endDate +"<br>"+"<br>";
}
prof_education="";
for (Education education:person.getEducations().getEducationList())
{
prof_education=prof_education +"<b>" +"Gaduation :"+ "</b>" +education.getDegree()+"<br><b>" +"Institute :"+ "</b>" +education.getSchoolName()+ "<br><b>" +"Graduation Year :"+ "</b>" +education.getEndDate().getYear()+"<br>"+"<br>";
}
prof_languages="";
for(Language language:person.getLanguages().getLanguageList())
{
prof_languages=prof_languages+language.getLanguage().getName()+"\n";
}
prof_skills="";
for(Skill skill:person.getSkills().getSkillList())
{
prof_skills=prof_skills+skill.getSkill().getName()+"\n";
}
prof_contatct="";
PhoneNumbers contactinfo=person.getPhoneNumbers();
if(contactinfo!=null ){
for(PhoneNumber phoneno:person.getPhoneNumbers().getPhoneNumberList())
{
prof_contatct=prof_contatct+ phoneno.getPhoneNumber().toString();
}
}
if(person.getEmailAddress()!=null){
prof_email=person.getEmailAddress();
}
prof_interests = person.getInterests();
prof_birthdate= person.getDateOfBirth().getDay()+"-"+ months[(int) (person.getDateOfBirth().getMonth()-1)]+"-"+person.getDateOfBirth().getYear();
}
public void userConnections(){
final Set<ProfileField> connectionFields = EnumSet.of(ProfileField.ID,
ProfileField.FIRST_NAME,
ProfileField.LAST_NAME,
ProfileField.HEADLINE,
ProfileField.INDUSTRY,
ProfileField.PICTURE_URL,
ProfileField.MAIN_ADDRESS,
ProfileField.LOCATION,
ProfileField.LOCATION_COUNTRY,
ProfileField.LOCATION_NAME,
ProfileField.SUMMARY,
ProfileField.EDUCATIONS,
ProfileField.EDUCATIONS_DEGREE,
ProfileField.EDUCATIONS_END_DATE,
ProfileField.EDUCATIONS_FIELD_OF_STUDY,
ProfileField.EDUCATIONS_ID,
ProfileField.EDUCATIONS_SCHOOL_NAME,
ProfileField.EDUCATIONS_START_DATE,
ProfileField.LANGUAGES,
ProfileField.LANGUAGES_ID,
ProfileField.LANGUAGES_LANGUAGE,
ProfileField.LANGUAGES_LANGUAGE_NAME,
ProfileField.POSITIONS,
ProfileField.POSITIONS_COMPANY,
ProfileField.POSITIONS_COMPANY_INDUSTRY,
ProfileField.POSITIONS_COMPANY_NAME,
ProfileField.POSITIONS_END_DATE,
ProfileField.POSITIONS_IS_CURRENT,
ProfileField.POSITIONS_START_DATE,
ProfileField.POSITIONS_SUMMARY,
ProfileField.POSITIONS_TITLE,
ProfileField.SKILLS,
ProfileField.INTERESTS,
ProfileField.PHONE_NUMBERS,
ProfileField.EMAIL_ADDRESS,
ProfileField.DATE_OF_BIRTH,
ProfileField.PUBLIC_PROFILE_URL
);
connections = client.getConnectionsForCurrentUser(connectionFields);
for (Person person : connections.getPersonList()) {
itemslist.add(person);
}
connection_Adapter myadpter=new connection_Adapter();
connections_list.setAdapter(myadpter);
connections_list.setVisibility(0);
connections_list.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/*Connections List item position selection*/
person = itemslist.get(position);
/*
Map<SearchParameter, String> searchParameters = new EnumMap<SearchParameter, String>(SearchParameter.class);
searchParameters.put(SearchParameter.KEYWORDS, "University of X");
People people = client.searchPeople(searchParameters);
System.out.println("Total search result:" + people.getCount());
for (Person person : people.getPersonList()) {
System.out.println(person.getId() + ":" + person.getFirstName() + " " +
person.getLastName() + ":" + person.getHeadline());
}*/
/*
People people = client.searchPeople(searchParameters);
for (Person persons : people.getPersonList()) {
persons = client.getProfileByApiRequest(persons.getApiStandardProfileRequest());
}
Log.i("My Persons list", ""+person);*/
/*Intent mycon=new Intent(LinkCon_Main.this, Con_Profile.class);
mycon.putExtra("conid", con_name);
startActivity(mycon);
*/
con_name=person.getFirstName()+" "+person.getLastName();
System.out.println("Name:"+con_name);
con_headline=person.getHeadline();
System.out.println("Designation:"+con_headline);
con_industry=person.getIndustry();
System.out.println("Industry:"+con_industry);
Location localLocation = person.getLocation();
if (localLocation != null){
con_location=String.format("%s", new Object[] { localLocation.getName() });
System.out.println("Con_Loaction:"+con_location);
}
/*****PICTURE/NAME/INDUSTRY/LOCATION Tested OK******/
/********need to get SUMMARY/EXPERIENCE/EDUCATION/SKILLS/LANGUAGES/DATEOFBIRTH/PHONENUMBER/EMAIL**********/
Toast.makeText(LinkCon_Main.this, "Name:"+" "+con_name +"\n"+"Position:"+" "+con_headline+"\n"+"Industry:"+" "+con_industry+"\n"+"Locations:"+" "+con_location, Toast.LENGTH_LONG).show();
}//onItemClick
});
}
public class connection_Adapter extends BaseAdapter{
#Override
public int getCount() {
// TODO Auto-generated method stub
return itemslist.size();
}
#Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
#Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
#Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = null;
if(convertView==null){
convertView = inflater.inflate(R.layout.list_row,
null);
holder = new ViewHolder();
holder.con_Itenames = (TextView) convertView
.findViewById(R.id.connection_name);
holder.con_designations = (TextView) convertView
.findViewById(R.id.connection_headline);
holder.con_ItemImage = (ImageView) convertView
.findViewById(R.id.connection_image);
holder.con_locationad = (TextView) convertView
.findViewById(R.id.connection_location);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
SetData(holder,position);
return convertView;
}
protected Context getBaseContext() {
// TODO Auto-generated method stub
return null;
}
public void SetData(final ViewHolder holder, int position) {
final Person con_details = itemslist.get(position);
holder.con_Itenames.setText(con_details.getFirstName()+" "+con_details.getLastName());
holder.con_designations.setText(con_details.getIndustry());
Location localLocation = con_details.getLocation();
if (localLocation != null){
con_location=String.format("%s", new Object[] { localLocation.getName() });
}
holder.con_locationad.setText(con_location);
holder.con_Itenames.setTag(con_details);
if (con_details.getPictureUrl()!=null) {
imageLoader.displayImage(con_details.getPictureUrl(), holder.con_ItemImage, options);
}else {
holder.con_ItemImage.setImageResource(R.drawable.ic_launcher);}
}
public void setListItems(ArrayList<Person> newList) {
itemslist = newList;
notifyDataSetChanged();
}
}
public class ViewHolder{
TextView con_Itenames,con_designations, con_locationad;
ImageView con_ItemImage;
}
private void userpersons() {
// TODO Auto-generated method stub
Intent user_prof = new Intent(LinkCon_Main.this, User_Profile.class);
user_prof.putExtra("pic", pic_url);
user_prof.putExtra("name", prof_name);
user_prof.putExtra("headline", prof_headline);
user_prof.putExtra("locations", prof_location);
user_prof.putExtra("industry", prof_industry);
user_prof.putExtra("summary", prof_summary);
user_prof.putExtra("languages", prof_languages);
user_prof.putExtra("experience", prof_experience);
user_prof.putExtra("education", prof_education);
user_prof.putExtra("skills", prof_skills);
user_prof.putExtra("interests", prof_interests);
user_prof.putExtra("dateofbirth", prof_birthdate);
user_prof.putExtra("phoneno", prof_contatct);
user_prof.putExtra("email", prof_email);
startActivity(user_prof);
}
}
Related
WebTestClient does not post object
I am trying to perform simple test of reading method. I am trying to work with reactive approach so to test whole context I am using WebTestClient. Although post method seems to work correctly reading operation is not working. But why? Isn't it should be saved to embedded mongo database? Do I need to wait for it somehow if this is reactive? Exception is thrown definitely in service because I am seeing com.geborskimateusz.util.exceptions.NotFoundException: No product found for productId: 1 This is how test looks like: #ExtendWith(SpringExtension.class) #SpringBootTest(webEnvironment = RANDOM_PORT, properties = {"spring.data.mongodb.port: 0"}) public class MovieServiceApplicationTests { #Autowired WebTestClient webTestClient; #Autowired MovieService movieService; #Test public void getMovie() { Integer given = 1; postAndVerify(given, HttpStatus.OK); Movie movie = movieService.getMovie(given); **fails here** assertNotNull(movie); getAndVerify(given, HttpStatus.OK); } private WebTestClient.BodyContentSpec postAndVerify(Integer id, HttpStatus httpStatus) { Movie movie = Movie.builder() .movieId(id) .title("Title for movie " + id) .genre("Genre for movie " + id) .address("Address for movie " + id) .build(); return webTestClient.post() .uri("/movie") .body(Mono.just(movie), Movie.class) .accept(MediaType.APPLICATION_JSON_UTF8) .exchange() .expectStatus().isEqualTo(httpStatus) .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8) .expectBody(); } private WebTestClient.BodyContentSpec getAndVerify(Integer id, HttpStatus httpStatus) { return webTestClient.get() .uri("/movie/" + id) .accept(MediaType.APPLICATION_JSON_UTF8) .exchange() .expectStatus().isEqualTo(httpStatus) .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8) .expectBody() .jsonPath("$.movieId").isEqualTo(id) .jsonPath("$.genre").isNotEmpty() .jsonPath("$.title").isNotEmpty() .jsonPath("$.address").isNotEmpty(); } } Service and repository are very simple implementations: Service: #Slf4j #RestController public class BaseMovieService implements MovieService { private final ServiceUtil serviceUtil; private final MovieRepository movieRepository; private final MovieMapper movieMapper = MovieMapper.INSTANCE; #Autowired public BaseMovieService(ServiceUtil serviceUtil, MovieRepository movieRepository) { this.serviceUtil = serviceUtil; this.movieRepository = movieRepository; } #Override public Movie getMovie(Integer movieId) { if (movieId < 1) throw new InvalidInputException("Invalid productId: " + movieId); MovieEntity movieEntity = movieRepository.findMovieById(movieId) .orElseThrow(() -> new NotFoundException("No product found for productId: " + movieId)); Movie movie = movieMapper.entityToApi(movieEntity); movie.setAddress(serviceUtil.getServiceAddress()); log.debug("/movie return the found movie for movieId={}", movieId); return movie; } #Override public Movie createMovie(Movie movie) { try { MovieEntity movieEntity = movieMapper.apiToEntity(movie); MovieEntity saved = movieRepository.save(movieEntity); log.debug("createMovie: entity created for movieId: {}", movie.getMovieId()); return movieMapper.entityToApi(saved); }catch (DuplicateKeyException e) { throw new InvalidInputException("Duplicate key for movieId: " +movie.getMovieId()); } } #Override public void deleteMovie(Integer movieId) { } } And repo: public interface MovieRepository extends PagingAndSortingRepository<MovieEntity, String> { Optional<MovieEntity> findMovieById(Integer movieId); } This is however strange because I am sure that repo work fine, all tests below are passing: #ExtendWith(SpringExtension.class) #DataMongoTest public class MovieRepositoryTest { public static final int BASE_MOVIE_ID = 1; #Autowired MovieRepository movieRepository; MovieEntity savedMovieEntity; #BeforeEach void setUp() { movieRepository.deleteAll(); MovieEntity movieEntity = MovieEntity .builder() .movieId(BASE_MOVIE_ID) .title("Raise of Jedi") .address("123.321.54x24") .genre("Sci-Fi") .build(); savedMovieEntity = movieRepository.save(movieEntity); assertEqualsMovie(movieEntity, savedMovieEntity); } #Test void create() { MovieEntity movieEntity = MovieEntity .builder() .movieId(2) .title("Fall of Jedi") .address("125.721.54x24") .genre("Sci-Fi") .build(); MovieEntity saved = movieRepository.save(movieEntity); assertEqualsMovie(movieEntity, saved); assertEquals(2, movieRepository.count()); } #Test void update() { String givenTitle = "Updated Title"; savedMovieEntity.setTitle(givenTitle); MovieEntity updated = movieRepository.save(savedMovieEntity); assertEquals(givenTitle, updated.getTitle()); } #Test void findById() { Optional<MovieEntity> optionalMovieEntity = movieRepository.findById(savedMovieEntity.getId()); assertTrue(optionalMovieEntity.isPresent()); MovieEntity movieEntity = optionalMovieEntity.get(); assertEqualsMovie(savedMovieEntity, movieEntity); } #Test void shouldPerformOptimisticLocking() { String concurrentM1actionData = "Concurrent action data performed on M1"; String concurrentM2actionData = "Concurrent action data performed on M2"; MovieEntity m1 = movieRepository.findById(savedMovieEntity.getId()).get(); MovieEntity m2 = movieRepository.findById(savedMovieEntity.getId()).get(); m1.setTitle(concurrentM1actionData); // by updating Entity its version should be updated movieRepository.save(m1); // should fail because of version mismatch try { m2.setTitle(concurrentM2actionData); movieRepository.save(m2); fail("Expected an OptimisticLockingFailureException"); } catch (OptimisticLockingFailureException e) { System.out.println("shouldPerformOptimisticLocking() -> catch OptimisticLockingFailureException"); } //check current version and state MovieEntity updatedMovieEntity = movieRepository.findById(savedMovieEntity.getId()).get(); assertEquals(1, (int) updatedMovieEntity.getVersion()); assertEquals(concurrentM1actionData, updatedMovieEntity.getTitle()); } #Test void delete() { movieRepository.delete(savedMovieEntity); assertEquals(0, movieRepository.count()); } #Test void duplicateMovieError() { MovieEntity duplicate = MovieEntity.builder().build(); duplicate.setId(savedMovieEntity.getId()); assertThrows(DuplicateKeyException.class, () -> movieRepository.save(duplicate)); } #Test void paging() { bulkSaveMovie(); Pageable nextPage = PageRequest.of(0, 4, Sort.Direction.ASC, "movieId"); nextPage = verifyPages(nextPage, "[1, 2, 3, 4]", true); nextPage = verifyPages(nextPage, "[5, 6, 7, 8]", true); verifyPages(nextPage, "[9, 10]", false); } private Pageable verifyPages(Pageable nextPage, String idsAsString, boolean hasNext) { Page<MovieEntity> moviePage = movieRepository.findAll(nextPage); assertEquals(hasNext, moviePage.hasNext()); String ids = moviePage.get().map(MovieEntity::getMovieId).collect(Collectors.toList()).toString(); assertEquals(idsAsString, ids); return nextPage.next(); } private void bulkSaveMovie() { movieRepository.deleteAll(); List<MovieEntity> movies = IntStream.rangeClosed(1, 10) .mapToObj(i -> MovieEntity.builder() .movieId(i) .title("Movie nr: " + i) .build()) .collect(Collectors.toList()); movieRepository.saveAll(movies); } private void assertEqualsMovie(MovieEntity expected, MovieEntity actual) { assertAll("Executing assertEqualsMovie(..)", () -> { assertEquals(expected.getId(), actual.getId()); assertEquals(expected.getVersion(), actual.getVersion()); assertEquals(expected.getMovieId(), actual.getMovieId()); assertEquals(expected.getTitle(), actual.getTitle()); assertEquals(expected.getAddress(), actual.getAddress()); assertEquals(expected.getGenre(), actual.getGenre()); }); } }
On using swipe refresh in recyclerview my adapter is not getting data when it is refreshing
My Latest fragment public class Latest extends Fragment { private RecyclerView recyclerLatest; private SwipeRefreshLayout swipeRecycler; private RecyclerView.LayoutManager mLayoutManager; private List<LatestAdDetails> latestAdDetailsList = new ArrayList<>(); private LatestAdapter latestAdapter; private LatestAdDetails latestAdDetails,latestAdDetails1; private JSONObject jsonobject; private Context context; private String x; public Latest() { } #Override public void onCreate(#Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } #Nullable #Override public View onCreateView(LayoutInflater inflater, #Nullable ViewGroup container, #Nullable Bundle savedInstanceState) { View mainView=inflater.inflate(R.layout.latest_fragment,container,false); recyclerLatest = (RecyclerView) mainView.findViewById(R.id.recycler_latest); swipeRecycler= (SwipeRefreshLayout)mainView.findViewById(R.id.swipe_recycler_latest); mLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false); recyclerLatest.setLayoutManager(mLayoutManager); recyclerLatest.setHasFixedSize(true); context = getContext(); // url for latest add obtaining UrlConstants.latest_ad_obtained= UrlConstants.latest_ad+ AppController.getString(getActivity().getApplicationContext(),"country_id")+"/"+AppController.getString(getActivity().getApplicationContext(),"city_id"); latestAdapter = new LatestAdapter(latestAdDetailsList); recyclerLatest.setAdapter(latestAdapter); latestAdd(); swipeRecycler.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { #Override public void onRefresh(){refreshLatestAd(); } }); return mainView; } private void refreshLatestAd() { UrlConstants.latset_ad_refresh_obtained=UrlConstants.latest_ad_refresh+ AppController.getString(getActivity().getApplicationContext(),"country_id")+"/"+ AppController.getString(getActivity().getApplicationContext(),"city_id")+"/"+ AppController.getString(getActivity().getApplicationContext(),"refresh_ad")+"/"+0; LatestRefreshHandler latestRefreshHandler = new LatestRefreshHandler("latestRefreshADD"); latestRefreshHandler.executeAsStringRequest(new Response.Listener<String>() { #Override public void onResponse(String response) { Log.e("response", response); JSONArray jsonarray = null; try { jsonarray = new JSONArray(response); } catch (JSONException e) { e.printStackTrace(); } for (int i = 0; i < jsonarray.length(); i++) { try { jsonobject = jsonarray.getJSONObject(i); if (jsonobject.getString("default_photo").isEmpty()) { x = UrlConstants.default_photo; } else { x = jsonobject.getString("default_photo"); } Log.e("x", x); latestAdapter.clear(); int Ad_id_refresh = jsonarray.getJSONObject(jsonarray.length()).getInt("id"); AppController.setString(context,"refresh_ad", String.valueOf(Ad_id_refresh)); latestAdDetails = new LatestAdDetails( jsonobject.getInt("id"), jsonobject.getInt("cityid"), jsonobject.getInt("price"), jsonobject.getInt("type"), jsonobject.getInt("comments"), jsonobject.getInt("categoryid"), jsonobject.getInt("MainCategoryID"), jsonobject.getInt("created"), jsonobject.getInt("views"), jsonobject.getString("title"), jsonobject.getString("default_photo"), jsonobject.getString("CityName"), jsonobject.getString("CategoryName"), jsonobject.getString("storeid"), jsonobject.getString("currency"), jsonobject.getString("description"), jsonobject.getDouble("Latitude"), jsonobject.getDouble("Longitude") ); latestAdDetailsList.add(latestAdDetails); } catch (JSONException e) { e.printStackTrace(); } } latestAdapter.addAll(latestAdDetailsList); latestAdapter.notifyDataSetChanged(); recyclerLatest.setAdapter(latestAdapter); swipeRecycler.setRefreshing(false); } }, new BaseRequest.ErrorResponseCallback() { #Override public void onError(Exception exception) { } }); } private void latestAdd() { LatestRequestHandler latestHandler = new LatestRequestHandler("latestADD"); latestHandler.executeAsStringRequest(new Response.Listener<String>() { #Override public void onResponse(String response) { Log.e("response", response); JSONArray jsonarray = null; try { jsonarray = new JSONArray(response); } catch (JSONException e) { e.printStackTrace(); } for (int i = 0; i < jsonarray.length(); i++) { try { jsonobject = jsonarray.getJSONObject(i); if (jsonobject.getString("default_photo").isEmpty()) { x = UrlConstants.default_photo; } else { x = jsonobject.getString("default_photo"); } Log.e("x", x); int Ad_id_refresh = jsonarray.getJSONObject(1).getInt("id"); AppController.setString(context,"refresh_ad", String.valueOf(Ad_id_refresh)); latestAdDetails = new LatestAdDetails( jsonobject.getInt("id"), jsonobject.getInt("cityid"), jsonobject.getInt("price"), jsonobject.getInt("type"), jsonobject.getInt("comments"), jsonobject.getInt("categoryid"), jsonobject.getInt("MainCategoryID"), jsonobject.getInt("created"), jsonobject.getInt("views"), jsonobject.getString("title"), jsonobject.getString("default_photo"), jsonobject.getString("CityName"), jsonobject.getString("CategoryName"), jsonobject.getString("storeid"), jsonobject.getString("currency"), jsonobject.getString("description"), jsonobject.getDouble("Latitude"), jsonobject.getDouble("Longitude") ); latestAdDetailsList.add(latestAdDetails); } catch (JSONException e) { e.printStackTrace(); } } latestAdapter.notifyDataSetChanged(); } }, new BaseRequest.ErrorResponseCallback() { #Override public void onError(Exception exception) { } }); }} my Adapter class public class LatestAdapter extends RecyclerView.Adapter<LatestAdapter.MyViewHolder> { private ImageLoader imageLoader; private Context context; private String text; private List<LatestAdDetails> latestAddDetailsList; public LatestAdapter(List<LatestAdDetails> latestAddDetailsList) { this.latestAddDetailsList = latestAddDetailsList; } public class MyViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle, txtDescription, txtCityName, txtPrice, txtCategory, txtHour, txtPhotoNo; private NetworkImageView imgPhoto; public MyViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.txt_title_fad); txtDescription = (TextView) itemView.findViewById(R.id.description_fad); txtCityName = (TextView) itemView.findViewById(R.id.city_name_fad); txtPrice = (TextView) itemView.findViewById(R.id.price_fad); txtCategory = (TextView) itemView.findViewById(R.id.category_fad); txtHour = (TextView) itemView.findViewById(R.id.hours_fad); txtPhotoNo = (TextView) itemView.findViewById(R.id.txt_photo_no_fad); imgPhoto = (NetworkImageView) itemView.findViewById(R.id.img_photo_lod_fad); } } public void clear() { latestAddDetailsList.clear(); notifyDataSetChanged(); }// Add a list of items public void addAll(List<LatestAdDetails> list) { latestAddDetailsList.addAll(list); notifyDataSetChanged(); } #Override public LatestAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.featured_ad_adapter_layout, parent, false); return new MyViewHolder(itemView); } #Override public void onBindViewHolder(LatestAdapter.MyViewHolder holder, int position) { LatestAdDetails latestAddDetails = latestAddDetailsList.get(position); holder.txtTitle.setText(translate(latestAddDetails.getTitle())); holder.txtDescription.setText(translate(latestAddDetails.getDescription())); holder.txtCityName.setText(translate(latestAddDetails.getCityName())); holder.txtPrice.setText(Integer.toString(latestAddDetails.getPrice())); holder.txtCategory.setText(translate(latestAddDetails.getCategoryName())); holder.txtHour.setText(Integer.toString(latestAddDetails.getCreated())); holder.txtPhotoNo.setText(Integer.toString(0) + " photos "); try { imageLoader = VolleyHandler.getImageLoader(); } catch (Exception e) { e.printStackTrace(); } holder.imgPhoto.setImageUrl(latestAddDetails.getDefault_photo(), imageLoader); } #Override public int getItemCount() { Log.e("size", String.valueOf(latestAddDetailsList.size())); return latestAddDetailsList.size(); } private String translate(String myString) { try { myString = myString.replace("\n", "").replace("\r", ""); byte[] utf8Bytes = myString.getBytes("UTF8"); text = new String(utf8Bytes, "UTF8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return text; }} on refreshing adapter size is zero,but getting json correctly,but not adding to adapter,and the recycler view is not showing new data,please help me ,the json is giving 10 datas on every swipe but it is not getting added to recyclerview
It seems like a logical bug : In method : refreshLatestAd(), Remove these line : latestAdapter.clear(); latestAdapter.addAll(latestAdDetailsList); and recyclerLatest.setAdapter(latestAdapter); // It need not be set again. Let me know if it helps. latestAdapter.notifyDataSetChanged() is sufficient to notify the adapter that the data is changed. Always modify the list [latestAdDetailsList] which is being set to adapter, this is the sure shot way to make the changes reflect when you call notifyDataSetChanged.
how to get contacts list from google glass using GDK
I'm implement Google Glass app. I want to get contacts list from google glass using GDK. I already tried contacts Api v3 (ContactsService) but i failed because - i can't scrolling & tapping(click) pop-up (OK Button) after glass update XE16 -> run to android phone is ok. i tried mirror api. device OAuth.... -> no example.. i don't know how... if you have sample code, As it is also upload. Would you? I'd appreciate that. here is my code. public class MainActivity extends Activity { private Account[] accounts; private AccountManager mManager; private ContactsService mService; private URL feedUrl; private final String url = "https://www.google.com/m8/feeds/contacts/default/full"; private final String ACCOUNTS_TYPE = "com.google"; private final String AUTH_TOKEN_TYPE = "cp"; private String mToken; #Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mManager = AccountManager.get(this); accounts = mManager.getAccountsByType(ACCOUNTS_TYPE); Log.d("account", ""+accounts[0]); mManager.getAuthToken(accounts[0], AUTH_TOKEN_TYPE, null, this, new AccountManagerCallback<Bundle>() { public void run(AccountManagerFuture<Bundle> future) { try { mToken = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); GetTask task = new GetTask(); task.execute(mToken); } catch (OperationCanceledException e) { e.printStackTrace(); } catch (AuthenticatorException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }, null); } public void createService(String token) throws IOException, ServiceException { mService = new ContactsService("contacts_list"); mService.setUserToken(token); feedUrl = new URL(url); ContactFeed resultFeed = (ContactFeed)mService.getFeed(feedUrl, ContactFeed.class); for (ContactEntry entry : resultFeed.getEntries()) getContacts(entry); } private class GetTask extends AsyncTask<String, Void, Void> { #Override protected Void doInBackground(String... params) { try { String token = ""; if(params != null) { for(String s : params) token += s; } createService(token); } catch (ServiceException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } } public void getContacts(ContactEntry entry) throws ServiceException, IOException { if (entry.hasName()) { Name name = entry.getName(); if (name.hasFullName()) { String fullName = name.getFullName().getValue(); Log.d("name", fullName); } } else Log.d("name", "no name"); if (entry.hasPhoneNumbers()) { for (PhoneNumber phone : entry.getPhoneNumbers()) { String phoneNum = phone.getPhoneNumber(); Log.d("phone", phoneNum); } } else Log.d("phone", "no phone"); } }
POST-method not working in JAX-RS JERSEY
I have the following method: package com.restfully.shop.services; import java.io.*; import java.net.URI; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import javax.ws.rs.*; import javax.ws.rs.core.*; import javax.xml.parsers.*; import org.w3c.dom.*; import com.restfully.shop.domain.*; #Path("/customers") public class CustomerResource { private Map<Integer, Customer> customerDB = new ConcurrentHashMap<Integer, Customer>(); private AtomicInteger idCounter = new AtomicInteger(); #POST #Consumes("application/xml") public Response createCustomer(InputStream is) { System.out.println("GOT in POST"); Customer customer = readCustomer(is); customer.setId(idCounter.incrementAndGet()); customerDB.put(customer.getId(), customer); System.out.println("Created customer " + customer.getId()); return Response.created(URI.create("/customers/" + customer.getId())).build(); } #GET #Path("{id}") #Produces("application/xml") public StreamingOutput getCustomer(#PathParam("id") int id) { Customer cust = new Customer(); cust.setCity("New_york"); cust.setCountry("USA"); cust.setFirstName("Bill"); cust.setId(0); cust.setLastName("Klinton"); cust.setState("MA"); cust.setStreet("Lane st."); cust.setZip("02610"); customerDB.put(cust.getId(), cust); final Customer customer = customerDB.get(id); if (customer == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); } return new StreamingOutput() { public void write(OutputStream outputStream) throws IOException, WebApplicationException { outputCustomer(outputStream, customer); } }; } #PUT #Path("{id}") #Consumes("application/xml") public void updateCustomer(#PathParam("id") int id, InputStream is) { System.out.println("GOT in PUT"); Customer update = readCustomer(is); Customer current = customerDB.get(id); if (current == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); } current.setFirstName(update.getFirstName()); current.setLastName(update.getLastName()); current.setStreet(update.getStreet()); current.setState(update.getState()); current.setZip(update.getZip()); current.setCountry(update.getCountry()); } protected void outputCustomer(OutputStream os, Customer cust) throws IOException { PrintStream writer = new PrintStream(os); writer.println("<customer id=\"" + cust.getId() + "\">"); writer.println("<first-name>" + cust.getFirstName() + "</first-name>"); writer.println("<last-name>" + cust.getLastName() + "</last-name>"); writer.println("<city>" + cust.getCity() + "</city>"); writer.println("<state>" + cust.getState() + "</state>"); writer.println("<zip>" + cust.getZip() + "</zip>"); writer.println("<country>" + cust.getCountry() + "</country>"); writer.println("</customer>"); } protected Customer readCustomer(InputStream is) { DocumentBuilder builder; try { builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse(is); Element root = doc.getDocumentElement(); Customer cust = new Customer(); if (root.getAttribute("id") != null && !root.getAttribute("id").trim().equals("")) { cust.setId(Integer.parseInt(root.getAttribute("id"))); } NodeList nodes = root.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Element element = (Element) nodes.item(i); if (element.getTagName().equals("first-name")) { cust.setFirstName(element.getTextContent()); } else if (element.getTagName().equals("last-name")) { cust.setLastName(element.getTextContent()); } else if (element.getTagName().equals("street")) { cust.setStreet(element.getTextContent()); } else if (element.getTagName().equals("city")) { cust.setCity(element.getTextContent()); } else if (element.getTagName().equals("state")) { cust.setState(element.getTextContent()); } else if (element.getTagName().equals("zip")) { cust.setZip(element.getTextContent()); } else if (element.getTagName().equals("country")) { cust.setCountry(element.getTextContent()); } } return cust; } catch (Exception e) { throw new WebApplicationException(e, Response.Status.BAD_REQUEST); } } } And the following test-client: import java.net.URL; public class Main { public static void main(String[] args) { try { String req = "<customer>" + "<first-name>Bill</first-name>" + "<last-name>Burke</last-name>" + "<street>256 Kilonrinne</street>" + "<city>Boston</city>" + "<state>MA</state>" + "<zip>02115</zip>" + "<country>USA</country>" + "</customer>"; URL url = new URL("http://localhost:8080/customers"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoOutput(true); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/xml;charset=utf-8"); OutputStream os = con.getOutputStream(); os.write(req.getBytes()); os.flush(); System.out.println(con.getResponseCode()); System.out.println("Location:" + con.getHeaderField("Location")); con.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } When I test the service - the service seems to work for the #GET-part of the class. But it does not work for the #POST-requests given here. How can I make it work?
try putting #POST #Produces(MediaType.WILDCARD) #Consumes("application/xml") in front of post function.
I am not a java developer but i think you can use the #FormParam to read the POST data. It might help. Just make sure you are using 'application/x-www-form-urlencoded' mime type. Reference: http://docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html_single/index.html#_FormParam
I'd also say try returning a javax.ws.rs.Response including the streamed output: StreamingOutput so = new StreamingOutput() { public void write(OutputStream outputStream) throws IOException, WebApplicationException { outputCustomer(outputStream, customer); } return Response .ok(so, MediaType.APPLICATION_OCTET_STREAM) .header("Content-Disposition", "attachment; file_name = " + ltd.getName()) .header("Content-Length", file_len);
EntityManger null in seam unit tests
Below is the code I am trying to test, but getting null pointer exception on entityManager.find coz entityManager = null. Any suggestions? #Name("UserProfileConverter") #BypassInterceptors #Converter(forClass= UserProfile.class) public class UserProfileConverter implements javax.faces.convert.Converter { #Logger private static Log logger; public Object getAsObject(FacesContext arg0, UIComponent uiComponent, String s) { EntityManager entityManager = (EntityManager) Component.getInstance("entityManager"); UserProfile p; if(s == null || s.equals("null")) { return null; } else { try { long i = Long.parseLong(s); return entityManager.find(UserProfile.class, i); } catch (NumberFormatException e) { logger.error(e); } catch (SecurityException e) { logger.error(e); } } return null; } public String getAsString(FacesContext context, UIComponent uiComponetn, Object arg2) { return ((CsaRole)arg2).getCsaRoleId() + ""; } } Here is my test class.. public class UserProfileConverterTest extends SeamTest { private UserProfileConverter converter; private FacesContext mockFacesContext; private UIComponent mockUiComponent; private final static Logger logger = Logger.getLogger(UserProfileConverterTest.class); #BeforeClass public void setup() { converter = new UserProfileConverter(); } #Test public void testGetAsObject() throws Exception { new ComponentTest() { #Override protected void testComponents() throws Exception { String value = "11111111111"; converter.getAsObject(mockFacesContext, mockUiComponent, value); } }.run(); } }
public class UserProfileConverterTest extends SeamTest { EntityManager mockEntityManager; private UserProfileConverter converter; UIComponent mockUiComponent = null; MockFacesContext mockFacesContext = null; #BeforeClass public void setup() { converter = new CsaUserProfileConverter(); mockEntityManager = EasyMock.createMock(EntityManager.class); } class BaseComponentTest extends ComponentTest { protected void testComponents() throws Exception { ScopeType.EVENT.getContext().set("entityManager", mockEntityManager); } } #Test public void testGetAsObject() throws Exception { new BaseComponentTest() { protected void testComponents() throws Exception { super.testComponents(); UserProfile expectedResult = new UserProfile(); EasyMock.expect(mockEntityManager.find(UserProfile.class,1L)).andReturn(expectedResult); //Replay Mock EasyMock.replay(mockEntityManager); Object target = converter.getAsObject(mockFacesContext,mockUiComponent,"1"); Assert.assertEquals(expectedResult, target); //Verify the Mock EasyMock.verify(mockEntityManager); } }.run(); }