Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Znav
nextRaising Exceptions in Java
prevServer-Side Java Mapping for Interfaces

For each parameter of a Slice operation, the Java mapping generates a corresponding parameter for the method in the
_<interface-name>Operations interface. In addition, every operation has an additional, trailing parameter of type Ice.Current. For example, the name operation of the Node interface has no parameters, but the name method of the _NodeOperations interface has a single parameter of type Ice.Current. We will ignore this parameter for now.

To illustrate the rules, consider the following interface that passes string parameters in all possible directions:

Wiki Markup
{zcode:slice}
module M {
    interface Example {
        string op(string sin, out string sout);
    };
};
{zcode}

The generated skeleton class for this interface looks as follows:

Wiki Markup
{zcode:java}
public interface _ExampleOperations
{
    String op(String sin, Ice.StringHolder sout, Ice.Current current);
}
{zcode}

As you can see, there are no surprises here. For example, we could implement op as follows:

Wiki Markup
{zcode:java}
public final class ExampleI extends M._ExampleDisp {

    public String op(String sin, Ice.StringHolder sout, Ice.Current current)
    {
        System.out.println(sin);     // In params are initialized
        sout.value = "Hello World!"; // Assign out param
        return "Done";
    }
}
{zcode}

This code is in no way different from what you would normally write if you were to pass strings to and from a function; the fact that remote procedure calls are involved does not impact on your code in any way. The same is true for parameters of other types, such as proxies, classes, or dictionaries: the parameter passing conventions follow normal Java rules and do not require special-purpose API calls.

Ztop
See Also
Zret
Znav
nextRaising Exceptions in Java
prevServer-Side Java Mapping for Interfaces