30 Mart 2016 Çarşamba

XWPFDocument Sınıfı

Giriş
Bu sınıf .docx belgeleri için kullanılır.

constructor
Şöyle yaparız.
XWPFDocument document = new XWPFDocument(inStream);


WebServiceClient Sınıfı

Giriş
wsimport aracı ile wsdl'den dosyaları ürettikten sonra @WebService ve @WebServiceClient olarak işaretli iki dosya mevcuttur. @WebServiceClient olarak işaretli nesneyi yaratıp metodunu çağırırız.
WebServiceClient client = new WebServiceClient();
AnswerType answer = client.GetSoap().theMethodYouWantUse(some_parameters);
Eğer arayüz üzerinden gitmek çağrı yapmak isterse şöyle yaparız.
HelloWorldImplService helloService = new HelloWorldImplService();
HelloWorld hello = helloService.getHelloWorldImplPort();


22 Mart 2016 Salı

JPA @Entity Anotasyonu

Giriş
Şu satırı dahil ederiz.
import javax.persistence.Entity;
Bir sınıfın JPA ile kullanılabilmesi için @Entity ile işaretlenmesi gerekir.
@Entity
public class MyEntity {
...
}
Hibernate İle Kullanımı
Bir çok JPA sağlayıcısı, JPA ile gelmeyen diğer özellilkler de sunar. Bu özellikler kullanılabilir.
@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class MyEntity implements Serializable {
...
}
Entity Sınıfı No-Arg Constructor
Entity sınıfı public veya protected bir no-arfg constructor'a sahip olmalıdır.
  • The entity class must have a no-arg constructor. It may have other constructors as well. The no-arg constructor must be public or protected.
  • The entity class must a be top-level class. An enum or interface must not not be designated as an entity.
  • The entity class must not be final. No methods or persistent instance variables of the entity class may be final.
  • If an entity instance is to be passed by value as a detached object (e.g., through a remote interface), the entity class must implement the Serializable interface.
  • Both abstract and concrete classes can be entities. Entities may extend non-entity classes as well as entity classes, and non-entity classes may extend entity classes.
Entity Sınıfı final olmamalıdır.
Bu örnek yanlıştır.
@Entity
public final class MyEntity {
    ...
}










Kripto

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

KeyGenerator Sınıfı
getInstance metodu
Belirtilen kripto için nesne döndürür.
KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
generateKey metodu
Key nesnesi üretir.
KeyGenerator keygenerator = KeyGenerator.getInstance("DES");
SecretKey myDesKey = keygenerator.generateKey();
SecretKeySpec
Constructor
Şöyle yaparız.
byte[] keyBytes = ...;
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(keyBytes);
Bir string ile şöyle yaparız.
String secretKey = "0123456789abcdef";
SecretKeySpec keyspec = new SecretKeySpec(SecretKey.getBytes(), "AES");
IvParameterSpec
Bu sınıfı bir initialization vector sağlar. CBC modundaki cipher'larda kullanılır.
Constructor
Şöyle yaparız.
byte[] ivBytes = ...;
IvParameterSpec ivParameterSpec = new IvParameterSpec(keyBytes);
Bir string ile şöyle yaparız.
String iv = "fedcba9876543210";
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
Cipher Sınıfı
Cipher Sınıfı yazısına taşıdım.

CipherOutputStream Sınıfı
Normal bir stream gibi kullanılır. write() flush() metodları vardır. Her stream'de olduğu gibi close() ile kapatılır
Constructor
Şöyle yaparız.
Cipher cipher = ...;
FileOutputStream fos = ...;
CipherOutputStream cos = new CipherOutputStream(fos, cipher);



Bit İşlemleri

Java'da Sayılar Unsigned Değildir
Özellikle C++'tan gelenlerin sıkça yaptığı bir hata. 32 bit sayıların kaydırılması için 64 bit kullanılır. Örneğin aşağıdaki kodda 1 signed bir değişken olduğu için istediğimiz sonucu elde etmeyiz.
938372878L | (1 << 31) //results to -1209110770
Şöyle yapmak gerekir.
938372878L | (1L << 31)
Faydalı metodlar
Java'da bitmask ile çalışmak yerine daha kolay metodlar var. highestOneBit, lowestOneBit, numberOfLeadingZeros, numberOfTrailingZeros gibi. Örnek:
assert 64 == Integer.highestOneBit(65);//00000000000000000000000001000001
assert 2 == Integer.bitCount(65);
assert 6 == 31 - Integer.numberOfLeadingZeros(65);//31 - 25
BitSet Sınıfı
BitSet Sınıfı yazısına taşıdım.