31 Aralık 2016 Cumartesi

LocalDateTime Sınıfı

Giriş
Bu sınıf tarih ve saati bilir. Diğer sınıflar ile ilişkisi şöyledir. Bu sınıf sistem saatinin çözünürlüğü kadar çözünürlük sağlar.

Açıklaması şöyle
LocalDateTime is date-time without a time-zone in the ISO-8601 calendar system, such as 2007-12-03T10:15:30

atZone metodu
Yerel tarih ve saati, bir başka saat dilimine çevirir.  Şöyle yaparız.
LocalDateTime ldt = ...;
ZoneId     zoneID = ...;
ZonedDateTime zdt = ldt.atZone (zoneId);
format metodu
Şöyle yaparız.
LocalDateTime ldt = LocalDateTime.now();
System.out.println (now.format());
Çıktı olarak şunu alırız. Saniye'ye kadar çözünürlük verir. Milisaniyeyi vermez.
2016-11-16 04:20:75
format metodu - DateTimeFormatter
Şöyle yaparız.
DateTimeFormatter formatter =
    DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS");

System.out.println(ldt.format(formatter));
Çıktı olarak şunu alırız.
2016-08-12T09:38:12.123456789
getDayOfMonth metodu
Şöyle yaparız.
ldt.getDayOfMonth();
getHour metodu
Şöyle yaparız.
ldt.getHour();
getMinute metodu
Şöyle yaparız.
ldt.getMinute();
getMonthValue metodu
Şöyle yaparız.
ldt.getMonthValue();
getSecond metodu
Şöyle yaparız.
ldt.getSecond ();
getYear metodu
Şöyle yaparız.
ldt.getYear();
minusDays metodu
Şöyle yaparız.
LocalDateTime ldt = LocalDateTime.now().minusDays(30);
now metodu
Şöyle yaparız.
LocalDateTime ldt = LocalDateTime.now();
now metodu - clock
Şöyle yaparız.
Clock clock = ...;

LocalDateTime ldt = 
  LocalDateTime.now(clock); // Instead of just LocalDateTime.now()
of metodu
Şöyle yaparız.
LocalDateTime when =
    LocalDateTime.of(2016, Month.AUGUST, 12, 9, 38, 12, 123456789);
Eğer yazdırırsak nanosaniye çözünürlüğünde veri saklayabildiğimiz görürüz. Şöyle yaparız.
System.out.println(when);
Çıktı olarak şunu alırız.
2016-08-12T09:38:12.123456789
ofInstant metodu - Instant
Şöyle yaparız.
Calendar cal = Calendar.getInstance();
LocalDateTime ldt = LocalDateTime.ofInstant (cal.toInstant(), 
                                            ZoneId.systemDefault());
Şöyle yaparız.
Date date = ...;
long timestamp = date.getTime();

LocalDateTime ldt = LocalDateTime.ofInstant (Instant.ofEpochMilli(timestamp),
            ZoneId.systemDefault());
parse metodu
Şöyle yaparız.
LocalDateTime ldt = LocalDateTime.parse ("2016-04-04T08:00" );
toString metodu
Açıklaması şöyle
The format used will be the shortest that outputs the full value of the time where the omitted parts are implied to be zero.
Çıktı olarak şunu alırız. Sistem saati genellikle milisaniye çözünürlüğünde olduğu için çıktı da bu çözünürlüktedir.
2016-08-11T22:17:35.031


29 Aralık 2016 Perşembe

SAXSource Sınıfı

Giriş
javax.xml.transform.Source arayüzünü gerçekleştirir.

constructor
Şöyle yaparız.
String str = ...;
XMLReader reader = ...;
Source er = new SAXSource(reader, new InputSource(new StringReader(str)));


StaX XMLInputFactory Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.xml.stream.XMLInputFactory;
StaX çatısına ait sınflardan birisidir. XMLEventReader veya XMLStreamReader nesnelerini yaratmak için kullanılır.
createXMLEventReader metodu
Şöyle yaparız.
XMLEventReader reader = inputFactory
  .createXMLEventReader(new FileInputStream("F://test.xml"));
createXMLStreamReader metodu
Şöyle yaparız.
ReaderInputStream ris = new ReaderInputStream(new StringReader("<tag>...</tag>"));
XMLStreamReader reader = ınputFactory.createXMLStreamReader(ris, "UTF-8");
newInstance metodu
Şöyle yaparız.
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
setProperty metodu - IS_REPLACING_ENTITY_REFERENCES
XML içinde 5 tane önceden tanımlı entity vardır. Bu entity'lerin gerçek karakterler ile yer değiştirilmesini istemiyorsak şöyle yaparız. Böylece XML içindeki aslında XML olmayan ancak HTML'den gelen &nbsp değiştirilmeden bize verilir.
inputFactory.setProperty(
                XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);
setProperty - IS_COALESCING
Eğer entity'lerin gerçek karakterler ile yer değiştirmesini istiyorsak şöyle yaparız. Böylece XML içindeki &amp karakteri & haline gelir.
inputFactory.setProperty("javax.xml.stream.isCoalescing", true);
Bu string yerine XMLInputFactory.IS_COALESCING kullanılmalı.


setProperty metodu - SUPPORT_DTD
Şöyle yaparız.
xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);


25 Aralık 2016 Pazar

ConcurrentSkipListMap Sınıfı

Giriş
TreeMap Sınıfını concurrent dünyaya uyarlanmış hali gibi düşünülebilir.

LinkedHashMap Sınıfı

Giriş
Elemanlar eklenildikleri sırada dolaşılabilir.
Iteration is guaranteed in insertion order.

24 Aralık 2016 Cumartesi

Embeded Jetty

Server Sınıfı
Şu satırı dahil ederiz.
import org.eclipse.jetty.server.Server;
constructor
Dinlenilecek port belirtilir. Şöyle yaparız.
Server server = new Server(8112);
setHandler metodu
Şöyle yaparız.
ServletContextHandler context = new ServletContextHandler(...);
...
server.setHandler(context);
start ve join metodları
Şöyle yaparız.
try {
  server.start();
  server.join();
} catch (Throwable t) {
  t.printStackTrace(System.err);
}
ServletContextHandler Sınıfı
Giriş
Şu satırı dahil ederiz.
import org.eclipse.jetty.servlet.ServletContextHandler;
Açıklaması şöyle
Using a ServletContextHandler will create and manage the common ServletContext for all of the Servlets, Filters, Sessions, Security, etc within that ServletContextHandler. This includes proper initialization, load order, and destruction of the components affected by a ServletContext as well.
Constructor - server + path
Şöyle yaparız.
ServletContextHandler contextHandler = new ServletContextHandler(server, "/");
Constructor - options
Şöyle yaparız.
ServletContextHandler contextHandler = 
new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
Context'e parent ve path vermediğimiz için daha sonra şöyle yaparız.
contextHandler.setContextPath("/");
server.setHandler(contextHandler);
addServlet metodu
Kendi servlet sınıfımız için şöyle yaparız.
contextHandler.addServlet(MyServlet.class, "/path");
Eğer Jersey ile birleştirmek istersek şöyle yaparız.
ServletHolder jerseyServlet = contextHanlder.addServlet(
 org.glassfish.jersey.servlet.ServletContainer.class, "/webapi/*");
Jersey servlet sınıfına bazı parametreler vermek gerekir. Şöyle yaparız. Böylece com.example paketindeki @Path olarak işaretli sınıflar yüklenir.
jerseyServlet.setInitOrder (1);
jerseyServlet.setInitParameter(
"jersey.config.server.provider.packages","com.example");
Sadece bir sınıfı yüklemek istersek şöyle yaparız.
jerseyServlet.setInitParameter(
"jersey.config.server.provider.classnames",Foo.class.getCanonicalName());
DefaultServlet Sınıfı
Giriş
Şu satırı dahil ederiz.
import org.eclipse.jetty.servlet.DefaultServlet;
Şöyle yaparız.
ServletHolder staticServlet = context.addServlet(DefaultServlet.class,"/*");
staticServlet.setInitParameter("resourceBase","src/main/webapp");
staticServlet.setInitParameter("pathInfoOnly","true");
ServletHolder Sınıfı
Şu satırı dahil ederiz.
import org.eclipse.jetty.servlet.ServletHolder;
Sanırım bu sınıf Jetty içindeki internal sınıflardan birisi ve direkt kullanılmamalı.

constructor
Şöyle yaparız.
ServletContextHandler context = new ServletContextHandler(...);
...
ServletHolder h = new ServletHolder(new ServletContainer());
setInitParameter metodu
Jersey ile kullanmak için şöyle yaparız.
h.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "resources");