blob: ec9c822e51d58d108e52f7dc5f42746b40c08fc4 [file] [log] [blame]
/***************************************************************************
* Copyright (c) 2004 - 2008 Eike Stepper, Germany.
* 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:
* Simon McDuff - initial API and implementation
**************************************************************************/
package org.eclipse.emf.cdo.internal.common.id;
import org.eclipse.emf.cdo.common.id.CDOIDExternal;
import org.eclipse.emf.cdo.spi.common.id.AbstractCDOID;
import org.eclipse.net4j.util.ObjectUtil;
import org.eclipse.net4j.util.io.ExtendedDataInput;
import org.eclipse.net4j.util.io.ExtendedDataOutput;
import java.io.IOException;
/**
* @author Simon McDuff
*/
public class CDOIDExternalImpl extends AbstractCDOID implements CDOIDExternal
{
private static final long serialVersionUID = 1L;
private String uri;
public CDOIDExternalImpl(String uri)
{
this.uri = uri;
}
public String getURI()
{
return uri;
}
public Type getType()
{
return Type.EXTERNAL_OBJECT;
}
@Override
public String toString()
{
return "oid" + toURIFragment();
}
@Override
public void read(String fragmentPart)
{
uri = fragmentPart;
}
@Override
public void read(ExtendedDataInput in) throws IOException
{
uri = in.readString();
}
@Override
public void write(ExtendedDataOutput out) throws IOException
{
out.writeString(uri);
}
public String toURIFragment()
{
return uri;
}
@Override
public boolean equals(Object obj)
{
if (obj == this)
{
return true;
}
// Could CDOIDExternalTempImpl and CDOIDExternalImpl have the same uri. We don't want to mixed them.
if (obj != null && obj.getClass() == getClass())
{
CDOIDExternal that = (CDOIDExternal)obj;
return ObjectUtil.equals(getURI(), that.getURI());
}
return false;
}
@Override
public int hashCode()
{
return getClass().hashCode() ^ uri.hashCode();
}
}