17 Mart 2020 Salı

Preconditions Sınıfı

checkArgument metodu - boolean + string
Örnek
Şöyle yaparız. Koşul false ise string içeren IllegalArgumentException fırlatılır.
static void test(Object myObject) {
  Preconditions.checkArgument(myObject == null, "This object is not null");
}
checkArgument metodu - boolean + string + object[]

Örnek
Elimizde şöyle bir kod olsun. Bu kod myObject null olsa bile yani koşul false olsa bile çöker
çünkü boolean expression true olsa bile object[] dizini doldurmak için nesnenin getId() metoduna erişilmeye çalışılır.
Preconditions.checkArgument(Objects.isNull(myObject),
  "This object is not null #%s.", myObject.getId());
checkElementIndex metodu
Metodun içi şöyle.
public static int checkElementIndex(int index, int size) {
  if (size < 0) throw new IllegalArgumentException();
  if (index < 0 || index >= size) throw new IndexOutOfBoundsException();
  return index;
}
Örnek
Şöyle yaparız
Preconditions.checkElementIndex(index,list.size());
checkNotNull metodu
Metodun içi şöyle.
@CanIgnoreReturnValue
@NonNullDecl
public static <T extends Object> T checkNotNull(@NonNullDecl T obj,
  @NullableDecl String errorMessageTemplate, @NullableDecl Object p1) {
  if (obj == null) {
    throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
  }
  return obj;
}
Açıklaması şöyle
The intent of Preconditions.checkNotNull is that it should only be used on variables that you believe can never be null -- and you want to make sure your belief is correct, and have an exception thrown if you were wrong.
checkState metodu
Örnek ver

15 Mart 2020 Pazar

Resources Sınıfı

Giriş
Şu satırı dahil ederiz
import com.google.common.base.Charsets;
import com.google.common.io.Resources;
asCharSource metodu - Get Resource as BufferedReader
Örnek
Şöyle yaparız
public static BufferedReader asBufferedReader(String resource) {
  URL url = Resources.getResource(resource);
  try {
    CharSource charSource = Resources.asCharSource(url, Charsets.UTF_8);
    return charSource.openBufferedStream();
  } catch (IOException ex) {
    throw new RuntimeException(ex);
  }
}
getResource metodu
ClassLoader sınıfını kullanarak kaynağın adresini döner. ClassLoader kullandığı için yolun forward slash ile başlamaması ve mutlak yol olması gerekir.

Örnek
Şöyle yaparız.
URL url = Resources.getResource("foo.txt");
String text = Resources.toString(url, Charsets.UTF_8);
Örnek
Elimizde şöyle bir dosya olsun.
src
 main
  java
   com
    mypackage
     MyClass.java
  resources
    queries
      query.sql
Şöyle yaparız.
URL url = Resources.getResource("queries/query.sql");
String query = Resources.toString(url, Charset.UTF-8);
toString metodu - Get Resource As String
Örnek
Elimizde şöyle bir kod olsun.
public String readResource(final String fileName, Charset charset) throws IOException {
  return Resources.toString(Resources.getResource(fileName), charset);
}
Şöyle yaparız.
String fixture = this.readResource("filename.txt", Charsets.UTF_8)

12 Mart 2020 Perşembe

ArrayListMultimap Sınıfı

Giriş
Şu satırı dahil ederiz.
import com.google.common.collect.ArrayListMultimap;
ListMultimap arayüzünü gerçekleştirir.

Bu arayüzü gerçekleştiren sınıflar şöyle
ArrayListMultimap, ForwardingListMultimap, ImmutableListMultimap, LinkedListMultimap

Multimap'in sağ tarafı yani value değerlerini tutan tarafı ArrayList'tir.

constructor
Multimaps sınıfını kullanmazı zor. Bu yüzden sınıfın kendi create() metodunu tercih etmeli.

Örnek
create() metodunu kullanmıyorsak şöyle yaparız.
ListMultimap<DuplicateKey,Integer> map =
  Multimaps.newListMultimap(
  Maps.<DuplicateKey, Collection<Integer>>newTreeMap(),
  new Supplier<List<Integer>>() {
    public List<Integer> get() {
      return Lists.newArrayList();
    }
});
asMap metodu
Açıklaması şöyle.
.asMap() lets you get a map and you can then iterate over its .entrySet().
Açıklaması şöyle. Yani metod Map<K,Collection<V>> dönmesine rağmen Collection aslında List nesnesidir. Eğer  Map<K,List<V>> nesnesi istersek Multimaps.asMap() metodunu kullanmak gerekir.
Note: The returned map's values are guaranteed to be of type List. To obtain this map with the more specific generic type Map<K, List<V>>, call Multimaps.asMap(ListMultimap) instead.
Örnek
Tüm value nesneleri üzerinde dolaşmak için şöyle yaparız.
ListMultimap<String,String> sampleMultimap = ArrayListMultimap.create();
Map<String,Collection<String>> mapView = sampleMultimap.asMap();
for (String key : mapView.keySet()) {
    Collection<String> value = mapView.get(key);
    // do something with value
}
create metodu
Örnek
Şöyle yaparız.
ListMultimap<String, String> result = ArrayListMultimap.create();
Örnek
Şöyle yaparız.
Multimap<String, String> matchingMap = ArrayListMultimap.create();
entries metodu
Tüm entry nesnelerine topluca erişim sağlar.
Örnek
Şöyle yaparız.
Collection<Map.Entry<String, List<MyObject>>> entries =  tasksMap.entries()
get metodu
Şöyle yaparız.
List<MyObject> values = tasksMap.get(key);
keySet metodu
Örnek ver

put metodu
Şöyle yaparız
String text1 = "Loan";
String text2 = "Home";
Multimap<String, String> matchingMap = ArrayListMultimap.create();

matchingMap.put(text1 + ":" + text2, "getLoan");
matchingMap.put(text1 + ":" + text2, "setLoan");
matchingMap.put(text1 + ":" + text2, "applyLoan");
System.out.println("matchingMap :: " + matchingMap);
Çıktı olarak şunu alırız
matchingMap :: {Loan:Home=[getLoan, setLoan, applyLoan]}
values metodu
Tüm value nesnelerine topluca erişim sağlar.
Örnek
Şöyle yaparız.
Collection<List<MyObject>> values = tasksMap.values();