Integrate Spring RestAPIs with @JsonView

In the previous post, We had learned how to use @JsonView to serialize/de-serialize Java objects. Now we go to next step, JavaSampleApproach shows you how to integrate Spring RestAPIs with @JsonView to customize views and resolve infinity loop problem.

Related posts:
How to use @JsonView to serialize/de-serialize and customize JSON format from Java Object.
How to resolve Json Infinite Recursion problems when working with Jackson

I. Technologies

– Java: 1.8
– Maven: 3.3.9
– Spring Tool Suite: Version 3.8.4.RELEASE
– Spring Boot: 1.5.4.RELEASE
– Jackson library
– Json library

II. Integrate Spring RestAPIs with @JsonView

For the tutorial, We create 2 models Company & Product which have one-to-many relationship.

Company


public class Company {
	private int id;
	
    private String name;
 
    private List products;
	
	...

Product


public class Product {
	private int id;
	
    private String name;
    
    private Company company;
 
	...

What problems when retrieving Company/Product objects with 2 RestAPIs {‘/get/company’, ‘/get/product’}:


@GetMapping("/get/company")
public Company getCompany(){
    ...
	return apple; 
}

@GetMapping("/get/product")
public Product getProduct(){
    ...
	return iphone7; 
}

-> We will face with Infinity Loop problem:

spring restapis jsonview - Infinity Loop problem

Exceptions thrown from server side:


...
	
java.lang.StackOverflowError: null
	at com.fasterxml.jackson.core.JsonProcessingException.(JsonProcessingException.java:41)
	at com.fasterxml.jackson.databind.JsonMappingException.(JsonMappingException.java:251)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:706)
	at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:690)
	
...

Another question: How to customize returned views?

=> Solution: @JsonView can help us to resolve 2 above problems: infinity loop issue and customized views:


...

@JsonView(View.OveralView.class)
@GetMapping("/company/overalview")
public Company getOveralViewCompany(){
	return apple; 
}

@JsonView(View.ProductView.class)
@GetMapping("/product/view")
public Product getProductView(){
	return iphone7; 
}

...

III. Practice

We create a SpringBoot project with some RestAPIs which use @JsonView to customize returned views.

spring jsonview - project structure

Step to do:
– Create SpringBoot project
– Create JsonView class
– Create model classes
– Implement RestAPIs
– Configure logback for file
– Run and check results

1. Create SpringBoot project

Using Spring Tool Suite to create a Spring Starter Project, then add dependencies {web, jackson-databind, org.json}:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
</dependency>

<dependency>
	<groupId>org.json</groupId>
	<artifactId>json</artifactId>
</dependency>

2. Create JsonView class

– Create a JsonView class with 3 customized views {OveralView, DetailView, ProductView}


package com.javasampleapproach.jackson.jsonview;

public class View {
	public static interface OveralView {}
	public static interface DetailView extends OveralView {}
	public static interface ProductView{}
}

3. Create model classes

Create 2 models {Company, Product}

Company:


package com.javasampleapproach.jackson.model;

import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.fasterxml.jackson.annotation.JsonView;
import com.javasampleapproach.jackson.jsonview.View;

public class Company {
	@JsonView(View.DetailView.class)
	private int id;
	
	@JsonView({View.OveralView.class, View.ProductView.class})
    private String name;

	@JsonView(View.OveralView.class)
    private List products;
	
    public Company(){
    }
    
    public Company(int id, String name, List products){
    	this.id = id;
    	this.name = name;
    	this.products = products;
    }
    
    public void setId(int id){
    	this.id = id;
    }
    
    public int getId(){
    	return this.id;
    }
    
    // name
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    // products
    public void setProducts(List products){
    	this.products = products;
    }
    
    public List getProducts(){
    	return this.products;
    }

    /**
     * 
     * Show Overal View
     */
	public String overalViewString() throws JSONException {
        JSONObject jsonInfo = new JSONObject();
        jsonInfo.put("name", this.name);
        
        JSONArray productArray = new JSONArray();
        if(this.products != null){
            this.products.forEach(product->{
                JSONObject subJson = new JSONObject();
                try {
					subJson.put("name", product.getName());
				} catch (JSONException e) {}
                productArray.put(subJson);
            });
        }
        jsonInfo.put("products", productArray);
        
        return jsonInfo.toString();
	}
	
	/**
	 * 
	 * Show Detail View
	 */
	public String detailViewString() throws JSONException {
        JSONObject jsonInfo = new JSONObject();
        jsonInfo.put("id",this.id);
        jsonInfo.put("name",this.name);
        
        JSONArray productArray = new JSONArray();
        if(this.products != null){
            this.products.forEach(product->{
                JSONObject subJson = new JSONObject();
                try {
                	subJson.put("id", product.getId());
					subJson.put("name", product.getName());
				} catch (JSONException e) {}
                productArray.put(subJson);
            });
        }
        jsonInfo.put("products", productArray);
        
        return jsonInfo.toString();
	}

}

Product:


package com.javasampleapproach.jackson.model;

import org.json.JSONException;
import org.json.JSONObject;

import com.fasterxml.jackson.annotation.JsonView;
import com.javasampleapproach.jackson.jsonview.View;

public class Product {
	@JsonView(View.DetailView.class)
	private int id;
	
	@JsonView({View.OveralView.class, View.ProductView.class})
    private String name;
    
	@JsonView(View.ProductView.class)
    private Company company;
	
    public Product(){
    }
    
    public Product(int id, String name){
    	this.id = id;
    	this.name = name;
    }
    
    public Product(String name, Company company){
    	this.name = name;
    	this.company = company;
    }
    
    public void setId(int id){
    	this.id = id;
    }
    
    public int getId(){
    	return this.id;
    }
    
    // name
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    // products
    public void setCompany(Company company){
    	this.company = company;
    }
    
    public Company getCompany(){
    	return this.company;
    }
    
	public String toString() {
		String info = "";
		try {
			JSONObject jsonInfo = new JSONObject();
			jsonInfo.put("name", this.name);

			JSONObject companyObj = new JSONObject();
			companyObj.put("name", this.company.getName());
			jsonInfo.put("company", companyObj);

			info = jsonInfo.toString();
		} catch (JSONException e) {}
		
		return info;
	}
}

4. Implement RestAPIs

We implement a WebController which has 5 RestAPIs {‘/get/company’, ‘/get/product’, ‘/get/company/overalview’, ‘/get/company/detailview’, ‘/get/product/view’} and use @JsonView to customize returned views.


package com.javasampleapproach.jackson.web;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.annotation.PostConstruct;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.annotation.JsonView;
import com.javasampleapproach.jackson.jsonview.View;
import com.javasampleapproach.jackson.model.Company;
import com.javasampleapproach.jackson.model.Product;

@RestController
@RequestMapping("/get")
public class WebController {

	private Company apple;
	private Product iphone7;
	private Product iPadPro;
	
	@PostConstruct
	public void initial(){
		iphone7 = new Product(1, "Iphone 7");
        iPadPro = new Product(2, "IPadPro");
        
        List appleProducts = new ArrayList(Arrays.asList(iphone7, iPadPro));
        
        apple = new Company(1, "Apple", appleProducts);
        
        iphone7.setCompany(apple);
        iPadPro.setCompany(apple);
	}
	
	/*
	 * URLs MAKE ERRORS {'/get/company', '/get/product'}
	 */
	@GetMapping("/company")
	public Company getCompany(){
		return apple; 
	}
	
	@GetMapping("/product")
	public Product getProduct(){
		return iphone7; 
	}
	
	/*
	 * Get Customized Views {'/get/company/overalview', '/get/company/detailview', '/get/product/view'}
	 */
	@JsonView(View.OveralView.class)
	@GetMapping("/company/overalview")
	public Company getOveralViewCompany(){
		return apple; 
	}
	
	@JsonView(View.DetailView.class)
	@GetMapping("/company/detailview")
	public Company getDetailViewCompany(){
		return apple; 
	}
	
	@JsonView(View.ProductView.class)
	@GetMapping("/product/view")
	public Product getProductView(){
		return iphone7; 
	}

}

5. Configure logback for file

Under folder /src/main/resources, we create a logback file logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

Open file application.properties, then add path for log file:


logging.file=jsa-app.log

6. Run and check results

Build and Run the SpringBoot project with commandlines: mvn clean install and mvn spring-boot:run

– Make a request: http://localhost:8080/get/company

-> We face with infinity loop problem:

spring restapis jsonview - Infinity Loop problem

Open the jsa-app.log, see exceptions from server-side:


...

java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
	at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:472)
	at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.sendServerError(DefaultHandlerExceptionResolver.java:520)
	at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.handleHttpMessageNotWritable(DefaultHandlerExceptionResolver.java:409)
	at org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.doResolveException(DefaultHandlerExceptionResolver.java:147)
	at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:136)
	at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:74)
	at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1222)
	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1034)

...
	
java.lang.StackOverflowError: null
	at com.fasterxml.jackson.core.JsonProcessingException.(JsonProcessingException.java:41)
	at com.fasterxml.jackson.databind.JsonMappingException.(JsonMappingException.java:251)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:706)
	at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:690)
	
...
	
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: getOutputStream() has already been called for this response
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
...

java.lang.IllegalStateException: getOutputStream() has already been called for this response
	at org.apache.catalina.connector.Response.getWriter(Response.java:626)
	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:211)
	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:109)
	at org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView.render(ErrorMvcAutoConfiguration.java:227)
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286)
	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
	
...

The same issue infinity loop when we make a request: http://localhost:8080/get/product

– Make a request to get overal view of company: http://localhost:8080/get/company/overalview

-> Result:


{"name":"Apple","products":[{"name":"Iphone 7"},{"name":"IPadPro"}]}

– Make a request to get detail view of company: http://localhost:8080/get/company/detailview

-> Result:


{"id":1,"name":"Apple","products":[{"id":1,"name":"Iphone 7"},{"id":2,"name":"IPadPro"}]}

– Make a request to get product view: http://localhost:8080/get/product/view

-> Result:


{"name":"Iphone 7","company":{"name":"Apple"}}

IV. Source code

SpringJsonView

292 thoughts on “Integrate Spring RestAPIs with @JsonView”

  1. Definitely consider that that you said. Your favourite reason appeared to be on the net
    the simplest factor to take into accout of. I say to you,
    I certainly get annoyed while other people think
    about concerns that they plainly do not recognise about.
    You controlled to hit the nail upon the highest and defined out
    the entire thing without having side effect , other people can take
    a signal. Will likely be back to get more. Thank you

  2. Have you ever thought about adding a little bit more than just your articles? I mean, what you say is important and all. Nevertheless just imagine if you added some great visuals or videos to give your posts more, “pop”! Your content is excellent but with images and video clips, this blog could definitely be one of the most beneficial in its field. Awesome blog!|

  3. Have you ever thought about publishing an ebook or guest authoring on other websites? I have a blog centered on the same information you discuss and would love to have you share some stories/information. I know my subscribers would enjoy your work. If you’re even remotely interested, feel free to send me an e-mail.|

  4. whoah this blog is fantastic i really like reading your articles. Keep up the great work! You understand, a lot of individuals are looking around for this info, you can aid them greatly. |

  5. Simply wish to say your article is as amazing. The clearness in your submit is just excellent and i could suppose you’re knowledgeable in this subject. Fine with your permission allow me to take hold of your feed to keep up to date with approaching post. Thanks a million and please carry on the enjoyable work.|

  6. When I originally commented I appear to have clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I recieve 4 emails with the exact same comment. Is there an easy method you are able to remove me from that service? Kudos!|

  7. I love your blog.. very nice colors & theme. Did you design this website yourself or did you hire someone to do it for you? Plz reply as I’m looking to create my own blog and would like to know where u got this from. kudos|

  8. This is very interesting, You’re a very skilled blogger. I have joined your feed and look forward to seeking more of your excellent post. Also, I have shared your website in my social networks!|

  9. It’s the best time to make a few plans for the longer term and it’s time to be happy. I’ve learn this post and if I may I wish to recommend you few attention-grabbing things or suggestions. Perhaps you could write subsequent articles regarding this article. I want to learn more issues about it!|

  10. My developer is trying to convince me to move to .net from PHP. I have always disliked the idea because of the costs. But he’s tryiong none the less. I’ve been using WordPress on numerous websites for about a year and am anxious about switching to another platform. I have heard great things about blogengine.net. Is there a way I can import all my wordpress content into it? Any kind of help would be really appreciated!|

  11. I loved as much as you will receive carried out right here. The sketch is attractive, your authored material stylish. nonetheless, you command get bought an edginess over that you wish be delivering the following. unwell unquestionably come more formerly again since exactly the same nearly a lot often inside case you shield this hike.|

  12. Thank you a bunch for sharing this with all people you really
    know what you are talking about! Bookmarked. Kindly also
    discuss with my site =). We can have a hyperlink alternate arrangement between us

  13. Hmm is anyone else having problems with the images on thisblog loading? I’m trying to figure out if its a problem on my end or ifit’s the blog. Any feedback would be greatly appreciated.

  14. Thanks for every other magnificent article. The
    place else may just anybody get that type of information in such a perfect approach of writing?
    I have a presentation next week, and I am at the look for
    such information.

  15. Undeniably consider that which you said. Your favorite reason appeared to
    be at the net the simplest thing to take note of.
    I say to you, I certainly get annoyed whilst people consider concerns that they plainly don’t know about.

    You controlled to hit the nail upon the highest and also outlined out the
    whole thing with no need side effect , other folks can take a signal.
    Will probably be again to get more. Thanks

  16. Howdy are using WordPress for your site platform?I’m new to the blog world but I’m trying to get started andset up my own. Do you need any html coding knowledge tomake your own blog? Any help would be really appreciated!

  17. I’m impressed, I have to admit. Rarely do I come across a blog that’s equally educative and entertaining,
    and without a doubt, you have hit the nail on the head.

    The problem is something that too few people are speaking intelligently about.

    I am very happy I came across this in my hunt for something
    concerning this.

  18. Hey, I think your website might be having browser compatibility issues.

    When I look at your blog in Chrome, it looks fine but when opening in Internet Explorer, it has some
    overlapping. I just wanted to give you a quick heads up!
    Other then that, excellent blog!

  19. I enjoy, lead to I discovered just what I was having a look
    for. You have ended my 4 day long hunt! God Bless you man. Have a
    great day. Bye

  20. What’s up mates, how is everything, and what you would like
    to say on the topic of this post, in my view its genuinely amazing in favor
    of me.

  21. Every weekend i used to pay a quick visit this web page, as i wishfor enjoyment, since this this web page conations reallyfastidious funny stuff too.

  22. With havin so much written content do you ever run into any problems of plagorism or
    copyright infringement? My website has a lot of exclusive content
    I’ve either written myself or outsourced but it appears a lot of it is popping it up all over the web without my authorization. Do you know
    any techniques to help reduce content from being ripped
    off? I’d definitely appreciate it.

  23. Someone necessarily help to make critically posts I would state. This is the very first time I frequented your web page and to this point? I amazed with the research you made to create this particular put up extraordinary. Great job!

  24. May I simply say what a relief to find someone who genuinely knows what they are talking about online. You actually understand how to bring a problem to light and make it important. More and more people must read this and understand this side of your story. It’s surprising you’re not more popular given that you certainly possess the gift.|

  25. Hi, I do believe this is an excellent blog. I stumbledupon it 😉 I may come back yet again since i have bookmarked it. Money and freedom is the greatest way to change, may you be rich and continue to guide other people.|

  26. An outstanding share! I have just forwarded this onto a co-worker who had been conducting a little homework on this. And he actually ordered me dinner simply because I discovered it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanx for spending the time to talk about this matter here on your web page.|

  27. May I just say what a relief to locate somebody that actually understands what exactly theyre speaking about on the net. You definitely understand how to bring a problem to light and make it important. Lots more people should read this and appreciate this side of the story. I cannot believe you are not more popular because you definitely hold the gift.

  28. 663401 790312Wow! This could be 1 particular with the most helpful blogs Weve ever arrive across on this topic. Truly Wonderful. Im also an expert in this subject therefore I can recognize your hard function. 726102

  29. You really make it seem so easy with your presentation however I in finding this topic to be actually something which I believe I might by no means understand. It sort of feels too complex and extremely large for me. I am looking forward on your subsequent put up, I’ll try to get the hang of it!

  30. Have you ever considered about including a little bit
    more than just your articles? I mean, what you say is fundamental and everything.

    Nevertheless imagine if you added some great pictures or video clips to give your posts more, “pop”!
    Your content is excellent but with images and clips, this site could
    certainly be one of the greatest in its niche.
    Good blog!

  31. I discovered your blog post internet site on yahoo and check several of your early posts. Continue to keep within the excellent operate. I merely additional increase your Rss to my MSN News Reader. Looking for forward to reading a lot more on your part down the line!…

  32. I have recently started a blog, the info you offer on this website has helped me greatly. Thank you for all of your time & work. “Never trust anybody who says ‘trust me.’ Except just this once, of course. – from Steel Beach” by John Varley.

  33. Excellent way of telling, and pleasant post to obtain data on the topic of my presentation focus, which i am going to present in school.

  34. Appreciating the time and effort you put into your blog and detailed information you
    provide. It’s great to come across a blog every once in a while that isn’t the same old rehashed material.
    Fantastic read! I’ve saved your site and I’m including your RSS feeds to my Google account.

  35. Thanks , I’ve recently been searching for info approximately this subject for ages and
    yours is the greatest I’ve came upon so far.
    However, what about the bottom line? Are you sure in regards to the source?

  36. Can I simply say what a relief to find an individual who genuinely understands what they’re talking about on the net.
    You actually realize how to bring a problem to light and make it important.
    More and more people should look at this and understand this side of the story.
    I was surprised you aren’t more popular given that you definitely have the gift.

  37. I like the helpful info you provide in your articles.
    I will bookmark your blog and check again here regularly.

    I’m quite sure I will learn plenty of new stuff right
    here! Best of luck for the next!

  38. Nice post. I was checking constantly this blog and I’m impressed!
    Extremely useful info particularly the last part 🙂 I care for such info much.
    I was seeking this particular information for a very
    long time. Thank you and good luck.

  39. I always used to read post in news papers but now
    as I am a user of web therefore from now I am using net
    for articles, thanks to web.

  40. Hello! This post couldn’t be written any better! Reading through this post reminds me of my previous room mate!
    He always kept chatting about this. I will forward this page to him.
    Fairly certain he will have a good read. Thank you for sharing!

  41. hi!,I like your writing so so much! percentage we keep up a
    correspondence more approximately your article on AOL?

    I require an expert on this house to resolve my problem.
    May be that’s you! Looking forward to see you.

  42. You’ve made some good points there. I looked on the web for additional information about the issue
    and found most individuals will go along with your views on this web site.

  43. This is the right blog for anybody who really wants to understand
    this topic. You know so much its almost tough to argue
    with you (not that I actually will need to…HaHa). You definitely put a fresh
    spin on a topic that’s been written about for years.
    Great stuff, just wonderful!

  44. Thank you a bunch for sharing this with all of us you really realize
    what you’re talking approximately! Bookmarked.
    Please additionally visit my site =). We can have a link trade agreement between us

  45. Greetings! This is my first visit to your blog!
    We are a collection of volunteers and starting a new
    initiative in a community in the same niche. Your blog provided us valuable information to work on. You have done a extraordinary job!

  46. Have you ever considered creating an ebook or guest authoring on other sites?
    I have a blog based upon on the same information you discuss and would really like to
    have you share some stories/information. I know my audience
    would value your work. If you are even remotely interested, feel free to send me an email.

  47. I blog quite often and I genuinely thank you for your information. This
    great article has truly peaked my interest. I’m going to take a note of your website and
    keep checking for new details about once a week. I opted in for your RSS feed too.

  48. Hello all, here every person is sharing these kinds of know-how,
    so it’s fastidious to read this blog, and I used to pay a visit
    this website every day.

  49. Everything posted was very reasonable. But, think on this, what if you typed a catchier title?
    I ain’t saying your content is not good., however what if you added
    a title that grabbed folk’s attention? I mean ozenero | Mobile & Web Programming Tutorials
    is a little plain. You ought to look at Yahoo’s front page and note how they write news headlines to get viewers to
    open the links. You might add a related video or a
    picture or two to grab readers excited about everything’ve got to say.
    Just my opinion, it could make your blog a little bit more interesting.

  50. Hi there would you mind letting me know which webhost you’re working with?

    I’ve loaded your blog in 3 different browsers and I must say this blog loads a lot
    quicker then most. Can you recommend a good internet hosting provider
    at a reasonable price? Thanks a lot, I appreciate it!

  51. Hi there, i read your blog from time to time and
    i own a similar one and i was just curious if you get
    a lot of spam comments? If so how do you protect against it,
    any plugin or anything you can suggest? I get so much lately it’s driving me mad so any support is very
    much appreciated.

  52. I’m extremely impressed with your writing skills and also
    with the layout on your blog. Is this a paid theme or did you modify it yourself?
    Anyway keep up the excellent quality writing, it is rare to see
    a great blog like this one today.

  53. I just like the helpful info you provide on your articles.
    I’ll bookmark your blog and check once more here frequently.
    I’m rather certain I will be told lots of new stuff proper here!
    Good luck for the following!

  54. Have you ever thought about creating an e-book or guest authoring on other sites?
    I have a blog based on the same ideas you discuss and
    would love to have you share some stories/information. I know my readers would appreciate your work.
    If you are even remotely interested, feel
    free to send me an email.

  55. Please let me know if you’re looking for a writer for your
    weblog. You have some really good articles and I believe I would be
    a good asset. If you ever want to take some of the load off, I’d really
    like to write some material for your blog in exchange for a link back to mine.
    Please blast me an e-mail if interested. Regards!

  56. Fantastic goods from you, man. I’ve understand your stuff previous to and
    you’re just too great. I really like what you’ve
    acquired here, certainly like what you’re saying and the way in which you say it.
    You make it enjoyable and you still care for to keep it
    smart. I can’t wait to read far more from you. This is really a terrific website.

  57. This design is wicked! You certainly know how to keep a reader entertained.
    Between your wit and your videos, I was almost moved to start my own blog
    (well, almost…HaHa!) Excellent job. I really loved what you had to say,
    and more than that, how you presented it.
    Too cool!

  58. My brother recommended I might like this website.
    He was totally right. This post actually made my day.

    You cann’t imagine simply how much time I had spent for this information!
    Thanks!

  59. Do you have a spam issue on this website; I also am a blogger, and I was
    wondering your situation; many of us have created some nice practices and we are looking to
    trade solutions with others, be sure to shoot me an e-mail if interested.

  60. Hello, Neat post. There is an issue together with your website in internet explorer,
    could test this? IE still is the marketplace leader and a good component to
    folks will miss your great writing due to this problem.

  61. Can I just say what a comfort to find an individual who actually knows what they are discussing on the internet.
    You certainly understand how to bring a problem to light and make it important.
    A lot more people really need to look at this and understand this side of the story.
    I can’t believe you are not more popular given that you
    definitely possess the gift.

  62. Howdy terrific blog! Does running a blog similar to this require a large amount of work?
    I have virtually no knowledge of computer programming but I had been hoping to start my own blog
    soon. Anyhow, if you have any ideas or tips for
    new blog owners please share. I know this is off topic however I
    just wanted to ask. Thanks!

  63. I have been browsing on-line more than three hours lately,
    but I never discovered any fascinating article like yours.
    It’s pretty worth enough for me. In my opinion, if all web owners and
    bloggers made excellent content as you did, the internet will probably be a
    lot more helpful than ever before.

  64. When I originally commented I clicked the “Notify me when new comments are added” checkbox and now each time
    a comment is added I get four e-mails with the same comment.
    Is there any way you can remove people from that service?
    Appreciate it!

  65. I just like the helpful info you provide for your articles.
    I’ll bookmark your weblog and check once more here frequently.
    I’m rather sure I’ll be told many new stuff right here!
    Best of luck for the following!

  66. Hello just wanted to give you a quick heads up. The text in your content seem to be running off the screen in Internet explorer.
    I’m not sure if this is a formatting issue or something
    to do with browser compatibility but I thought I’d post to let you
    know. The layout look great though! Hope you get the problem resolved soon. Many thanks

  67. Hmm is anyone else experiencing problems with the pictures on this blog loading?
    I’m trying to determine if its a problem on my end or if it’s the
    blog. Any suggestions would be greatly appreciated.

  68. It’s a shame you don’t have a donate button! I’d definitely
    donate to this outstanding blog! I suppose for now i’ll settle for book-marking and adding your RSS feed to my Google account.
    I look forward to fresh updates and will talk about this
    site with my Facebook group. Chat soon!

  69. Pretty nice post. I just stumbled upon your blog and wanted to say that
    I have truly enjoyed browsing your blog posts. In any case I will be subscribing to
    your rss feed and I hope you write again very soon!

  70. Pretty great post. I simply stumbled upon your weblog and
    wished to say that I have really loved browsing your weblog posts.
    After all I’ll be subscribing to your rss feed and I am hoping you write once more very soon!

  71. I feel that is among the so much vital info for me.
    And i am glad reading your article. However should statement on few basic things, The website style is perfect, the
    articles is really excellent : D. Just right job, cheers

  72. you’re actually a good webmaster. The web site loading speed
    is amazing. It kind of feels that you’re doing any distinctive trick.

    Moreover, The contents are masterpiece. you’ve performed a magnificent
    activity on this topic!

  73. I’m no longer positive the place you’re getting your information, but good topic.
    I must spend some time studying more or figuring out more.
    Thank you for fantastic info I was looking for this information for
    my mission.

  74. Oh my goodness! Impressive article dude! Thank you, However I am experiencing problems with your RSS.
    I don’t understand why I am unable to subscribe to it.

    Is there anybody else getting identical RSS issues? Anyone that knows the solution can you kindly respond?

    Thanx!!

  75. I’ve been surfing online more than 3 hours as of late,
    but I by no means found any interesting article
    like yours. It’s lovely value sufficient for me. In my view, if
    all webmasters and bloggers made good content as you did, the internet can be a lot more useful than ever
    before.

  76. My brother recommended I would possibly like this blog.
    He was once totally right. This submit truly made my day.
    You can not consider simply how much time I had spent
    for this info! Thanks!

  77. This is the right website for anybody who hopes to understand this topic.

    You realize a whole lot its almost tough to argue with you (not that I
    personally would want to…HaHa). You definitely put a fresh spin on a topic which has been discussed for years.

    Wonderful stuff, just excellent!

  78. Hmm is anyone else encountering problems with the images
    on this blog loading? I’m trying to figure out if its a
    problem on my end or if it’s the blog. Any responses would be greatly appreciated.

  79. Just desire to say your article is as surprising. The clarity in your submit is simply excellent
    and that i can assume you’re knowledgeable on this subject.
    Fine together with your permission allow me to seize your feed
    to keep up to date with drawing close post.
    Thanks a million and please continue the gratifying work.

  80. After looking into a handful of the blog posts on your web page, I really appreciate your technique of writing a blog.

    I saved as a favorite it to my bookmark site list and will be checking back soon.
    Please check out my website too and tell me what you think.

  81. It’s a pity you don’t have a donate button! I’d certainly donate to this
    excellent blog! I suppose for now i’ll settle for book-marking and adding your
    RSS feed to my Google account. I look forward to new
    updates and will share this site with my Facebook group.
    Talk soon!

  82. Fantastic site you have here but I was wondering if you knew of
    any forums that cover the same topics discussed here?
    I’d really love to be a part of community where I can get suggestions from other experienced people that share the
    same interest. If you have any recommendations, please
    let me know. Thank you!

  83. I think that what you posted was very logical. However, think on this, what if you wrote a catchier title?

    I mean, I don’t wish to tell you how to run your blog, but suppose you added
    a headline that makes people want more? I mean ozenero | Mobile & Web Programming Tutorials is kinda plain. You could glance at Yahoo’s
    front page and watch how they write article headlines to get people to open the links.
    You might add a video or a related picture or two to get
    people interested about everything’ve written. In my opinion,
    it would bring your posts a little livelier.

  84. Hello! I could have sworn I’ve been to this blog before but after browsing through many of the posts I realized it’s
    new to me. Regardless, I’m definitely delighted I stumbled upon it and I’ll be bookmarking it and checking back
    often!

  85. Can I simply say what a relief to discover someone that really understands what they’re talking about over the internet.
    You actually understand how to bring a problem to light and
    make it important. More people should check this out and understand this side of the
    story. It’s surprising you are not more popular because you surely possess the gift.

  86. My partner and I stumbled over here by a different website and thought I might as well check things out.
    I like what I see so now i’m following you.

    Look forward to looking at your web page repeatedly.

  87. Good post. I learn something new and challenging on websites I stumbleupon everyday.
    It will always be helpful to read through content from other authors and practice something from their web sites.

  88. Hey! Do you know if they make any plugins to protect against hackers?
    I’m kinda paranoid about losing everything I’ve worked hard on. Any tips?

  89. Hmm is anyone else experiencing problems with the images
    on this blog loading? I’m trying to find
    out if its a problem on my end or if it’s the blog.

    Any suggestions would be greatly appreciated.

  90. Thanks for the good writeup. It if truth be told was a entertainment
    account it. Glance complex to more added agreeable from you!
    However, how can we keep up a correspondence?

  91. Thanks for the marvelous posting! I definitely
    enjoyed reading it, you are a great author.I will
    make certain to bookmark your blog and may come back later on. I want to
    encourage you to definitely continue your great writing, have a nice day!

  92. I and also my buddies ended up studying the good tips from the website while immediately I got a terrible feeling I never expressed respect to the site owner for those techniques. Most of the young men ended up consequently passionate to read through all of them and now have clearly been making the most of these things. Thank you for being well thoughtful as well as for obtaining these kinds of marvelous information millions of individuals are really desirous to be aware of. My honest apologies for not expressing appreciation to you earlier.

  93. Tremendous issues here. I am very satisfied to peer your post.
    Thanks so much and I’m having a look forward to contact
    you. Will you please drop me a e-mail?

  94. I’m truly enjoying the design and layout of your website.

    It’s a very easy on the eyes which makes it much more enjoyable for me to come
    here and visit more often. Did you hire out a developer to create your
    theme? Superb work!

  95. Piece of writing writing is also a excitement, if you be
    acquainted with after that you can write if not
    it is complicated to write.

  96. Hello fantastic blog! Does running a blog similar to this require a lot of work?
    I have virtually no understanding of coding however I
    was hoping to start my own blog soon. Anyway, should you have any ideas or techniques for new blog owners please share.
    I know this is off subject nevertheless I simply had to ask.
    Many thanks!

  97. Hello! This is kind of off topic but I need some help
    from an established blog. Is it difficult to set up your own blog?
    I’m not very techincal but I can figure things out pretty fast.
    I’m thinking about creating my own but I’m not sure where to start.
    Do you have any ideas or suggestions? Appreciate it

  98. Hi! I could have sworn I’ve been to this blog
    before but after reading through some of the post I realized it’s new
    to me. Nonetheless, I’m definitely glad I found it and I’ll be bookmarking and checking back frequently!

  99. Excellent post. Keep posting such kind of information on your site.
    Im really impressed by your site.
    Hello there, You’ve performed an incredible job.
    I’ll definitely digg it and individually suggest to my friends.
    I’m confident they’ll be benefited from this
    website.

  100. Hey just wanted to give you a quick heads up. The text in your post
    seem to be running off the screen in Ie. I’m not sure if this is a format issue or
    something to do with web browser compatibility but I figured I’d post to let you know.
    The design and style look great though! Hope you get the issue solved soon. Kudos

  101. Today, I went to the beach with my kids. I found a sea shell and gave
    it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her ear and screamed.
    There was a hermit crab inside and it pinched her ear.
    She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!

  102. I have been browsing online more than three
    hours today, yet I never found any interesting article like yours.

    It is pretty worth enough for me. Personally, if all site owners
    and bloggers made good content as you did, the web will be a lot more useful than ever before.

  103. Wow that was strange. I just wrote an extremely long comment but
    after I clicked submit my comment didn’t show up. Grrrr…

    well I’m not writing all that over again.
    Anyway, just wanted to say superb blog!

  104. I was curious if you ever considered changing the page layout of your site?
    Its very well written; I love what youve got to say.
    But maybe you could a little more in the way of content so people could connect with it better.
    Youve got an awful lot of text for only having one or 2 pictures.
    Maybe you could space it out better?

  105. Hey There. I found your blog using msn. This is an extremely well written article.
    I’ll be sure to bookmark it and come back to read
    more of your useful info. Thanks for the post.
    I will definitely comeback.

  106. Thanks , I’ve just been searching for information approximately this topic for ages and
    yours is the best I’ve came upon till now.
    But, what about the bottom line? Are you certain in regards to the supply?

  107. After I originally left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and from now on each time a
    comment is added I recieve 4 emails with the exact same comment.
    Perhaps there is a way you can remove me from that
    service? Thank you!

  108. Thanks for some other informative website. Where else could I get that type of
    info written in such a perfect method? I’ve a venture that I’m just now running
    on, and I have been on the look out for such information.

  109. Its like you read my mind! You seem to know so much about this,
    like you wrote the book in it or something. I think that you
    can do with some pics to drive the message home a little bit, but other than that, this is fantastic blog.
    A fantastic read. I’ll definitely be back.

  110. I really love your blog.. Excellent colors & theme.
    Did you build this site yourself? Please reply back as I’m looking to create my very own site and want to
    find out where you got this from or just what
    the theme is named. Thank you!

  111. With havin so much content do you ever run into any
    problems of plagorism or copyright infringement? My site has a lot of unique content I’ve either written myself or outsourced but it appears a lot of it is popping it up all over the internet without my authorization. Do you
    know any methods to help stop content from being stolen? I’d certainly appreciate it.

  112. Wow that was odd. I just wrote an incredibly long comment but after I clicked submit my comment didn’t show up.
    Grrrr… well I’m not writing all that over again. Anyway, just wanted to say wonderful blog!

  113. It is the best time to make a few plans for the future and it’s time to be
    happy. I’ve learn this submit and if I may just I wish to counsel you some fascinating things
    or suggestions. Perhaps you can write subsequent articles regarding this article.
    I desire to learn more issues approximately it!

  114. Valuable information. Fortunate me I discovered your site by chance, and I am shocked why this twist of fate did not happened earlier!
    I bookmarked it.

  115. I read this paragraph completely on the topic of the resemblance of most recent and preceding technologies, it’s awesome article.

  116. I am no longer sure where you are getting your information, however good topic.
    I must spend some time learning much more or working out more.
    Thank you for magnificent info I used to be looking for this information for my mission.

  117. Hey would you mind stating which blog platform you’re using?

    I’m looking to start my own blog in the near future but I’m having a difficult time choosing between BlogEngine/Wordpress/B2evolution and Drupal.

    The reason I ask is because your layout seems different then most blogs and
    I’m looking for something unique.
    P.S Sorry for being off-topic but I had to ask!

  118. Howdy excellent website! Does running a blog such as this take a lot of work?
    I’ve no knowledge of programming however I had been hoping
    to start my own blog in the near future. Anyway, should you have any ideas or
    tips for new blog owners please share. I know this is off subject however I
    just needed to ask. Kudos!

  119. This design is steller! You definitely know how to keep a reader amused.
    Between your wit and your videos, I was almost moved to start my own blog
    (well, almost…HaHa!) Excellent job. I really enjoyed what you had to say,
    and more than that, how you presented it. Too cool!

  120. Spot on with this write-up, I actually believe that
    this site needs a great deal more attention. I’ll probably be
    back again to read through more, thanks for the advice!

  121. I will right away seize your rss feed as I can’t to find your e-mail subscription link or newsletter service.
    Do you’ve any? Please let me know in order that I
    may just subscribe. Thanks.

  122. Does your blog have a contact page? I’m having a tough time locating it but, I’d like
    to shoot you an e-mail. I’ve got some suggestions for your blog you might be
    interested in hearing. Either way, great website and I look forward to seeing it develop over time.

  123. You’re so cool! I do not believe I’ve truly read through
    anything like that before. So wonderful to find another person with original
    thoughts on this subject. Really.. many thanks for starting this up.
    This website is one thing that is needed on the internet, someone with a bit of originality!

  124. Excellent post. Keep posting such kind of information on your
    page. Im really impressed by your blog.
    Hello there, You’ve performed a great job. I will certainly
    digg it and for my part recommend to my friends.
    I am sure they’ll be benefited from this web site.

  125. I’ve been surfing online more than 2 hours today, yet I never found any interesting article like yours.

    It’s pretty worth enough for me. In my opinion, if all website owners and bloggers made good content as you did, the
    net will be much more useful than ever before.

  126. Hello there, I found your blog by means of Google even as searching for a related matter, your website got
    here up, it looks good. I’ve bookmarked it in my google bookmarks.

    Hi there, just was aware of your blog through Google, and located that it is truly informative.
    I am going to be careful for brussels. I will appreciate in the event you proceed
    this in future. Numerous other folks will be benefited out of your
    writing. Cheers!

  127. Write more, thats all I have to say. Literally, it seems as though you relied on the video to
    make your point. You definitely know what youre talking about, why throw away
    your intelligence on just posting videos to your weblog when you could be giving us something enlightening to read?

  128. Fantastic goods from you, man. I have understand your
    stuff previous to and you are simply extremely magnificent.
    I really like what you’ve obtained here, really like
    what you are stating and the way in which wherein you say it.

    You are making it enjoyable and you continue to care for to keep it wise.
    I can’t wait to learn far more from you.
    That is really a tremendous website.

  129. I’m truly enjoying the design and layout of your website.
    It’s a very easy on the eyes which makes it much more pleasant for
    me to come here and visit more often. Did you hire out a designer to create
    your theme? Fantastic work!

  130. Having read this I thought it was rather informative. I appreciate
    you finding the time and effort to put this short article
    together. I once again find myself spending a lot of time both reading and leaving comments.
    But so what, it was still worthwhile!

  131. What’s up everyone, it’s my first pay a quick visit at this website,
    and article is really fruitful for me, keep up posting these types of articles or reviews.

  132. I am not certain the place you are getting your information, but good topic.
    I must spend a while learning more or understanding more.
    Thank you for great info I used to be in search of
    this info for my mission.

  133. Heya i am for the first time here. I found this board and I in finding It
    really useful & it helped me out much. I am hoping to provide something back and help others such as you aided me.

  134. Hmm it looks like your blog ate my first comment (it was super long)
    so I guess I’ll just sum it up what I submitted and say,
    I’m thoroughly enjoying your blog. I as well am an aspiring blog writer but I’m still
    new to everything. Do you have any helpful hints for novice blog writers?
    I’d really appreciate it.

  135. href="https://www.thegoldenmart.com/golden-jobs">are there part time jobs at amazon says:

    nice post . very well written.looking for much more like this.

  136. href="https://www.thegoldenmart.com/golden-jobs">amazon jobs indianapolis part-time says:

    nice post . very well written.looking for much more like this.

  137. I’d like to thank you for the efforts you have put in writing this blog. I am hoping to see the same high-grade blog posts from you later on as well. In truth, your creative writing abilities has inspired me to get my very own website now 😉

Leave a Reply

Your email address will not be published. Required fields are marked *