Skip to content

Instantly share code, notes, and snippets.

View karanmalhi's full-sized avatar

Karan Singh Malhi karanmalhi

  • MuleSoft
  • San Francisco
View GitHub Profile
@karanmalhi
karanmalhi / ProxyFactory.java
Created June 14, 2011 18:59
The proxy creation mechanism
package learnquest;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ProxyFactory {
@karanmalhi
karanmalhi / Reversable.java
Created June 14, 2011 18:58
Basic interface and its impl
package learnquest;
public interface Reversable<T> {
T reverse(T str);
}
class StringReverser implements Reversable<String> {
@Override
public String reverse(String str) {
@karanmalhi
karanmalhi / ObjectFactory.java
Created June 14, 2011 14:20
Basic annotation processor
package learnquest;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
public class ObjectFactory {
public static <T> T create(Class<T> clazz) throws Exception {
T instance = clazz.newInstance();
processAnnotations(instance);
return instance;
@karanmalhi
karanmalhi / Person.java
Created June 14, 2011 14:19
Contains all annotations used on Person
package learnquest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Info(authors = @Author(fn = "Karan", ln = "Malhi"), version = 1.1)
public class Person {
@Info(authors = { @Author(fn = "Karan", ln = "Malhi"),
@karanmalhi
karanmalhi / Rectangle.java
Created June 13, 2011 19:00
Explains Enums in java
package learnquest;
public class Rectangle {
private final Size size;
public Rectangle(Size size) {
this.size = size;
}
public Size getSize() {
@karanmalhi
karanmalhi / BoxTest
Created June 13, 2011 15:22
Explains bounded wildcards
package learnquest;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class BoxTest {
@karanmalhi
karanmalhi / TestGenerics.java
Created June 13, 2011 14:55
Testing Generics
package learnquest;
import java.util.ArrayList;
import java.util.Iterator;
public class TestGenerics {
public static void main(String[] args) {
ArrayList<Number> list = new ArrayList<Number>();
list.add(new Integer(0));
list.add(new Integer(1));
list.add(new Integer(3));
@karanmalhi
karanmalhi / JarProcessor
Created June 8, 2011 02:22
Comparison between Semaphore and executor
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
@karanmalhi
karanmalhi / ProxyTest.java
Created May 27, 2011 15:50
Simple example on how to create proxies
package com.learnquest;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
public class ProxyTest {
@karanmalhi
karanmalhi / Criteria.java
Created May 26, 2011 17:01
Example of multiple criterias in custom qualifier and interface with multiple imps
package com.lq.interfaceimpl;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import org.springframework.beans.factory.annotation.Qualifier;
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface Criteria {