Kaydet (Commit) 970b0ebb authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Stephan Bergmann

[API CHANGE] Drop deprecated I*Description interfaces

And make the fields of com.sun.star.uno.Type private

Change-Id: Ied7698b4157460e9726f271092c92b6b382239fd
Reviewed-on: https://gerrit.libreoffice.org/25971Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
Tested-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst f30aa6e5
......@@ -27,7 +27,6 @@ import java.lang.reflect.InvocationTargetException;
import com.sun.star.lib.uno.typedesc.MethodDescription;
import com.sun.star.uno.Any;
import com.sun.star.uno.IMethodDescription;
import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XCurrentContext;
......@@ -79,7 +78,7 @@ public class Job {
if (_iMessage.isRequest()) {
Object result = null;
Throwable exception = null;
IMethodDescription md = _iMessage.getMethod();
MethodDescription md = _iMessage.getMethod();
Object[] args = _iMessage.getArguments();
XCurrentContext oldCC = UnoRuntime.getCurrentContext();
UnoRuntime.setCurrentContext(_iMessage.getCurrentContext());
......
......@@ -19,8 +19,8 @@
package com.sun.star.lib.uno.environments.remote;
import com.sun.star.uno.IMethodDescription;
import com.sun.star.uno.ITypeDescription;
import com.sun.star.lib.uno.typedesc.MethodDescription;
import com.sun.star.lib.uno.typedesc.TypeDescription;
import com.sun.star.uno.XCurrentContext;
/**
......@@ -29,7 +29,7 @@ import com.sun.star.uno.XCurrentContext;
public class Message {
public Message(
ThreadId threadId, boolean request, String objectId,
ITypeDescription type, IMethodDescription method, boolean synchronous,
TypeDescription type, MethodDescription method, boolean synchronous,
XCurrentContext currentContext, boolean abnormalTermination,
Object result, Object[] arguments)
{
......@@ -87,7 +87,7 @@ public class Message {
* @return the (non-<code>null</code>) type for a request, <code>null</code>
* for a reply.
*/
public final ITypeDescription getType() {
public final TypeDescription getType() {
return type;
}
......@@ -95,13 +95,13 @@ public class Message {
* Returns the method description of a request message.
*
* <p>Valid only for request messages. The returned
* <code>IMethodDescription</code> is consistent with the type of the
* <code>MethodDescription</code> is consistent with the type of the
* message.</p>
*
* @return the (non-<code>null</code>) method description for a request,
* <code>null</code> for a reply.
*/
public final IMethodDescription getMethod() {
public final MethodDescription getMethod() {
return method;
}
......@@ -177,8 +177,8 @@ public class Message {
private final ThreadId threadId;
private final boolean request;
private final String objectId;
private final ITypeDescription type;
private final IMethodDescription method;
private final TypeDescription type;
private final MethodDescription method;
private final boolean synchronous;
private final XCurrentContext currentContext;
private final boolean abnormalTermination;
......
......@@ -18,23 +18,23 @@
*/
package com.sun.star.lib.uno.protocols.urp;
import java.io.ByteArrayOutputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import com.sun.star.lib.uno.environments.remote.ThreadId;
import com.sun.star.lib.uno.typedesc.FieldDescription;
import com.sun.star.lib.uno.typedesc.TypeDescription;
import com.sun.star.uno.Any;
import com.sun.star.uno.Enum;
import com.sun.star.uno.IBridge;
import com.sun.star.uno.IFieldDescription;
import com.sun.star.uno.Type;
import com.sun.star.uno.TypeClass;
import com.sun.star.uno.XInterface;
import java.io.ByteArrayOutputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
final class Marshal {
public Marshal(IBridge bridge, short cacheSize) {
this.bridge = bridge;
......@@ -281,7 +281,7 @@ final class Marshal {
if (value == null) {
writeCompressedNumber(0);
} else {
TypeDescription ctype = (TypeDescription) type.getComponentType();
TypeDescription ctype = type.getComponentType();
if (ctype.getTypeClass() == TypeClass.BYTE) {
byte[] data = (byte[]) value;
writeCompressedNumber(data.length);
......@@ -310,10 +310,10 @@ final class Marshal {
}
private void writeStructValue(TypeDescription type, Object value) throws IllegalAccessException {
IFieldDescription[] fields = type.getFieldDescriptions();
FieldDescription[] fields = type.getFieldDescriptions();
for (int i = 0; i < fields.length; ++i) {
writeValue(
(TypeDescription) fields[i].getTypeDescription(),
fields[i].getTypeDescription(),
value == null ? null : fields[i].getField().get(value));
}
}
......
......@@ -19,11 +19,12 @@
package com.sun.star.lib.uno.protocols.urp;
import com.sun.star.lib.uno.environments.remote.ThreadId;
import com.sun.star.uno.IMethodDescription;
import java.util.HashMap;
import java.util.Stack;
import com.sun.star.lib.uno.environments.remote.ThreadId;
import com.sun.star.lib.uno.typedesc.MethodDescription;
final class PendingRequests {
public synchronized void push(ThreadId tid, Item item) {
......@@ -46,7 +47,7 @@ final class PendingRequests {
public static final class Item {
public Item(
boolean internal, IMethodDescription function, Object[] arguments)
boolean internal, MethodDescription function, Object[] arguments)
{
this.internal = internal;
this.function = function;
......@@ -54,7 +55,7 @@ final class PendingRequests {
}
public final boolean internal;
public final IMethodDescription function;
public final MethodDescription function;
public final Object[] arguments;
}
......
......@@ -30,10 +30,10 @@ import com.sun.star.lib.uno.typedesc.TypeDescription;
import com.sun.star.uno.Any;
import com.sun.star.uno.Enum;
import com.sun.star.uno.IBridge;
import com.sun.star.uno.IFieldDescription;
import com.sun.star.uno.Type;
import com.sun.star.uno.TypeClass;
import com.sun.star.uno.XInterface;
import com.sun.star.lib.uno.typedesc.FieldDescription;
final class Unmarshal {
public Unmarshal(IBridge bridge, int cacheSize) {
......@@ -329,10 +329,9 @@ final class Unmarshal {
case TypeClass.SEQUENCE_value:
{
Object value = readSequenceValue(type);
TypeDescription ctype = (TypeDescription)
type.getComponentType();
TypeDescription ctype = type.getComponentType();
while (ctype.getTypeClass() == TypeClass.SEQUENCE) {
ctype = (TypeDescription) ctype.getComponentType();
ctype = ctype.getComponentType();
}
switch (ctype.getTypeClass().getValue()) {
case TypeClass.UNSIGNED_SHORT_value:
......@@ -377,7 +376,7 @@ final class Unmarshal {
private Object readSequenceValue(TypeDescription type) throws IOException {
int len = readCompressedNumber();
TypeDescription ctype = (TypeDescription) type.getComponentType();
TypeDescription ctype = type.getComponentType();
if (ctype.getTypeClass() == TypeClass.BYTE) {
byte[] data = new byte[len];
readBytes(data);
......@@ -454,13 +453,13 @@ final class Unmarshal {
}
private void readFields(TypeDescription type, Object value) {
IFieldDescription[] fields = type.getFieldDescriptions();
FieldDescription[] fields = type.getFieldDescriptions();
for (int i = 0; i < fields.length; ++i) {
try {
fields[i].getField().set(
value,
readValue(
(TypeDescription) fields[i].getTypeDescription()));
fields[i].getTypeDescription()));
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
......
......@@ -21,14 +21,14 @@ package com.sun.star.lib.uno.protocols.urp;
import com.sun.star.lib.uno.environments.remote.Message;
import com.sun.star.lib.uno.environments.remote.ThreadId;
import com.sun.star.uno.IMethodDescription;
import com.sun.star.uno.ITypeDescription;
import com.sun.star.lib.uno.typedesc.MethodDescription;
import com.sun.star.lib.uno.typedesc.TypeDescription;
import com.sun.star.uno.XCurrentContext;
final class UrpMessage extends Message {
public UrpMessage(
ThreadId threadId, boolean request, String objectId,
ITypeDescription type, IMethodDescription method, boolean synchronous,
TypeDescription type, MethodDescription method, boolean synchronous,
XCurrentContext currentContext, boolean abnormalTermination,
Object result, Object[] arguments, boolean internal)
{
......
......@@ -30,8 +30,6 @@ import com.sun.star.lib.uno.typedesc.MethodDescription;
import com.sun.star.lib.uno.typedesc.TypeDescription;
import com.sun.star.uno.Any;
import com.sun.star.uno.IBridge;
import com.sun.star.uno.IMethodDescription;
import com.sun.star.uno.ITypeDescription;
import com.sun.star.uno.Type;
import com.sun.star.uno.TypeClass;
import com.sun.star.uno.UnoRuntime;
......@@ -159,7 +157,7 @@ public final class urp implements IProtocol {
int header = HEADER_LONGHEADER;
PendingRequests.Item pending = pendingIn.pop(tid);
TypeDescription resultType;
ITypeDescription[] argTypes;
TypeDescription[] argTypes;
Object[] args;
if (exception) {
header |= HEADER_EXCEPTION;
......@@ -167,8 +165,7 @@ public final class urp implements IProtocol {
argTypes = null;
args = null;
} else {
resultType = (TypeDescription)
pending.function.getReturnSignature();
resultType = pending.function.getReturnSignature();
argTypes = pending.function.getOutSignature();
args = pending.arguments;
}
......@@ -187,7 +184,7 @@ public final class urp implements IProtocol {
for (int i = 0; i < argTypes.length; ++i) {
if (argTypes[i] != null) {
marshal.writeValue(
(TypeDescription) argTypes[i].getComponentType(),
argTypes[i].getComponentType(),
Array.get(args[i], 0));
}
}
......@@ -417,13 +414,13 @@ public final class urp implements IProtocol {
? (XCurrentContext) unmarshal.readInterface(
new Type(XCurrentContext.class))
: null;
IMethodDescription desc = inL1Type.getMethodDescription(functionId);
MethodDescription desc = inL1Type.getMethodDescription(functionId);
if (desc == null) {
throw new IOException(
"read URP request with unsupported function ID " + functionId);
}
ITypeDescription[] inSig = desc.getInSignature();
ITypeDescription[] outSig = desc.getOutSignature();
TypeDescription[] inSig = desc.getInSignature();
TypeDescription[] outSig = desc.getOutSignature();
Object[] args = new Object[inSig.length];
for (int i = 0; i < args.length; ++i) {
if (inSig[i] != null) {
......@@ -433,10 +430,10 @@ public final class urp implements IProtocol {
Array.set(
inout, 0,
unmarshal.readValue(
(TypeDescription) outSig[i].getComponentType()));
outSig[i].getComponentType()));
args[i] = inout;
} else {
args[i] = unmarshal.readValue((TypeDescription) inSig[i]);
args[i] = unmarshal.readValue(inSig[i]);
}
} else {
args[i] = Array.newInstance(
......@@ -459,7 +456,7 @@ public final class urp implements IProtocol {
}
PendingRequests.Item pending = pendingOut.pop(inL1Tid);
TypeDescription resultType;
ITypeDescription[] argTypes;
TypeDescription[] argTypes;
Object[] args;
boolean exception = (header & HEADER_EXCEPTION) != 0;
if (exception) {
......@@ -467,8 +464,7 @@ public final class urp implements IProtocol {
argTypes = null;
args = null;
} else {
resultType = (TypeDescription)
pending.function.getReturnSignature();
resultType = pending.function.getReturnSignature();
argTypes = pending.function.getOutSignature();
args = pending.arguments;
}
......@@ -480,7 +476,7 @@ public final class urp implements IProtocol {
Array.set(
args[i], 0,
unmarshal.readValue(
(TypeDescription) argTypes[i].getComponentType()));
argTypes[i].getComponentType()));
}
}
}
......@@ -494,7 +490,7 @@ public final class urp implements IProtocol {
ThreadId tid, Object[] arguments)
throws IOException
{
IMethodDescription desc = type.getMethodDescription(function);
MethodDescription desc = type.getMethodDescription(function);
synchronized (output) {
if (desc.getIndex() == MethodDescription.ID_RELEASE
&& releaseQueue.size() < MAX_RELEASE_QUEUE_SIZE)
......@@ -512,7 +508,7 @@ public final class urp implements IProtocol {
private boolean writeRequest(
boolean internal, String oid, TypeDescription type,
IMethodDescription desc, ThreadId tid, Object[] arguments,
MethodDescription desc, ThreadId tid, Object[] arguments,
boolean flush)
throws IOException
{
......@@ -589,17 +585,17 @@ public final class urp implements IProtocol {
UnoRuntime.getCurrentContext(),
new Type(XCurrentContext.class));
}
ITypeDescription[] inSig = desc.getInSignature();
ITypeDescription[] outSig = desc.getOutSignature();
TypeDescription[] inSig = desc.getInSignature();
TypeDescription[] outSig = desc.getOutSignature();
for (int i = 0; i < inSig.length; ++i) {
if (inSig[i] != null) {
if (outSig[i] != null) {
marshal.writeValue(
(TypeDescription) outSig[i].getComponentType(),
outSig[i].getComponentType(),
((Object[]) arguments[i])[0]);
} else {
marshal.writeValue(
(TypeDescription) inSig[i], arguments[i]);
inSig[i], arguments[i]);
}
}
}
......@@ -679,7 +675,7 @@ public final class urp implements IProtocol {
private static final class QueuedRelease {
public QueuedRelease(
boolean internal, String objectId, TypeDescription type,
IMethodDescription method, ThreadId threadId)
MethodDescription method, ThreadId threadId)
{
this.internal = internal;
this.objectId = objectId;
......@@ -691,7 +687,7 @@ public final class urp implements IProtocol {
public final boolean internal;
public final String objectId;
public final TypeDescription type;
public final IMethodDescription method;
public final MethodDescription method;
public final ThreadId threadId;
}
......@@ -756,7 +752,7 @@ public final class urp implements IProtocol {
private ThreadId outL1Tid = null;
private String outL1Oid = null;
private ITypeDescription outL1Type = null;
private TypeDescription outL1Type = null;
private final ArrayList<QueuedRelease> releaseQueue = new ArrayList<QueuedRelease>(); // of QueuedRelease
}
......
......@@ -37,12 +37,8 @@ $(eval $(call gb_Jar_add_sourcefiles,ridl,\
ridljar/com/sun/star/uno/Enum \
ridljar/com/sun/star/uno/IBridge \
ridljar/com/sun/star/uno/IEnvironment \
ridljar/com/sun/star/uno/IFieldDescription \
ridljar/com/sun/star/uno/IMapping \
ridljar/com/sun/star/uno/IMemberDescription \
ridljar/com/sun/star/uno/IMethodDescription \
ridljar/com/sun/star/uno/IQueryInterface \
ridljar/com/sun/star/uno/ITypeDescription \
ridljar/com/sun/star/uno/Type \
ridljar/com/sun/star/uno/UnoRuntime \
))
......
......@@ -18,13 +18,14 @@
package com.sun.star.lib.uno.typedesc;
import com.sun.star.uno.IFieldDescription;
import com.sun.star.uno.ITypeDescription;
import java.lang.reflect.Field;
final class FieldDescription implements IFieldDescription {
/**
* Describes non method members.
*/
public final class FieldDescription {
public FieldDescription(
String name, int index, ITypeDescription typeDescription, Field field)
String name, int index, TypeDescription typeDescription, Field field)
{
this.name = name;
this.index = index;
......@@ -52,16 +53,26 @@ final class FieldDescription implements IFieldDescription {
return index;
}
public ITypeDescription getTypeDescription() {
/**
* Gives the name of this member.
* <p>
* @return the name
*/
public TypeDescription getTypeDescription() {
return typeDescription;
}
/**
* Gives native java field of this member.
* <p>
* @return the java field
*/
public Field getField() {
return field;
}
private final String name;
private final int index;
private final ITypeDescription typeDescription;
private final TypeDescription typeDescription;
private final Field field;
}
......@@ -18,11 +18,10 @@
package com.sun.star.lib.uno.typedesc;
import com.sun.star.uno.ITypeDescription;
import com.sun.star.uno.TypeClass;
final class MemberDescriptionHelper {
public static boolean isUnsigned(ITypeDescription desc) {
public static boolean isUnsigned(TypeDescription desc) {
switch (getElementTypeClass(desc).getValue()) {
case TypeClass.UNSIGNED_SHORT_value:
case TypeClass.UNSIGNED_LONG_value:
......@@ -34,15 +33,15 @@ final class MemberDescriptionHelper {
}
}
public static boolean isAny(ITypeDescription desc) {
public static boolean isAny(TypeDescription desc) {
return getElementTypeClass(desc) == TypeClass.ANY;
}
public static boolean isInterface(ITypeDescription desc) {
public static boolean isInterface(TypeDescription desc) {
return getElementTypeClass(desc) == TypeClass.INTERFACE;
}
private static TypeClass getElementTypeClass(ITypeDescription desc) {
private static TypeClass getElementTypeClass(TypeDescription desc) {
for (;; desc = desc.getComponentType()) {
TypeClass tc = desc.getTypeClass();
if (tc != TypeClass.SEQUENCE) {
......
......@@ -18,14 +18,15 @@
package com.sun.star.lib.uno.typedesc;
import com.sun.star.uno.IMethodDescription;
import com.sun.star.uno.ITypeDescription;
import java.lang.reflect.Method;
public final class MethodDescription implements IMethodDescription {
/**
* Allows to examine a method in detail. It gives a view to java methods from a UNO point.
*/
public final class MethodDescription {
MethodDescription(
String name, int index, boolean oneway, ITypeDescription[] inSignature,
ITypeDescription[] outSignature, ITypeDescription returnSignature,
String name, int index, boolean oneway, TypeDescription[] inSignature,
TypeDescription[] outSignature, TypeDescription returnSignature,
Method method)
{
this.name = name;
......@@ -37,7 +38,7 @@ public final class MethodDescription implements IMethodDescription {
this.method = method;
}
MethodDescription(IMethodDescription other, int index) {
MethodDescription(MethodDescription other, int index) {
this(
other.getName(), index, other.isOneway(), other.getInSignature(),
other.getOutSignature(), other.getReturnSignature(),
......@@ -64,26 +65,54 @@ public final class MethodDescription implements IMethodDescription {
return index;
}
/**
* Indicates if this method is <code>oneWay</code>,
* respectively if this method may become executed asynchronously.
* @return true means may execute asynchronously .
*/
public boolean isOneway() {
return oneway;
}
/**
* Indicates if this method is const.
* @return true means it is const.
*/
public boolean isConst() {
return false;
}
public ITypeDescription[] getInSignature() {
/**
* Gives any array of <code>TypeDescription</code> of
* the [in] parameters.
* @return the in parameters
*/
public TypeDescription[] getInSignature() {
return inSignature;
}
public ITypeDescription[] getOutSignature() {
/**
* Gives any array of <code>TypeDescription</code> of
* the [out] parameters.
* @return the out parameters
*/
public TypeDescription[] getOutSignature() {
return outSignature;
}
public ITypeDescription getReturnSignature() {
/**
* Gives the <code>TypeDescription</code> of
* the return type.
* @return the return type <code>TypeDescription</code>
*/
public TypeDescription getReturnSignature() {
return returnSignature;
}
/**
* Gives native java method of this method.
* @return the java method
*/
public Method getMethod() {
return method;
}
......@@ -95,8 +124,8 @@ public final class MethodDescription implements IMethodDescription {
private final String name;
private final int index;
private final boolean oneway;
private final ITypeDescription[] inSignature;
private final ITypeDescription[] outSignature;
private final ITypeDescription returnSignature;
private final TypeDescription[] inSignature;
private final TypeDescription[] outSignature;
private final TypeDescription returnSignature;
private final Method method;
}
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you 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 .
*/
package com.sun.star.uno;
import java.lang.reflect.Field;
/**
* The <code>IFieldDescription</code> describes non
* method members.
*
* @deprecated This interface does not cover all the features supported by the
* corresponding (unpublished) implementation. But no client code should need
* to access this functionality, anyway.
*/
public interface IFieldDescription extends IMemberDescription {
/**
* Gives the name of this member.
* <p>
* @return the name
*/
ITypeDescription getTypeDescription();
/**
* Gives native java field of this member.
* <p>
* @return the java field
*/
Field getField();
}
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you 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 .
*/
package com.sun.star.uno;
/**
* The <code>IMemberDescription</code> is the base interface
* for the special subset of typedescriptions, which describe
* members of IDL structs or interfeces.
*
* @deprecated This interface does not cover all the features supported by the
* corresponding (unpublished) implementation. But no client code should need
* to access this functionality, anyway.
*/
public interface IMemberDescription {
/**
* Gives the name of this member.
* @return the name
*/
String getName();
/**
* Indicates if this member is unsigned. (Not useful for IMethodDescription).
* @return the unsigned state
*/
boolean isUnsigned();
/**
* Indicates if this member is an any.
* @return the any state
*/
boolean isAny();
/**
* Indicates if this member is an interface.
* @return the interface state
*/
boolean isInterface();
/**
* Gives the relative index of this member in the declaring
* interface or struct (including superclasses).
* @return the relative index of this member
*/
int getIndex();
}
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you 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 .
*/
package com.sun.star.uno;
import java.lang.reflect.Method;
/**
* The <code>IMethodDescription</code> allows to examine a method
* in detail. It gives a view to java methods from a UNO point.
*
* @deprecated This interface does not cover all the features supported by the
* corresponding (unpublished) implementation. But no client code should need
* to access this functionality, anyway.
*/
public interface IMethodDescription extends IMemberDescription {
/**
* Indicates if this method is <code>oneWay</code>,
* respectively if this method may become executed asynchronously.
* @return true means may execute asynchronously .
*/
boolean isOneway();
/**
* Indicates if this method is const.
* @return true means it is const.
*/
boolean isConst();
/**
* Gives any array of <code>ITypeDescription</code> of
* the [in] parameters.
* @return the in parameters
*/
ITypeDescription[] getInSignature();
/**
* Gives any array of <code>ITypeDescription</code> of
* the [out] parameters.
* @return the out parameters
*/
ITypeDescription[] getOutSignature();
/**
* Gives the <code>ITypeDescription</code> of
* the return type.
* @return the return type <code>ITypeDescription</code>
*/
ITypeDescription getReturnSignature();
/**
* Gives native java method of this method.
* @return the java methodd
*/
Method getMethod();
}
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you 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 .
*/
package com.sun.star.uno;
/**
* The <code>ITypeDescription</code> allows to examine a type
* in detail (e.g. it is used for marshaling/unmarshaling).
* @deprecated This interface does not cover all the features supported by the
* corresponding (unpublished) implementation. But no client code should need
* to access this functionality, anyway.
*/
public interface ITypeDescription {
/**
* Gets the <code>ITypeDescription</code> of the
* super, if it exists.
* @return the <code>ITypeDescription</code>.
*/
ITypeDescription getSuperType();
/**
* Gets the <code>IMethodDescription</code> for every
* method, if this type is an interface. Otherwise
* returns <code>null</code>.
* @return the <code>IMethodDescription[]</code>.
*/
IMethodDescription []getMethodDescriptions();
/**
* Gets the <code>IMethodDescription</code> for the
* method with index methodId, if it exists, otherwise
* returns <code>null</code>.
*
* @param methodId the index.
*
* @return the <code>IMethodDescription</code>.
*/
IMethodDescription getMethodDescription(int methodId);
/**
* Gets the <code>IMethodDescription</code> for the
* method with the name <code>name</code>, if it exists,
* otherwise returns <code>null</code>.
*
* @param name the name of the method.
*
* @return the <code>IMethodDescription</code>.
*/
IMethodDescription getMethodDescription(String name);
/**
* Gets the <code>IFieldDescription</code> for every
* field, if this type is an interface. Otherwise
* returns <code>null</code>.
* @return the <code>IFieldDescription[]</code>.
*/
IFieldDescription []getFieldDescriptions();
/**
* Gets the <code>IFieldDescription</code> for the
* field with the name <code>name</code>, if it exists,
* otherwise returns <code>null</code>.
*
* @param name the name of the field.
*
* @return the <code>IFieldDescription</code>.
*/
IFieldDescription getFieldDescription(String name);
/**
* Gets the IDL <code>TypeClass</code> of the type.
* @return the <code>TypeClass</code>.
*/
TypeClass getTypeClass();
/**
* Gets the component <code>ITypeDescription</code> if
* this is an array type, otherwise returns <code>null</code>.
* @return the <code>ITypeDescription</code>
*/
ITypeDescription getComponentType();
/**
* Gets the (UNO) type name.
* <table>
* <caption>Mapping from UNO types to type names</caption>
* <thead>
* <tr><th>UNO type</th><th>type name</th></tr>
* </thead>
* <tbody>
* <tr><td>VOID</td><td><code>"void"</code></td></tr>
* <tr><td>BOOLEAN</td><td><code>"boolean"</code></td></tr>
* <tr><td>CHAR</td><td><code>"char"</code></td></tr>
* <tr><td>BYTE</td><td><code>"byte"</code></td></tr>
* <tr><td>SHORT</td><td><code>"short"</code></td></tr>
* <tr>
* <td>UNSIGNED SHORT</td><td><code>"unsigned short"</code></td>
* </tr>
* <tr><td>LONG</td><td><code>"long"</code></td></tr>
* <tr><td>UNSIGNED LONG</td><td><code>"unsigned long"</code></td></tr>
* <tr><td>HYPER</td><td><code>"hyper"</code></td></tr>
* <tr>
* <td>UNSIGNED HYPER</td><td><code>"unsigned hyper"</code></td>
* </tr>
* <tr><td>FLOAT</td><td><code>"float"</code></td></tr>
* <tr><td>DOUBLE</td><td><code>"double"</code></td></tr>
* <tr><td>STRING</td><td><code>"string"</code></td></tr>
* <tr><td>TYPE</td><td><code>"type"</code></td></tr>
* <tr><td>ANY</td><td><code>"any"</code></td></tr>
* <tr>
* <td>sequence type of base type <var>T</var></td>
* <td><code>"[]"</code> followed by type name for <var>T</var></td>
* </tr>
* <tr>
* <td>enum type named <var>N</var></td>
* <td><var>N</var> (see below)</td>
* </tr>
* <tr>
* <td>struct type named <var>N</var></td>
* <td><var>N</var> (see below)</td>
* </tr>
* <tr>
* <td>exception type named <var>N</var></td>
* <td><var>N</var> (see below)</td>
* </tr>
* <tr>
* <td>interface type named <var>N</var></td>
* <td><var>N</var> (see below)</td>
* </tr>
* </tbody>
* </table>
* <p>For a UNO type named <var>N</var>, consisting of a sequence of module
* names <var>M<sub>1</sub></var>, ..., <var>M<sub>n</sub></var> followed by
* a simple name <var>S</var>, the corresponding type name consists of the
* same sequence of module names and simple name, with <code>"."</code>
* separating the individual elements.</p>
* @return the type name.
*/
String getTypeName();
/**
* Gets the (Java) array type name.
* <p>The array type name is defined to be the Java class name (as returned
* by <code>Class.forName</code>) of the Java array class that corresponds
* to the UNO sequence type with this type (the UNO type represented by this
* <code>ITypeDescription</code> instance) as base type. For an
* <code>ITypeDescription</code> instance representing the UNO type VOID,
* the array type name is defined to be
* <code>"[Ljava.lang.Void;"</code>.</p>
* @return the array type name.
*/
String getArrayTypeName();
/**
* Gets the corresponding java class for the type.
* @return the corresponding java class.
*/
Class<?> getZClass();
}
......@@ -20,6 +20,8 @@ package com.sun.star.uno;
import java.util.HashMap;
import com.sun.star.lib.uno.typedesc.TypeDescription;
/**
* Represents the UNO built-in type <code>TYPE</code>.
*
......@@ -35,7 +37,7 @@ import java.util.HashMap;
* will never be <code>null</code>. A <code>Type</code> may have an additional
* "z class" (a <code>java.lang.Class</code>), giving a Java class type that
* corresponds to the UNO type. Also, a <code>Type</code> can cache a type
* description (a <code>com.sun.star.uno.ITypeDescription</code>), which can be
* description (a <code>com.sun.star.uno.typedesc.TypeDescription</code>), which can be
* computed and set by <code>TypeDescription.getTypeDescription</code>.
*/
public class Type {
......@@ -272,10 +274,11 @@ public class Type {
/**
* Constructs a new <code>Type</code> from the given type description.
*
* @internal
* @param typeDescription a type description. Must not be
* <code>null</code>.
*/
public Type(ITypeDescription typeDescription) {
public Type(TypeDescription typeDescription) {
_typeName = typeDescription.getTypeName();
_typeClass = typeDescription.getTypeClass();
_iTypeDescription = typeDescription;
......@@ -367,18 +370,20 @@ public class Type {
/**
* Gives the type description of this type.
*
* @internal
* @return the type description; may be <code>null</code>
*/
public ITypeDescription getTypeDescription() {
public TypeDescription getTypeDescription() {
return _iTypeDescription;
}
/**
* Sets the type description for this type.
*
* @internal
* @param typeDescription the type description
*/
public void setTypeDescription(ITypeDescription typeDescription) {
public void setTypeDescription(TypeDescription typeDescription) {
_iTypeDescription = typeDescription;
}
......@@ -683,9 +688,9 @@ public class Type {
return typeClass.getValue() < __typeClassToTypeName.length;
}
protected TypeClass _typeClass; // TODO should be final
protected String _typeName; // TODO should be final
private TypeClass _typeClass; // TODO should be final
private String _typeName; // TODO should be final
protected Class<?> _class;
protected ITypeDescription _iTypeDescription;
private Class<?> _class;
private TypeDescription _iTypeDescription;
}
......@@ -23,6 +23,8 @@ import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Iterator;
import com.sun.star.lib.uno.typedesc.FieldDescription;
import com.sun.star.lib.uno.typedesc.TypeDescription;
import com.sun.star.lib.util.WeakMap;
......@@ -243,7 +245,7 @@ public class UnoRuntime {
return v1 == v2;
case TypeClass.STRUCT_value:
case TypeClass.EXCEPTION_value:
IFieldDescription[] fs;
FieldDescription[] fs;
try {
fs = TypeDescription.getTypeDescription(t).
getFieldDescriptions();
......
......@@ -21,9 +21,6 @@ package com.sun.star.lib.uno.typedesc;
import com.sun.star.lib.uno.typeinfo.MethodTypeInfo;
import com.sun.star.lib.uno.typeinfo.TypeInfo;
import com.sun.star.uno.Any;
import com.sun.star.uno.IFieldDescription;
import com.sun.star.uno.IMethodDescription;
import com.sun.star.uno.ITypeDescription;
import com.sun.star.uno.Type;
import com.sun.star.uno.TypeClass;
import com.sun.star.uno.XInterface;
......@@ -33,31 +30,31 @@ import static org.junit.Assert.*;
public final class TypeDescription_Test {
@Test public void test() throws Exception {
ITypeDescription voidTD = TypeDescription.getTypeDescription(
TypeDescription voidTD = TypeDescription.getTypeDescription(
void.class);
ITypeDescription stringTD = TypeDescription.getTypeDescription(
TypeDescription stringTD = TypeDescription.getTypeDescription(
String.class);
ITypeDescription typeTD = TypeDescription.getTypeDescription(
TypeDescription typeTD = TypeDescription.getTypeDescription(
Type.class);
ITypeDescription anyTD = TypeDescription.getTypeDescription(Any.class);
ITypeDescription interfaceTD = TypeDescription.getTypeDescription(
TypeDescription anyTD = TypeDescription.getTypeDescription(Any.class);
TypeDescription interfaceTD = TypeDescription.getTypeDescription(
XInterface.class);
MethodSignature sigBuildinSyncTypeToAny = new MethodSignature(
true, false, new ITypeDescription[] { typeTD },
new ITypeDescription[1], anyTD);
true, false, new TypeDescription[] { typeTD },
new TypeDescription[1], anyTD);
MethodSignature sigBuildinAsyncToVoid = new MethodSignature(
true, true, new ITypeDescription[0], new ITypeDescription[0],
true, true, new TypeDescription[0], new TypeDescription[0],
voidTD);
MethodSignature sigAddonSyncStringToVoid = new MethodSignature(
false, false, new ITypeDescription[] { stringTD },
new ITypeDescription[1], voidTD);
false, false, new TypeDescription[] { stringTD },
new TypeDescription[1], voidTD);
MethodSignature sigAddonSyncStringInterfaceToVoid = new MethodSignature(
false, false, new ITypeDescription[] { stringTD, interfaceTD },
new ITypeDescription[2], voidTD);
false, false, new TypeDescription[] { stringTD, interfaceTD },
new TypeDescription[2], voidTD);
MethodSignature sigAddonSyncStringToInterface = new MethodSignature(
false, false, new ITypeDescription[] { stringTD },
new ITypeDescription[1], interfaceTD);
false, false, new TypeDescription[] { stringTD },
new TypeDescription[1], interfaceTD);
TypeSignature emptyTypeSig = new TypeSignature(
null, new String[0], null, new String[0], null);
......@@ -153,8 +150,8 @@ public final class TypeDescription_Test {
private final class MethodSignature {
public MethodSignature(
boolean buildIn, boolean oneWay, ITypeDescription[] inParameters,
ITypeDescription[] outParameters, ITypeDescription returnValue)
boolean buildIn, boolean oneWay, TypeDescription[] inParameters,
TypeDescription[] outParameters, TypeDescription returnValue)
{
this.buildIn = buildIn;
this.oneWay = oneWay;
......@@ -164,20 +161,20 @@ public final class TypeDescription_Test {
}
public void test(String prefix, int index,
IMethodDescription description) {
MethodDescription description) {
assertEquals(prefix + "; getIndex", index, description.getIndex());
assertEquals(
prefix + "; getMethod", buildIn,
description.getMethod() == null);
assertEquals(prefix + "; isOneway", oneWay, description.isOneway());
ITypeDescription[] in = description.getInSignature();
TypeDescription[] in = description.getInSignature();
assertEquals(
prefix + "; getInSignature", inParameters.length, in.length);
for (int i = 0; i < in.length; ++i) {
assertEquals(
prefix + "; getInSignature " + i, inParameters[i], in[i]);
}
ITypeDescription[] out = description.getOutSignature();
TypeDescription[] out = description.getOutSignature();
assertEquals(
prefix + "; getOutSignature", outParameters.length, out.length);
for (int i = 0; i < out.length; ++i) {
......@@ -194,9 +191,9 @@ public final class TypeDescription_Test {
private final boolean buildIn;
private final boolean oneWay;
private final ITypeDescription[] inParameters;
private final ITypeDescription[] outParameters;
private final ITypeDescription returnValue;
private final TypeDescription[] inParameters;
private final TypeDescription[] outParameters;
private final TypeDescription returnValue;
}
private final class TypeSignature {
......@@ -216,7 +213,7 @@ public final class TypeDescription_Test {
}
public void test(String prefix, Object[] data,
ITypeDescription description) throws Exception {
TypeDescription description) throws Exception {
assertEquals(
prefix + "; getTypeName", data[0], description.getTypeName());
assertEquals(
......@@ -233,7 +230,7 @@ public final class TypeDescription_Test {
assertNull(
prefix + "; getComponentType", description.getComponentType());
IMethodDescription[] mds = description.getMethodDescriptions();
MethodDescription[] mds = description.getMethodDescriptions();
assertTrue(
prefix + "; getMethodDescriptions",
mds == null
......@@ -247,7 +244,7 @@ public final class TypeDescription_Test {
}
}
for (int i = 0; i < methodNames.length; ++i) {
IMethodDescription md = description.getMethodDescription(
MethodDescription md = description.getMethodDescription(
i + methodOffset);
assertNotNull(
prefix + "; getMethodDescription " + (i + methodOffset),
......@@ -257,7 +254,7 @@ public final class TypeDescription_Test {
i + methodOffset, md);
}
for (int i = 0; i < methodNames.length; ++i) {
IMethodDescription md = description.getMethodDescription(
MethodDescription md = description.getMethodDescription(
methodNames[i]);
assertNotNull(
prefix + "; getMethodDescription " + methodNames[i], md);
......@@ -266,7 +263,7 @@ public final class TypeDescription_Test {
i + methodOffset, md);
}
IFieldDescription[] fds = description.getFieldDescriptions();
FieldDescription[] fds = description.getFieldDescriptions();
assertTrue(
prefix + "; getFieldDescriptions",
fds == null
......@@ -281,7 +278,7 @@ public final class TypeDescription_Test {
}
}
ITypeDescription supert = description.getSuperType();
TypeDescription supert = description.getSuperType();
assertEquals(
prefix + "; getSuperType", data.length < 6, supert == null);
if (supert != null && data[5] != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment