blob: 331862b5f60e84b33c5944c8d3cf22aef2f8fbc9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 by SAP AG, Walldorf.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.ws.jaxws.utils.internal.annotations.impl;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ArrayInitializer;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.Expression;
import org.eclipse.jst.ws.jaxws.utils.annotations.IValue;
/**
* Implementation for {@link IArrayValue}
*
* @author Plamen Pavlov
*/
public class ArrayValueImpl extends ValueImpl
{
private Set<IValue> values = new HashSet<IValue>();
/**
* Construction
*
* @param values
* @throws NullPointerException
* in case <code>values</code> is <code>null</code>.
*/
public ArrayValueImpl(Set<IValue> values)
{
if (values == null)
{
throw new NullPointerException("values should not be null"); //$NON-NLS-1$
}
this.values = values;
}
@Override
public String toString()
{
String result = "["; //$NON-NLS-1$
boolean first = true;
for (IValue value : values)
{
if(first)
{
result = result + value.toString();
first = false;
}
else
{
result = result + ", " + value.toString(); //$NON-NLS-1$
}
}
result = result + "]"; //$NON-NLS-1$
return result;
}
@SuppressWarnings("unchecked")
@Override
protected Expression getExpression(CompilationUnit unit, AST ast)
{
//TODO check this method
ArrayInitializer arr = ast.newArrayInitializer();
for (IValue value : values)
{
arr.expressions().add(((ValueImpl) value).getExpression(unit, ast));
}
return arr;
}
@Override
public int hashCode()
{
return Arrays.hashCode(values.toArray(new IValue[values.size()]));
}
@Override
public boolean equals(Object obj)
{
if (this == obj)
{
return true;
}
if (obj == null)
{
return false;
}
if (getClass() != obj.getClass())
{
return false;
}
final ArrayValueImpl other = (ArrayValueImpl) obj;
return Arrays.equals(values.toArray(new IValue[values.size()]), other.values.toArray(new IValue[values.size()]));
}
}