31 Mayıs 2016 Salı

JAX-WS SOAPMessage Arayüzü

Giriş
Şu satırı dahil ederiz.
import javax.xml.soap.SOAPMessage;
constructor
Şöyle yaparız.
SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = connectionFactory.createConnection();
SOAPMessage response = connection.call(soapMessage, endpoint);
setProperty metodu
Şöyle yaparız.
soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, Boolean.TRUE);
writeTo metodu
Şöyle yaparız.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.writeTo(baos);

25 Mayıs 2016 Çarşamba

CharArrayReader Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.io.CharArrayReader;
constructor
Şöyle yaparız.
char[] buf = ...;
CharArrayReader reader = new CharArrayReader(buf);
Bu sınıfı şöyle sarmalamak daha iyi.
char[] buf = ...;
BufferedReader br = new BufferedReader(new CharArrayReader(buf));

ThreadGroup Sınıfı

constructor
Şöyle yaparız.
ThreadGroup tg = Thread.currentThread().getThreadGroup()
Şöyle yaparız.
ThreadGroup parent = new ThreadGroup("mygroup");
activeGroupCount metodu
Şöyle yaparız.
ThreadGroup[] t = new ThreadGroup[tg.activeGroupCount()];
enumerate metodu
Şöyle yaparız.
ThreadGroup[] t = new ThreadGroup[tg.activeGroupCount()];
tg.enumerate(t);
isDaemon metodu
Şöyle yaparız.
tg.isDaemon()
getName metodu
Şöyle yaparız.
tg.getName()
setDaemon metodu
Açıklaması şöyle
A daemon thread group is automatically destroyed when its last thread is stopped or its last thread group is destroyed.

21 Mayıs 2016 Cumartesi

ThreadLocal Sınıfı

Giriş
Bu sınıfın 4 tane metodu var. Sınıf her zaman static final olarak tanımlanır.
private static final ThreadLocal<Foo> fooHolder = new ThreadLocal<Foo>() {...}
initialValue metodu
Bu metod protected. ThreadLocal nesnesi ilklendirildiğinde çağrılır. Şöyle yaparız
static final ThreadLocal<MyParser> PARSER = new ThreadLocal<MyParser>() {
    @Override
    protected MyParser initialValue() {
        return new MyParser();
    }
};
get metodu
Açıklaması şöyle.
Returns the value in the current thread's copy of this thread-local variable.
Bu metod public'tir. ThreadLocal nesnemiz static final olduğu için şöyle yaparız.
void parse(String input) {
    PARSER.get().parse(input);
}
remove metodu
ThreadLocal nesnemiz static final olduğu için şöyle yaparız.
public static void unset() {
  PARSER.remove();
}





11 Mayıs 2016 Çarşamba

KeyManagerFactory Sınıfı

constructor
Şöyle yaparız.
KeyManagerFactory kmf =
    KeyManagerFactory.getInstance( KeyManagerFactory.getDefaultAlgorithm() );
init metodu
Şöyle yaparız.
KeyStore ks = ...;
kmf.init( ks, certPasswd.toCharArray() );



TimerTask Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.TimerTask;
Şöyle yaparız.
class MyTimerTask extends TimerTask {
  @Override
  public void run() {...}

}



HttpsURLConnection Sınıfı

constructor
Şöyle yaparız.
URL url = new URL(...);
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
getDefaultHostNameVerifier metodu
Hangi alan adlarına güvenildiğini bulmak için şöyle yaparız.
// Open SSLSocket directly to gmail.com
SocketFactory sf = SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) sf.createSocket("gmail.com", 443);
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
SSLSession s = socket.getSession();

// Verify that the certicate hostname is for mail.google.com
// This is due to lack of SNI support in the current SSLSocket.
if (!hv.verify("mail.google.com", s)) {
    throw new SSLHandshakeException("Expected mail.google.com, "
                                    "found " + s.getPeerPrincipal());
}

// At this point SSLSocket performed certificate verificaiton and
// we have performed hostname verification, so it is safe to proceed.

// ... use socket ...
socket.close();
getInputStream metodu
Şöyle yaparız.
InputStream ins = con.getInputStream();
setDefaultHostNameVerifier metodu
Şöyle yaparız.
HostnameVerifier allHostsValid = new HostnameVerifier() {
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
};

HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
setDefaultSSLSocketFactory metodu
SSLContext sınıfı belirtiriz. Şöyle yaparız.
SSLContext sc = ...;
...
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());





9 Mayıs 2016 Pazartesi

ConvolveOp Sınıfı

Constructor - EDGE_NO_OP
Açıklaması şöyle
Pixels at the edge of the source image are copied to the corresponding pixels in the destination without modification.
Kenarlar hariç geri kalan alanı bulanıklaştırmak için şöyle yaparız.
int size = ...;
float[] data = new float[size * size];
//Fill data

Kernel kernel = new Kernel(size, size, data);
ConvolveOp op = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
Constructor - EDGE_ZERO_FILL
Bulanıklaştırılan kısımın etrafındaki kenarları siyaha boyar.

filter metodu
Şöyle yaparız.
//tbi is BufferedImage
BufferedImage i = op.filter(tbi, null);

5 Mayıs 2016 Perşembe

StaX ile Okuma

Giriş
StaX yani Streaming API for XML iki çeşit API sunuyor. Üst seviye (Iterator gibi) ve alt seviye (Cursor gibi).

XMLInputFactory Sınıfı
XMLInputFactory Sınıfı yazısına taşıdım.

XMLEventReader Sınıfı
Şu satırı dahil ederiz.
import javax.xml.stream.XMLEventReader;
hasNext metodu
Şöyle yaparız.
while (reader.hasNext()) {
  XMLEvent event = reader.nextEvent();
  if (event.isEntityReference()) {
    EntityReference ref = (EntityReference) event;
    System.out.println("Entity Reference: " + ref.getName());
  }
}
XMLStreamReader Sınıfı
XMLStreamReader Sınıfı yazısına taşıdım.

Java 8 Functional Kavramları

Giriş
Java 8 ile eklenen java.util.stream sınıfları ile functional programming yapılabilir. Bu sınıflar .Net'teki Linq sınıflarını andırıyorlar.

Functional Paketi
Java 8 Stream sınıflarını kullanabilmek için java.util.function paketi altındaki yapıları anlamak gerekir. Sebebini anlamadığım bir şekilde Java 8 her arity için bir isim kullanıyor.

Bu yapılardan önemli olanları şunlar.

Consumer : 1 parametre alır, void döner
Supplier : void alır , 1 sonuç döner
Predicate : 1 parametre alır, bool döner
Function  : 1 parametre alır ,1 sonuç döner
void alıp, void dönen Procedure gibi bir isimlendirmeyi unutmuşlar:)

Şimdi bu kavramlara bakalım.

1. Consumer
Java 8 Consumer yazısına taşıdım.

2. Supplier
Java 8 Supplier yazısına taşıdım.

3. Predicate
Java 8 Predicate yazısına taşıdım

4. Function
Java 8 Function Arayüzü yazısına taşıdım.

Annotationlar
@FunctionalInterface Anotasyonu yazısına taşıdım.

Ayrıca bir interface artık default olarak işaretli metodlar da sunabiliyor. Yani şöyle yapabiliyoruz.
public interface Drive {
   int getNumWheels();

   default int driveMiles(){
      return 10;
   }

   static int getColorID(){
     return 0;
   }
}