Skip to content

Commit

Permalink
Use new instance methods of Dispatch. Remove debug println from last …
Browse files Browse the repository at this point in the history
…release. Fix the {xxxx-xxxx-xxxx-xxxx} logic to actually work
  • Loading branch information
enebo committed Dec 27, 2010
1 parent bb093bc commit 6cf0ab8
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 19 deletions.
Binary file modified lib/racob-x64.dll
Binary file not shown.
Binary file modified lib/racob-x86.dll
Binary file not shown.
Binary file modified lib/racob.jar
Binary file not shown.
Binary file modified lib/win32ole/win32ole.jar
Binary file not shown.
35 changes: 16 additions & 19 deletions src/org/jruby/ext/win32ole/RubyWIN32OLE.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
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;
Expand Down Expand Up @@ -73,23 +72,21 @@ public IRubyObject each(ThreadContext context, Block block) {
@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;
}
Expand Down Expand Up @@ -126,14 +123,15 @@ public IRubyObject ole_free(ThreadContext context) {
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();
}

Expand All @@ -154,7 +152,7 @@ private IRubyObject invokeSet(ThreadContext context, String methodName, IRubyObj
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();
}

Expand All @@ -164,10 +162,9 @@ private IRubyObject invokeInternal(ThreadContext context, IRubyObject dispid,
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) {
Expand Down Expand Up @@ -201,10 +198,10 @@ private Object[] makeObjectArgs(RubyArray argsArray) {

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
Expand Down Expand Up @@ -300,8 +297,8 @@ public static IRubyObject date2ruby(Ruby runtime, Date date) {
}

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;
Expand Down

0 comments on commit 6cf0ab8

Please sign in to comment.