Posted by Editor | 10/06/2015 11:20:00 p.m. | 0 comments »

Follow the below steps if you want to preserve the namespace prefix values consistent.

First define a namespace prefix map, say JAXBNamespacePrefixesMap as below:

<util:map id="JAXBNamespacePrefixesMap">
   <entry key="" value="ns1" />
   <entry key="" value="ns2" />
   <entry key="" value="ns3" />
   <entry key="" value="ns4" />
   <entry key="" value="ns5" />

Now set this map as namespacePrefixes in JAXBElementProvider.

<bean id="jaxbProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
   <property name="jaxbElementClassMap" ref="JAXBElementClassMap" />
   <property name="marshallAsJaxbElement" value="true" />
   <property name="unmarshallAsJaxbElement" value="true" />
   <property name="collectionWrapperMap" ref="JAXBElementClassMap" />
   <property name="namespacePrefixes" ref="JAXBNamespacePrefixesMap" />

In the server configuration you will have jaxbProvider as a provider.

<jaxrs:server id="CXFService" address="/" >
      <entry key="json" value="application/json" />
      <entry key="xml" value="application/xml" />
      <ref bean="CXFServiceBean"/>
         <ref bean="jaxbProvider" />
         <ref bean="jsonpProvider" />            
       <ref bean="jsonpInInterceptor"/>
        <ref bean="jsonpOutInterceptor"/>

That's it! You will see the namespace prefix as defined in the mapping.

<ns1:person xmlns:ns1="" xmlns:ns2="" xmlns:ns3="" xmlns:ns4="" xmlns:ns5="">
      <ns4:address>Your address</ns4:address>
Continue reading...

Posted by Editor | 8/05/2015 10:53:00 a.m. | 0 comments »
In cities owning an independent house with some garden space is only a dream for most of the middle and small class citizens. You are forced to buy a two or three bedroom apartment with little open space called 'balcony'. Still you can fulfill your dream of having your own vegetable garden by efficiently utilizing the balcony.

What you need?

Red Spinach - Multiple Plants in One Pot
As a beginner you just need little space in balcony, few vegetable pots, vegetable seeds and soil mix. Once you have a basic setup you can move to advance level such as add vertical gardening, drip irrigation etc.

How to select vegetable pots?

Malabar Cucumber
There are different types of pots available in the market, you need to choose the one best suitable for balcony gardening. Since you don't have much space for your garden, you should go for small ones but should look good. Terra Cotta containers are normally good for plants but won't be a good option for balcony as those are heavy, cracks easily if not handled carefully. There are plastic containers which looks similar to Terra Cotta containers but are very light, good looking and hence a better option for balcony gardening. Also you can use plastic grow bags which are very cheap but not durable and may not give a good looking balcony. There are other cheaper options like thermocol containers, empty tin containers etc.

Filling with soil mix

Make sure to put drainage holes before filling the pot with soil mix. You will get organic soil mix from nearby stores or even eCommerce shops such as Amazon, Flipkart etc. Now fill soil mix up to 80% of the pots and keep it at positions where maximum sunlight is available. Optionally you can add a think layer of sand at the bottom of the pot to make the drainage flow smooth.

Sowing the seeds

Country Tomato grown in balcony
Sow only one variety of seed in one pot, scatter seeds evenly, then add a thin layer of soil on top of the seeds. Water the pots gently only to moisten the soil, don't over water the pots. Germination takes one to five days, be patient. Also not all seeds germinates, so seed accordingly.


Once the seeds germinates and develops two to three leaves, its time to transplant them to individual pots. Gently take out the plants one by one and plant them on the new pots. Keep 2-3 inches space between plants(depends on the plant type).

Caring your plants

Curry Leaves in Balcony
Water and sunlight is must for vegetable plants. Water the plants regularly, if possible in the morning and evening. Never over water plants. Move the pots to places where more sunlight is available. Fertilize the plants on a weekly basis.

Drip Irrigation

Balcony garden with Drip Irrigation
You will get cheap drip irrigation DIY kits from the market, normally costs Rs.500 - Rs.1000 for 20 plants. There are many advantages of Drip-irrigation, and the most important is it saves lots of water. Another important factor is it saves time if your garden is big and you are a busy person. Also it becomes useful when you want to stay away from home for couple of days and want to keep watering your garden.
Continue reading...

Posted by Editor | 7/17/2015 07:16:00 p.m. | 0 comments »
Are you a freelancer earning money in India by writing blogs or by doing search engine optimization(SEO) or by data entry work? If the answer is yes, you are liable to pay income tax and service tax in India provided you are exempted to pay taxes under various acts under income tax and service tax sections.
Since you are not earning salary, the income earned from the freelancing should be filed under "Profits or Gains of Business or Profession" and you can use either ITR-4 or ITR-4S for filing tax returns.
Interesting part is, you do not need to show the whole money you earned via freelancing as income, the income is the revenue earned minus the annual expenses minus annual depreciation of the assets you used for freelancing, for example, laptop, printer, modem etc. You can consider electricity charges, rental, phone charges, internet charges etc. as annual expenses and those can be deducted from the income.
You can start filing your tax return once you are done with the income calculation for that financial year. If you do not have an account with Income Tax India, first create one by clicking then, login with your user id and password. Do not forget, your user id is your PAN number.
Once logged in, click on the e-File link. Now you can select the ITR form, in our case ITR-4S and the assessment year. Address, you can choose to get from PAN database. If the current address is different from that of with PAN database, choose "New Address". If you already have a digital signature choose "YES" for "Do you want to digitally sign?". If you are not sure what digital signature is, don't worry, simply select "NO". Now proceed to next page.
Next page is for personal details, fill all mandatory fields carefully and proceed to next step.
This is where you provide your freelancing business details. You need to provide the nature of the business you are doing, the revenue and income along with other financial particulars of the business. For "Nature of Business", you select "709 - IT. enabled services, BPO service providers". Now under "Details of Income from Business" section, provide E1(Gross Turnover) and E2(Total Income). The form will automatically calculate E4(Income chargeable under Business). Fill "Financial Particulars of the Business" and proceed to next page.
This section automatically populates all tax deduction details(TDS), if there are any. Fill the appropriate section if you have any tax paid in the applicable financial year. This includes the tax deducted by bank towards interest against fixed deposits(it is mandatory to deduct tax for interest over Rs. 10,000). Save the form and proceed to next step. This page shows the summary of the income and exemption details along with the tax paid and payable details. If you have paid excess tax, the refund amount also is given at section D19. In D21 provide your bank account details so that the refund if any will be wired to this account automatically.
Verify the details once again and if you are sure all the information provided is correct, click on "Submit" which will upload the form to Income Tax Department for verification. You can download the ITR-V by going to "My Account" -> e-Files Returns/Forms.
Click the acknowledge number to get the acknowledgement download link. Now download the form, and open it, provide the password which is lower case PAN number + your date of birth in numerical format, say abcde31121970.
Now take a print of ITR-V, sign at the bottom and send it to the address mentioned at the bottom by normal post. You will get a confirmation


All data and information provided on this site is for informational purposes only. The material contained on this site and on the associated web pages is not intended to be advice on any particular matter. Subscribers and readers should seek appropriate professional advice before acting on the basis of any information contained in this site. No Advice or information, whether oral or written obtained by you from or through the service shall create any warranty/liability against The authors, employees and owners of this site expressly disclaim any and all liability to any person, whether a subscriber or not, in respect of anything and of the consequences of anything done or omitted to be done by any such person in reliance upon the contents of this site and associated web pages.
Continue reading...

Posted by Editor | 7/17/2015 12:05:00 p.m. | 2 comments »

You might have seen a cute dinosaur whenever you try to access a webpage on Chrome browser but not connected to internet. There is an addictive game hidden on that page, a never-ending running game!

How to play this running game?

If you are on a PC, make sure your PC is not connected to internet, open Chrome browser and access any webpage say, Now Chrome will display a page saying you are offline with a dinosaur image. Simply press the space bar and here you go, the game starts!!!

Hitting the space bar again will make the dinosaur jump so that it can escape from the obstacles.

On mobile phones, the game starts on tapping the dinosaur. Tap again to keep the dinosaur running until it hits the Cactus. You can restart the game as many times as you want.

You earn points for the distance you covered and for each high score the player is greeted with a beep. High score is erased on exit or refresh of the page.

Some facts about this game

The dinosaur you see on this game is T-Rex(Tyrannosaurus rex), one of the largest land carnivores of all time lived 65 million years ago. T-Rex has short arms with only two fingers, makes it difficult to grab things. What this image represents is that Chrome is having trouble reaching out to the internet. Why a T-Rex? Could be because you are living in the dinosaur age with no internet at all!

You can reduce your frustration by playing this game if there is an internet outage instead of staring at the offline page as in Internet Explorer.

The T-Rex image and sound designs were done by Google Chrome designers Mr.Sebastien Gabriel, Alan Bettes and Manuel Clement where the game was entirely coded by Mr. Edward Jung.

Want to know more on the implementation? Here you can grab the source code of the game: Chromium Code Reviews. The game is written in JavaScript, file offline.js contains the core logic.

Liked the game? Share your feedback below.

Continue reading...

Posted by Editor | 4/24/2015 01:01:00 p.m. | 0 comments »

If you are a programmer, you would have faced this kind of issue at least once in your programming life, a long folder structure got created and you are not able to delete it using Windows delete option nor with DOS commands.

Normally you can delete folders recursively using command "rmdir", for example, "rmdir delete_me /s /q" but if it is really large rmdir simply returns an error "File name too large...".

Root cause: In Windows and DOS, there is a flag "MAX_PATH" which has value 260, means a file path can have only a maximum of 260 characters including the drive and null character("D:\256-character path string"). So, files created by other programs which has more than 260 characters cannot be deleted using Windows or DOS commands.

There are multiple ways to delete these files/folders, like moving few set of folders into the root folder, or writing a script which will recursively delete folders etc. If you don't want to spend time on these try the command "robocopy". Robocopy is a Windows command to copy files from one location to another.

Syntax: robocopy <Source> <Destination> [<File>[ ...]] [<Options>]

There is an optional flag MIR which can be used to mirror a directory tree. We will use this flag to delete the folders recursively, how?

First we will create an empty directory say "c:\empty". Say the folder we want to delete is "c:\delete_me", then issue the command:

robocopy "c:\empty" "c:\delete_me" /MIR
The trick is, robocopy tries to mirror the empty folder; since there are no files or folders in the source directory, it simply deletes the files and folders under target directory recursively! Nice trick, isn't it?

Hope we saved your day! Feel free to drop your comments below.

Continue reading...

Posted by Editor | 2/27/2015 02:31:00 p.m. | 3 comments »
By default, Jackson JSON processor does not wrap the JSON object with the root name when used with JaxB Introspection(@JsonRootName will work for non-JaxB implementation). You can enable this feature by setting the property SerializationConfig.Feature.WRAP_ROOT_VALUE and DeserializationConfig.Feature.UNWRAP_ROOT_VALUE to true.

Domain Object -

@XmlType(name = "user")
public class User implements Serializable {

    @XmlElement(name = "first_name")
    protected String firstName;

    @XmlElement(name = "last_name")
    protected String lastName;

    public String getFirstName() {
        return firstName;

    public void setFirstName(String value) {
        this.firstName = value;

    public String getLastName() {
        return lastName;

    public void setLastName(String value) {
        this.lastName = value;
Default Jackson generated JSON Output
{"first_name": "James", "last_name": "Gosling"}
{"User": {"first_name": "James", "last_name": "Gosling"} }
All good? Not yet. Noticed the naming convention used in the root node? It came out in Pascal case(begins with a capital letter), how? By default Jackson uses class name as the root name. This makes our JSON output ugly. Let us find a way to make this root name inline with our naming convention.

JaxbAnnotationIntrospector for your rescue

We can tell Jackson ObjectMapper to use JAXB annotations to map objects with name and change the behavior of name generation by providing a customized version of JaxbAnnotationIntrospector. We can use this class to change the root name or even the property names; change to lower case, change to upper case, suffix or prefix names with custom string or even give new name to the elements.

Name root element as defined in JaxB

Below class overrides findRootName() of JaxbAnnotationIntrospector and returns the XmlType as root name.
public class MyAnnotationIntrospector extends JaxbAnnotationIntrospector {
 public String findRootName(AnnotatedClass ac) {

  return ac.getAnnotations().get(XmlType.class).name();
If you want to do it for only specific domain objects, you can add the below condition:
 if(ac.getAnnotated().getName().equalsIgnoreCase("com.texient.domain.User")) {...}
Now you can use this introspector in the mapper object:
public class MyObjectMapperFactory {

    public static ObjectMapper createMapper() {

        final ObjectMapper mapper = new ObjectMapper(); 
        final JaxbAnnotationIntrospector myAnnotationIntrospector = new MyAnnotationIntrospector();

        final DeserializationConfig deserializeConf = mapper.getDeserializationConfig()  


        final SerializationConfig serializeConf = mapper.getSerializationConfig()


        return mapper;


So, with a custom Annotation Introspector you can customize the way the JSON serialization and de-serialization are done. Feel free to drop your feedback below.
Continue reading...

Recommended products for you