package org.jacorb.notification.util;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1999-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.AbstractList;
import java.util.Collections;
import java.util.List;
/**
* provides a simple wrapper around java.util.Collections. Notification Service uses the Method
* Collections.singletonList. This method is not available in a pre 1.3 JDK.
*
* @author Alphonse Bendt
* @author Marc Heide
*
*/
public class CollectionsWrapper
{
private static Method singletonListMethod;
static
{
try
{
singletonListMethod = Collections.class.getMethod("singletonList",
new Class[] { Object.class });
} catch (Exception e)
{
singletonListMethod = null;
}
}
public static List singletonList(Object o)
{
if (singletonListMethod != null)
{
try
{
return (List) (singletonListMethod.invoke(null, new Object[] { o }));
} catch (Exception e)
{
// ignore. return out implementation. should not happen.
}
}
return new SingletonList(o);
}
private static class SingletonList extends AbstractList implements Serializable
{
private static final long serialVersionUID = 1L;
private final Object singletonElement_;
SingletonList(Object element)
{
singletonElement_ = element;
}
public int size()
{
return 1;
}
public boolean contains(Object object)
{
if (singletonElement_ == null)
{
if (object == null)
{
return true;
}
return false;
}
return object.equals(singletonElement_);
}
public Object get(int index)
{
if (index != 0)
{
throw new IndexOutOfBoundsException("Index: " + index);
}
return singletonElement_;
}
}
}