Posts

Showing posts from 2014

Generate Random file name in Java

You can create a random string for a file name using following code snippet.

public static String getRandomString(String fileName) {
char fileNameArray[] = fileName.toCharArray();
int fileNameLen = fileNameArray.length;
int c = 'A';
int r1 = 0, z=0;
StringBuilder pw = new StringBuilder("");
for (int j = 0; j < 25; j++) {
r1 = (int) (Math.random() * 4);
switch (r1) {
case 0:
c = '0' + (int) (Math.random() * 9);
if (c>'9'){
z = reset(z,fileNameLen);
c = fileNameArray[z];
}
break;
case 1:
c = 'a' + (int) (Math.random() * 25);
if (c<'a' && c>'z'){
z = reset(z,fileNameLen);
c = fileNameArray[z];
}
break;
case 2:
c = 'A' + (int) (Math.random() * 25);
if (c<'A' && c>'Z'){
z = reset(z,fileNameLen);
c = fileNameArray[z];
}
break;
}
pw.append((char) c);
}
fileNameArray = null;
String s="";
try{
s =fileName.substring(fileName.lastIndexOf(".")); 
if (s.equalsIgnoreCase(".tmp")){
s=".jp…

Tomcat 7: Set context path for your application in tomcat 7

Set context path for your application in tomcat 7

If you want to change context path for your application, you can do by changing
{catalina_base}/conf/server.xml file.
Suppose, you have deployed your application in tomcat 7,
              http://localhost:8080/MyApp
You want to set context path to newMyApp,
Modify, host element in server.xml under tomcat/conf

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="false">
....
... .
<Context path="/ newMyApp "  docBase="/ MyApp " reloadable="true">
 </Context>



 </Host>

For detailed information, visit http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html#A_word_on_Contexts

Maven :: Include servlet-api only at local maven install not during building war

Include  servlet-api  only at local maven install not during building war
Add scope element with value as ‘Provided’. Now maven will not include this jar in lib whiling

building war file so that you can deploy it on tomcat.

 <dependency>
 <groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

For all scopes in maven, please visit http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

JAXB:GlobalBinding :: cvc-complex-type.2.4.b: The content of element 'jaxb:globalBindings' is not complete

Error ::
 cvc-complex-type.2.4.b: The content of element 'jaxb:globalBindings' is not complete. One of '{"http://

 java.sun.com/xml/ns/jaxb":javaType, "http://java.sun.com/xml/ns/jaxb":serializable, WC[##other:"http://

 java.sun.com/xml/ns/jaxb"]}' is expected.


Solution :

  Check  <jaxb:globalBindings> tag in your bindings.xml, you may be missing some required tag (If you are using latest eclipse like eclipse-Luna or latest).
 Add this tag if missing,

<jaxb:globalBindings>
            <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" 
parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" 
printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
<xjc:noValidator />

    </jaxb:globalBindings>

How to match date filed in Google Datastore

How to match date filed in Google Datastore

Suppose you have an 'Employee' entity with updatedOn field (Date or timestamp type). You can use Date function to parse date string and filter your data.

In GQL, you can use:
  SELECT * FROM EmployeeObj where updatedOn > Date('2014-09-25')

Similarly in objectify, you can use filter
          Objectify obfy = OfyService.ofy();
          List<EmployeeObj> resultList = obfy.load().type(EmployeeObj.class)
.filter("updatedOn > ", Date('2014-09-25'))
                        .list();

Upload csv file at Google Cloud Storage using java

First do all required pre requiste as per google doc
https://cloud.google.com/appengine/docs/java/googlestorage/

Now see the sample code for a csv file uploader using latest api

public String uploadFileUsingGCSClient(String csvDate,
String fileName, String dirName,String bucketName) throws IOException {

 // init the bucket access
    GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
    GcsFilename filename = new GcsFilename(bucketName+"/"+dirName, fileName);
    GcsFileOptions fileOptions = new GcsFileOptions.Builder()
   .mimeType("application/CSV")
   .acl("public-read")
   //.addUserMetadata("myfield1", "my field value")
   .build();
    GcsOutputChannel outputChannel = gcsService.createOrReplace(filename, fileOptions);

    // write file using this stream
    BufferedOutputStream outStream = new BufferedOutputStream(Channels.newOutputStream(outputChannel));

    // read the input stream
    byte[] b…

Struts 2 - struts tag with boolean property

Struts 2 - struts tag <s:if test= "booleanVaue" > with boolean property

Always remember two points --

1) Check your bean (.java) file for getter, setter for boolean type value
  private boolean isTest;
  private boolean hasCheck;

   public boolean isTest() {
        return isTest;
    }

    public void setTest(boolean isTest) {
        this.isTest= isTest;
    }

public boolean isHasCheck() {
        return hasCheck;
    }
    public void setHasCheck(boolean hasCheck) {
        this.hasCheck= hasCheck;
    }
-------------------------------------------------------------------------

On a jsp page if you are using these two variables in a <s:if> conditions

<s:if test="isTest">
// This will not work, will always return blank value as isTest is conflicting with getter method isTest();
</s:if>

<s:if test="hasCheck">
// This will work whatever the value you have set from action
</s:if>

Can not connect to git using ssh (Permissions 0644 for '/root/.ssh/id_rsa' are too open.

Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.

------------------------ root@media-Vostro-1540:~/.ssh# ssh -T git@github.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/root/.ssh/id_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: /root/.ssh/id_rsa Permission denied (publickey).
Solution : First check the permission on id_rsa directory
root@media-Vostro-1540:~/.ssh# ls -lrt total 12 -rw-r--r-- 1 root root 2160 Jun  4 15:05 known_hosts -rw-r--r-- 1 root root 1766 Jun  4 15:12 id_rsa -rw-r--r-- 1 root root  415 Jun  4 15:12 id_rsa.pub
Change it to write only for root user ---------------------------------------------------
root@media-Vostr…

appengine:devserver_stop not working in Windows 8/eclipse

If you have added appengine:devserver_stop in eclipse as a debug goal in maven goals and still you are not able to stop the server then you can manually close the server on given port.

Let's take an example that your server is running on 8080 that you want to stop.

1) Open command line prompt:
netstat -a -n -oYou will get following output......
 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       700
 TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
 TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING       432
 TCP    0.0.0.0:49153          0.0.0.0:0              LISTENING       756
 TCP    0.0.0.0:49154          0.0.0.0:0              LISTENING       788
 TCP    0.0.0.0:49155          0.0.0.0:0              LISTENING       548
 TCP    0.0.0.0:49156          0.0.0.0:0              LISTENING       540
 TCP    10.0.0.69:139          0.0.0.0:0              LISTENING   …

DFP API works fine at localhost but failed Google App engine (access denied ("java.lang.RuntimePermission" "getClassLoader")

DFP API works fine at localhost but failed Google App engine (access denied ("java.lang.RuntimePermission" "getClassLoader")
--------------------------------------------------------------------------

 com.google.api.ads.common.lib.exception.ServiceException: Unexpected Exception.

    com.google.api.ads.common.lib.soap.jaxws.JaxWsHandler.createSoapClient(JaxWsHandler.java:210)
    com.google.api.ads.common.lib.soap.jaxws.JaxWsHandler.createSoapClient(JaxWsHandler.java:1)
    com.google.api.ads.common.lib.factory.helper.BaseAdsServiceClientFactoryHelper.createSoapClient(BaseAdsServiceClientFactoryHelper.java:106)
    com.google.api.ads.common.lib.factory.helper.BaseAdsServiceClientFactoryHelper.createAdsServiceClient(BaseAdsServiceClientFactoryHelper.java:71)
    com.google.api.ads.common.lib.factory.AdsServiceClientFactory.getServiceClient(AdsServiceClientFactory.java:73)
    com.google.api.ads.common.lib.factory.BaseAdsServiceClientFactory.getServiceClientAsInterface(Bas…

Writing a zip file on Google App engine

package com.lin.web.servlet;


import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.ByteArrayContent;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHtt…