Tuesday, December 9, 2014

How to extract a JSON value from a BASH script



Requirement : I was working on shell script where I need to get Id value from JSON and I tried so many thing but unable to get it without using any other tools. So, After trying so many failure attempt, I end up with this site (A big thanks to you) which resolved my issue.


Here is how I fetched value from JSON,


JSON = <YOUR_JSON>
PROPERTY_TO_FETCH="<VALUE>" (In my case, it was "id")

ID = `echo $JSON| sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed 's/[\,]/ /g' | sed 's/\"//g' | grep -w $PROPERTY_TO_FETCH`

echo ${ID ##*|}


Which will print the value of 'id' from JSON.

Tuesday, November 11, 2014

How to execute maven goal on parent module but not on childer

I am working on multi module maven project and If I define any plugin in the parent pom.xml file, It get executed for all the child build as well.

In simple language, I wanted to use one plugin in parent pom.xml file which read properties file from the base directory but whenever I executes it, all the sub pom.xml tries to read the properties file from their base directory and its ends up in maven failed.

To resolve the above issue, We just need to add "inherit' attributes in the plugin.

Example :

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<inherited>false</inherited>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${basedir}/rpm.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>

Now the plugin will get executed from the parent pom.xml file.

Thank you :)

Thursday, October 30, 2014

How to Map a list of strings with JPA/Hibernate annotations ?

Yesterday while working on my project, I got one requirement where I need to store list of Array into the database, I checked on Google, went through various site but didn't get much information. Everyone talks about creating new entity and do onetomany relationship BUT I wanted to create a collection of basic types.

Finally I come across @ElementCollection annotation provided by JPA 2.0 which resolves my problem.

Problem :
Input JSON which we need to store in DB:

{
"schemas": ["urn:scim:schemas:core:1.0", "urn:scim:schemas:extension:enterprise:1.0"]
}
           Where schemas is Array of String.
Solution :


Just add following annotation in your POJO i,e
@ElementCollection
@CollectionTable(name = "SCIM_SCHEMAS", joinColumns = @JoinColumn(name = "SCHEMA_ID"))
@Column(name = "SCIM_SCHEMA")
private List<String> schemas;

It will create the table named "SCIM_SCHEMAS" having columns 'SCHEMA_ID' and 'SCIM_SCHEMA'


For details check section 2.2.5.3.3. Collection of basic types or embeddable objects or feel free to comment :)



How TOPT Works: Generating OTPs Without Internet Connection

Introduction Have you ever wondered how authentication apps like RSA Authenticator generate One-Time Passwords (OTPs) without requiring an i...