Groovy Temel Örnekler
1) String Kullanımı
Groovy'de String
kullanımı, birçok programlama diline benzer şekildedir, ancak Groovy'nin bazı özgün özellikleri vardır. İşte String kullanımına dair temel bilgiler:
String s1 = 'Tek tırnakla tanımlanan bir string'
String s2 = "Çift tırnakla tanımlanan bir string"
String s3 = '''Üç tırnakla
tanımlanan
çok satırlı
bir string'''
Groovy'de çift tırnakla tanımlanan stringlerde değişken değerlerini direkt olarak ekleyebilirsiniz. Bu özellik, "String interpolasyonu" veya "GString" olarak adlandırılır.
String ad = "Ali"
String selam = "Merhaba, ${ad}!"
println(selam) // Çıktı: Merhaba, Ali!
2) String'de Tek, Çift, Üç Defa Tırnak Kullanımlarının Farkları
Groovy'de String
tanımlamak için tek tırnak ('
), çift tırnak ("
) ve üç tırnak ('''
veya """
) kullanılabilir. Bu tırnakların kullanımındaki farklar şunlardır:
Tek Tırnak (' '):
- Tek tırnakla tanımlanan stringler sıradan stringlerdir (plain strings).
- İçerisinde string interpolasyonu (değişken yerleştirme) yapılamaz.
String s1 = 'Merhaba, ${isim}!' println(s1) // Çıktı: Merhaba, ${isim}!
GROOVY
- Tek tırnakla tanımlanan stringler sıradan stringlerdir (plain strings).
- İçerisinde string interpolasyonu (değişken yerleştirme) yapılamaz.
String s1 = 'Merhaba, ${isim}!' println(s1) // Çıktı: Merhaba, ${isim}!
GROOVY
Çift Tırnak ("):
- Çift tırnakla tanımlanan stringler "GString" olarak bilinir.
- İçerisinde string interpolasyonu (değişken yerleştirme) yapılabilir.
String isim = "Ali" String s2 = "Merhaba, ${isim}!" println(s2) // Çıktı: Merhaba, Ali!
GROOVY
Üç Defa Tırnak('''):
- Çok satırlı stringleri tanımlamak için kullanılır.
- İçerisinde string interpolasyonu yapılabilir.
String isim = "Ali" String s3 = '''Merhaba, ${isim}! Nasılsın?''' println(s3) // Çıktı: // Merhaba, // Ali! // Nasılsın?
GROOVY
3) Groovy'de String'in Boş Olup Olmadığını Kontrol Etme
Groovy'de bir string'in boş olup olmadığını kontrol etmek için isEmpty()
metodu kullanılabilir.
String s = ""
if(s.isEmpty()) {
println("String boş!")
} else {
println("String boş değil!")
}
4) Groovy'de Nesnenin Boş Olup Olmadığını Kontrol Etme
Groovy'de bir nesnenin boş olup olmadığını kontrol etmek için == null
ya da != null
ifadeleri kullanılır.
def obj = null
if(obj) {
println("Nesne boş değil!")
} else {
println("Nesne boş!")
}
Çıktı: "Nesne boş!"
5) Groovy'de For Döngüsü
Groovy'de bir for
döngüsü, Java'da olduğu gibi yazılır. Temel bir örnek:
def toplam = 0
for(int i = 0; i < 10; i++) {
toplam +=i
responseBodyTextToClient = "toplam: ${toplam}"
}
//Çıktı : "toplam: 45"
6) Groovy'de While Döngüsü
Groovy'de while
döngüsü, diğer programlama dillerinde olduğu gibi kullanılır. İşte temel bir örnek:
int sayi = 0
while(sayi < 10) {
sayi++
}
responseBodyTextToClient = sayi
//Çıktı: "10"
7) Groovy'de Fonksiyon (Metod) Tanımlama
Groovy'de fonksiyonlar, genellikle "metod" olarak adlandırılır ve Java'ya benzer bir şekilde tanımlanır. Ancak Groovy, daha esnek bir sözdizimi sunar.
def fonksiyonAdi(parametre1, parametre2, ...) {
// Fonksiyon içeriği
return sonuc
}
def topla(a, b) {
return a + b
}
//Fonksiyonu tanımladıktan sonra ismiyle birlikte çağırarak kullanabilirsiniz.
def sonuc = topla(5, 3)
responseBodyTextToClient =sonuc // Çıktı: 8
8) Groovy'de Try-Catch Kullanımı
Groovy'de try-catch
yapısı, Java'da olduğu gibi hataların (exceptions) yakalanması ve işlenmesi için kullanılır. Sözdizimi ve kullanımı Java'ya çok benzerdir.
try {
// Hata oluşturabilecek kodlar
int sonuc = 10 / 0 // Bu satır bir ArithmeticException hatası üretecektir.
} catch (ArithmeticException e) {
responseBodyTextToClient ="Aritmetik bir hata oluştu: " + e.getMessage()
} catch (Exception e) {
responseBodyTextToClient ="Bir hata oluştu: " + e.getMessage()
}
//Çıktı : "Aritmetik bir hata oluştu: divide by zero"
9) Groovy'de Concatenation
Groovy'de string birleştirme (concatenation) işlemi için birkaç yöntem bulunmaktadır. İşte bu yöntemlere dair bazı örnekler:
1. Basit +
Operatörü ile Birleştirme:
String ad = "Ali"
String mesaj = "Merhaba, " + ad + "!"
2. GString (Parametreli String) Kullanımı:
Groovy, değerleri doğrudan string içerisine eklemek için ${...}
yapısını kullanabilen bir string türü olan GString'i destekler.
String ad = "Ali"
String mesaj = "Merhaba, ${ad}!"
println(mesaj) // Çıktı: Merhaba, Ali!
3. <<
Operatörü ile Birleştirme:
Bu yöntem, büyük veri setlerinde string birleştirme işlemleri için daha performanslıdır.
def sb = new StringBuilder()
sb << "Merhaba, "
sb << "Ali"
sb << "!"
println(sb.toString()) // Çıktı: Merhaba, Ali!
4. join()
Metodu:
Listelerdeki elemanları birleştirmek için kullanılır.
def kelimeler = ["Merhaba", "Ali"]
String mesaj = kelimeler.join(", ") + "!"
println(mesaj) // Çıktı: Merhaba, Ali!
10) Groovy'de Stringlerde Özel Karakterlerin Kaçış(Escaping) İşlemi
def mesaj = 'Merhaba, \'Ali\'. Bugün nasılsın?'
println(mesaj) // Çıktı: Merhaba, 'Ali'. Bugün nasılsın?
11) Groovy'de Apache StringUtils Kullanımı
Groovy'de Java kütüphanelerini kullanmak için import
anahtar kelimesini kullanabilirsiniz.
// StringUtils sınıfını import ediyoruz
import org.apache.commons.lang3.StringUtils
// Basit bir Groovy script
def mainString = "Hello, Groovy!"
def searchString = "Groovy"
// StringUtils kullanarak bir string içinde başka bir string'in olup olmadığını kontrol ediyoruz
if (StringUtils.contains(mainString, searchString)) {
responseBodyTextToClient =("$searchString is found in $mainString")
} else {
responseBodyTextToClient =("$searchString is not found in $mainString")
}
12) Java'da Apache Commons Codec ile Base64 Kodlama ve Çözme
Java'da Apache Commons Codec kütüphanesini kullanarak Base64 kodlama ve çözme işlemleri yapabilirsiniz. Bu kütüphane, Base64 işlemleri için Base64
sınıfını sağlar.
// Base64 sınıfını import ediyoruz
import org.apache.commons.codec.binary.Base64
def originalString = "Merhaba, Groovy!"
// String'i Base64 ile kodlama
byte[] encodedBytes = Base64.encodeBase64(originalString.getBytes())
String encodedString = new String(encodedBytes)
// Base64 ile kodlanmış string'i çözme
byte[] decodedBytes = Base64.decodeBase64(encodedString.getBytes())
String decodedString = new String(decodedBytes)
responseBodyTextToClient = "Orijinal String: $originalString" + ' ' +"Base64 ile Kodlanmış String: $encodedString"+ ' ' +"Base64 ile Çözülmüş String: $decodedString"
//Çıktı : "Orijinal String: Merhaba, Groovy! Base64 ile Kodlanmış String: TWVyaGFiYSwgR3Jvb3Z5IQ== Base64 ile Çözülmüş String: Merhaba, Groovy!"
13) Groovy'de Java Import İle XmlUtil Sınıfının Kullanımı
Groovy, XML işlemleri için oldukça güçlü bir dil olup, XML içeriğini okuma, oluşturma ve düzenleme gibi işlemleri kolaylaştıran birçok yerleşik özelliğe sahiptir. XmlUtil
sınıfı, XML içeriğini düzenli bir şekilde (pretty-print) yazdırmak için kullanılır.
// XmlUtil sınıfını import ediyoruz
import groovy.xml.XmlUtil
def xmlContent = '''
<root>
<element1>Value1</element1>
<element2>Value2</element2>
</root>
'''
def parsedXml = new XmlParser().parseText(xmlContent)
String prettyXml = XmlUtil.serialize(parsedXml)
responseBodyTextToClient = prettyXml
/*
<?xml version="1.0" encoding="UTF-8"?>
<root>
<element1>Value1</element1>
<element2>Value2</element2>
</root>
*/
14) Groovy'de XML İçerisinden Veri Okuma
Groovy, XML içeriğini okumak için oldukça güçlü ve esnek bir dil sunar. XML içeriğini okumak için Groovy'de genellikle XmlSlurper
veya XmlParser
sınıflarını kullanabilirsiniz.
import groovy.xml.XmlSlurper
def xmlContent = '''
<root>
<person>
<name>John Doe</name>
<age>30</age>
</person>
<person>
<name>Jane Smith</name>
<age>25</age>
</person>
</root>
'''
def xml = new XmlSlurper().parseText(xmlContent)
// İlk kişinin adını okuma
def firstName = xml.person[0].name.text()
println "First person's name: $firstName"
// İkinci kişinin yaşını okuma
def secondPersonAge = xml.person[1].age.text()
responseBodyTextToClient = "Second person's age: $secondPersonAge"
15) Groovy'de XML İçerisine Element Ekleme
Groovy, XML içeriğine yeni bir element eklemek için oldukça kullanışlı araçlar sunar. Bu işlem için genellikle XmlParser
veya XmlSlurper
sınıflarını kullanabilirsiniz.
import groovy.xml.XmlParser
import groovy.xml.XmlUtil
// Örnek XML içeriği
def xmlContent = '''
<root>
<person>
<name>John Doe</name>
<age>30</age>
</person>
</root>
'''
def parsedXML = new XmlParser().parseText(xmlContent)
// 'person' elementine yeni bir 'address' elementi ekliyoruz
parsedXML.person.appendNode('address', '123 Main St')
// XML içeriğini düzenli bir şekilde yazdırma
def prettyXml = XmlUtil.serialize(parsedXML)
responseBodyTextToClient = prettyXml
16) Groovy'de XML İçerisinde Element Silme
Elbette, XML içeriğinden bir elementi silmek için Groovy'de XmlParser
veya XmlSlurper
sınıflarını kullanabilirsiniz.
import groovy.xml.XmlParser
import groovy.xml.XmlUtil
// Örnek XML içeriği
def xmlContent = '''
<root>
<person>
<name>John Doe</name>
<age>30</age>
<address>123 Main St</address>
</person>
</root>
'''
def parsedXML = new XmlParser().parseText(xmlContent)
// 'person' elementi altındaki 'address' elementini bulup siliyoruz
parsedXML.person.address[0].replaceNode {}
// XML içeriğini düzenli bir şekilde yazdırma
def prettyXml = XmlUtil.serialize(parsedXML)
responseBodyTextToClient = prettyXml
17) Groovy'de XML İçerisinde Element Düzenleme
XML içeriğindeki bir elementi düzenlemek için Groovy'de XmlParser
veya XmlSlurper
sınıflarını kullanabilirsiniz.
import groovy.xml.XmlParser
import groovy.xml.XmlUtil
// Örnek XML içeriği
def xmlContent = '''
<root>
<person>
<name>John Doe</name>
<age>30</age>
<address>123 Main St</address>
</person>
</root>
'''
def parsedXML = new XmlParser().parseText(xmlContent)
// 'person' elementi altındaki 'address' elementinin değerini değiştiriyoruz
parsedXML.person.address[0].value = '456 Elm St'
// XML içeriğini düzenli bir şekilde yazdırma
def prettyXml = XmlUtil.serialize(parsedXML)
responseBodyTextToClient = prettyXml
18) Groovy'de XML İçerisinde For İle Gezinme
XML içeriğindeki bir elementi düzenlemek için Groovy'de XmlParser
veya XmlSlurper
sınıflarını kullanabilirsiniz.
import groovy.xml.XmlParser
// Örnek XML içeriği
def xmlContent = '''
<root>
<people>
<person>
<name>John Doe</name>
<age>30</age>
</person>
<person>
<name>Jane Smith</name>
<age>25</age>
</person>
<person>
<name>Bob Johnson</name>
<age>40</age>
</person>
</people>
</root>
'''
def parsedXML = new XmlParser().parseText(xmlContent)
// 'people' altındaki 'person' elementlerini bir diziye alıyoruz
def personsList = []
for (person in parsedXML.people.person) {
def personMap = [
name: person.name.text(),
age: person.age.text().toInteger()
]
personsList << personMap
}
// Sonuç
responseBodyTextToClient = personsList
/*
Çıktı:
[
[name: "John Doe", age: 30],
[name: "Jane Smith", age: 25],
[name: "Bob Johnson", age: 40]
]
*/
19) Groovy'de JSON İçeriğinden Değer Okuma
Groovy, JSON işlemleri için oldukça güçlü bir dil olup, JSON içeriğini okuma, oluşturma ve düzenleme gibi işlemleri kolaylaştıran birçok yerleşik özelliğe sahiptir. JsonSlurper
sınıfı, JSON içeriğini ayrıştırmak ve okumak için kullanılır.
import groovy.json.JsonSlurper
// Örnek JSON içeriği
def jsonString = '''
{
"name": "John Doe",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Springfield"
}
}
'''
def json = new JsonSlurper().parseText(jsonString)
// JSON içeriğinden değerleri okuma
def name = json.name
def age = json.age
def street = json.address.street
responseBodyTextToClient = "Name: $name Age: $age Street: $street"
//Çıktı: "Name: John Doe Age: 30 Street: 123 Main St"
20) Groovy'de JSON İçeriği Oluşturma
Groovy, JSON verilerini kolayca oluşturmak ve düzenlemek için JsonBuilder
ve JsonOutput
gibi yerleşik sınıflar sunar. Bu sınıflar, JSON formatında veri oluşturmak için oldukça kullanışlıdır.
import groovy.json.JsonBuilder
import groovy.json.JsonOutput
// Json oluşturulacak içerik
def nameValue = "John"
def surnameValue = "Doe"
def builder = new JsonBuilder()
// JSON yapısının tanımlandığı blok
def jsonRequestBodyExample = builder {
name nameValue
surname surnameValue
}
// JSON nesnesini JSON formatında bir string'e dönüştürme
responseBodyTextToClient = JsonOutput.toJson(jsonRequestBodyExample)
/* Çıktı:
{
"name" : "John",
"surname" : "Doe",
}
*/
21) Groovy'de JSON İçeriğine Element Ekleme
Groovy, JSON işlemleri için JsonSlurper
ve JsonBuilder
gibi yerleşik sınıflar sunar. Bu sınıflar sayesinde JSON içeriğini kolayca ayrıştırabilir, düzenleyebilir ve yeni elementler ekleyebilirsiniz.
import groovy.json.JsonSlurper
import groovy.json.JsonBuilder
// Örnek JSON içeriği
def jsonString = '''
{
"name": "John Doe",
"age": 30
}
'''
def json = new JsonSlurper().parseText(jsonString)
// JSON içeriğine yeni bir element ekliyoruz
json.address = "123 Main St"
// JSON içeriğini tekrar string formatına dönüştürme
def updatedJsonString = new JsonBuilder(json).toPrettyString()
responseBodyTextToClient = updatedJsonString
/* Çıktı:
{
"name" : "John Doe",
"age" : 30,
"address" : "123 Main St"
}
*/
22) Groovy'de JSON İçeriğinden Element Silme
Groovy, JSON işlemleri için JsonSlurper
ve JsonBuilder
gibi yerleşik sınıflar sunar. Bu sınıflar, JSON içeriğini kolayca ayrıştırmak, düzenlemek ve elementleri silmek için oldukça kullanışlıdır.
import groovy.json.JsonSlurper
import groovy.json.JsonBuilder
// Örnek JSON içeriği
def jsonString = '''
{
"name": "John Doe",
"age": 30,
"address": "123 Main St"
}
'''
def json = new JsonSlurper().parseText(jsonString)
// JSON içeriğinden 'address' elementini siliyoruz
json.remove('address')
// JSON içeriğini tekrar string formatına dönüştürme
def updatedJsonString = new JsonBuilder(json).toPrettyString()
responseBodyTextToClient = updatedJsonString
/* Çıktı:
{
"name" : "John Doe",
"age" : 30
}
*/
23) Groovy'de JSON İçeriğindeki Elementi Düzenleme
Groovy, JSON işlemleri için JsonSlurper
ve JsonBuilder
gibi yerleşik sınıflar sunar. Bu sınıflar, JSON içeriğini kolayca ayrıştırmak, düzenlemek ve elementlerin değerlerini değiştirmek için oldukça kullanışlıdır.
import groovy.json.JsonSlurper
import groovy.json.JsonBuilder
// Örnek JSON içeriği
def jsonString = '''
{
"name": "John Doe",
"age": 30,
"address": "123 Main St"
}
'''
def json = new JsonSlurper().parseText(jsonString)
// JSON içeriğindeki 'address' elementinin değerini değiştiriyoruz
json.address = "456 Elm St"
// JSON içeriğini tekrar string formatına dönüştürme
def updatedJsonString = new JsonBuilder(json).toPrettyString()
responseBodyTextToClient = updatedJsonString
/* Çıktı:
{
"name" : "John Doe",
"age" : 30,
"address": "456 Elm St"
}
*/
24) Groovy'de JSON İçeriğindeki Dizi Üzerinde For İle Gezinme
Groovy, JSON işlemleri için JsonSlurper
ve JsonBuilder
gibi yerleşik sınıflar sunar. Bu sınıflar, JSON içeriğini kolayca ayrıştırmak, düzenlemek ve elementlerin değerlerini değiştirmek için oldukça kullanışlıdır.
import groovy.json.JsonSlurper
// Örnek JSON içeriği
def jsonString = '''
{
"people": [
{"name": "John Doe", "age": 30},
{"name": "Jane Smith", "age": 25},
{"name": "Bob Johnson", "age": 40}
]
}
'''
def json = new JsonSlurper().parseText(jsonString)
// JSON içeriğindeki 'people' dizisi üzerinde for döngüsü ile gezinme
def personsList = []
for (person in json.people) {
def personMap = [
name: person.name,
age: person.age
]
personsList << personMap
}
responseBodyTextToClient = personsList
/* Çıktı:
[{name=John Doe, age=30}, {name=Jane Smith, age=25}, {name=Bob Johnson, age=40}]
*/
25) Apinizer Değişkenleri
Script politikası ile mesajlardaki başlık (header), parametre (parameter), gövde (body) ve hata mesajı (error message) içerikleri seçilen script dili ile işlenebilir.
Gelen istek mesajın orijinal hali ile dönen yanıt mesajının orijinal hali üzerinde değişiklik yapılamaz, bu veriler üzerinde sadece okuma yapılabilir.
Backend API'ye gönderilecek olan istek ile istemciye dönecek yanıt üzerinde ise hem okuma hem de değişiklik yapılabilir.
Yapılacak olan okuma ve değişiklik işlemleri mesajın başlık, parametre ve gövde kısımlarını içerir. Bu alanlara script üzerinde erişim için çeşitli anahtar kelimeler kullanılmıştır. Bu anahtar kelimeler erişilmek istenen bölgeye göre değişmektedir.
- Başlıklara erişmek için → <request|response>HeaderMap<From|To><Client|TargetAPI>
- URL parametrelerine erişmek için → <request>UrlParamMap<From|To><Client|TargetAPI>
- Gövdeye erişmek için → <request|response>BodyText<From|To><Client|TargetAPI>
- Politikayı sonlandırıp özelleştirilmiş hata mesajı döndürmek için → <request|response>ErrorMessage<From|To><Client|TargetAPI> gösterimini kullanmanız gerekir.
- Durum kodunu değiştirmek için→statusCode<From|To><Client|TargetAPI>
/* Request
{
"data": {
"alan": "1"
}
}
*/
//Script
import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def jsonMessage = jsonSlurper.parseText(requestBodyTextFromClient)
requestErrorMessageToTargetAPI = jsonMessages
statusCodeToTargetAPI = 500
//Sonuç:
//{data={alan=1}} seklinde client'a dönülür.
//Script içerisinde requestHeaderMapFromClient değişkeni Map olarak Client'dan gelen Header'ları tutmaktadır, Read only olacak şekilde değişken kullanılabilir.
/* Request Header
userId : 123456
*/
//Script
def userID = requestHeaderMapFromClient.get('userId')
if(userID =='123456'){
requestErrorMessageToTargetAPI = userID
statusCodeToTargetAPI = 401
}
//Çıktı:
// 123456 - statusCode = 401