startup/JavaStartup.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 30 Jan 2013 17:27:21 +0000
branchdevelopment
changeset 2013 422f7637aecb
parent 1818 2e5ed72e7dfd
child 2069 75d40b7b986f
permissions -rw-r--r--
More work on JavaCodeBundleEditor. Added buttons.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     1
"{ Package: 'stx:libjava/startup' }"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     2
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     3
StandaloneStartup subclass:#JavaStartup
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     4
	instanceVariableNames:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     5
	classVariableNames:'ClassPath'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     6
	poolDictionaries:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     7
	category:'Languages-Java-Support'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     8
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
     9
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    10
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    11
!JavaStartup class methodsFor:'constants & defaults'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    12
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    13
applicationRegistryPath
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    14
    "the key under which this application stores its process ID in the registry
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    15
     as a collection of path-components.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    16
     i.e. if #('foo' 'bar' 'baz') is returned here, the current applications ID will be stored
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    17
     in HKEY_CURRENT_USER\Software\foo\bar\baz\CurrentID.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    18
     (would also be used as a relative path for a temporary lock file under unix).
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    19
     Used to detect if another instance of this application is already running."
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    20
    
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    21
    ^ #('stx' 'java_x')
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    22
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    23
    "Created: / 07-02-2011 / 10:55:08 / Marcel Hlopko <hlopik@gmail.com>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    24
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    25
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    26
applicationUUID
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    27
    "answer an application-specific unique uuid.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    28
     This is used as the name of some exclusive OS-resource, which is used to find out,
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    29
     if another instance of this application is already running.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    30
     Under win32, a mutex is used; under unix, an exclusive file in the tempDir could be used."
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    31
    
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    32
    ^ 'ST_X_JAVA_X'.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    33
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    34
    "Created: / 07-02-2011 / 10:52:50 / Marcel Hlopko <hlopik@gmail.com>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    35
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    36
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    37
!JavaStartup class methodsFor:'startup'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    38
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    39
main:argv 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    40
    "Currently only -c option for classpath setting working"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    41
    
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    42
    |class arguments classAndArguments classpath classpathFromEnv|
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    43
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    44
    classpath := OrderedCollection new.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    45
    classpathFromEnv := OperatingSystem getEnvironment:#CLASSPATH.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    46
    classpathFromEnv isNil ifFalse:[
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    47
        (classpathFromEnv asArrayOfSubstringsSeparatedBy:$:) do:[:each | 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    48
            classpath add:each
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    49
        ]
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    50
    ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    51
    classAndArguments := OrderedCollection new.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    52
    (GetOpt new)
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    53
        at:$c
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    54
            put:[:opt :arg | (arg asArrayOfSubstringsSeparatedBy:$:) do: [:each | classpath add: each]];
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    55
        at:$? put:[:arg | self error:'not yet implemented'];
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    56
        default:[:arg | classAndArguments add:arg];
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    57
        parse:argv.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    58
    class := classAndArguments at:1.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    59
    arguments := classAndArguments
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    60
                removeFirst;
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    61
                yourself.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    62
    Java flushAllJavaResources.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    63
    self breakPoint:#mh.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    64
    Java initialize.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    65
    JavaVM initializeVM.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    66
    classpath do:[:each | 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    67
        Java addToClassPath:each
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    68
    ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    69
    (Java classForName:class) main:arguments asArray.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    70
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    71
    "Created: / 07-02-2011 / 10:55:41 / Marcel Hlopko <hlopik@gmail.com>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    72
    "Modified: / 08-02-2011 / 00:55:42 / Marcel Hlopko <hlopik@gmail.com>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    73
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    74
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    75
!JavaStartup class methodsFor:'documentation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    76
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    77
version_SVN
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    78
    ^ '$Id$'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    79
! !