src/org/jruby/ext/win32ole/RubyWIN32OLE.java in jruby-win32ole-0.8.2 vs src/org/jruby/ext/win32ole/RubyWIN32OLE.java in jruby-win32ole-0.8.3
- old
+ new
@@ -3,11 +3,10 @@
import org.racob.com.Dispatch;
import org.racob.com.EnumVariant;
import org.racob.com.Variant;
import java.util.Calendar;
import java.util.Date;
-import java.util.List;
import org.jruby.Ruby;
import org.jruby.RubyArray;
import org.jruby.RubyClass;
import org.jruby.RubyInteger;
import org.jruby.RubyObject;
@@ -71,27 +70,25 @@
}
@JRubyMethod(required = 3)
public IRubyObject _getproperty(ThreadContext context, IRubyObject dispid,
IRubyObject args, IRubyObject argTypes) {
- RubyArray argsArray = args.convertToArray();
- Object[] objectArgs = makeObjectArgs(argsArray);
- int dispatchId = (int) RubyInteger.num2long(dispid);
+ Object[] objectArgs = makeObjectArgs(args.convertToArray());
+ int id = (int) RubyInteger.num2long(dispid);
+ Ruby runtime = context.getRuntime();
- if (objectArgs.length == 0) {
- return fromObject(context.getRuntime(), Dispatch.callO(dispatch, dispatchId));
- }
+ if (objectArgs.length == 0) return fromObject(runtime, dispatch.callO(id));
- return fromVariant(context.getRuntime(),
- Dispatch.call(dispatch, dispatchId, objectArgs));
+ return fromVariant(runtime, dispatch.call(id, objectArgs));
}
@JRubyMethod(required = 1, rest = true)
public IRubyObject initialize(ThreadContext context, IRubyObject[] args) {
String id = args[0].convertToString().asJavaString();
+ String progId = toProgID(id);
- dispatch = new Dispatch(toProgID(id));
+ dispatch = new Dispatch(progId);
return this;
}
@JRubyMethod(required = 1, rest = true)
@@ -124,18 +121,19 @@
@JRubyMethod(name = "[]", required = 1)
public IRubyObject op_aref(ThreadContext context, IRubyObject property) {
String propertyName = property.asJavaString();
- return fromVariant(context.getRuntime(), Dispatch.get(dispatch, propertyName));
+ return fromVariant(context.getRuntime(), dispatch.get(propertyName));
}
@JRubyMethod(name = "[]=", required = 2)
public IRubyObject op_aset(ThreadContext context, IRubyObject property, IRubyObject value) {
String propertyName = property.asJavaString();
- Dispatch.put(dispatch, propertyName, toObject(value));
+ dispatch.put(propertyName, toObject(value));
+
return context.getRuntime().getNil();
}
@JRubyMethod()
public IRubyObject _setproperty(ThreadContext context, IRubyObject dispid,
@@ -152,24 +150,23 @@
private IRubyObject invokeSet(ThreadContext context, String methodName, IRubyObject[] args) {
Object[] objectArgs = makeObjectArgs(args, 1);
int[] errorArgs = new int[objectArgs.length];
- Dispatch.invoke(dispatch, methodName, Dispatch.Put, objectArgs, errorArgs);
+ dispatch.invoke(methodName, Dispatch.Put, objectArgs, errorArgs);
return context.getRuntime().getNil();
}
private IRubyObject invokeInternal(ThreadContext context, IRubyObject dispid,
IRubyObject args, IRubyObject argTypes, int dispatchType) {
RubyArray argsArray = args.convertToArray();
int dispatchId = (int) RubyInteger.num2long(dispid);
Object[] objectArgs = makeObjectArgs(argsArray);
int[] errorArgs = makeErrorArgs(objectArgs.length);
- Variant returnValue = Dispatch.invoke(dispatch, dispatchId, dispatchType,
+ Variant returnValue = dispatch.invoke(dispatchId, dispatchType,
objectArgs, errorArgs);
- System.out.println("INVOKEINTERNAL: " + returnValue);
return fromVariant(context.getRuntime(), returnValue);
}
private int[] makeErrorArgs(int size) {
return size <= 0 ? EMPTY_ERROR_ARGS : new int[size];
}
@@ -199,14 +196,14 @@
return objectArgs;
}
private IRubyObject invokeMethodOrGet(ThreadContext context, String methodName, IRubyObject[] args) {
if (args.length == 1) { // No-arg call
- return fromObject(context.getRuntime(), Dispatch.callO(dispatch, methodName));
+ return fromObject(context.getRuntime(), dispatch.callO(methodName));
}
return fromVariant(context.getRuntime(),
- Dispatch.callN(dispatch, methodName, makeObjectArgs(args, 1)));
+ dispatch.callN(methodName, makeObjectArgs(args, 1)));
}
@Override
public Object toJava(Class klass) {
return dispatch;
@@ -298,11 +295,11 @@
return runtime.newTime(cal.getTimeInMillis());
}
public static String toProgID(String id) {
- if (id != null && id.startsWith("{{") && id.endsWith("}}")) {
- return id.substring(2, id.length() - 2);
+ if (id != null && id.startsWith("{") && id.endsWith("}")) {
+ return "clsid:" + id.substring(1, id.length() - 1);
}
return id;
}
}