Skip to content

Instantly share code, notes, and snippets.

@shin1ogawa
Created March 23, 2009 04:42
Show Gist options
  • Save shin1ogawa/83427 to your computer and use it in GitHub Desktop.
Save shin1ogawa/83427 to your computer and use it in GitHub Desktop.
/*
* Copyright 2007-2009 Jiemamy Project and the Others.
* Created on 2008/09/26
*
* This file is part of Jiemamy.
*
* 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.jiemamy;
import java.util.Set;
import org.jiemamy.facade.JiemamyFacade;
import org.jiemamy.serializer.JiemamySerializer;
/**
* Jiemamy実装(及び仕様範囲)を表すインターフェイス。
*
* <p>{@link Jiemamy}クラスに対して各種ストラテジを供給する役割を果たす。</p>
*
* <p>Jiemamyが内部から利用するインターフェイスであり、ユーザが直接使用することは意図していない。</p>
*
* @since 0.2
* @author daisuke
*/
public interface JiemamyImplementation {
/**
* イベントブローカを取得する。
*
* <p>{@code null}を返してはならない。</p>
*
* @return イベントブローカ
* @since 0.2
*/
EventBroker getEventBroker();
/**
* 指定したインスタンス空間に属するモデルを生成するファクトリを取得する。
*
* <p>{@code null}を返してはならない。</p>
*
* @param jiemamy インスタンス空間
* @return ファクトリ
* @throws IllegalArgumentException 引数に{@code null}を与えた場合
* @see Jiemamy#getFactory()
* @since 0.2
*/
JiemamyFactory getFactory(Jiemamy jiemamy);
/**
* 参照リゾルバを取得する。
*
* <p>{@code null}を返してはならない。</p>
*
* @return 参照リゾルバ
* @since 0.2
*/
ReferenceResolver getReferenceResolver();
/**
* シリアライザを取得する。
*
* <p>{@code null}を返してはならない。</p>
*
* @param jiemamy インスタンス空間
* @return シリアライザ
* @throws IllegalArgumentException 引数に{@code null}を与えた場合
* @since 0.2
*/
JiemamySerializer getSerializer(Jiemamy jiemamy);
/**
* 追加仕様のサポート状態を取得する。
*
* <p>{@code null}を返してはならない。</p>
*
* @return サポートされている追加仕様の{@link Set}
* @since 0.2
*/
Set<OptionalSpec> getSupportedSpecs();
/**
* Jiemamyのバージョンを取得する。
*
* <p>{@code null}を返してはならない。</p>
*
* @return Jiemamyのバージョン
* @since 0.2
*/
Version getVersion();
<T extends JiemamyFacade>T newFacade(Jiemamy jiemamy);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment