package org.jacorb.test.orb.value;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.omg.CORBA.Any;
public class ValueServerImpl extends ValueServerPOA
{
public String receive_long (boxedLong p1, boxedLong p2)
{
if (p1 == null || p2 == null)
return "one or two null values";
else if (p1 == p2)
return "shared long: " + p1.value;
else
return "two longs: " + p1.value + ", " + p2.value;
}
public String receive_string (String s1, String s2)
{
if (s1 == null || s2 == null)
return "one or two null values";
else if (s1 == s2)
return "shared string: `" + s1 + "'";
else
return "two strings: `" + s1 + "', `" + s2 + "'";
}
public String receive_list_in_any(Any any) {
Node n = NodeHelper.extract(any);
return receive_list(n);
}
public String receive_list (Node n)
{
List<Node> l = new ArrayList<Node>();
Node x = n;
boolean shared = false;
while (x != null)
{
l.add (x);
x = x.next;
if (l.contains(x))
{
shared = true;
break;
}
}
StringBuffer result = new StringBuffer ("list of length: "
+ l.size() + " -- ");
for (Iterator<Node> i = l.iterator(); i.hasNext();)
{
Node q = i.next();
result.append (q.id);
if (i.hasNext()) result.append (" ");
}
if (shared)
result.append(" -- shared");
return result.toString();
}
public String receive_record_sequence(Record[] list)
{
StringBuffer result = new StringBuffer("list of length " + list.length);
result.append (", null values: ");
for (int i=0; i<list.length; i++)
{
if (list[i] == null)
result.append (i + " ");
}
for (int i=0; i<list.length/2; i++)
{
if (list[i] != list[list.length-i-1])
return result.toString() + ", no palindrome";
}
return result.toString() + ", palindrome";
}
public Record[] return_record_sequence(int length)
{
Record[] result = new Record[length];
for (int i=0; i<result.length; i++)
{
result[i] = new RecordImpl(i, "node: " + i);
}
return result;
}
/**
* <code>getNodes</code> returns an embedded valuetype.
*
* @return a <code>NodeData[]</code> value
*/
public NodeData[] getNodes()
{
NodeData[] res = new NodeData[2];
res[0] = new NodeDataImpl();
res[0].data2 = new DataImpl();
res[0].data2.id = 17;
res[0].id = 1;
res[1] = new NodeDataImpl();
res[1] = new NodeDataImpl();
res[1].data1 = new DataImpl();
res[1].data1.id = 22;
res[1].id = 2;
return res;
}
public RowListData getData()
{
RowListData ret = new RowListDataImpl();
ColumnData[] cols = new ColumnDataImpl[2];
ret.columns = cols;
for(int i=0; i<2;i++)
{
cols[i] = createColumnData();
}
return ret;
}
private ColumnData createColumnData()
{
ColumnData ret = new ColumnDataImpl();
String[] val = new String[] {"Teststring1", "TestString2"};
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
org.omg.CORBA.Any any = orb.create_any();
ValStringListHelper.insert(any, val);
ret.values = any;
ret.nulls = new boolean[0];
return ret;
}
}