/*
* Copyright (c) 2010-2013 Evolveum
*
* 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 com.evolveum.midpoint.prism;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
/**
* @author semancik
*
*/
public interface Objectable extends Containerable {
String getOid();
void setOid(String oid);
String getVersion();
void setVersion(String version);
PolyStringType getName();
void setName(PolyStringType name);
String getDescription();
void setDescription(String description);
/**
* Returns short string representing identity of this object.
* It should container object type, OID and name. It should be presented
* in a form suitable for log and diagnostic messages (understandable for
* system administrator).
*/
String toDebugName();
/**
* Returns short string identification of object type. It should be in a form
* suitable for log messages. There is no requirement for the type name to be unique,
* but it rather has to be compact. E.g. short element names are preferred to long
* QNames or URIs.
* @return
*/
String toDebugType();
PrismObject asPrismObject();
void setupContainer(PrismObject object);
// public <O extends Objectable> PrismObject<O> asPrismObject();
//
// public <O extends Objectable> void setupContainer(PrismObject<O> object);
}