svnno****@sourc*****
svnno****@sourc*****
2008年 12月 12日 (金) 03:02:39 JST
Revision: 2252 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2252 Author: daisuke_m Date: 2008-12-12 03:02:39 +0900 (Fri, 12 Dec 2008) Log Message: ----------- refactor Modified Paths: -------------- artemis/trunk/org.jiemamy.core/META-INF/MANIFEST.MF artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/Artemis.java artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/AbstractContext.java artemis/trunk/org.jiemamy.dialect/src/main/java/org/jiemamy/dialect/DefaultConnectionAdvisor.java artemis/trunk/org.jiemamy.dialect.postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/internal/SetterInterceptor.java artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableList.java artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableMap.java artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableSet.java artemis/trunk/org.jiemamy.serializer/.classpath artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/ForeignKeyMappingCommand.java artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/JiemamyHandler.java artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/JiemamyDefaultSerializer.java artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/ModelInputStreamTest.java artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/SerializationTest.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseDialectInstanceAccessStrategy.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseExporterInstanceAccessStrategy.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseImporterInstanceAccessStrategy.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/action/SaveDiagramImageAction.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/DiagramEditor.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/ModelContainer.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/MultiDiagramEditor.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/editpart/outlinetree/AbstractModelTreeEditPart.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/EditorUtil.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/ExceptionHandler.java vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/wizard/NewDiagramWizard.java zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/InstanceAccessStrategy.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ExportContext.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ImportContext.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/Jiemamy.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/RootModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/attribute/ColumnModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/AbstractConnectionModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/ForeignKeyMapping.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/Constraint.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/ConstraintsModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/InsertDataSetModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/RecordModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataType.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataTypeDescriptor.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DomainModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexColumnModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexModel.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/node/AbstractNodeModel.java Added Paths: ----------- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyImplementation.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/serializer/ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/serializer/JiemamySerializer.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Adaptable.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Context.java Removed Paths: ------------- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/internal/interpreter/ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Adaptable.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Context.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamySerializer.java zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/JiemamyImplementation.java -------------- next part -------------- Modified: artemis/trunk/org.jiemamy.core/META-INF/MANIFEST.MF =================================================================== --- artemis/trunk/org.jiemamy.core/META-INF/MANIFEST.MF 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.core/META-INF/MANIFEST.MF 2008-12-11 18:02:39 UTC (rev 2252) @@ -165,6 +165,7 @@ org.easymock, org.easymock.internal, org.easymock.internal.matchers, + org.jiemamy, org.jiemamy.internal, org.jiemamy.internal.accessor, org.jiemamy.internal.accessor.connection, Modified: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/Artemis.java =================================================================== --- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/Artemis.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/model/Artemis.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -30,6 +30,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.jiemamy.JiemamyImplementation; import org.jiemamy.exception.UnexpectedConditionError; /** @@ -41,16 +42,16 @@ */ public enum Artemis implements JiemamyImplementation { - /** TODO for daisuke */ + /** ArtemisによるJiemamyコア仕様 */ CORE("jiemamy-core.dicon"), - /** TODO for daisuke */ + /** ArtemisによるJiemamyコア仕様+イベント仕様 */ EVENT("jiemamy-event.dicon"), - /** TODO for daisuke */ + /** ArtemisによるJiemamyコア仕様+ビュー仕様 */ VIEW("jiemamy-view.dicon"), - /** TODO for daisuke */ + /** ArtemisによるJiemamyフル仕様 */ FULL("jiemamy-eclipse.dicon"); private static Logger logger = LoggerFactory.getLogger(Artemis.class); Modified: artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/AbstractContext.java =================================================================== --- artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/AbstractContext.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.core/src/main/java/org/jiemamy/utils/AbstractContext.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -22,7 +22,6 @@ import org.seasar.framework.util.tiger.CollectionsUtil; -import org.jiemamy.Context; /** * コンテキスト情報。 Modified: artemis/trunk/org.jiemamy.dialect/src/main/java/org/jiemamy/dialect/DefaultConnectionAdvisor.java =================================================================== --- artemis/trunk/org.jiemamy.dialect/src/main/java/org/jiemamy/dialect/DefaultConnectionAdvisor.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.dialect/src/main/java/org/jiemamy/dialect/DefaultConnectionAdvisor.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,8 +20,6 @@ import java.sql.Connection; -import org.jiemamy.dialect.ConnectionAdvisor; - /** * {@link ConnectionAdvisor}のデフォルト実装。 * @author daisuke Modified: artemis/trunk/org.jiemamy.dialect.postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java =================================================================== --- artemis/trunk/org.jiemamy.dialect.postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.dialect.postgresql/src/test/java/org/jiemamy/dialect/postgresql/PostgresqlDialectTest.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -113,7 +113,11 @@ }); } }); + + // org.postgresql.Driver は java.sql.Driver を実装しているのでキャストは正しい + @SuppressWarnings("unchecked") Class<Driver> driverClass = (Class<Driver>) classLoader.loadClass("org.postgresql.Driver"); + driver = new DriverWrapper((Driver) ClassUtil.newInstance(driverClass)); } Modified: artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/internal/SetterInterceptor.java =================================================================== --- artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/internal/SetterInterceptor.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/internal/SetterInterceptor.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -25,8 +25,8 @@ import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; -import org.jiemamy.Adaptable; import org.jiemamy.event.Observable; +import org.jiemamy.utils.Adaptable; /** * モデルのSetterをInterceptし、Setter動作後に Modified: artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableList.java =================================================================== --- artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableList.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableList.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -23,13 +23,13 @@ import org.apache.commons.lang.Validate; -import org.jiemamy.Adaptable; import org.jiemamy.event.ModelChangeEvent; import org.jiemamy.event.ModelChangeListener; import org.jiemamy.event.ModelChangeSupport; import org.jiemamy.event.Observable; import org.jiemamy.event.ObservableCollectionChangeEvent; import org.jiemamy.event.ObservableCollectionChangeListener; +import org.jiemamy.utils.Adaptable; /** * {@link ObservableCollectionChangeEvent}を通知する{@link List}の実装。。 Modified: artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableMap.java =================================================================== --- artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableMap.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableMap.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -27,12 +27,12 @@ import org.apache.commons.lang.Validate; -import org.jiemamy.Adaptable; import org.jiemamy.event.ModelChangeEvent; import org.jiemamy.event.ModelChangeListener; import org.jiemamy.event.Observable; import org.jiemamy.event.ObservableCollectionChangeEvent; import org.jiemamy.event.ObservableCollectionChangeListener; +import org.jiemamy.utils.Adaptable; /** * {@link ObservableCollectionChangeEvent}を通知する{@link Map}の実装。。 Modified: artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableSet.java =================================================================== --- artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableSet.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.event/src/main/java/org/jiemamy/util/ObservableSet.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -27,12 +27,12 @@ import org.apache.commons.lang.Validate; -import org.jiemamy.Adaptable; import org.jiemamy.event.ModelChangeEvent; import org.jiemamy.event.ModelChangeListener; import org.jiemamy.event.Observable; import org.jiemamy.event.ObservableCollectionChangeEvent; import org.jiemamy.event.ObservableCollectionChangeListener; +import org.jiemamy.utils.Adaptable; /** * {@link ObservableCollectionChangeEvent}を通知する{@link java.util.Set}の実装。。 Modified: artemis/trunk/org.jiemamy.serializer/.classpath =================================================================== --- artemis/trunk/org.jiemamy.serializer/.classpath 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.serializer/.classpath 2008-12-11 18:02:39 UTC (rev 2252) @@ -8,12 +8,12 @@ <classpathentry kind="lib" path="lib/junit-addons-1.4.jar" sourcepath="lib/sources/junit-addons-1.4-sources.jar"/> <classpathentry kind="lib" path="lib/xmlParserAPIs-2.6.2.jar" sourcepath="lib/sources/xmlParserAPIs-2.6.2-sources.jar"/> <classpathentry kind="lib" path="lib/xercesImpl-2.6.2.jar" sourcepath="lib/sources/xercesImpl-2.6.2-sources.jar"/> + <classpathentry kind="lib" path="lib/commons-lang-2.3.jar" sourcepath="lib/sources/commons-lang-2.3-sources.jar"/> + <classpathentry kind="lib" path="lib/slf4j-api-1.5.5.jar" sourcepath="lib/sources/slf4j-api-1.5.5-sources.jar"/> + <classpathentry kind="lib" path="lib/commons-io-1.3.2.jar" sourcepath="lib/sources/commons-io-1.3.2-sources.jar"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> <classpathentry combineaccessrules="false" kind="src" path="/org.jiemamy.irenka"/> - <classpathentry kind="lib" path="lib/commons-lang-2.3.jar" sourcepath="lib/sources/commons-lang-2.3-sources.jar"/> - <classpathentry kind="lib" path="lib/slf4j-api-1.5.5.jar" sourcepath="lib/sources/slf4j-api-1.5.5-sources.jar"/> - <classpathentry kind="lib" path="lib/commons-io-1.3.2.jar" sourcepath="lib/sources/commons-io-1.3.2-sources.jar"/> <classpathentry combineaccessrules="false" kind="src" path="/org.jiemamy.core"/> <classpathentry combineaccessrules="false" kind="src" path="/org.jiemamy.view"/> <classpathentry kind="output" path="target/classes"/> Modified: artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/ForeignKeyMappingCommand.java =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/ForeignKeyMappingCommand.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/ForeignKeyMappingCommand.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -58,8 +58,6 @@ String elementName = element.getName(); if (elementName.equals("constraintColumn")) { ColumnModel referenceModel = (ColumnModel) getReferenceModel(attributes); - - // TODO foreignKeyMapping.setConstraintColumn(referenceModel); } else if (elementName.equals("referenceColumn")) { ColumnModel referenceModel = (ColumnModel) getReferenceModel(attributes); Modified: artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/JiemamyHandler.java =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/JiemamyHandler.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/model/JiemamyHandler.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -71,8 +71,6 @@ if (commandInfo.getStackAtCommandStarted().equals(xmlElementStack)) { command.end(modelInfo, element, buffer.toString()); commandStack.pop(); - - // TODO logger.trace("***end command: " + command); } else { command.endChild(element, modelInfo, buffer.toString()); Modified: artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/JiemamyDefaultSerializer.java =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/JiemamyDefaultSerializer.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.serializer/src/main/java/org/jiemamy/serializer/JiemamyDefaultSerializer.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -28,7 +28,6 @@ import org.apache.commons.lang.SerializationException; import org.xml.sax.SAXException; -import org.jiemamy.JiemamySerializer; import org.jiemamy.model.JiemamyHandler; import org.jiemamy.model.RootModel; Modified: artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/ModelInputStreamTest.java =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/ModelInputStreamTest.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/ModelInputStreamTest.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -42,7 +42,7 @@ import org.jiemamy.model.node.TableModel; /** - * TODO for junichi + * {@link ModelInputStream}のテストクラス。 * @author junichi */ public class ModelInputStreamTest { Modified: artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/SerializationTest.java =================================================================== --- artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/SerializationTest.java 2008-12-11 17:19:19 UTC (rev 2251) +++ artemis/trunk/org.jiemamy.serializer/src/test/java/org/jiemamy/serializer/SerializationTest.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -35,7 +35,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.jiemamy.JiemamySerializer; import org.jiemamy.model.Artemis; import org.jiemamy.model.Jiemamy; import org.jiemamy.model.RootModel; Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseDialectInstanceAccessStrategy.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseDialectInstanceAccessStrategy.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseDialectInstanceAccessStrategy.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -33,13 +33,6 @@ /** * {@inheritDoc} */ - public void dispose() { - // nothing to do - } - - /** - * {@inheritDoc} - */ public Dialect getInstance(String fqcn) { try { return JiemamyPlugin.getDialectResolver().getInstance(fqcn); Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseExporterInstanceAccessStrategy.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseExporterInstanceAccessStrategy.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseExporterInstanceAccessStrategy.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -33,13 +33,6 @@ /** * {@inheritDoc} */ - public void dispose() { - // nothing to do - } - - /** - * {@inheritDoc} - */ public Exporter getInstance(String fqcn) { try { return JiemamyPlugin.getExporterResolver().getInstance(fqcn); Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseImporterInstanceAccessStrategy.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseImporterInstanceAccessStrategy.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/EclipseImporterInstanceAccessStrategy.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -33,13 +33,6 @@ /** * {@inheritDoc} */ - public void dispose() { - // nothing to do - } - - /** - * {@inheritDoc} - */ public Importer getInstance(String fqcn) { try { return JiemamyPlugin.getImporterResolver().getInstance(fqcn); Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/action/SaveDiagramImageAction.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/action/SaveDiagramImageAction.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/action/SaveDiagramImageAction.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -187,7 +187,7 @@ */ @Override public void addPages() { - page = (new GraphicWizardPage(project)); + page = new GraphicWizardPage(project); addPage(page); } Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/DiagramEditor.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/DiagramEditor.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/DiagramEditor.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -86,7 +86,6 @@ import org.eclipse.ui.part.IPageSite; import org.eclipse.ui.views.contentoutline.IContentOutlinePage; -import org.jiemamy.JiemamySerializer; import org.jiemamy.eclipse.editor.editpart.DiagramEditPartFactory; import org.jiemamy.eclipse.editor.editpart.DoubleClickSupport; import org.jiemamy.eclipse.editor.editpart.OutlineTreeEditPartFactory; @@ -96,6 +95,7 @@ import org.jiemamy.model.Jiemamy; import org.jiemamy.model.RootModel; import org.jiemamy.serializer.JiemamyDefaultSerializer; +import org.jiemamy.serializer.JiemamySerializer; /** * ERダイアグラムエディタ。 Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/ModelContainer.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/ModelContainer.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/ModelContainer.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -22,9 +22,9 @@ import org.seasar.framework.util.tiger.CollectionsUtil; -import org.jiemamy.Adaptable; import org.jiemamy.event.Observable; import org.jiemamy.event.ObservableImpl; +import org.jiemamy.utils.Adaptable; /** * 分類コンテナ。アウトラインツリー用。 Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/MultiDiagramEditor.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/MultiDiagramEditor.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/MultiDiagramEditor.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -44,13 +44,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.jiemamy.JiemamySerializer; import org.jiemamy.eclipse.utils.ExceptionHandler; import org.jiemamy.model.DiagramPresentationModel; import org.jiemamy.model.DiagramPresentations; import org.jiemamy.model.Jiemamy; import org.jiemamy.model.RootModel; import org.jiemamy.serializer.JiemamyDefaultSerializer; +import org.jiemamy.serializer.JiemamySerializer; /** * マルチページ構成のダイアグラムエディタクラス。 Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/editpart/outlinetree/AbstractModelTreeEditPart.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/editpart/outlinetree/AbstractModelTreeEditPart.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/editor/editpart/outlinetree/AbstractModelTreeEditPart.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,8 +20,8 @@ import org.eclipse.gef.editparts.AbstractTreeEditPart; -import org.jiemamy.Adaptable; import org.jiemamy.model.RootModel; +import org.jiemamy.utils.Adaptable; import org.jiemamy.event.ModelChangeEvent; import org.jiemamy.event.ModelChangeListener; import org.jiemamy.event.Observable; Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/EditorUtil.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/EditorUtil.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/EditorUtil.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -28,7 +28,7 @@ * EclipseのEditorに関連するユーティリティクラス。 * @author daisuke */ -public class EditorUtil { +public final class EditorUtil { /** * 現在アクティブなEditorPartを取得する。 @@ -41,4 +41,10 @@ return page.getActiveEditor(); } + /** + * ユーティリティクラス。 + * @category instance creation + */ + private EditorUtil() { + } } Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/ExceptionHandler.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/ExceptionHandler.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/utils/ExceptionHandler.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -33,7 +33,7 @@ * 例外処理ユーティリティクラス。 * @author daisuke */ -public class ExceptionHandler { +public final class ExceptionHandler { /** * 例外処理で、ログ出力を行う事を表す。 @@ -133,4 +133,11 @@ handleException(e, ALL, message); } + /** + * ユーティリティクラス。 + * @category instance creation + */ + private ExceptionHandler() { + } + } Modified: vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/wizard/NewDiagramWizard.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/wizard/NewDiagramWizard.java 2008-12-11 17:19:19 UTC (rev 2251) +++ vesta/trunk/org.jiemamy.eclipse/src/main/java/org/jiemamy/eclipse/wizard/NewDiagramWizard.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -30,11 +30,11 @@ import org.eclipse.ui.dialogs.WizardNewFileCreationPage; import org.eclipse.ui.ide.IDE; -import org.jiemamy.JiemamySerializer; import org.jiemamy.eclipse.utils.ExceptionHandler; import org.jiemamy.model.Jiemamy; import org.jiemamy.model.RootModel; import org.jiemamy.serializer.JiemamyDefaultSerializer; +import org.jiemamy.serializer.JiemamySerializer; /** * 新規ダイアグラムファイル作成ウィザード Modified: zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF =================================================================== --- zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/META-INF/MANIFEST.MF 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,4 +20,5 @@ org.jiemamy.model.index, org.jiemamy.model.node, org.jiemamy.model.sql, + org.jiemamy.serializer, org.jiemamy.utils Deleted: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Adaptable.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Adaptable.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Adaptable.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -1,71 +0,0 @@ -/* - * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org and the Others. - * Created on 2008/07/19 - * - * 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.List; - -/** - * アダプタを適用可能な型である事を示すインターフェイス。 - * - * <p>Eclipseに実装されたIAdaptableインターフェイスと同様の考え方のインターフェイスである。以下のWebサイトの解説がわかりやすい。</p> - * - * <p>cf. http://www.masatom.in/pukiwiki/index.php?cmd=read&page= - * Eclipse%2F%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%B3%AB%C8%AF%A4%CETIPS%BD%B8%2Forg.eclipse.core.runtime.IAdaptable</p> - * - * @author daisuke - */ -public interface Adaptable { - - /** - * このオブジェクトにまつわる、指定した型を持つアダプタのインスタンスを取得する。 - * - * <p>{@link #hasAdapter(Class)}の結果が{@code true}の場合は、この{@code null}を返してはならない(MUST)。 - * また、{@code false}の場合は、必ず{@code null}を返さなければならない(MUST)。</p> - * - * @param <T> アダプタを表すクラス - * @param adapter アダプタを表すクラス - * @return アダプタのインスタンス。該当するアダプタが存在しない場合、{@code null}を返す。 - * @throws IllegalArgumentException 引数に{@code null}を与えた場合 - */ - <T>T getAdapter(Class<T> adapter); - - /** - * このオブジェクトが持つアダプタのリストを取得する。 - * - * @return アダプタのリスト - * @throws UnsupportedOperationException アダプタのリストを提供しない場合 - */ - List<Object> getAdapters(); - - /** - * 指定したアダプタを持つ(取得可能)かどうか調べる。 - * @param adapter アダプタクラス - * @return 適用可能の場合{@code true} - * @throws IllegalArgumentException 引数に{@code null}を与えた場合 - */ - boolean hasAdapter(Class<?> adapter); - - /** - * アダプタを登録する。 - * @param adapter 登録するアダプタ - * @throws UnsupportedOperationException - * @throws IllegalArgumentException 引数に{@code null}を与えた場合 - */ - void registerAdapter(Object adapter); -} Deleted: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Context.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Context.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Context.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -1,56 +0,0 @@ -/* - * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org and the Others. - * Created on 2008/09/17 - * - * 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.Map; - -/** - * コンテキスト情報インターフェイス。 - * @author daisuke - */ -public interface Context { - - /** - * コンテキスト値のマップを取得する。 - * @return コンテキスト値のマップ - */ - Map<String, Object> getProperties(); - - /** - * コンテキスト値を取得する。 - * @param <T> コンテキスト値の型 - * @param key キー - * @return コンテキスト値 - */ - <T>T getValue(String key); - - /** - * コンテキスト値のマップを設定する。 - * @param properties コンテキスト値のマップ - */ - void setProperties(Map<String, Object> properties); - - /** - * コンテキスト値を設定する。 - * @param <T> コンテキスト値の型 - * @param key キー - * @param value コンテキスト値 - */ - <T>void setValue(String key, T value); -} Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/InstanceAccessStrategy.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/InstanceAccessStrategy.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/InstanceAccessStrategy.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,6 +20,7 @@ /** * インスタンスにアクセスする方法を示す戦略インターフェイス。 + * * @param <T> 対象インスタンスの型 * @author daisuke */ @@ -27,6 +28,7 @@ /** * インスタンスを取得する。 + * * @param fqcn 完全修飾クラス名 * @return インスタンス * @throws ClassNotFoundException 指定したクラスが見つからなかった場合 Copied: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyImplementation.java (from rev 2250, zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/JiemamyImplementation.java) =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyImplementation.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamyImplementation.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -0,0 +1,67 @@ +/* + * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org 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.lang.reflect.Constructor; +import java.util.UUID; + +import org.jiemamy.model.Identifiable; +import org.jiemamy.model.Jiemamy; + +/** + * Jiemamy実装(及び仕様範囲)を表すインターフェイス。 + * + * <p>Jiemamy関連クラスのインスタンス生成戦略として機能する。</p> + * + * <p>{@link Jiemamy}がインスタンスをどのようにして生成するかは、下記の例のように実装依存する。 + * このストラテジは、ファクトリ({@link Jiemamy})に対してインスタンスの生成方法を与えるためのインターフェイスである。</p> + * + * <ul> + * <li>普通に new (もしくは{@link Class#newInstance()}や {@link Constructor#newInstance(Object...)}</li> + * <li>DI Containerや、その他フレームワークがインスタンスを生成し、管理するケース等</li> + * </ul> + * + * @author daisuke + */ +public interface JiemamyImplementation { + + /** + * Jiemamy関連クラスのインスタンスを生成する。 + * + * @param <T> 要求するJiemamy関連クラス + * @param clazz 要求するJiemamy関連クラス + * @return Jiemamy関連クラスのインスタンス + * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 + * @throws IllegalArgumentException 引数に{@code null}を与えた場合 + */ + <T>T newInstance(Class<T> clazz); + + /** + * Jiemamy関連クラスのインスタンスを生成する。 + * + * @param <T> 要求するJiemamy関連クラス + * @param clazz 要求するJiemamy関連クラス + * @param id モデルID + * @return Jiemamy関連クラスのインスタンス + * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 + * @throws IllegalArgumentException 引数に{@code null}を与えた場合 + */ + <T extends Identifiable>T newInstance(Class<T> clazz, UUID id); + +} Deleted: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamySerializer.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamySerializer.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamySerializer.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -1,48 +0,0 @@ -/* - * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org and the Others. - * Created on 2008/06/09 - * - * This file is part of Jiemamy-core. - * - * 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.io.InputStream; - -import org.jiemamy.exception.SerializationException; -import org.jiemamy.model.RootModel; - -/** - * シリアライザインターフェイス。 - * @author daisuke - */ -public interface JiemamySerializer { - - /** - * InputStreamからRootModelにデシリアライズする。 - * @param in デシリアライズするInputStream - * @return デシリアライズしたRootModel - * @throws SerializationException デシリアライズに失敗した時 - */ - RootModel deserialize(InputStream in) throws SerializationException; - - /** - * RootModelをInputStreamにシリアライズする。 - * @param rootModel シリアライズするRootModel - * @return シリアライズしたInputStream - * @throws SerializationException シリアライズに失敗した時 - */ - InputStream serialize(RootModel rootModel) throws SerializationException; - -} Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ExportContext.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ExportContext.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ExportContext.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,7 +18,7 @@ */ package org.jiemamy.composer; -import org.jiemamy.Context; +import org.jiemamy.utils.Context; /** * エクスポートに関するコンテキスト情報 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ImportContext.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ImportContext.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/composer/ImportContext.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,7 +18,7 @@ */ package org.jiemamy.composer; -import org.jiemamy.Context; +import org.jiemamy.utils.Context; /** * インポートに関するコンテキスト情報インターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/Jiemamy.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/Jiemamy.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/Jiemamy.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -23,12 +23,15 @@ import java.util.UUID; import org.jiemamy.InstanceAccessStrategy; +import org.jiemamy.JiemamyImplementation; import org.jiemamy.dialect.Dialect; import org.jiemamy.exception.IllegalImplementationException; /** - * 新しいJiemamy関連クラスのインスタンスを生成するためのファクトリ。 + * Jiemamyのコントロール中枢クラス。 * + * <p>Jiemamy関連クラスのインスタンスを生成・取得するためのファクトリ・プロバイダとして機能する。<p> + * * <p>このクラスは、staticなクラスとして扱う。使用する前に {@link #init(JiemamyImplementation, InstanceAccessStrategy)} * メソッドによる初期化が必要であり、この引数には、使用する実装が提供する {@link JiemamyImplementation} のインスタンスを * 与える。この引数により、実装の種類及び、その実装が提供する仕様の範囲が決定される。</p> @@ -41,85 +44,102 @@ public final class Jiemamy { /** 自クラスのインスタンス */ - private static Jiemamy singleton; + private static Jiemamy instance; /** - * TODO for daisuke + * Jiemamyの使用を終了する。 + * + * <p>初期化後は、このメソッドを呼ぶまで、再初期化をしてはならない。 + * マルチスレッド条件下において、意図せず実装が切り替わってしまうことを防ぐための処置。</p> */ - public static synchronized void dispose() { - singleton = null; + public static void dispose() { + instance = null; } /** - * {@link Dialect} のインスタンスを取得する。 + * {@link Dialect}のインスタンスを取得する。 + * * @param rootModel - * @return {@link Dialect}のインスタンス。 + * @return {@link Dialect}のインスタンス * @throws ClassNotFoundException - * @throws IllegalStateException ファクトリが初期化されていない場合 + * @throws IllegalStateException Jiemamyが初期化されていない場合 */ public static Dialect getDialect(RootModel rootModel) throws ClassNotFoundException { return getDialect(rootModel.getDialectId()); } /** - * TODO for daisuke - * @param modelStrategy + * Jiemamyを初期化する。 + * + * <p>与える{@link JiemamyImplementation}によって、これから使用する実装の種類及び、 + * その実装が提供する仕様の範囲が決定される。</p> + * + * <p>現在Jiemamy Projectが提供するJiemamy仕様の実装は、1つだけであり、Artemisと呼ばれている。 + * この実装を使用するためには、org.jiemamy.model.Artemis のインスタンスを与えればよい。</p> + * + * <p>このメソッドで初期化を行った場合、{@link Dialect} のインスタンスはリフレクションにより生成される + * ({@link DefaultInstanceAccessStrategy} が使用される)。</p> + * + * @param jiemamyImpl これから使用するJiemamy実装(及び仕様範囲) + * @throws IllegalStateException Jiemamyが既に初期化済みである場合 */ - public static synchronized void init(JiemamyImplementation modelStrategy) { + public static void init(JiemamyImplementation jiemamyImpl) { if (isInitialized()) { throw new IllegalStateException("Jiemamy is already initialized."); } - singleton = new Jiemamy(modelStrategy, new DefaultInstanceAccessStrategy<Dialect>()); + instance = new Jiemamy(jiemamyImpl, new DefaultInstanceAccessStrategy<Dialect>()); } /** - * ファクトリを初期化する。 + * Jiemamyを初期化する。 * - * <p>与えるファクトリ戦略によって、実装の種類及び、その実装が提供する仕様の範囲が決定される。</p> + * <p>与える{@link JiemamyImplementation}によって、これから使用する実装の種類及び、 + * その実装が提供する仕様の範囲が決定される。</p> * - * <p>現在Jiemamy Projectが提供するJiemamy仕様の実装は、1つだけであり、Artemisというコードネームで呼ばれている。 - * この実装を使用する場合は、org.jiemamy.model.S2InstanceCreationStrategy のインスタンスを与えればよい。</p> + * <p>現在Jiemamy Projectが提供するJiemamy仕様の実装は、1つだけであり、Artemisと呼ばれている。 + * この実装を使用するためには、org.jiemamy.model.Artemis のインスタンスを与えればよい。</p> * - * @param jiemamyImplementation 実装が提供するモデルインスタンス生成戦略 - * @param dialectStrategy 実装が提供するDialectインスタンス取得戦略 + * @param jiemamyImpl これから使用する実装(及び仕様範囲) + * @param dialectStrategy Dialectインスタンス取得戦略 + * @throws IllegalStateException Jiemamyが既に初期化済みである場合 */ - public static void init(JiemamyImplementation jiemamyImplementation, InstanceAccessStrategy<Dialect> dialectStrategy) { + public static void init(JiemamyImplementation jiemamyImpl, InstanceAccessStrategy<Dialect> dialectStrategy) { if (isInitialized()) { throw new IllegalStateException("Jiemamy is already initialized."); } - singleton = new Jiemamy(jiemamyImplementation, dialectStrategy); + instance = new Jiemamy(jiemamyImpl, dialectStrategy); } /** - * TODO for daisuke - * @return + * Jiemamyが初期化済みであるかどうかを調べる。 + * @return 初期化済みである場合{@code true}、未初期化である場合{@code false} */ public static boolean isInitialized() { - return singleton != null; + return instance != null; } /** - * 新しい {@link RootModel} のインスタンスを取得する。 - * @return {@link RootModel}のインスタンス。 - * @throws IllegalStateException ファクトリが初期化されていない場合 + * 新しい{@link RootModel}のインスタンスを取得する。 + * @return {@link RootModel}のインスタンス + * @throws IllegalStateException Jiemamyが初期化されていない場合 */ public static RootModel newRootModel() { return newModel(null, RootModel.class); } /** - * {@link Dialect} のインスタンスを取得する。 + * {@link Dialect}のインスタンスを取得する。 * @param fqcn 完全修飾クラス名 - * @return {@link Dialect}のインスタンス。 + * @return {@link Dialect}のインスタンス * @throws ClassNotFoundException - * @throws IllegalStateException ファクトリが初期化されていない場合 + * @throws IllegalStateException Jiemamyが初期化されていない場合 */ static Dialect getDialect(String fqcn) throws ClassNotFoundException { - if (singleton == null) { - throw new IllegalStateException("Provider is not initialized"); + if (instance == null) { + throw new IllegalStateException("Jiemamy is not initialized."); } - return singleton.dialectStrategy.getInstance(fqcn); + return instance.dialectStrategy.getInstance(fqcn); } /** @@ -127,70 +147,73 @@ * * @param <T> 生成するインスタンスの型 * @param rootModel - * @param clazz + * @param clazz 生成するインスタンスの型 * @return 生成されたインスタンス - * @throws IllegalStateException ファクトリが初期化されていない場合 + * @throws IllegalStateException Jiemamyが初期化されていない場合 * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 * @throws IllegalArgumentException 引数clazzに{@code null}を与えた場合 */ static <T>T newModel(RootModel rootModel, Class<T> clazz) { - if (singleton == null) { - throw new IllegalStateException("Factory is not initialized"); + if (instance == null) { + throw new IllegalStateException("Jiemamy is not initialized."); } - return singleton.modelStrategy.newInstance(clazz); + return instance.jiemamyImpl.newInstance(clazz); } /** - * 指定したIDを持つ、与えられたJiemamy関連クラスのインスタンスを生成する。 - * @param <T> + * 指定したモデルIDを持つ、与えられたJiemamy関連クラスのインスタンスを生成する。 + * + * @param <T> 生成するインスタンスの型 * @param rootModel - * @param clazz - * @param id - * @return 生成されたインスタンス - * @throws IllegalStateException ファクトリが初期化されていない場合 + * @param clazz 生成するインスタンスの型 + * @param id 生成されるモデルが持つモデルID + * @return 生成されたモデルインスタンス + * @throws IllegalStateException Jiemamyが初期化されていない場合 * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 * @throws IllegalArgumentException 引数clazzに{@code null}を与えた場合 */ static <T extends Identifiable>T newModel(RootModel rootModel, Class<T> clazz, UUID id) { - if (singleton == null) { - throw new IllegalStateException("Factory is not initialized"); + if (instance == null) { + throw new IllegalStateException("Jiemamy is not initialized."); } - return singleton.modelStrategy.newInstance(clazz, id); + return instance.jiemamyImpl.newInstance(clazz, id); } /** - * 指定したIDを持つ、新しい {@link RootModel} のインスタンスを取得する。 - * @param id 生成される {@link RootModel} が持つモデルID - * @return {@link RootModel}のインスタンス。 - * @throws IllegalStateException ファクトリが初期化されていない場合 + * 指定したIDを持つ、新しい{@link RootModel}のインスタンスを取得する。 + * + * @param id 生成される{@link RootModel}が持つモデルID + * @return {@link RootModel}のインスタンス + * @throws IllegalStateException Jiemamyが初期化されていない場合 */ static RootModel newRootModel(UUID id) { return newModel(null, RootModel.class, id); } - /** インスタンス生成戦略 */ + /** Jiemamy実装(モデルインスタンス生成戦略) */ + private JiemamyImplementation jiemamyImpl; + + /** {@link Dialect}インスタンス生成戦略 */ private InstanceAccessStrategy<Dialect> dialectStrategy; - /** インスタンス生成戦略 */ - private JiemamyImplementation modelStrategy; - /** * privateコンストラクタ。 - * @param modelStrategy 実装が提供するモデルインスタンス生成戦略 - * @param dialectStrategy 実装が提供するDialectインスタンス取得戦略 + * + * @param jiemamyImpl Jiemamy実装(及び仕様範囲) + * @param dialectStrategy {@link Dialect}インスタンス取得戦略 * @throws IllegalArgumentException 引数に{@code null}を与えた場合 * @category instance creation */ - private Jiemamy(JiemamyImplementation modelStrategy, InstanceAccessStrategy<Dialect> dialectStrategy) { - if (modelStrategy == null) { - throw new IllegalArgumentException("modelStrategy must not to be null."); + private Jiemamy(JiemamyImplementation jiemamyImpl, InstanceAccessStrategy<Dialect> dialectStrategy) { + if (jiemamyImpl == null) { + throw new IllegalArgumentException("jiemamyImpl must not to be null."); } if (dialectStrategy == null) { throw new IllegalArgumentException("dialectStrategy must not to be null."); } - this.modelStrategy = modelStrategy; + this.jiemamyImpl = jiemamyImpl; this.dialectStrategy = dialectStrategy; } Deleted: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/JiemamyImplementation.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/JiemamyImplementation.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/JiemamyImplementation.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -1,59 +0,0 @@ -/* - * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org 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.model; - -import java.lang.reflect.Constructor; -import java.util.UUID; - -/** - * Jiemamy関連クラスのインスタンス生成戦略インターフェイス。 - * - * <p>{@link Jiemamy}がインスタンスをどのようにして生成するかは、下記のように実装によって異なる。 - * このストラテジは、ファクトリに対してインスタンスの生成方法を与えるためのインターフェイスである。</p> - * - * <ul> - * <li>普通に new (もしくは{@link Class#newInstance()}や {@link Constructor#newInstance(Object...)}</li> - * <li>DI Containerや、その他フレームワークがインスタンスを生成し、管理するケース等</li> - * </ul> - * - * @author daisuke - */ -public interface JiemamyImplementation { - - /** - * Jiemamy関連クラスのインスタンスを生成する。 - * @param <T> 要求するJiemamy関連クラス - * @param clazz 要求するJiemamy関連クラス - * @return Jiemamy関連クラスのインスタンス - * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 - * @throws IllegalArgumentException 引数に{@code null}を与えた場合 - */ - <T>T newInstance(Class<T> clazz); - - /** - * Jiemamy関連クラスのインスタンスを生成する。 - * @param <T> 要求するJiemamy関連クラス - * @param clazz 要求するJiemamy関連クラス - * @param id モデルID - * @return Jiemamy関連クラスのインスタンス - * @throws IllegalArgumentException 引数clazzに責務外のクラスを指定して、インスタンスを取得しようとした場合 - * @throws IllegalArgumentException 引数に{@code null}を与えた場合 - */ - <T extends Identifiable>T newInstance(Class<T> clazz, UUID id); -} Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/RootModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/RootModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/RootModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -21,7 +21,6 @@ import java.util.List; import java.util.UUID; -import org.jiemamy.Adaptable; import org.jiemamy.exception.ElementNotFoundException; import org.jiemamy.exception.TooManyElementsException; import org.jiemamy.model.connection.AbstractConnectionModel; @@ -29,6 +28,7 @@ import org.jiemamy.model.datatype.DomainModel; import org.jiemamy.model.node.AbstractEntityModel; import org.jiemamy.model.node.AbstractNodeModel; +import org.jiemamy.utils.Adaptable; /** * Jiemamyの根となるモデルを表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/attribute/ColumnModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/attribute/ColumnModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/attribute/ColumnModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,11 +18,11 @@ */ package org.jiemamy.model.attribute; -import org.jiemamy.Adaptable; import org.jiemamy.model.Identifiable; import org.jiemamy.model.constraint.Constraint; import org.jiemamy.model.constraint.ConstraintsModel; import org.jiemamy.model.datatype.DataTypeDescriptor; +import org.jiemamy.utils.Adaptable; /** * カラムを表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/AbstractConnectionModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/AbstractConnectionModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/AbstractConnectionModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,8 +18,8 @@ */ package org.jiemamy.model.connection; -import org.jiemamy.Adaptable; import org.jiemamy.model.node.AbstractNodeModel; +import org.jiemamy.utils.Adaptable; /** * コネクションを表すモデル抽象クラス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/ForeignKeyMapping.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/ForeignKeyMapping.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/connection/ForeignKeyMapping.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,10 +18,10 @@ */ package org.jiemamy.model.connection; -import org.jiemamy.Adaptable; import org.jiemamy.model.RootModel; import org.jiemamy.model.attribute.ColumnModel; import org.jiemamy.model.node.TableModel; +import org.jiemamy.utils.Adaptable; /** * 外部キーのマッピングを表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/Constraint.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/Constraint.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/Constraint.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,7 +18,7 @@ */ package org.jiemamy.model.constraint; -import org.jiemamy.Adaptable; +import org.jiemamy.utils.Adaptable; /** * 制約を表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/ConstraintsModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/ConstraintsModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/constraint/ConstraintsModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,7 +20,7 @@ import java.util.Collection; -import org.jiemamy.Adaptable; +import org.jiemamy.utils.Adaptable; /** * 制約の集合モデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/InsertDataSetModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/InsertDataSetModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/InsertDataSetModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -21,8 +21,8 @@ import java.util.List; import java.util.Map; -import org.jiemamy.Adaptable; import org.jiemamy.model.node.AbstractEntityModel; +import org.jiemamy.utils.Adaptable; /** * INSERT用データセットを表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/RecordModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/RecordModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/dataset/RecordModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,9 +20,9 @@ import java.util.Map; -import org.jiemamy.Adaptable; import org.jiemamy.model.Identifiable; import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.utils.Adaptable; /** * DB上のデータの各レコード(Row)を表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataType.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataType.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataType.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,7 +18,7 @@ */ package org.jiemamy.model.datatype; -import org.jiemamy.Adaptable; +import org.jiemamy.utils.Adaptable; /** * データ型インターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataTypeDescriptor.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataTypeDescriptor.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DataTypeDescriptor.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,7 +18,7 @@ */ package org.jiemamy.model.datatype; -import org.jiemamy.Adaptable; +import org.jiemamy.utils.Adaptable; /** * 型記述子。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DomainModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DomainModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/datatype/DomainModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,10 +20,10 @@ import java.util.List; -import org.jiemamy.Adaptable; import org.jiemamy.model.Identifiable; import org.jiemamy.model.constraint.Constraint; import org.jiemamy.model.constraint.ConstraintsModel; +import org.jiemamy.utils.Adaptable; /** * ドメインを表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexColumnModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexColumnModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexColumnModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -18,8 +18,8 @@ */ package org.jiemamy.model.index; -import org.jiemamy.Adaptable; import org.jiemamy.model.attribute.ColumnModel; +import org.jiemamy.utils.Adaptable; /** * インデックス対象のカラムを表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/index/IndexModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,7 +20,7 @@ import java.util.List; -import org.jiemamy.Adaptable; +import org.jiemamy.utils.Adaptable; /** * インデックスを表すモデルインターフェイス。 Modified: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/node/AbstractNodeModel.java =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/node/AbstractNodeModel.java 2008-12-11 17:19:19 UTC (rev 2251) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/model/node/AbstractNodeModel.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -20,8 +20,8 @@ import java.util.List; -import org.jiemamy.Adaptable; import org.jiemamy.model.connection.AbstractConnectionModel; +import org.jiemamy.utils.Adaptable; /** * ノードを表すモデルインターフェイス。 Copied: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/serializer/JiemamySerializer.java (from rev 2250, zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/JiemamySerializer.java) =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/serializer/JiemamySerializer.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/serializer/JiemamySerializer.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -0,0 +1,48 @@ +/* + * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2008/06/09 + * + * This file is part of Jiemamy-core. + * + * 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.serializer; + +import java.io.InputStream; + +import org.jiemamy.exception.SerializationException; +import org.jiemamy.model.RootModel; + +/** + * シリアライザインターフェイス。 + * @author daisuke + */ +public interface JiemamySerializer { + + /** + * InputStreamからRootModelにデシリアライズする。 + * @param in デシリアライズするInputStream + * @return デシリアライズしたRootModel + * @throws SerializationException デシリアライズに失敗した時 + */ + RootModel deserialize(InputStream in) throws SerializationException; + + /** + * RootModelをInputStreamにシリアライズする。 + * @param rootModel シリアライズするRootModel + * @return シリアライズしたInputStream + * @throws SerializationException シリアライズに失敗した時 + */ + InputStream serialize(RootModel rootModel) throws SerializationException; + +} Copied: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Adaptable.java (from rev 2250, zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Adaptable.java) =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Adaptable.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Adaptable.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -0,0 +1,71 @@ +/* + * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2008/07/19 + * + * 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.utils; + +import java.util.List; + +/** + * アダプタを適用可能な型である事を示すインターフェイス。 + * + * <p>Eclipseに実装されたIAdaptableインターフェイスと同様の考え方のインターフェイスである。以下のWebサイトの解説がわかりやすい。</p> + * + * <p>cf. http://www.masatom.in/pukiwiki/index.php?cmd=read&page= + * Eclipse%2F%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%B3%AB%C8%AF%A4%CETIPS%BD%B8%2Forg.eclipse.core.runtime.IAdaptable</p> + * + * @author daisuke + */ +public interface Adaptable { + + /** + * このオブジェクトにまつわる、指定した型を持つアダプタのインスタンスを取得する。 + * + * <p>{@link #hasAdapter(Class)}の結果が{@code true}の場合は、この{@code null}を返してはならない(MUST)。 + * また、{@code false}の場合は、必ず{@code null}を返さなければならない(MUST)。</p> + * + * @param <T> アダプタを表すクラス + * @param adapter アダプタを表すクラス + * @return アダプタのインスタンス。該当するアダプタが存在しない場合、{@code null}を返す。 + * @throws IllegalArgumentException 引数に{@code null}を与えた場合 + */ + <T>T getAdapter(Class<T> adapter); + + /** + * このオブジェクトが持つアダプタのリストを取得する。 + * + * @return アダプタのリスト + * @throws UnsupportedOperationException アダプタのリストを提供しない場合 + */ + List<Object> getAdapters(); + + /** + * 指定したアダプタを持つ(取得可能)かどうか調べる。 + * @param adapter アダプタクラス + * @return 適用可能の場合{@code true} + * @throws IllegalArgumentException 引数に{@code null}を与えた場合 + */ + boolean hasAdapter(Class<?> adapter); + + /** + * アダプタを登録する。 + * @param adapter 登録するアダプタ + * @throws UnsupportedOperationException + * @throws IllegalArgumentException 引数に{@code null}を与えた場合 + */ + void registerAdapter(Object adapter); +} Property changes on: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Adaptable.java ___________________________________________________________________ Name: svn:mime-type + text/plain Copied: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Context.java (from rev 2250, zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/Context.java) =================================================================== --- zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Context.java (rev 0) +++ zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Context.java 2008-12-11 18:02:39 UTC (rev 2252) @@ -0,0 +1,56 @@ +/* + * Copyright 2007-2008 MIYAMOTO Daisuke, jiemamy.org and the Others. + * Created on 2008/09/17 + * + * 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.utils; + +import java.util.Map; + +/** + * コンテキスト情報インターフェイス。 + * @author daisuke + */ +public interface Context { + + /** + * コンテキスト値のマップを取得する。 + * @return コンテキスト値のマップ + */ + Map<String, Object> getProperties(); + + /** + * コンテキスト値を取得する。 + * @param <T> コンテキスト値の型 + * @param key キー + * @return コンテキスト値 + */ + <T>T getValue(String key); + + /** + * コンテキスト値のマップを設定する。 + * @param properties コンテキスト値のマップ + */ + void setProperties(Map<String, Object> properties); + + /** + * コンテキスト値を設定する。 + * @param <T> コンテキスト値の型 + * @param key キー + * @param value コンテキスト値 + */ + <T>void setValue(String key, T value); +} Property changes on: zeus/trunk/org.jiemamy.spec.core/src/main/java/org/jiemamy/utils/Context.java ___________________________________________________________________ Name: svn:mime-type + text/plain