blob: 8f6a5aec482ae4b29ff9cf847dd175783ad7456d [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.dom.runtime.persistence;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import java.util.zip.ZipEntry;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
public abstract class NonStreamResource extends ResourceImpl {
/**
* Since this Resource is not stream based, this method should never be called.
* If called it will throw <c>UnsupportedException</c>
* @param arg0 - ignorred
*/
@Override
protected final void doLoad(InputStream inputStream, Map<?,?> options) throws IOException {
super.doLoad(inputStream, options);
}
/**
* Since this Resource is not stream based, this method should never be called.
* If called it will throw <c>UnsupportedException</c>
* @param arg0 - ignorred
*/
@Override
protected final void doSave(OutputStream arg0, Map<?,?> arg1) throws IOException {
super.doSave(arg0, arg1);
}
/**
* Allwasy throws <c>UnsupportedOperationException</c>. Streams are not supported by this resource.
* @return nothing. this method allways throws <c>UnsupportedOperationException</c>
*/
@Override
protected final boolean isContentZipEntry(ZipEntry arg0) {
throw new UnsupportedOperationException();
}
/**
* Since this resource doesn't support streams this method should never be called. Allwasy throws <c>UnsupportedOperationException</c>.
* @return nothing. this method allways throws <c>UnsupportedOperationException</c>
*/
@Override
protected final ZipEntry newContentZipEntry() {
throw new UnsupportedOperationException();
}
/**
* Since this resource doesn't support streams this method should never be called. Allwasy throws <c>UnsupportedOperationException</c>.
* @return nothing. this method allways throws <c>UnsupportedOperationException</c>
*/
@Override
protected final boolean useZip() {
throw new UnsupportedOperationException();
}
@Override
public final void load(Map<?,?> options) throws IOException {
if (!isLoaded()) {
Notification notification = setLoaded(true);
isLoading = true;
if (errors != null) {
errors.clear();
}
if (warnings != null) {
warnings.clear();
}
try {
Map<?,?> mergedOptions = mergeMaps(options, defaultLoadOptions);
doLoad(mergedOptions);
} finally {
isLoading = false;
if (notification != null) {
eNotify(notification);
}
setModified(false);
}
}
}
/**
* Called to load the resource using no streams.
*
* @param options - options supplied by the caller. This metod will ignore any options that it doesn't recognize. The keys and the values can be arbitrary objects.
* @throws IOException - thrown if error occurred while loading the content of this resource
*/
abstract protected void doLoad(Map<?,?> options) throws IOException;
@Override
public final void save(Map<?,?> options) throws IOException {
if (errors != null)
{
errors.clear();
}
if (warnings != null)
{
warnings.clear();
}
Map<?,?> mergedOptions = mergeMaps(options, defaultSaveOptions);
doSave(mergedOptions);
setModified(false);
}
/**
* Called to save the resource using no streams.
* @param options - options supplied by the caller. This metod will ignore any options that it doesn't recognize. The keys and the values can be arbitrary objects.
* @throws IOException - if problem during the saving occurred.
*/
protected abstract void doSave(Map<?,?> options) throws IOException;
}