Na moje zdanie po kodowaniu ileś tam czasu w javie to nie czuję że tak jest.
Gdy napisałem te parę linijek nie czuję tej zajebistości a raczej mętlik. Zamiast wsparcia IDE to trzeba się domyślać jaką funkcję lub zajebistość można użyć. Pewnie przy napisaniu 1000 skryptu to już wchodzi w nawyk
Dziwactwo straszne dziwactwo
Wynalazki które szybko napisać ale cholera wie co robią
Extraktowanie zip-a aby sprawdzić zawartość pliku
W tym przypadku wykorzystane do sprawdzenia zmiennych w META-INF/context.xml
W moim wypadku w META-INF/context.xml są zapisane zmienne
<Context path="/ap-kolce-adm" ... <Resource... username="${ap-kolce-adm.auth.db.user}" ... password="${ap-kolce-adm.auth.db.pass}"Aby je wylistować można wykorzystać skrypt poniżej
Wywołanie przy założenie że groovy jest w path a ContextParser.groovy oraz ap-mzwi-adm.war są w bieżącym katalogu:
groovy ContextParser.groovy ap-mzwi-adm.warZawartość ContextParser.groovy
def file = args[0]
println "file:" + file
def zipFile = new java.util.zip.ZipFile(new File(file))
zipFile.entries().findAll { !it.directory }.each {
def f = String.valueOf(it)
if (f.startsWith("META-INF/context.xml")) {
def str = zipFile.getInputStream(it).text
def set1 = new TreeSet()
try {
str.eachLine { line ->
def matcher = (line =~/\$\{([^\}]+)\}/)
while (matcher.find()) {
def key = matcher.group(1)
set1.add(key)
}
}
} catch (IOException e) {
e.printStackTrace();
}
set1.each { i1 -> println "$i1" }
}
}
Wypluty rezultat
ap-mzwi-adm.amqbroker.url ap-mzwi-adm.db.ip ap-mzwi-adm.db.pass ap-mzwi-adm.db.user ap-mzwi-adm.esb.http.url ap-mzwi-adm.ws-broker-server-sikch-auth.url as400.address_base as400.login_base as400.pass_base mgr.service.url