Tuesday, November 24, 2015

Ho can we map service provider (SP) in identity to Application in API Manager

1. Create app in api manager
2. Generate the keys
3. Come to identity and login as admin@trimble.com<mailto:admin@trimble.com>
4. Create a sp with the same name as above but dont do anything else.
5. Hit the url below (replace the appname and consumer key)
6. Click update / submit
https://identity-dev.trimble.com/i/t/trimble.com/carbon/application/configure-service-provider.jsp?action=update&display=oauthapp&spName=KrishnaPlayground&oauthapp=G_mBPM2E1CJhACJ0ZxikHZY4udQa

Sunday, October 18, 2015

Deleting a line or word in iTerm2

In OSX, ⌥+⌫ and ⌘+⌫ are the shortcuts for deleting a word and deleting a line respectively. ⌘+ ← and ⌘+ → are for going to the beginning and end of lines. By default, iTerm2 isn't configured this way, and there are a lot of misleading guides online. The following is what I've found to work on my machine.

1. Open the preferences (⌘+,) and go to the Keys tab.
2. Add a global shortcut key, and just type in your shortcut
3. In the Action dropdown, select Send Hex Code

The hex codes for...

* Deleting a word: 0x17.
* Deleting a line: 0x15.
* Moving to the beginning of the line: 0x01.
* Moving to the end of the line: 0x05.

Just open a new tab, and it should work!

Here is a screenshot, for clarity. [Picture]

Shortcuts to go to line starting and end in iTerm2

Here are the shortcuts that will work in Terminal app.

Home: control + A

End: control + E

Next Word: esc, then f

Previous word: esc, then b

How to rename the tab name in iTerm2

I like this one:

#setup terminal tab title
function title {
if [ "$1" ]
then
unset PROMPT_COMMAND
echo -ne "\033]0;${*}\007"
else
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
fi
}
title


It will let you toggle the name of a tab between a custom name and a default of your CWD.

title -> your tab title will be ~/YOUR_CWD/

title hey there -> your tab title will be hey there

How to a command to multiple tabs in Iterm2

iTerm 2 is a replacement application for the default terminal on OSX. It's highly popular due to allowing advanced features such as tabs, split panes, simpler theming and custom keyboard bindings.

[iTerm 2 split panes]

If you find the need to enter the same commands into multiple panes at the same time, simply hit "⌘Command + ⇧Shift + I". You will recieve a small notification about sending input to all panes, the next text you type will physically begin typing into all open panes for your current tab and is executed once you hit "⏎ Return".

Pretty neat!.

Thanks & Regards,
RK

Tuesday, September 22, 2015

How to write a Serilizer or Desrilizer in Jackson json in java

import java.io.Serializable;
import java.util.Arrays;

import javax.xml.bind.annotation.XmlRootElement;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.annotate.JsonSerialize;

import com.varra.identity.json.annotate.ResponseJsonIgnore;
import com.varra.identity.json.serializer.AccountJsonSerializer;

/**
* @author Rajakrishna V. Reddy
* @version 1.0
*/
@XmlRootElement(name = "Account")
@JsonSerialize(using = AccountJsonSerializer.class)
public class Account implements Serializable
{
           
            /** The Constant serialVersionUID. */
            private static final long serialVersionUID = 2077532866344069471L;
           
            /** The Constant URL_PARAMS_DEFAULT_LENGTH. */
            private static final int URL_PARAMS_DEFAULT_LENGTH = 255;
           
            /** The id. */
            private int id = 0;
           
            /** The acc id. */
            private int accId = 0;
           
            /** The account name. */
            private String accountName = "";
           
            /** The company name. */
            private String companyName = "";
           
            /** The company telephone. */
            private String companyTelephone = "";
           
            /** The company web. */
            private String companyWeb = "";
           
            /** The type. */
            private String type = "";
           
            /** The admin username. */
            private String adminUsername = "";
           
            /** The admin password. */
            private String adminPassword = "";
           
            /** The admin password c. */
            private String adminPasswordC = "";
           
            /** The admin first name. */
            private String adminFirstName = "";
           
            /** The admin last name. */
            private String adminLastName = "";
           
            /** The email address. */
            private String emailAddress = "";
           
            /** The uuid. */
            private int uuid = 0;
           
            /** The admin user uuid. */
            private String adminUserUuid = "";
           
            /** The is active. */
            private boolean isActive = true;
           
            /** The approve status. */
            private int approveStatus = 0;
           
            /** The tag ids. */
            private String[] tagIds;
           
            /** The account tag. */
            private String accountTag = "";
           
            /** The tag created by. */
            private String tagCreatedBy = "";
           
            /** The enterprise. */
            private boolean enterprise;

            private String companyAddress;
           
            /**
            * Checks if is enterprise.
            *
            * @return true, if is enterprise
            */
            @JsonIgnore
            public boolean isEnterprise()
            {
                        return enterprise;
            }
           
            /**
            * Sets the enterprise.
            *
            * @param enterprise
            *            the new enterprise
            */
            public void setEnterprise(boolean enterprise)
            {
                        this.enterprise = enterprise;
            }
           
            /**
            * Gets the company address.
            *
            * @return the company address
            */
            public String getCompanyAddress()
            {
                        return companyAddress;
            }
           
            /**
            * Sets the company address.
            *
            * @param companyAddress
            *            the new company address
            */
            public void setCompanyAddress(String companyAddress)
            {
                        this.companyAddress = companyAddress;
            }
           
            /**
            * Gets the id.
            *
            * @return the id
            */
            public int getId()
            {
                        return id;
            }
           
            /**
            * Sets the id.
            *
            * @param id
            *            the new id
            */
            public void setId(int id)
            {
                        this.id = id;
            }
           
            /**
            * Gets the acc id.
            *
            * @return the acc id
            */
            public int getAccId()
            {
                        return accId;
            }
           
            /**
            * Sets the acc id.
            *
            * @param accId
            *            the new acc id
            */
            public void setAccId(int accId)
            {
                        this.accId = accId;
            }
           
            /**
            * Gets the account name.
            *
            * @return the account name
            */
            public String getAccountName()
            {
                        return accountName;
            }
           
            /**
            * Sets the account name.
            *
            * @param accountName
            *            the new account name
            */
            public void setAccountName(String accountName)
            {
                        this.accountName = accountName;
            }
           
            /**
            * Gets the company name.
            *
            * @return the company name
            */
            public String getCompanyName()
            {
                        return companyName;
            }
           
            /**
            * Sets the company name.
            *
            * @param companyName
            *            the new company name
            */
            public void setCompanyName(String companyName)
            {
                        this.companyName = companyName;
            }
           
            /**
            * Gets the company telephone.
            *
            * @return the company telephone
            */
            public String getCompanyTelephone()
            {
                        return companyTelephone;
            }
           
            /**
            * Sets the company telephone.
            *
            * @param companyTelephone
            *            the new company telephone
            */
            public void setCompanyTelephone(String companyTelephone)
            {
                        this.companyTelephone = companyTelephone;
            }
           
            /**
            * Gets the company web.
            *
            * @return the company web
            */
            public String getCompanyWeb()
            {
                        return companyWeb;
            }
           
            /**
            * Sets the company web.
            *
            * @param companyWeb
            *            the new company web
            */
            public void setCompanyWeb(String companyWeb)
            {
                        this.companyWeb = companyWeb;
            }
           
            /**
            * Gets the type.
            *
            * @return the type
            */
            public String getType()
            {
                        return type;
            }
           
            /**
            * Sets the type.
            *
            * @param type
            *            the new type
            */
            public void setType(String type)
            {
                        this.type = type;
            }
           
            /**
            * Gets the admin username.
            *
            * @return the admin username
            */
            public String getAdminUsername()
            {
                        return adminUsername;
            }
           
            /**
            * Sets the admin username.
            *
            * @param adminUsername
            *            the new admin username
            */
            public void setAdminUsername(String adminUsername)
            {
                        this.adminUsername = adminUsername;
            }
           
            /**
            * Gets the admin password.
            *
            * @return the admin password
            */
            @ResponseJsonIgnore
            public String getAdminPassword()
            {
                        return adminPassword;
            }
           
            /**
            * Sets the admin password.
            *
            * @param adminPassword
            *            the new admin password
            */
            public void setAdminPassword(String adminPassword)
            {
                        this.adminPassword = adminPassword;
            }
           
            /**
            * Gets the admin password c.
            *
            * @return the admin password c
            */
            @ResponseJsonIgnore
            public String getAdminPasswordC()
            {
                        return adminPasswordC;
            }
           
            /**
            * Sets the admin password c.
            *
            * @param adminPasswordC
            *            the new admin password c
            */
            public void setAdminPasswordC(String adminPasswordC)
            {
                        this.adminPasswordC = adminPasswordC;
            }
           
            /**
            * Gets the admin first name.
            *
            * @return the admin first name
            */
            public String getAdminFirstName()
            {
                        return adminFirstName;
            }
           
            /**
            * Sets the admin first name.
            *
            * @param adminFirstName
            *            the new admin first name
            */
            public void setAdminFirstName(String adminFirstName)
            {
                        this.adminFirstName = adminFirstName;
            }
           
            /**
            * Gets the admin last name.
            *
            * @return the admin last name
            */
            public String getAdminLastName()
            {
                        return adminLastName;
            }
           
            /**
            * Sets the admin last name.
            *
            * @param adminLastName
            *            the new admin last name
            */
            public void setAdminLastName(String adminLastName)
            {
                        this.adminLastName = adminLastName;
            }
           
            /**
            * Gets the email address.
            *
            * @return the email address
            */
            public String getEmailAddress()
            {
                        return emailAddress;
            }
           
            /**
            * Sets the email address.
            *
            * @param emailAddress
            *            the new email address
            */
            public void setEmailAddress(String emailAddress)
            {
                        this.emailAddress = emailAddress;
            }
           
            /**
            * Gets the uuid.
            *
            * @return the uuid
            */
            @ResponseJsonIgnore
            public int getUuid()
            {
                        return uuid;
            }
           
            /**
            * Sets the uuid.
            *
            * @param uuid
            *            the new uuid
            */
            public void setUuid(int uuid)
            {
                        this.uuid = uuid;
            }
           
            /**
            * Gets the account tag.
            *
            * @return the account tag
            */
            @ResponseJsonIgnore
            public String getAccountTag()
            {
                        return accountTag;
            }
           
            /**
            * Sets the account tag.
            *
            * @param accountTag
            *            the new account tag
            */
            public void setAccountTag(String accountTag)
            {
                        this.accountTag = accountTag;
            }
           
            /**
            * Gets the tag ids.
            *
            * @return the tag ids
            */
            @ResponseJsonIgnore
            public String[] getTagIds()
            {
                        return tagIds;
            }
           
            /**
            * Sets the tag ids.
            *
            * @param tagIds
            *            the new tag ids
            */
            public void setTagIds(String[] tagIds)
            {
                        this.tagIds = tagIds;
            }
           
            /**
            * Gets the tag created by.
            *
            * @return the tag created by
            */
            @ResponseJsonIgnore
            public String getTagCreatedBy()
            {
                        return tagCreatedBy;
            }
           
            /**
            * Sets the tag created by.
            *
            * @param tagCreatedBy
            *            the new tag created by
            */
            public void setTagCreatedBy(String tagCreatedBy)
            {
                        this.tagCreatedBy = tagCreatedBy;
            }
           
            /**
            * Checks if is active.
            *
            * @return true, if is active
            */
            public boolean isActive()
            {
                        return isActive;
            }
           
            /**
            * Sets the active.
            *
            * @param isActive
            *            the new active
            */
            public void setActive(boolean isActive)
            {
                        this.isActive = isActive;
            }
           
            /**
            * Gets the approve status.
            *
            * @return the approve status
            */
            public int getApproveStatus()
            {
                        return approveStatus;
            }
           
            /**
            * Sets the approve status.
            *
            * @param approveStatus
            *            the new approve status
            */
            public void setApproveStatus(int approveStatus)
            {
                        this.approveStatus = approveStatus;
            }
           
            /**
            * Gets the admin user uuid.
            *
            * @return the admin user uuid
            */
            public String getAdminUserUuid()
            {
                        return adminUserUuid;
            }
           
            /**
            * Sets the admin user uuid.
            *
            * @param adminUserUuid
            *            the new admin user uuid
            */
            public void setAdminUserUuid(String adminUserUuid)
            {
                        this.adminUserUuid = adminUserUuid;
            }
           
            @Override
            public String toString()
            {
                        StringBuilder builder = new StringBuilder();
                        builder.append("Account [id=");
                        builder.append(id);
                        builder.append(", accId=");
                        builder.append(accId);
                        builder.append(", accountName=");
                        builder.append(accountName);
                        builder.append(", companyName=");
                        builder.append(companyName);
                        builder.append(", companyTelephone=");
                        builder.append(companyTelephone);
                        builder.append(", companyWeb=");
                        builder.append(companyWeb);
                        builder.append(", type=");
                        builder.append(type);
                        builder.append(", adminUsername=");
                        builder.append(adminUsername);
                        builder.append(", adminPassword=");
                        builder.append(adminPassword);
                        builder.append(", adminPasswordC=");
                        builder.append(adminPasswordC);
                        builder.append(", adminFirstName=");
                        builder.append(adminFirstName);
                        builder.append(", adminLastName=");
                        builder.append(adminLastName);
                        builder.append(", emailAddress=");
                        builder.append(emailAddress);
                        builder.append(", uuid=");
                        builder.append(uuid);
                        builder.append(", adminUserUuid=");
                        builder.append(adminUserUuid);
                        builder.append(", isActive=");
                        builder.append(isActive);
                        builder.append(", approveStatus=");
                        builder.append(approveStatus);
                        builder.append(", tagIds=");
                        builder.append(Arrays.toString(tagIds));
                        builder.append(", accountTag=");
                        builder.append(accountTag);
                        builder.append(", tagCreatedBy=");
                        builder.append(tagCreatedBy);
                        builder.append(", enterprise=");
                        builder.append(enterprise);
                        builder.append("]");
                        return builder.toString();
            }
           
            /**
            * Gets the as url params.
            *
            * @return the as url params
            */
            @JsonIgnore
            public String getAsUrlParams()
            {
                        StringBuilder stringBuilder = new StringBuilder(URL_PARAMS_DEFAULT_LENGTH);
                       
                        stringBuilder.append("accountName=").append(accountName);
                        stringBuilder.append("&companyName=").append(companyName);
                        stringBuilder.append("&companyTelephone=").append(companyTelephone);
                        stringBuilder.append("&companyWeb=").append(companyWeb);
                        stringBuilder.append("&type=").append(type);
                        stringBuilder.append("&adminUsername=").append(adminUsername);
                        stringBuilder.append("&adminFirstName=").append(adminFirstName);
                        stringBuilder.append("&adminLastName=").append(adminLastName);
                        stringBuilder.append("&emailAddress=").append(emailAddress);
                        stringBuilder.append("&uuid=").append(uuid);
                        stringBuilder.append("&adminUserUuid=").append(adminUserUuid);
                       
                        return stringBuilder.toString();
            }
}




/*
* identity-json - AccountJsonSerializer.java, Sep 22, 2015 12:41:03 PM
*
 * Copyright 2015 Trimble Ltd, Inc. All rights reserved.
* Trimble proprietary/confidential. Use is subject to license terms.
*/
package com.trimble.identity.json.serializer;

import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;

import com.trimble.identity.json.Account;
import com.trimble.identity.json.annotate.ResponseJsonIgnore;

/**
* TODO Description go here.
*
 * @author <a href="mailto:Rajakrishna_Reddy@Trimble.com">Rajakrishna V.
*         Reddy</a>
* @version 1.0
*                  
 */
public class AccountJsonSerializer extends JsonSerializer<Account>
{
      
       /** The accepted methods. */
       private final List<Method> acceptedMethods = new LinkedList<Method>();
      
       /** The rejected methods. */
       private final List<Method> rejectedMethods = new LinkedList<Method>();
      
       /**
       * Instantiates a new account json serializer.
       */
       public AccountJsonSerializer()
       {
              for (Method m : printGettersSetters(Account.class))
              {
                     final Annotation[] annotations = m.getDeclaredAnnotations();
                     boolean isAnnotated = false;
                     for (Annotation annotation : annotations)
                     {
                           if (annotation.annotationType().equals(ResponseJsonIgnore.class)
                                         || annotation.annotationType().equals(JsonIgnore.class))
                           {
                                  isAnnotated = true;
                           }
                     }
                     if (isAnnotated)
                     {
                           rejectedMethods.add(m);
                     }
                     else
                     {
                           acceptedMethods.add(m);
                     }
              }
       }
      
       /*
       * (non-Javadoc)
       *
        * @see org.codehaus.jackson.map.JsonSerializer#serialize(java.lang.Object,
       * org.codehaus.jackson.JsonGenerator,
       * org.codehaus.jackson.map.SerializerProvider)
       */
       @Override
       public void serialize(Account account, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException
       {
              jgen.writeStartObject();
              for (Method method : acceptedMethods)
              {
                     try
                     {
                           if (String.class.isAssignableFrom(method.getReturnType()))
                           {
                                  jgen.writeStringField(getFieldNameFromGetMethodName(method.getName()), (String) method.invoke(account, Collections.emptyList().toArray()));
                           }
                           else if (method.getReturnType().toString().equalsIgnoreCase("int") || Integer.class.isAssignableFrom(method.getReturnType()))
                           {
                                  jgen.writeNumberField(getFieldNameFromGetMethodName(method.getName()), (Integer) method.invoke(account, Collections.emptyList().toArray()));
                           }
                           else if (method.getReturnType().toString().equalsIgnoreCase("float") || Float.class.isAssignableFrom(method.getReturnType()))
                           {
                                  jgen.writeNumberField(getFieldNameFromGetMethodName(method.getName()), (Float) method.invoke(account, Collections.emptyList().toArray()));
                           }
                           else if (method.getReturnType().toString().equalsIgnoreCase("boolean") || Boolean.class.isAssignableFrom(method.getReturnType()))
                           {
                                  jgen.writeBooleanField(getFieldNameFromGetMethodName(method.getName()), (Boolean) method.invoke(account, Collections.emptyList().toArray()));
                           }
                     }
                     catch (Exception e)
                     {
                           e.printStackTrace();
                     }
              }
              jgen.writeEndObject();
       }
      
       /**
       * Prints the getters setters.
       *
       * @param <T>
       *            the generic type
       * @param aClass
       *            the a class
       * @return the list
       */
       public static <T> List<Method> printGettersSetters(Class<T> aClass)
       {
              final Method[] methods = aClass.getDeclaredMethods();
              final List<Method> getterMethods = new LinkedList<Method>();
              for (Method method : methods)
              {
                     if (isGetter(method))
                     {
                           getterMethods.add(method);
                     }
              }
              return getterMethods;
       }
      
       /**
       * Checks if is getter.
       *
       * @param method
       *            the method
       * @return true, if is getter
       */
       public static boolean isGetter(Method method)
       {
              if (!(method.getName().startsWith("get") || method.getName().startsWith("is")))
                     return false;
              if (method.getParameterTypes().length != 0)
                     return false;
              if (void.class.equals(method.getReturnType()))
                     return false;
              return true;
       }
      
       /**
       * Checks if is setter.
       *
       * @param method
       *            the method
       * @return true, if is setter
       */
       public static boolean isSetter(Method method)
       {
              if (!method.getName().startsWith("set"))
                     return false;
              if (method.getParameterTypes().length != 1)
                     return false;
              return true;
       }
      
       public static String getFieldNameFromGetMethodName(String method)
       {
              if (method.startsWith("get"))
              {
                     return String.valueOf(method.charAt(3)).toLowerCase() + method.substring(4);
              }
              else
              {
                     return String.valueOf(method.charAt(2)).toLowerCase() + method.substring(3);
              }
       }
      
       /**
       * Entry point to the entire application, contains the list of args to pass
       * the user defined values.
       *
       * @param args
       *            the arguments
       * @throws InvocationTargetException
       * @throws IllegalArgumentException
       * @throws IllegalAccessException
       */
       public static void main(String... argsthrows IllegalAccessException, IllegalArgumentException, InvocationTargetException
       {
              AccountJsonSerializer serializer = new AccountJsonSerializer();
              System.out.println("AM: " + serializer.acceptedMethods);
              System.out.println("RM: " + serializer.rejectedMethods);
             
              Account account = new Account();
              account.setId(21);
              account.setEnterprise(true);
             
              for (Method string : serializer.acceptedMethods)
              {
                     if (string.getReturnType().isArray())
                     {
                     }
              }
              System.out.println(serializer.acceptedMethods.get(0).invoke(account, Collections.emptyList().toArray()));
              System.out.println(Integer.class.isAssignableFrom(serializer.acceptedMethods.get(0).getReturnType()));
              System.out.println(serializer.acceptedMethods.get(0).getReturnType().isAssignableFrom(String.class));
              System.out.println(serializer.acceptedMethods.get(0).getReturnType().isAssignableFrom(Float.class));
              /*
              * for (Method string : serializer.acceptedMethods) {
              * System.out.println("id: "
              * +getFieldNameFromGetMethodName(string.getName())); } for (Method
              * string : serializer.rejectedMethods) { System.out.println("id: "
              * +getFieldNameFromGetMethodName(string.getName())); }
              */
       }
}



package com.varra.identity.json.annotate;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.codehaus.jackson.annotate.JacksonAnnotation;

/**
* Marker annotation that indicates that the annotated method or field is to be
* ignored by introspection-based serialization functionality in the response.
 * That is, it should not be consider a "getter", "setter" or "creator".
* <p>
* For example, a "getter" method that would otherwise denote a property (like,
* say, "getValue" to suggest property "value") to serialize, would be ignored
* and no such property would be output unless another annotation defines
* alternative method to use.
* <p>
* This annotation works purely on method-by-method (or field-by-field) basis;
* annotation on one method or field does not imply ignoring other methods or
* fields. Specifically, marking a "setter" candidate does not change handling
* of matching "getter" method (or vice versa).
* <p>
* Annotation is usually used just a like a marker annotation, that is, without
* explicitly defining 'value' argument (which defaults to <code>true</code>):
* but argument can be explicitly defined. This can be done to override an
* existing JsonIgnore by explictly defining one with 'false' argument.
* <p>
* Annotation is similar to {@link javax.xml.bind.annotation.XmlTransient}
*
 * @author Rajakrishna V. Reddy
* @version 1.0
*/
@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface ResponseJsonIgnore
{
           
            /**
            * Optional argument that defines whether this annotation is active or not.
            * The only use for value 'false' if for overriding purposes (which is not
            * needed often); most likely it is needed for use with "mix-in annotations"
            * (aka "annotation overrides"). For most cases, however, default value of
            * "true" is just fine and should be omitted.
            *
            * @return true, if successful
            */
            boolean value() default true;
}