30 Eylül 2016 Cuma

Stopwatch Sınıfı

createStarted metodu
Şöyle yaparız.
Stopwatch stopwatch = Stopwatch.createStarted();
stop metodu
Şöyle yaparız.
stopwatch.stop ();

long totalWorkTimeMillis = stopwatch.elapsedMillis ();


28 Eylül 2016 Çarşamba

Response Sınıfı

readEntity metodu
Şöyle yaparız.
Response response = ...;
String result = response.readEntity(String.class);

Invocation.Builder Arayüzü

post metodu
Şöyle yaparız.
Foo foo = new Foo();
user.setUserName("euler");
user.setPassword("password");
Response response = invocation.builder. .post(Entity.json(foo));


JAX-RS ClientBuilder Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.ws.rs.client.ClientBuilder;
newClient
Client Arayüzü döner. Şöyle yaparız.
Client client = ClientBuilder.newClient ();


27 Eylül 2016 Salı

NamedNodeMap Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.w3c.dom.NamedNodeMap;
getLength metodu
Şöyle yaparız.
NamedNodeMap attributes = ...;

for (int i = 0; i < attributes.getLength(); i++) {
  Node attribute = attributes.item(i);
  if (attribute.getNodeName() == "id") {
    String x = attribute.getNodeValue();
  }  
}

Element Sınıfı

Giriş
Node sınıfından kalıtır. Node'ları dolaşırken Element olduğu şöyle anlaşılır.
Node nNode = nList.item(index);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
  Element eElement = (Element) nNode;
  ...
}
getAttribute metodu
Şöyle yaparız.
Element element = ...;
String attribute = element.getAttribute("isNull");
Şöyle bir element için 85 döner. Attribute yoksa "" yani boş string döner.
<marks isNull= "85" />
getTextContent metodu
Şöyle yaparız.
Element element = ...;
String text = element.getTextContent();
Şöyle bir element için 95 döner.
<marks>95</marks>

KeyStore.PrivateKey Sınıfı

getPrivateKey metodu
Şöyle yaparız.
KeyStore.PrivateKeyEntry privateKey = ...;
PrivateKey pkey = privateKey.getPrivateKey());
PrivateKey Cipher nesnesine geçilir.
Cipher cipher = Cipher.getInstance("...");
cipher.init(Cipher.DECRYPT_MODE, pkey);

22 Eylül 2016 Perşembe

JavaMail Transport Sınıfı

Giriş
Şu satırı dahil ederiz
import javax.mail.Transport;
Soyut bir sınıftır. Kalıtan sınıflardan birisi şu olabilir.
com.sun.mail.smtp.SMTPTransport
constructor
Eğer static sendMessage metodunu kullanmayacaksak şöyle yaparız.
Session session = ...;

Message message = ...;

Transport transport = session.getTransport("smtp");
transport.connect(host, from, password);
transport.sendMessage (message, message.getAllRecipients());
transport.close();
send metodu - static
Açıklaması şöyle.
Send is a static method that creates and manages its own connection. Any connection associated with any Transport instance used to invoke this method is ignored and not used. This method should only be invoked using the form Transport.send(msg);, and should never be invoked using an instance variable.
Şöyle yaparız.
Message message = ...;
...
Transport.send (message);
send metodu - static - Message + userName + password
Şöyle yaparız.
String user = "myaccount@gmail.com";
String pass = "mypassword";

Message message = ...;
...
Transport.send (message, user, pass);

21 Eylül 2016 Çarşamba

Static Constructor

Giriş
Static Constructor aynı zamanda "Static Initialization Block", "Static Initializer" olarak ta bilinir.

Tanımlama
Şöyle yaparız.
public class Foo {
  static {
    System.out.println("Foo class loaded!");
  }
  ...
}
Ne Zaman Çalışır
Açıklaması şöyle
Class Loading and initialization are 2 different things. A class can be loaded but not initialized until it is really necessary. Static initializers are run only when a class is being initialized <> NOT loaded, "initialized"
Şu satır çalıştırmaz, çünkü sadece loading yapar.
Class<Foo> c = Foo.class;
Çalışması için şöyle yaparız.
Class<?> c = Class.forName ("Foo");
Çalışması için şöyle yaparız.
Foo f = new Foo ();


JPA @Id Anotasyonu

@Id
Şu satırı dahil ederiz.
import javax.persistence.Id;
Eğer @Id için GeneratedValue kullanmak istemezsek şöyle yaparız. Bu durumda primary key değerlerini kendimiz yönetiriz.
@Id
@Column(unique=true)
private int id;


19 Eylül 2016 Pazartesi

Proxy Sınıfı

Giriş
Gerçek bir nesneyi sarmalayarak yeni metod ekleyebilmeyi sağlar. Önce elimizde bir arayüz olmalı. Kendi arayüzümüzü yazdığımızı varsayalım.
public class Streams {

  public interface EnhancedStream<T> extends Stream<T> {

    List<T> toList();

    Iterable<T> toIterable();
  }

  public static <T> EnhancedStream<T> enhance(Stream<T> stream) {

    return (EnhancedStream<T>) Proxy.newProxyInstance(
            EnhancedStream.class.getClassLoader(),
            new Class<?>[] {EnhancedStream.class}, 
            (proxy, method, args) -> {

            ...
    });
}
newInstance metodu
Şöyle yaparız.
Stream<T> stream = ...;

EnhancedStream<T> es =  Proxy.newProxyInstance (
  EnhancedStream.class.getClassLoader(),
  new Class<?>[] {EnhancedStream.class}, 
  (proxy, method, args) -> {
    ...
});
Lambda içinde şöyle yaparız.
if ("toList".equals(method.getName())) {

  return stream.collect(Collectors.toList());

} else if ("toIterable".equals(method.getName())) {

  return (Iterable<T>) stream::iterator;

} else {
  // invoke method on the actual stream
  return method.invoke(stream, args);
}
Sonuç
Şöyle yaparız.
Stream<Integer> stream1 = ...
List<Integer> list = Streams.enhance (stream1).toList();

Stream<Integer> stream2 = ...;
Iterable<Integer> iterable = Streams.enhance(stream2).toIterable();

Constructor Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.lang.reflect.Constructor;
constructor
Şöyle yaparız.
Class c = ...;
Constructor<?> ctor = c.getConstructor();
Şöyle yaparız.
Constructor<?> ctor = c.getConstructor (int.class);
newInstance metodu - default 
Şöyle yaparız.
Object obj = ctor.newInstance();
newInstance metodu - int
Şöyle yaparız.
Constructor<?> ctor = c.getConstructor (int.class);
ctor.newInstance(42);