/*******************************************************************************
* Copyright (c) 2007, 2010 Association for Decentralized Information Management
* in Industry THTH ry.
* 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:
* VTT Technical Research Centre of Finland - initial API and implementation
*******************************************************************************/
package org.simantics.db.common.request;
import org.simantics.db.AsyncRequestProcessor;
import org.simantics.db.RequestProcessor;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.procedure.AsyncListener;
import org.simantics.db.procedure.AsyncProcedure;
import org.simantics.db.procedure.Listener;
import org.simantics.db.procedure.Procedure;
import org.simantics.db.procedure.SyncListener;
import org.simantics.db.procedure.SyncProcedure;
import org.simantics.db.request.AsyncRead;
import org.simantics.db.request.ReadInterface;
public abstract class UnaryAsyncRead
implements AsyncRead, ReadInterface {
final protected P parameter;
@Override
public int hashCode() {
return parameter != null ? parameter.hashCode() : 0;
}
@Override
final public int threadHash() {
return parameter.hashCode();
}
@Override
public boolean equals(Object object) {
if (this == object)
return true;
else if (object == null)
return false;
else if (getClass() != object.getClass())
return false;
UnaryAsyncRead, ?> r = (UnaryAsyncRead, ?>) object;
if(parameter != null) {
if(!parameter.equals(r.parameter)) return false;
} else if(r.parameter != null) return false;
return true;
}
@Override
public int getFlags() {
return 0;
}
public UnaryAsyncRead(P parameter) {
this.parameter = parameter;
}
@Override
public void request(AsyncRequestProcessor processor, AsyncProcedure procedure) {
processor.asyncRequest(this, procedure);
}
@Override
public void request(AsyncRequestProcessor processor, Procedure procedure) {
processor.asyncRequest(this, procedure);
}
@Override
public void request(AsyncRequestProcessor processor, SyncProcedure procedure) {
processor.asyncRequest(this, procedure);
}
@Override
public void request(AsyncRequestProcessor processor, AsyncListener procedure) {
processor.asyncRequest(this, procedure);
}
@Override
public void request(AsyncRequestProcessor processor, Listener procedure) {
processor.asyncRequest(this, procedure);
}
@Override
public void request(AsyncRequestProcessor processor, SyncListener procedure) {
processor.asyncRequest(this, procedure);
}
@Override
public R request(RequestProcessor processor) throws DatabaseException {
return processor.syncRequest(this);
}
}