After Andrew O'Malley helped me out in compiling and running my project, I have now gone on to add some features to my web service. To test out Kotlin I've created a little uploader resource that looks like this:
[Path("/test")] public class UploadResource { val LOG: Logger? = LoggerFactory.getLogger(this.javaClass) val fileUploader = FileUploader()[POST]
[Consumes(MediaType.MULTIPART_FORM_DATA)]
[Produces(MediaType.APPLICATION_JSON)]
public fun upload(formDataMultiPart: FormDataMultiPart): Response? {
val files: MutableList<FormDataBodyPart>? = formDataMultiPart.getFields(“files”)
if (files == null)
return Response.status(400)?.build() val message = StringBuilder() for (file in files) {
val contentDisposition = file.getContentDisposition()
val fileName = contentDisposition.getFileName()
} return Response.status(200)?.entity("Everything is ok")?.build()
}
}
However, I get a very cryptic error at the line val fileName = contentDisposition.getFileName()
. As soon as I type the ‘.’ after contentDisposition, I get the IllegalStateException mentioned in the title:
Kotlin: [Internal Error] java.lang.IllegalStateException: Type parameter descriptor in not initialized: T declared in com.sun.jersey.core.header.ContentDisposition.ContentDispositionBuilder at org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl.checkInitialized(TypeParameterDescriptorImpl.java:101) at org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl.getUpperBoundsAsType(TypeParameterDescriptorImpl.java:158) at org.jetbrains.jet.lang.types.SubstitutionUtils.makeStarProjection(SubstitutionUtils.java:120) at org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer$3.visitClassType(JavaTypeTransformer.java:168) at org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer$3.visitClassType(JavaTypeTransformer.java:113) at com.intellij.psi.PsiClassType.accept(PsiClassType.java:218) at org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer.transformToType(JavaTypeTransformer.java:113) at org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver.initializeTypeParameter(JavaSignatureResolver.java:296) at org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver.initializeTypeParameters(JavaSignatureResolver.java:321) at org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver.doCreateClassDescriptor(JavaClassResolver.java:261) at org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver.createJavaClassDescriptor(JavaClassResolver.java:226) at org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver.doResolveClass(JavaClassResolver.java:193) at org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver.resolveClass(JavaClassResolver.java:177) at org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver.resolveClass(JavaClassResolver.java:140) at org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver.resolveInnerClass(JavaInnerClassResolver.java:76) at org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver.resolveInnerClasses(JavaInnerClassResolver.java:62) at org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver.resolveInnerClasses(JavaInnerClassResolver.java:51) at org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver.resolveInnerClasses(JavaDescriptorResolver.java:269) at org.jetbrains.jet.lang.resolve.java.scope.JavaClassMembersScope.computeInnerClasses(JavaClassMembersScope.java:74) at org.jetbrains.jet.lang.resolve.java.scope.JavaBaseScope.getInnerClasses(JavaBaseScope.java:173) at org.jetbrains.jet.lang.resolve.java.scope.JavaClassMembersScope.getInnerClassesMap(JavaClassMembersScope.java:62) at org.jetbrains.jet.lang.resolve.java.scope.JavaClassMembersScope.getClassifier(JavaClassMembersScope.java:88) at org.jetbrains.jet.lang.resolve.calls.tasks.CallableDescriptorCollectors$FunctionCollector.addConstructors(CallableDescriptorCollectors.java:70) at org.jetbrains.jet.lang.resolve.calls.tasks.CallableDescriptorCollectors$FunctionCollector.getMembersByName(CallableDescriptorCollectors.java:59) at org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer.doComputeTasks(TaskPrioritizer.java:158) at org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer.computePrioritizedTasks(TaskPrioritizer.java:130) at org.jetbrains.jet.lang.resolve.calls.CallResolver.resolveFunctionCall(CallResolver.java:156) at org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver.getResolvedCallForFunction(CallExpressionResolver.java:199) at org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver.getCallExpressionTypeInfoWithoutFinalTypeCheck(CallExpressionResolver.java:311) at org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver.getSelectorReturnTypeInfo(CallExpressionResolver.java:370) at org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver.getQualifiedExpressionTypeInfo(CallExpressionResolver.java:417) at org.jetbrains.jet.lang.types.expressions.BasicExpressionTypingVisitor.visitQualifiedExpression(BasicExpressionTypingVisitor.java:719) at org.jetbrains.jet.lang.types.expressions.BasicExpressionTypingVisitor.visitQualifiedExpression(BasicExpressionTypingVisitor.java:74) at org.jetbrains.jet.lang.psi.JetVisitor.visitDotQualifiedExpression(JetVisitor.java:257) at org.jetbrains.jet.lang.psi.JetDotQualifiedExpression.accept(JetDotQualifiedExpression.java:34) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.visitJetElement(ExpressionTypingVisitorDispatcher.java:220) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.visitJetElement(ExpressionTypingVisitorDispatcher.java:33) at org.jetbrains.jet.lang.psi.JetVisitor.visitExpression(JetVisitor.java:149) at org.jetbrains.jet.lang.psi.JetVisitor.visitQualifiedExpression(JetVisitor.java:249) at org.jetbrains.jet.lang.psi.JetVisitor.visitDotQualifiedExpression(JetVisitor.java:257) at org.jetbrains.jet.lang.psi.JetDotQualifiedExpression.accept(JetDotQualifiedExpression.java:34) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:115) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:85) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.getTypeInfo(ExpressionTypingServices.java:135) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.getType(ExpressionTypingServices.java:140) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.safeGetType(ExpressionTypingServices.java:123) at org.jetbrains.jet.lang.resolve.DescriptorResolver.resolveInitializerType(DescriptorResolver.java:1092) at org.jetbrains.jet.lang.resolve.DescriptorResolver.getVariableType(DescriptorResolver.java:1027) at org.jetbrains.jet.lang.resolve.DescriptorResolver.resolveLocalVariableDescriptor(DescriptorResolver.java:752) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorForStatements.visitProperty(ExpressionTypingVisitorForStatements.java:121) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorForStatements.visitProperty(ExpressionTypingVisitorForStatements.java:51) at org.jetbrains.jet.lang.psi.JetProperty.accept(JetProperty.java:58) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:115) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:93) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.getBlockReturnedTypeWithWritableScope(ExpressionTypingServices.java:331) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.getBlockReturnedType(ExpressionTypingServices.java:215) at org.jetbrains.jet.lang.types.expressions.BasicExpressionTypingVisitor.visitBlockExpression(BasicExpressionTypingVisitor.java:570) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorForStatements.visitBlockExpression(ExpressionTypingVisitorForStatements.java:353) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorForStatements.visitBlockExpression(ExpressionTypingVisitorForStatements.java:51) at org.jetbrains.jet.lang.psi.JetBlockExpression.accept(JetBlockExpression.java:47) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:115) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:93) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.getBlockReturnedTypeWithWritableScope(ExpressionTypingServices.java:331) at org.jetbrains.jet.lang.types.expressions.ControlStructureTypingVisitor.visitForExpression(ControlStructureTypingVisitor.java:305) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorForStatements.visitForExpression(ExpressionTypingVisitorForStatements.java:338) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorForStatements.visitForExpression(ExpressionTypingVisitorForStatements.java:51) at org.jetbrains.jet.lang.psi.JetForExpression.accept(JetForExpression.java:36) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:115) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:93) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.getBlockReturnedTypeWithWritableScope(ExpressionTypingServices.java:353) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.getBlockReturnedType(ExpressionTypingServices.java:215) at org.jetbrains.jet.lang.types.expressions.BasicExpressionTypingVisitor.visitBlockExpression(BasicExpressionTypingVisitor.java:570) at org.jetbrains.jet.lang.types.expressions.BasicExpressionTypingVisitor.visitBlockExpression(BasicExpressionTypingVisitor.java:566) at org.jetbrains.jet.lang.types.expressions.BasicExpressionTypingVisitor.visitBlockExpression(BasicExpressionTypingVisitor.java:74) at org.jetbrains.jet.lang.psi.JetBlockExpression.accept(JetBlockExpression.java:47) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.visitJetElement(ExpressionTypingVisitorDispatcher.java:220) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.visitJetElement(ExpressionTypingVisitorDispatcher.java:33) at org.jetbrains.jet.lang.psi.JetVisitor.visitExpression(JetVisitor.java:149) at org.jetbrains.jet.lang.psi.JetVisitor.visitBlockExpression(JetVisitor.java:273) at org.jetbrains.jet.lang.psi.JetBlockExpression.accept(JetBlockExpression.java:47) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:115) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:85) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingVisitorDispatcher.getTypeInfo(ExpressionTypingVisitorDispatcher.java:91) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.checkFunctionReturnType(ExpressionTypingServices.java:190) at org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices.checkFunctionReturnType(ExpressionTypingServices.java:168) at org.jetbrains.jet.lang.resolve.BodyResolver.resolveFunctionBody(BodyResolver.java:640) at org.jetbrains.jet.lang.resolve.BodyResolver.resolveFunctionBodies(BodyResolver.java:624) at org.jetbrains.jet.lang.resolve.BodyResolver.resolveBehaviorDeclarationBodies(BodyResolver.java:134) at org.jetbrains.jet.lang.resolve.BodyResolver.resolveBodies(BodyResolver.java:144) at org.jetbrains.jet.lang.resolve.TopDownAnalyzer.doProcess(TopDownAnalyzer.java:133) at org.jetbrains.jet.lang.resolve.TopDownAnalyzer.analyzeFiles(TopDownAnalyzer.java:260) at org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(AnalyzerFacadeForJVM.java:198) at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$1.invoke(KotlinToJVMBytecodeCompiler.java:318) at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$1.invoke(KotlinToJVMBytecodeCompiler.java:313) at org.jetbrains.jet.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.java:235) at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.java:312) at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyzeAndGenerate(KotlinToJVMBytecodeCompiler.java:292) at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyzeAndGenerate(KotlinToJVMBytecodeCompiler.java:273) at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModule(KotlinToJVMBytecodeCompiler.java:107) at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.java:128) at org.jetbrains.jet.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.java:141) at org.jetbrains.jet.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.java:52) at org.jetbrains.jet.cli.common.CLICompiler.exec(CLICompiler.java:128) at org.jetbrains.jet.cli.common.CLICompiler.exec(CLICompiler.java:114) at org.jetbrains.jet.cli.jvm.K2JVMCompiler.exec(K2JVMCompiler.java:185) at org.jetbrains.jet.cli.jvm.K2JVMCompiler.exec(K2JVMCompiler.java:52) at org.jetbrains.jet.cli.common.CLICompiler.exec(CLICompiler.java:42) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.jetbrains.jet.compiler.runner.CompilerRunnerUtil.invokeExecMethod(CompilerRunnerUtil.java:116) at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.execInProcess(KotlinCompilerRunner.java:78) at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.access$000(KotlinCompilerRunner.java:40) at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner$1.fun(KotlinCompilerRunner.java:63) at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner$1.fun(KotlinCompilerRunner.java:60) at org.jetbrains.jet.compiler.runner.CompilerRunnerUtil.outputCompilerMessagesAndHandleExitCode(CompilerRunnerUtil.java:125) at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runInProcess(KotlinCompilerRunner.java:60) at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runCompiler(KotlinCompilerRunner.java:52) at org.jetbrains.jet.jps.build.KotlinBuilder.build(KotlinBuilder.java:113) at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:998) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:739) at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:770) at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:702) at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:523) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:314) at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:179) at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129) at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:220) at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:112) at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:132) at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)
I am not able to call any method from the contentDisposition instance, even though this is a completely valid and legal action in Java. What did I do wrong?