libpurple.framework 2.3.1 as before but with HAVE_OPENSSL defined, which enables...
[adiumx.git] / Source / AIJavaController.m
blob6cd5aefb4dec181746b32246cd976930b6a305f5
1 //
2 //  AIJavaController.m
3 //  Adium
4 //
5 //  Created by Andreas Monitzer on 2006-07-31.
6 //  Copyright 2006 Andreas Monitzer. All rights reserved.
7 //
9 #import "AIJavaController.h"
10 #import <JavaVM/NSJavaVirtualMachine.h>
12 @interface JavaVector : NSObject {
15 - (void)add:(id)obj;
16 - (NSString*)toString;
18 @end
20 @protocol JavaCocoaAdapter
21 - (JavaClassLoader*)classLoader:(JavaVector*)jars :(JavaClassLoader*)parent;
22 @end
24 @implementation AIJavaController
26 /*!
27 * @brief Controller loaded
28  */
29 - (void)controllerDidLoad
33 /*!
34 * @brief Controller will close
35  */
36 - (void)controllerWillClose
40 - (JavaClassLoader *)classLoaderWithJARs:(NSArray *)jars
42     return [self classLoaderWithJARs:jars parentClassLoader:nil];
45 /*!
46  * @brief XXX
47  *
48  * @result a JavaClassLoader which loads classes from the indicated jars
49  */
50 - (JavaClassLoader*)classLoaderWithJARs:(NSArray*)jars parentClassLoader:(JavaClassLoader*)parent
52     if (!vm) {
53         vm = [[NSJavaVirtualMachine alloc] initWithClassPath:[NSJavaVirtualMachine defaultClassPath]];
54         //Dynamically load class file
55         JavaCocoaAdapter = [vm defineClass:[NSData dataWithContentsOfFile:[[NSBundle bundleForClass:[self class]] pathForResource:@"JavaCocoaAdapter" ofType:@"class"]] withName:@"net/adium/JavaCocoaAdapter"];
56         NSLog(@"JavaCocoaAdapter = %@", JavaCocoaAdapter);
57     }
58     
59     //Convert NSArray to java.util.Vector
60     JavaVector *vec = [[vm findClass:@"java.util.Vector"] newWithSignature:@"(I)",[jars count]];
61     
62     NSEnumerator *enumerator = [jars objectEnumerator];
63     NSString     *path;
64     while ((path = [enumerator nextObject])) {
65         [vec add:path];
66         }
68     JavaClassLoader *result = [JavaCocoaAdapter classLoader:vec :parent];
69     [vec release];
71     return result;
74 @end