packages feed

java-bridge-0.20130602: examples/system-properties/system-properties.hs

import Foreign.Java
import Foreign.Java.Maybe
import qualified Foreign.Java.JNI.Safe as JNI
import Data.Maybe

main = do
    JNI.setDebugStatus True
    runJava $ do
        (Just system) <- getClass "java.lang.System"
        getProperties <- system `bindStaticMethod` "getProperties" ::= object "java.util.Properties"

        (Just hashtableClass) <- getClass "java.util.Hashtable"    
        getEntrySet <- hashtableClass `bindMethod` "entrySet" ::= object "java.util.Set"

        (Just setClass) <- getClass "java.util.Set"
        toArray <- setClass `bindMethod` "toArray" ::= array (object "java.lang.Object")

        (Just properties) <- getProperties
        (Just entrySet) <- getEntrySet properties
        toArray entrySet
            >>= toList . fromJust
            >>= mapM toString
            >>= mapM (io . putStrLn)