All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ogema.rest.RootResource Maven / Gradle / Ivy

Go to download

Reference implementation of the OGEMA 2.0 REST interface by Fraunhofer Society.

The newest version!
/**
 * Copyright 2011-2018 Fraunhofer-Gesellschaft zur Förderung der angewandten Wissenschaften e.V.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.ogema.rest;

import java.util.List;

import org.ogema.core.application.ApplicationManager;
import org.ogema.core.model.Resource;
import org.ogema.core.resourcemanager.AccessMode;
import org.ogema.core.resourcemanager.AccessModeListener;
import org.ogema.core.resourcemanager.AccessPriority;
import org.ogema.core.resourcemanager.NoSuchResourceException;
import org.ogema.core.resourcemanager.ResourceAlreadyExistsException;
import org.ogema.core.resourcemanager.ResourceException;
import org.ogema.core.resourcemanager.ResourceStructureListener;
import org.ogema.core.resourcemanager.ResourceGraphException;
import org.ogema.core.resourcemanager.ResourceValueListener;
import org.ogema.core.resourcemanager.VirtualResourceException;

/**
 * An incomplete Resource implementation that implements just enough methods
 * to be useful for (de-)serialization. Used by the REST interface as virtual root of
 * the OGEMA resource tree, i.e. as resource containing all OGEMA top level Resources
 * (such a resource does not actually exist).
 * Returns {@link Resource} as resource type.
 * 
 * FIXME: written to work with SerializationManagerImpl (assumes implementation details)
 * 
 * @author jlapp
 */
public class RootResource implements Resource {

	public static final String ROOT_PATH = "/";

	final ApplicationManager appMan;

	public RootResource(ApplicationManager appMan) {
		this.appMan = appMan;
	}

	@Override
	public String getName() {
		return "";
	}

	@Override
	public String getPath(String delimiter) {
		return ROOT_PATH;
	}

	@Override
	public String getLocation(String delimiter) {
		return "/";
	}

	@Override
	public Class getResourceType() {
		return Resource.class;
	}

	@Override
	@Deprecated
	public void addResourceListener(org.ogema.core.resourcemanager.ResourceListener listener, boolean recursive) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	@Deprecated
	public boolean removeResourceListener(org.ogema.core.resourcemanager.ResourceListener listener) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void addValueListener(ResourceValueListener listener) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void addValueListener(ResourceValueListener listener, boolean callOnEveryUpdate) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean removeValueListener(ResourceValueListener listener) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean isActive() {
		return true;
	}

	@Override
	public boolean isTopLevel() {
		return false;
	}

	@Override
	@SuppressWarnings("unchecked")
	public  T getParent() {
		return (T) this;
	}

	@Override
	public List getSubResources(boolean recursive) {
		if (recursive) {
			throw new UnsupportedOperationException();
		}
		return appMan.getResourceAccess().getToplevelResources(Resource.class);
	}

	@Override
	public List getDirectSubResources(boolean recursive) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean isReference(boolean recursive) {
		return false;
	}

	@Override
	public  T getSubResource(String name) {
		return appMan.getResourceAccess().getResource(name);
	}

	@Override
	public void activate(boolean recursive) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void deactivate(boolean recursive) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void setOptionalElement(String name, Resource newElement) throws NoSuchResourceException, ResourceException,
			ResourceGraphException {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public Resource addOptionalElement(String name) throws NoSuchResourceException {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public  T addDecorator(String name, Class resourceType)
			throws ResourceAlreadyExistsException {
		return appMan.getResourceManagement().createResource(name, resourceType);
	}

	@Override
	public  T addDecorator(String name, T decoratingResource)
			throws ResourceAlreadyExistsException, NoSuchResourceException, ResourceGraphException {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void deleteElement(String name) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean equalsLocation(Resource other) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean equalsPath(Resource resource) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public  List getReferencingResources(Class parentType) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public  List getSubResources(Class resourceType, boolean recursive) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	final public String getPath() {
		return getPath("/");
	}

	@Override
	final public String getLocation() {
		return getLocation("/");
	}

	@Override
	public  T getSubResource(String name, Class type) throws NoSuchResourceException {
		T rval = appMan.getResourceAccess().getResource(name);
		if (rval == null) {
			rval = appMan.getResourceManagement().createResource(name, type);
		}
		return rval;
	}

	@Override
	public  T setAsReference(T reference) throws NoSuchResourceException, ResourceException,
			ResourceGraphException, VirtualResourceException {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public  T create() throws ResourceAlreadyExistsException, NoSuchResourceException {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean exists() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void delete() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void addStructureListener(ResourceStructureListener listener) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean removeStructureListener(ResourceStructureListener listener) {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean isWriteable() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public boolean isDecorator() {
		return false;
	}

	@Override
	public AccessMode getAccessMode() {
		throw new UnsupportedOperationException("Not supported yet.");
	}

	@Override
	public void addAccessModeListener(AccessModeListener listener) {
		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
	}

	@Override
	public boolean removeAccessModeListener(AccessModeListener listener) {
		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
	}

	@Override
	public boolean requestAccessMode(AccessMode accessMode, AccessPriority priority) throws SecurityException {
		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
	}

	@Override
	public AccessPriority getAccessPriority() {
		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
	}

	@SuppressWarnings("unchecked")
	@Override
	public  T getLocationResource() {
		return (T) this;
	}

	@Override
	public List getReferencingNodes(boolean transitive) {
		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy