/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.isis.viewer.restfulobjects.rendering.service;
import javax.ws.rs.core.Response;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext2;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext3;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext4;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext5;
import org.apache.isis.viewer.restfulobjects.rendering.RendererContext6;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ActionResultReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprMode;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAdapterLinkTo;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndAction;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndActionInvocation;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndCollection;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndProperty;
/**
* Configure the Restful Objects viewer to emit custom representations (rather than the
* standard representations defined in the RO spec).
*
* <p>
* This interface is EXPERIMENTAL and may change in the future.
* </p>
*/
public interface RepresentationService {
/**
* As returned by {@link RendererContext6#getIntent()}, applies only to the representation of
* domain objects.
*/
enum Intent {
/**
* object just created, ie return a 201
*/
JUST_CREATED,
/**
* object already persistent, ie return a 200
*/
ALREADY_PERSISTENT,
/**
* representation is not of a domain object, so does not apply.
*/
NOT_APPLICABLE
}
@Programmatic
Response objectRepresentation(
Context resourceContext,
ObjectAdapter objectAdapter);
/**
* @deprecated - use {@link #objectRepresentation(Context, ObjectAdapter)}.
*/
@Deprecated
@Programmatic
Response objectRepresentation(
Context resourceContext,
ObjectAdapter objectAdapter,
Intent intent);
@Programmatic
Response propertyDetails(
Context rendererContext,
ObjectAndProperty objectAndProperty,
MemberReprMode memberReprMode);
@Programmatic
Response collectionDetails(
Context rendererContext,
ObjectAndCollection objectAndCollection,
MemberReprMode memberReprMode);
@Programmatic
Response actionPrompt(
Context rendererContext,
ObjectAndAction objectAndAction);
@Programmatic
Response actionResult(
Context rendererContext,
ObjectAndActionInvocation objectAndActionInvocation,
ActionResultReprRenderer.SelfLink selfLink);
interface Context extends RendererContext {
ObjectAdapterLinkTo getAdapterLinkTo();
}
interface Context2 extends Context, RendererContext2 {
}
interface Context3 extends Context2, RendererContext3 {
}
interface Context4 extends Context3, RendererContext4 {
}
interface Context5 extends Context4, RendererContext5 {
}
interface Context6 extends Context5, RendererContext6 {
}
}