Skip to content

Instantly share code, notes, and snippets.

View oehme's full-sized avatar

Stefan Oehme oehme

View GitHub Profile
@oehme
oehme / logfieldman.xtend
Last active August 29, 2015 14:10
Manual log field
class Commander {
static val log = Logger.getLogger(Commander.name)
def whatIsThis() {
log.warning("It's a trap!")
}
}
@oehme
oehme / logfieldauto.xtend
Created November 25, 2014 14:45
Automatic log field
@Log class Commander {
def whatIsThis() {
log.warning("It's a trap!")
}
}
@oehme
oehme / MyMessages.properties
Created November 28, 2014 14:31
Localization properties
Hello=Hello {0}, the time currently is {1, time}!
Trains={0,number} trains spotted.
@oehme
oehme / MyMessages.java
Last active August 29, 2015 14:10
Localization ResourceBundle
public class MyMessages {
private ResourceBundle bundle;
public MyMessages(Locale locale) {
this.bundle = ResourceBundle.getBundle("MyMessages", locale);
}
public String trains(Number arg0) {
String pattern = bundle.getString("Trains");
MessageFormat format = new MessageFormat(pattern);
@oehme
oehme / ReadingPropertiesInCompiler.xtend
Created November 28, 2014 14:39
Loading the ResourceBundle in the Compiler
val propertyFile = cls.compilationUnit.filePath.parent.append(cls.simpleName + ".properties")
if (!propertyFile.exists) {
cls.addError('''Property file «propertyFile» does not exist''')
return
}
val resourceBundle = new PropertyResourceBundle(propertyFile.contentsAsStream)
@oehme
oehme / MessageMethods.xtend
Created November 28, 2014 14:43
Generating Methods from Messagekeys
Iterators.forEnumeration(resourceBundle.keys).forEach [ key |
cls.addMethod(key.keyToMethodName) [
patternVariables.forEach [ patternVariable, index |
addParameter("arg" + index, patternVariable.argumentType(context))
]
returnType = string
body = '''
«String» pattern = bundle.getString("«key»");
«MessageFormat» format = new «MessageFormat»(pattern);
return format.format(new «Object»[]{«parameters.join(", ")[simpleName]»});
@oehme
oehme / Helpers.xtend
Created November 28, 2014 14:44
Helper functions for the method name and parameter types
def keyToMethodName(String key) {
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, key).toFirstLower
}
def argumentType(Format format, extension TypeReferenceProvider typeRefs) {
switch format {
NumberFormat: Number.newTypeReference
DateFormat: Date.newTypeReference
default: object
}
@oehme
oehme / MyMessages.xtend
Created November 28, 2014 14:51
Usage of @message annotation
@Messages class MyMessages {}
class Test {
def static void main(String[] args) {
val messages = new MyMessages(Locale.GERMAN)
println(messages.hello("Stefan", new Date))
print(messages.trains(3))
}
}
require 'travis'
Travis.access_token = Travis.github_auth(ENV['TRAVIS_TOKEN'])
repos = Travis::Repository.find_all(owner_name: 'oehme')
keys = ['ORG_GRADLE_PROJECT_bintrayApiKey', 'ORG_GRADLE_PROJECT_signingPassword', 'ORG_GRADLE_PROJECT_sonatypePassword']
repos.each do |repo|
keys.each do |key|
puts "Setting env var '#{key}' on project '#{repo.slug}'"
repo.env_vars.upsert(key, "'#{ENV[key]}'", public: false)
end
end
plugins {
id 'java'
id 'com.github.oehme.sobula.bintray-release' version '0.4.1'
}
group = "my.group.id"
description = "My really cool project"
contacts {
"me@mysite.org" {