Code cleanup

This commit is contained in:
Ilya Chernikov
2015-10-13 19:06:45 +02:00
parent 029e823b06
commit 3f83a2895f
4 changed files with 7 additions and 89 deletions
@@ -271,7 +271,7 @@ public object KotlinCompilerClient {
}
.filterNotNull()
.toList()
return when (daemons.size()) {
return when (daemons.size) {
0 -> null
1 -> daemons.first()
else -> throw IllegalStateException("Multiple daemons serving the same compiler, reset with the cleanup required")
@@ -50,15 +50,19 @@ public object LoopbackNetworkInterface {
}
}
// base socket factories by default don't implement equals properly (see e.g. http://stackoverflow.com/questions/21555710/rmi-and-jmx-socket-factories)
// so implementing it in derived classes using the fact that they are singletons
data class ServerLoopbackSocketFactory : RMIServerSocketFactory, Serializable {
class ServerLoopbackSocketFactory : RMIServerSocketFactory, Serializable {
override fun equals(other: Any?): Boolean = other === this || super.equals(other)
@Throws(IOException::class)
override fun createServerSocket(port: Int): ServerSocket = ServerSocket(port, SERVER_SOCKET_BACKLOG_SIZE, InetAddress.getByName(loopbackInetAddressName))
}
data class ClientLoopbackSocketFactory : RMIClientSocketFactory, Serializable {
class ClientLoopbackSocketFactory : RMIClientSocketFactory, Serializable {
override fun equals(other: Any?): Boolean = other === this || super.equals(other)
@Throws(IOException::class)
override fun createSocket(host: String, port: Int): Socket = Socket(InetAddress.getByName(loopbackInetAddressName), port)
@@ -209,11 +209,4 @@ class CompileServiceImpl(
if (!alive) throw IllegalStateException("Kotlin Compiler Service is not in alive state")
body()
}
// sometimes used for debugging
fun<R> spy(msg: String, body: () -> R): R {
val res = body()
log.info(msg + " = " + res.toString())
return res
}
}
@@ -1,79 +0,0 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.rmi.service
import java.io.FilePermission
import java.net.SocketPermission
import java.security.CodeSource
import java.security.Permission
import java.security.PermissionCollection
import java.security.Policy
import java.util.ArrayList
import java.util.Collections
import java.util.Enumeration
import java.util.PropertyPermission
public class DaemonPolicy(val port: Int) : Policy() {
private fun createPermissions(): PermissionCollection {
val perms = DaemonPermissionCollection()
val socketPermission = SocketPermission("localhost:$port-", "connect, accept, resolve")
val propertyPermission = PropertyPermission("localhost:$port", "read")
//val filePermission = FilePermission("<<ALL FILES>>", "read")
perms.add(socketPermission)
perms.add(propertyPermission)
//perms.add(filePermission)
return perms
}
private val perms: PermissionCollection by lazy { createPermissions() }
override fun getPermissions(codesource: CodeSource?): PermissionCollection {
return perms
}
}
class DaemonPermissionCollection : PermissionCollection() {
val perms = ArrayList<Permission>()
override fun add(p: Permission) {
perms.add(p)
}
override fun implies(p: Permission): Boolean = perms.any { implies(p) }
override fun elements(): Enumeration<Permission> = Collections.enumeration(perms)
override fun isReadOnly(): Boolean = false
//
// companion object {
//
// private val serialVersionUID = 614300921365729272L
// }
}
public fun setDaemonPpermissions(port: Int) {
Policy.setPolicy(DaemonPolicy(port))
}