001/** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.isis.viewer.restfulobjects.rendering.domainobjects; 018 019import org.apache.isis.core.metamodel.adapter.ObjectAdapter; 020import org.apache.isis.core.metamodel.services.ServiceUtil; 021import org.apache.isis.viewer.restfulobjects.applib.Rel; 022import org.apache.isis.viewer.restfulobjects.applib.RepresentationType; 023import org.apache.isis.viewer.restfulobjects.rendering.LinkBuilder; 024 025public class DomainServiceLinkTo extends DomainObjectLinkTo { 026 private String serviceId; 027 028 @Override 029 public ObjectAdapterLinkTo with(final ObjectAdapter objectAdapter) { 030 serviceId = ServiceUtil.id(objectAdapter.getObject()); 031 return super.with(objectAdapter); 032 } 033 034 @Override 035 public LinkBuilder builder(final Rel rel) { 036 final LinkBuilder linkBuilder = LinkBuilder.newBuilder(rendererContext, 037 relElseDefault(rel).andParam("serviceId", serviceId), 038 RepresentationType.DOMAIN_OBJECT, 039 linkRef(new StringBuilder()).toString()); 040 linkBuilder.withTitle(objectAdapter.titleString()); 041 return linkBuilder; 042 } 043 044 045 @Override 046 protected StringBuilder linkRef(StringBuilder buf) { 047 return buf.append("services/").append(serviceId); 048 } 049 050 @Override 051 protected Rel defaultRel() { 052 return Rel.SERVICE; 053 } 054 055 056}