From 67f3b30c6f26881dad8ce4a36e7a50c14bf5c9b3 Mon Sep 17 00:00:00 2001
From: Eike Stepper
Date: Sat, 2 Jun 2012 20:53:08 +0200
Subject: [381472] Design a repository administration API
https://bugs.eclipse.org/bugs/show_bug.cgi?id=381472
---
plugins/org.eclipse.emf.cdo.admin/.classpath | 7 +
plugins/org.eclipse.emf.cdo.admin/.options | 3 +
plugins/org.eclipse.emf.cdo.admin/.project | 44 +++
.../.settings/.api_filters | 26 ++
.../.settings/org.eclipse.core.resources.prefs | 3 +
.../.settings/org.eclipse.jdt.core.prefs | 395 +++++++++++++++++++++
.../.settings/org.eclipse.jdt.launching.prefs | 3 +
.../.settings/org.eclipse.jdt.ui.prefs | 119 +++++++
.../org.eclipse.ltk.core.refactoring.prefs | 3 +
.../.settings/org.eclipse.mylyn.tasks.ui.prefs | 4 +
.../.settings/org.eclipse.mylyn.team.ui.prefs | 3 +
.../.settings/org.eclipse.pde.api.tools.prefs | 94 +++++
.../.settings/org.eclipse.pde.prefs | 31 ++
.../org.eclipse.emf.cdo.admin/META-INF/MANIFEST.MF | 21 ++
plugins/org.eclipse.emf.cdo.admin/about.html | 28 ++
plugins/org.eclipse.emf.cdo.admin/build.properties | 26 ++
plugins/org.eclipse.emf.cdo.admin/copyright.txt | 8 +
.../org.eclipse.emf.cdo.admin/plugin.properties | 11 +
.../org/eclipse/emf/cdo/admin/CDOAdminUtil.java | 41 +++
.../org/eclipse/emf/cdo/admin/package-info.java | 16 +
.../emf/cdo/internal/admin/CDOAdminClient.java | 87 +++++
.../cdo/internal/admin/CDOAdminClientProtocol.java | 88 +++++
.../internal/admin/CDOAdminClientRepository.java | 174 +++++++++
.../internal/admin/CreateRepositoryRequest.java | 54 +++
.../internal/admin/DeleteRepositoryRequest.java | 47 +++
.../internal/admin/QueryRepositoriesRequest.java | 56 +++
.../internal/admin/RepositoryAddedIndication.java | 37 ++
.../admin/RepositoryRemovedIndication.java | 39 ++
.../admin/RepositoryStateChangedIndication.java | 40 +++
.../admin/RepositoryTypeChangedIndication.java | 40 +++
.../eclipse/emf/cdo/internal/admin/bundle/OM.java | 44 +++
.../META-INF/MANIFEST.MF | 2 +
.../emf/cdo/common/CDOCommonRepository.java | 352 +++++++++---------
.../org/eclipse/emf/cdo/common/admin/CDOAdmin.java | 31 ++
.../emf/cdo/common/admin/CDOAdminRepository.java | 39 ++
.../emf/cdo/spi/common/admin/AbstractCDOAdmin.java | 140 ++++++++
.../common/admin/CDOAdminProtocolConstants.java | 41 +++
.../emf/cdo/spi/common/admin/package-info.java | 16 +
.../org.eclipse.emf.cdo.server.admin/.classpath | 7 +
plugins/org.eclipse.emf.cdo.server.admin/.options | 3 +
plugins/org.eclipse.emf.cdo.server.admin/.project | 44 +++
.../.settings/.api_filters | 19 +
.../.settings/org.eclipse.core.resources.prefs | 3 +
.../.settings/org.eclipse.jdt.core.prefs | 395 +++++++++++++++++++++
.../.settings/org.eclipse.jdt.launching.prefs | 3 +
.../.settings/org.eclipse.jdt.ui.prefs | 119 +++++++
.../org.eclipse.ltk.core.refactoring.prefs | 3 +
.../.settings/org.eclipse.mylyn.tasks.ui.prefs | 4 +
.../.settings/org.eclipse.mylyn.team.ui.prefs | 3 +
.../.settings/org.eclipse.pde.api.tools.prefs | 94 +++++
.../.settings/org.eclipse.pde.prefs | 31 ++
.../META-INF/MANIFEST.MF | 17 +
.../org.eclipse.emf.cdo.server.admin/about.html | 28 ++
.../build.properties | 27 ++
.../org.eclipse.emf.cdo.server.admin/copyright.txt | 8 +
.../plugin.properties | 11 +
.../org.eclipse.emf.cdo.server.admin/plugin.xml | 27 ++
.../emf/cdo/server/admin/CDOAdminHandler.java | 45 +++
.../emf/cdo/server/admin/CDOAdminServerUtil.java | 37 ++
.../eclipse/emf/cdo/server/admin/package-info.java | 16 +
.../cdo/server/internal/admin/CDOAdminServer.java | 289 +++++++++++++++
.../internal/admin/CDOAdminServerProtocol.java | 152 ++++++++
.../internal/admin/CDOAdminServerRepository.java | 189 ++++++++++
.../internal/admin/CreateRepositoryIndication.java | 56 +++
.../internal/admin/DeleteRepositoryIndication.java | 58 +++
.../admin/QueryRepositoriesIndication.java | 50 +++
.../internal/admin/RepositoryAddedRequest.java | 36 ++
.../internal/admin/RepositoryRemovedRequest.java | 36 ++
.../admin/RepositoryStateChangedRequest.java | 46 +++
.../admin/RepositoryTypeChangedRequest.java | 45 +++
.../emf/cdo/server/internal/admin/bundle/OM.java | 44 +++
.../org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF | 2 +
.../cdo/tests/bugzilla/Bugzilla_381472_Test.java | 91 +++++
.../eclipse/net4j/util/container/SetContainer.java | 115 ++++++
74 files changed, 4190 insertions(+), 176 deletions(-)
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.classpath
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.options
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.project
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/.api_filters
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.core.resources.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.core.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.launching.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.ltk.core.refactoring.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.team.ui.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.api.tools.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.admin/META-INF/MANIFEST.MF
create mode 100644 plugins/org.eclipse.emf.cdo.admin/about.html
create mode 100644 plugins/org.eclipse.emf.cdo.admin/build.properties
create mode 100644 plugins/org.eclipse.emf.cdo.admin/copyright.txt
create mode 100644 plugins/org.eclipse.emf.cdo.admin/plugin.properties
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/CDOAdminUtil.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/package-info.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClient.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientProtocol.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientRepository.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CreateRepositoryRequest.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/DeleteRepositoryRequest.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/QueryRepositoriesRequest.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryAddedIndication.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryRemovedIndication.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryStateChangedIndication.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryTypeChangedIndication.java
create mode 100644 plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/bundle/OM.java
create mode 100644 plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdmin.java
create mode 100644 plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdminRepository.java
create mode 100644 plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/AbstractCDOAdmin.java
create mode 100644 plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/CDOAdminProtocolConstants.java
create mode 100644 plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/package-info.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.classpath
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.options
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.project
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/.api_filters
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.core.resources.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.core.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.launching.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.ui.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.ltk.core.refactoring.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.team.ui.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.api.tools.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.prefs
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/META-INF/MANIFEST.MF
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/about.html
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/build.properties
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/copyright.txt
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/plugin.properties
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/plugin.xml
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminHandler.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminServerUtil.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/package-info.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerProtocol.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerRepository.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CreateRepositoryIndication.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/DeleteRepositoryIndication.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/QueryRepositoriesIndication.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryAddedRequest.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryRemovedRequest.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryStateChangedRequest.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryTypeChangedRequest.java
create mode 100644 plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/bundle/OM.java
create mode 100644 plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java
create mode 100644 plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/SetContainer.java
(limited to 'plugins')
diff --git a/plugins/org.eclipse.emf.cdo.admin/.classpath b/plugins/org.eclipse.emf.cdo.admin/.classpath
new file mode 100644
index 0000000000..64c5e31b7a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.emf.cdo.admin/.options b/plugins/org.eclipse.emf.cdo.admin/.options
new file mode 100644
index 0000000000..b94e99b109
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.options
@@ -0,0 +1,3 @@
+# Debugging and tracing options
+
+org.eclipse.emf.cdo.admin/debug = true
diff --git a/plugins/org.eclipse.emf.cdo.admin/.project b/plugins/org.eclipse.emf.cdo.admin/.project
new file mode 100644
index 0000000000..d05437f734
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.project
@@ -0,0 +1,44 @@
+
+
+ org.eclipse.emf.cdo.admin
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ org.eclipse.pde.api.tools.apiAnalysisBuilder
+
+
+
+
+ org.eclipse.emf.cdo.releng.version.VersionBuilder
+
+
+ release.path
+ /org.eclipse.emf.cdo.releng/release.xml
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.api.tools.apiAnalysisNature
+ org.eclipse.emf.cdo.releng.version.VersionNature
+
+
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.admin/.settings/.api_filters
new file mode 100644
index 0000000000..843ab9d224
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/.api_filters
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000..fa55c58da3
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Mon Jul 04 12:59:04 CEST 2011
+eclipse.preferences.version=1
+encoding//model/org.eclipse.emf.cdo.defs.ecorediag=UTF-8
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..805cd8fbdd
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,395 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=2
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000000..556ed07a3c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+#Fri Sep 02 05:38:34 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000..4343e2f963
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,119 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=true
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_EMFT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_EMFT
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=/*\r\n * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */ /**\r\n * @author Eike Stepper\r\n */ ${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration} \r\n \r\n \r\n \r\n ${exception_var}.printStackTrace(); ${body_statement} ${body_statement} return ${field}; ${field} \= ${param};
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=false
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000000..864e30fe5d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs
new file mode 100644
index 0000000000..b050639a54
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs
@@ -0,0 +1,4 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+project.repository.kind=bugzilla
+project.repository.url=https\://bugs.eclipse.org/bugs
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.team.ui.prefs
new file mode 100644
index 0000000000..2f50f36c0c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.mylyn.team.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+commit.comment.template=[${task.id}] ${task.description} \r\n${task.url}
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000000..f8d0a0660e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,94 @@
+#Thu Feb 04 09:44:24 CET 2010
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000000..c6b96bb45e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,31 @@
+#Thu Feb 04 09:44:24 CET 2010
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.admin/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.admin/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..1da02bfcd1
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.cdo.admin; singleton:=true
+Bundle-Version: 4.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Activator: org.eclipse.emf.cdo.internal.admin.bundle.OM$Activator
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
+Export-Package: org.eclipse.emf.cdo.admin;version="4.1.0",
+ org.eclipse.emf.cdo.internal.admin;version="4.1.0";
+ x-friends:="org.eclipse.emf.cdo.tests,
+ org.eclipse.emf.cdo.defs,
+ org.eclipse.emf.cdo.ui,
+ org.eclipse.emf.cdo.examples",
+ org.eclipse.emf.cdo.internal.admin.bundle;version="4.1.0";x-friends:="org.eclipse.emf.cdo.tests"
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.cdo.admin/about.html b/plugins/org.eclipse.emf.cdo.admin/about.html
new file mode 100644
index 0000000000..d35d5aed64
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/about.html
@@ -0,0 +1,28 @@
+
+
+
+
+About
+
+
+About This Content
+
+June 5, 2007
+License
+
+The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at http://www.eclipse.org/legal/epl-v10.html .
+For purposes of the EPL, "Program" will mean the Content.
+
+If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at http://www.eclipse.org .
+
+
+
diff --git a/plugins/org.eclipse.emf.cdo.admin/build.properties b/plugins/org.eclipse.emf.cdo.admin/build.properties
new file mode 100644
index 0000000000..433ee42f0b
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/build.properties
@@ -0,0 +1,26 @@
+# Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Eike Stepper - initial API and implementation
+
+# NLS_MESSAGEFORMAT_VAR
+
+bin.includes = .,\
+ META-INF/,\
+ plugin.properties,\
+ .options,\
+ about.html,\
+ copyright.txt
+src.includes = about.html,\
+ copyright.txt
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+
+doc.project = org.eclipse.emf.cdo.doc
+
+generateSourceReferences = true
diff --git a/plugins/org.eclipse.emf.cdo.admin/copyright.txt b/plugins/org.eclipse.emf.cdo.admin/copyright.txt
new file mode 100644
index 0000000000..0a0f67e6d7
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/copyright.txt
@@ -0,0 +1,8 @@
+Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Eike Stepper - initial API and implementation
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.admin/plugin.properties b/plugins/org.eclipse.emf.cdo.admin/plugin.properties
new file mode 100644
index 0000000000..303160fc1d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/plugin.properties
@@ -0,0 +1,11 @@
+# Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Eike Stepper - initial API and implementation
+
+pluginName = CDO Model Repository Client Admin Support
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/CDOAdminUtil.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/CDOAdminUtil.java
new file mode 100644
index 0000000000..c24c7b72ba
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/CDOAdminUtil.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdmin;
+import org.eclipse.emf.cdo.internal.admin.CDOAdminClient;
+
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.signal.ISignalProtocol;
+
+/**
+ * Various static methods that may help with CDO remote administration.
+ *
+ * @author Eike Stepper
+ */
+public final class CDOAdminUtil
+{
+ public static final long DEFAULT_TIMEOUT = ISignalProtocol.DEFAULT_TIMEOUT;
+
+ private CDOAdminUtil()
+ {
+ }
+
+ public static CDOAdmin openAdmin(IConnector connector)
+ {
+ return openAdmin(connector, DEFAULT_TIMEOUT);
+ }
+
+ public static CDOAdmin openAdmin(IConnector connector, long timeout)
+ {
+ return new CDOAdminClient(connector, timeout);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/package-info.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/package-info.java
new file mode 100644
index 0000000000..8a0dcf0102
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/admin/package-info.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+
+/**
+ * Client side of the protocol to administer CDO repositories remotely.
+ */
+package org.eclipse.emf.cdo.admin;
+
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClient.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClient.java
new file mode 100644
index 0000000000..dc14b2c137
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClient.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository.State;
+import org.eclipse.emf.cdo.common.CDOCommonRepository.Type;
+import org.eclipse.emf.cdo.spi.common.admin.AbstractCDOAdmin;
+
+import org.eclipse.net4j.connector.IConnector;
+
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOAdminClient extends AbstractCDOAdmin
+{
+ private final IConnector connector;
+
+ private CDOAdminClientProtocol protocol;
+
+ public CDOAdminClient(IConnector connector, long timeout)
+ {
+ super(timeout);
+ this.connector = connector;
+ activate();
+ }
+
+ public final IConnector getConnector()
+ {
+ return connector;
+ }
+
+ public void repositoryTypeChanged(String name, Type oldType, Type newType)
+ {
+ CDOAdminClientRepository repository = (CDOAdminClientRepository)getRepository(name);
+ if (repository != null)
+ {
+ repository.typeChanged(oldType, newType);
+ }
+ }
+
+ public void repositoryStateChanged(String name, State oldState, State newState)
+ {
+ CDOAdminClientRepository repository = (CDOAdminClientRepository)getRepository(name);
+ if (repository != null)
+ {
+ repository.stateChanged(oldState, newState);
+ }
+ }
+
+ @Override
+ protected boolean doCreateRepository(String name, String type, Map properties)
+ {
+ return protocol.createRepository(name, type, properties);
+ }
+
+ @Override
+ protected boolean doDeleteRepository(String name, String type)
+ {
+ return protocol.deleteRepository(name, type);
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+
+ protocol = new CDOAdminClientProtocol(this);
+ protocol.queryRepositories(getSet());
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ protocol.close();
+ super.doDeactivate();
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientProtocol.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientProtocol.java
new file mode 100644
index 0000000000..853242b40a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientProtocol.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+import org.eclipse.emf.cdo.common.util.TransportException;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.RequestWithConfirmation;
+import org.eclipse.net4j.signal.SignalProtocol;
+import org.eclipse.net4j.signal.SignalReactor;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOAdminClientProtocol extends SignalProtocol
+{
+ public CDOAdminClientProtocol(CDOAdminClient admin)
+ {
+ super(CDOAdminProtocolConstants.PROTOCOL_NAME);
+ setInfraStructure(admin);
+ open(admin.getConnector());
+ }
+
+ public void queryRepositories(Set result)
+ {
+ send(new QueryRepositoriesRequest(this, result));
+ }
+
+ public boolean createRepository(String name, String type, Map properties)
+ {
+ return send(new CreateRepositoryRequest(this, name, type, properties));
+ }
+
+ public boolean deleteRepository(String name, String type)
+ {
+ return send(new DeleteRepositoryRequest(this, name, type));
+ }
+
+ @Override
+ protected SignalReactor createSignalReactor(short signalID)
+ {
+ switch (signalID)
+ {
+ case CDOAdminProtocolConstants.SIGNAL_REPOSITORY_ADDED:
+ return new RepositoryAddedIndication(this);
+
+ case CDOAdminProtocolConstants.SIGNAL_REPOSITORY_REMOVED:
+ return new RepositoryRemovedIndication(this);
+
+ case CDOAdminProtocolConstants.SIGNAL_REPOSITORY_TYPE_CHANGED:
+ return new RepositoryTypeChangedIndication(this);
+
+ case CDOAdminProtocolConstants.SIGNAL_REPOSITORY_STATE_CHANGED:
+ return new RepositoryStateChangedIndication(this);
+
+ default:
+ return super.createSignalReactor(signalID);
+ }
+ }
+
+ private RESULT send(RequestWithConfirmation request)
+ {
+ try
+ {
+ return request.send();
+ }
+ catch (RuntimeException ex)
+ {
+ throw ex;
+ }
+ catch (Exception ex)
+ {
+ throw new TransportException(ex);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientRepository.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientRepository.java
new file mode 100644
index 0000000000..b00694e944
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CDOAdminClientRepository.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdmin;
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOID.ObjectType;
+import org.eclipse.emf.cdo.common.util.RepositoryStateChangedEvent;
+import org.eclipse.emf.cdo.common.util.RepositoryTypeChangedEvent;
+
+import org.eclipse.net4j.util.event.Notifier;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOAdminClientRepository extends Notifier implements CDOAdminRepository
+{
+ private CDOAdminClient admin;
+
+ private String name;
+
+ private String uuid;
+
+ private Type type;
+
+ private State state;
+
+ private long creationTime;
+
+ private String storeType;
+
+ private Set objectIDTypes;
+
+ private boolean supportingAudits;
+
+ private boolean supportingBranches;
+
+ private boolean supportingEcore;
+
+ private boolean ensuringReferentialIntegrity;
+
+ private IDGenerationLocation idGenerationLocation;
+
+ public CDOAdminClientRepository(CDOAdminClient admin, ExtendedDataInputStream in) throws IOException
+ {
+ this.admin = admin;
+ name = in.readString();
+ uuid = in.readString();
+ type = in.readEnum(Type.class);
+ state = in.readEnum(State.class);
+ creationTime = in.readLong();
+ storeType = in.readString();
+
+ Set objectIDTypes = new HashSet();
+ int types = in.readInt();
+ for (int i = 0; i < types; i++)
+ {
+ CDOID.ObjectType objectIDType = in.readEnum(CDOID.ObjectType.class);
+ objectIDTypes.add(objectIDType);
+ }
+
+ supportingAudits = in.readBoolean();
+ supportingBranches = in.readBoolean();
+ supportingEcore = in.readBoolean();
+ ensuringReferentialIntegrity = in.readBoolean();
+ idGenerationLocation = in.readEnum(IDGenerationLocation.class);
+ }
+
+ public CDOAdmin getAdmin()
+ {
+ return admin;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public String getUUID()
+ {
+ return uuid;
+ }
+
+ public Type getType()
+ {
+ return type;
+ }
+
+ public State getState()
+ {
+ return state;
+ }
+
+ public long getCreationTime()
+ {
+ return creationTime;
+ }
+
+ public String getStoreType()
+ {
+ return storeType;
+ }
+
+ public Set getObjectIDTypes()
+ {
+ return objectIDTypes;
+ }
+
+ public boolean isSupportingAudits()
+ {
+ return supportingAudits;
+ }
+
+ public boolean isSupportingBranches()
+ {
+ return supportingBranches;
+ }
+
+ public boolean isSupportingEcore()
+ {
+ return supportingEcore;
+ }
+
+ public boolean isEnsuringReferentialIntegrity()
+ {
+ return ensuringReferentialIntegrity;
+ }
+
+ public IDGenerationLocation getIDGenerationLocation()
+ {
+ return idGenerationLocation;
+ }
+
+ public CDOID getRootResourceID()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public long getTimeStamp() throws UnsupportedOperationException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean delete(String type)
+ {
+ return admin.deleteRepository(this, type);
+ }
+
+ public void typeChanged(Type oldType, Type newType)
+ {
+ type = newType;
+ fireEvent(new RepositoryTypeChangedEvent(this, oldType, newType));
+ }
+
+ public void stateChanged(State oldState, State newState)
+ {
+ state = newState;
+ fireEvent(new RepositoryStateChangedEvent(this, oldState, newState));
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CreateRepositoryRequest.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CreateRepositoryRequest.java
new file mode 100644
index 0000000000..16ea3c8f95
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/CreateRepositoryRequest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.RequestWithConfirmation;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public class CreateRepositoryRequest extends RequestWithConfirmation
+{
+ private String name;
+
+ private String type;
+
+ private Map properties;
+
+ public CreateRepositoryRequest(CDOAdminClientProtocol protocol, String name, String type,
+ Map properties)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_CREATE_REPOSITORY);
+ this.name = name;
+ this.type = type;
+ this.properties = properties;
+ }
+
+ @Override
+ protected void requesting(ExtendedDataOutputStream out) throws Exception
+ {
+ out.writeString(name);
+ out.writeString(type);
+ out.writeObject(properties);
+ }
+
+ @Override
+ protected Boolean confirming(ExtendedDataInputStream in) throws Exception
+ {
+ return in.readBoolean();
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/DeleteRepositoryRequest.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/DeleteRepositoryRequest.java
new file mode 100644
index 0000000000..9be9369060
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/DeleteRepositoryRequest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.RequestWithConfirmation;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class DeleteRepositoryRequest extends RequestWithConfirmation
+{
+ private String name;
+
+ private String type;
+
+ public DeleteRepositoryRequest(CDOAdminClientProtocol protocol, String name, String type)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_DELETE_REPOSITORY);
+ this.name = name;
+ this.type = type;
+ }
+
+ @Override
+ protected void requesting(ExtendedDataOutputStream out) throws Exception
+ {
+ out.writeString(name);
+ out.writeString(type);
+ }
+
+ @Override
+ protected Boolean confirming(ExtendedDataInputStream in) throws Exception
+ {
+ return in.readBoolean();
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/QueryRepositoriesRequest.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/QueryRepositoriesRequest.java
new file mode 100644
index 0000000000..60d06aeaac
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/QueryRepositoriesRequest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.RequestWithConfirmation;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public class QueryRepositoriesRequest extends RequestWithConfirmation
+{
+ private Set result;
+
+ public QueryRepositoriesRequest(CDOAdminClientProtocol protocol, Set result)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_QUERY_REPOSITORIES);
+ this.result = result;
+ }
+
+ @Override
+ protected void requesting(ExtendedDataOutputStream out) throws Exception
+ {
+ out.writeBoolean(true);
+ }
+
+ @Override
+ protected Object confirming(ExtendedDataInputStream in) throws Exception
+ {
+ CDOAdminClientProtocol protocol = (CDOAdminClientProtocol)getProtocol();
+ CDOAdminClient admin = protocol.getInfraStructure();
+
+ int size = in.readInt();
+ for (int i = 0; i < size; i++)
+ {
+ CDOAdminClientRepository repository = new CDOAdminClientRepository(admin, in);
+ result.add(repository);
+ }
+
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryAddedIndication.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryAddedIndication.java
new file mode 100644
index 0000000000..6a02f8cf66
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryAddedIndication.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Indication;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryAddedIndication extends Indication
+{
+ public RepositoryAddedIndication(CDOAdminClientProtocol protocol)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_ADDED);
+ }
+
+ @Override
+ protected void indicating(ExtendedDataInputStream in) throws Exception
+ {
+ CDOAdminClientProtocol protocol = (CDOAdminClientProtocol)getProtocol();
+ CDOAdminClient admin = protocol.getInfraStructure();
+
+ CDOAdminClientRepository repository = new CDOAdminClientRepository(admin, in);
+ admin.addElement(repository);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryRemovedIndication.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryRemovedIndication.java
new file mode 100644
index 0000000000..7febee7509
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryRemovedIndication.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Indication;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryRemovedIndication extends Indication
+{
+ public RepositoryRemovedIndication(CDOAdminClientProtocol protocol)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_REMOVED);
+ }
+
+ @Override
+ protected void indicating(ExtendedDataInputStream in) throws Exception
+ {
+ CDOAdminClientProtocol protocol = (CDOAdminClientProtocol)getProtocol();
+ CDOAdminClient admin = protocol.getInfraStructure();
+
+ String name = in.readString();
+ CDOAdminRepository repository = admin.getRepository(name);
+ admin.removeElement(repository);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryStateChangedIndication.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryStateChangedIndication.java
new file mode 100644
index 0000000000..92cba22826
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryStateChangedIndication.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository.State;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Indication;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryStateChangedIndication extends Indication
+{
+ public RepositoryStateChangedIndication(CDOAdminClientProtocol protocol)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_STATE_CHANGED);
+ }
+
+ @Override
+ protected void indicating(ExtendedDataInputStream in) throws Exception
+ {
+ CDOAdminClientProtocol protocol = (CDOAdminClientProtocol)getProtocol();
+ CDOAdminClient admin = protocol.getInfraStructure();
+
+ String name = in.readString();
+ State oldState = in.readEnum(State.class);
+ State newState = in.readEnum(State.class);
+ admin.repositoryStateChanged(name, oldState, newState);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryTypeChangedIndication.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryTypeChangedIndication.java
new file mode 100644
index 0000000000..356ccebce8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/RepositoryTypeChangedIndication.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository.Type;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Indication;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryTypeChangedIndication extends Indication
+{
+ public RepositoryTypeChangedIndication(CDOAdminClientProtocol protocol)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_TYPE_CHANGED);
+ }
+
+ @Override
+ protected void indicating(ExtendedDataInputStream in) throws Exception
+ {
+ CDOAdminClientProtocol protocol = (CDOAdminClientProtocol)getProtocol();
+ CDOAdminClient admin = protocol.getInfraStructure();
+
+ String name = in.readString();
+ Type oldType = in.readEnum(Type.class);
+ Type newType = in.readEnum(Type.class);
+ admin.repositoryTypeChanged(name, oldType, newType);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/bundle/OM.java b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/bundle/OM.java
new file mode 100644
index 0000000000..54a3476607
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.admin/src/org/eclipse/emf/cdo/internal/admin/bundle/OM.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.admin.bundle;
+
+import org.eclipse.net4j.util.om.OMBundle;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.OSGiActivator;
+import org.eclipse.net4j.util.om.log.OMLogger;
+import org.eclipse.net4j.util.om.trace.OMTracer;
+
+/**
+ * The Operations & Maintenance class of this bundle.
+ *
+ * @author Eike Stepper
+ */
+public abstract class OM
+{
+ public static final String BUNDLE_ID = "org.eclipse.emf.cdo.admin"; //$NON-NLS-1$
+
+ public static final OMBundle BUNDLE = OMPlatform.INSTANCE.bundle(BUNDLE_ID, OM.class);
+
+ public static final OMTracer DEBUG = BUNDLE.tracer("debug"); //$NON-NLS-1$
+
+ public static final OMLogger LOG = BUNDLE.logger();
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class Activator extends OSGiActivator
+ {
+ public Activator()
+ {
+ super(BUNDLE);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF
index 419b2d960b..aea2d3ea29 100644
--- a/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.common/META-INF/MANIFEST.MF
@@ -16,6 +16,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";resoluti
org.eclipse.net4j.util;bundle-version="[3.0.0,4.0.0)";visibility:=reexport
Import-Package: org.osgi.framework;version="[1.3.0,2.0.0)";resolution:=optional
Export-Package: org.eclipse.emf.cdo.common;version="4.1.0",
+ org.eclipse.emf.cdo.common.admin;version="4.1.0",
org.eclipse.emf.cdo.common.branch;version="4.1.0",
org.eclipse.emf.cdo.common.commit;version="4.1.0",
org.eclipse.emf.cdo.common.commit.handler;version="4.1.0",
@@ -96,6 +97,7 @@ Export-Package: org.eclipse.emf.cdo.common;version="4.1.0",
org.eclipse.emf.cdo.ui,
org.eclipse.emf.cdo.tests",
org.eclipse.emf.cdo.spi.common;version="4.1.0",
+ org.eclipse.emf.cdo.spi.common.admin;version="4.1.0",
org.eclipse.emf.cdo.spi.common.branch;version="4.1.0",
org.eclipse.emf.cdo.spi.common.commit;version="4.1.0",
org.eclipse.emf.cdo.spi.common.id;version="4.1.0",
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonRepository.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonRepository.java
index 782d4d99aa..2fe7abc504 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonRepository.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/CDOCommonRepository.java
@@ -1,176 +1,176 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.common;
-
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.util.CDOTimeProvider;
-
-import org.eclipse.net4j.util.event.IEvent;
-
-import java.util.Set;
-
-/**
- * Abstracts the information about CDO repositories that is common to both client and server side.
- *
- * A CDOCommonRepository can fire the following events:
- *
- * {@link TypeChangedEvent} after the {@link #getType() repository type} has changed in a fail-over cluster.
- * {@link StateChangedEvent} after the {@link #getState() repository state} has changed in a replicating deployment.
- *
- *
- * @author Eike Stepper
- * @since 3.0
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- * @apiviz.landmark
- * @apiviz.has {@link CDOCommonRepository.IDGenerationLocation}
- * @apiviz.has {@link CDOCommonRepository.Type}
- * @apiviz.has {@link CDOCommonRepository.State}
- * @apiviz.uses {@link CDOCommonRepository.TypeChangedEvent} - - fires
- * @apiviz.uses {@link CDOCommonRepository.StateChangedEvent} - - fires
- */
-public interface CDOCommonRepository extends CDOTimeProvider
-{
- /**
- * Returns the name of this repository.
- */
- public String getName();
-
- /**
- * Returns the UUID of this repository.
- */
- public String getUUID();
-
- /**
- * Returns the type of this repository.
- */
- public Type getType();
-
- /**
- * Returns the state of this repository.
- */
- public State getState();
-
- /**
- * Returns the creation time of this repository.
- */
- public long getCreationTime();
-
- /**
- * Returns the type of the store of this repository.
- */
- public String getStoreType();
-
- /**
- * Returns the type of CDOIDs created by the store of this repository.
- */
- public Set getObjectIDTypes();
-
- /**
- * @since 4.1
- */
- public IDGenerationLocation getIDGenerationLocation();
-
- /**
- * Returns the ID of the root resource of this repository.
- */
- public CDOID getRootResourceID();
-
- /**
- * Returns true
if this repository supports auditing, false
otherwise.
- */
- public boolean isSupportingAudits();
-
- /**
- * Returns true
if this repository supports branching, false
otherwise.
- */
- public boolean isSupportingBranches();
-
- /**
- * Returns true
if this repository supports instances of Ecore, false
otherwise.
- *
- * @since 4.0
- */
- public boolean isSupportingEcore();
-
- /**
- * Returns true
if this repository ensures referential integrity, false
otherwise.
- *
- * @since 4.0
- */
- public boolean isEnsuringReferentialIntegrity();
-
- /**
- * Enumerates the possible {@link CDOCommonRepository#getIDGenerationLocation() ID generation locations} of a CDO
- * repository.
- *
- * @author Eike Stepper
- * @since 4.1
- */
- public enum IDGenerationLocation
- {
- STORE, CLIENT
- }
-
- /**
- * Enumerates the possible {@link CDOCommonRepository#getType() types} of a CDO repository.
- *
- * @author Eike Stepper
- */
- public enum Type
- {
- MASTER, BACKUP, CLONE
- }
-
- /**
- * Enumerates the possible {@link CDOCommonRepository#getState() states} of a CDO repository.
- *
- * @author Eike Stepper
- */
- public static enum State
- {
- INITIAL, OFFLINE, SYNCING, ONLINE;
-
- public boolean isConnected()
- {
- return this == SYNCING || this == ONLINE;
- }
- }
-
- /**
- * An {@link IEvent event} fired when the {@link Type type} of a CDO repository has changed. This usually happens only
- * for repository fail-over participants.
- *
- * @author Eike Stepper
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
- public interface TypeChangedEvent extends IEvent
- {
- public Type getOldType();
-
- public Type getNewType();
- }
-
- /**
- * An {@link IEvent event} fired when the {@link State state} of a CDO repository has changed.
- *
- * @author Eike Stepper
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
- public interface StateChangedEvent extends IEvent
- {
- public State getOldState();
-
- public State getNewState();
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.util.CDOTimeProvider;
+
+import org.eclipse.net4j.util.event.IEvent;
+
+import java.util.Set;
+
+/**
+ * Abstracts the information about CDO repositories that is common to both client and server side.
+ *
+ * A CDOCommonRepository can fire the following events:
+ *
+ * {@link TypeChangedEvent} after the {@link #getType() repository type} has changed in a fail-over cluster.
+ * {@link StateChangedEvent} after the {@link #getState() repository state} has changed in a replicating deployment.
+ *
+ *
+ * @author Eike Stepper
+ * @since 3.0
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @apiviz.landmark
+ * @apiviz.has {@link CDOCommonRepository.IDGenerationLocation}
+ * @apiviz.has {@link CDOCommonRepository.Type}
+ * @apiviz.has {@link CDOCommonRepository.State}
+ * @apiviz.uses {@link CDOCommonRepository.TypeChangedEvent} - - fires
+ * @apiviz.uses {@link CDOCommonRepository.StateChangedEvent} - - fires
+ */
+public interface CDOCommonRepository extends CDOTimeProvider
+{
+ /**
+ * Returns the name of this repository.
+ */
+ public String getName();
+
+ /**
+ * Returns the UUID of this repository.
+ */
+ public String getUUID();
+
+ /**
+ * Returns the type of this repository.
+ */
+ public Type getType();
+
+ /**
+ * Returns the state of this repository.
+ */
+ public State getState();
+
+ /**
+ * Returns the creation time of this repository.
+ */
+ public long getCreationTime();
+
+ /**
+ * Returns the type of the store of this repository.
+ */
+ public String getStoreType();
+
+ /**
+ * Returns the type of CDOIDs created by the store of this repository.
+ */
+ public Set getObjectIDTypes();
+
+ /**
+ * @since 4.1
+ */
+ public IDGenerationLocation getIDGenerationLocation();
+
+ /**
+ * Returns the ID of the root resource of this repository.
+ */
+ public CDOID getRootResourceID();
+
+ /**
+ * Returns true
if this repository supports auditing, false
otherwise.
+ */
+ public boolean isSupportingAudits();
+
+ /**
+ * Returns true
if this repository supports branching, false
otherwise.
+ */
+ public boolean isSupportingBranches();
+
+ /**
+ * Returns true
if this repository supports instances of Ecore, false
otherwise.
+ *
+ * @since 4.0
+ */
+ public boolean isSupportingEcore();
+
+ /**
+ * Returns true
if this repository ensures referential integrity, false
otherwise.
+ *
+ * @since 4.0
+ */
+ public boolean isEnsuringReferentialIntegrity();
+
+ /**
+ * Enumerates the possible {@link CDOCommonRepository#getIDGenerationLocation() ID generation locations} of a CDO
+ * repository.
+ *
+ * @author Eike Stepper
+ * @since 4.1
+ */
+ public enum IDGenerationLocation
+ {
+ STORE, CLIENT
+ }
+
+ /**
+ * Enumerates the possible {@link CDOCommonRepository#getType() types} of a CDO repository.
+ *
+ * @author Eike Stepper
+ */
+ public enum Type
+ {
+ MASTER, BACKUP, CLONE
+ }
+
+ /**
+ * Enumerates the possible {@link CDOCommonRepository#getState() states} of a CDO repository.
+ *
+ * @author Eike Stepper
+ */
+ public static enum State
+ {
+ INITIAL, OFFLINE, SYNCING, ONLINE;
+
+ public boolean isConnected()
+ {
+ return this == SYNCING || this == ONLINE;
+ }
+ }
+
+ /**
+ * An {@link IEvent event} fired when the {@link Type type} of a CDO repository has changed. This usually happens only
+ * for repository fail-over participants.
+ *
+ * @author Eike Stepper
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+ public interface TypeChangedEvent extends IEvent
+ {
+ public Type getOldType();
+
+ public Type getNewType();
+ }
+
+ /**
+ * An {@link IEvent event} fired when the {@link State state} of a CDO repository has changed.
+ *
+ * @author Eike Stepper
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+ public interface StateChangedEvent extends IEvent
+ {
+ public State getOldState();
+
+ public State getNewState();
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdmin.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdmin.java
new file mode 100644
index 0000000000..cfcad78191
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdmin.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.admin;
+
+import org.eclipse.net4j.util.collection.Closeable;
+import org.eclipse.net4j.util.container.IContainer;
+
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ * @since 4.1
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface CDOAdmin extends IContainer, Closeable
+{
+ public CDOAdminRepository[] getRepositories();
+
+ public CDOAdminRepository getRepository(String name);
+
+ public CDOAdminRepository createRepository(String name, String type, Map properties);
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdminRepository.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdminRepository.java
new file mode 100644
index 0000000000..77f8dd772a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/admin/CDOAdminRepository.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository;
+import org.eclipse.emf.cdo.common.id.CDOID;
+
+import org.eclipse.net4j.util.event.INotifier;
+
+/**
+ * @author Eike Stepper
+ * @since 4.1
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface CDOAdminRepository extends CDOCommonRepository, INotifier
+{
+ public CDOAdmin getAdmin();
+
+ public boolean delete(String type);
+
+ /**
+ * May be unsupported on the client side.
+ */
+ public CDOID getRootResourceID() throws UnsupportedOperationException;
+
+ /**
+ * May be unsupported on the client side.
+ */
+ public long getTimeStamp() throws UnsupportedOperationException;
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/AbstractCDOAdmin.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/AbstractCDOAdmin.java
new file mode 100644
index 0000000000..57facbd418
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/AbstractCDOAdmin.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.spi.common.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdmin;
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+
+import org.eclipse.net4j.util.ObjectUtil;
+import org.eclipse.net4j.util.concurrent.TimeoutRuntimeException;
+import org.eclipse.net4j.util.container.SetContainer;
+
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ * @since 4.1
+ */
+public abstract class AbstractCDOAdmin extends SetContainer implements CDOAdmin
+{
+ private final long timeout;
+
+ protected AbstractCDOAdmin(long timeout)
+ {
+ super(CDOAdminRepository.class);
+ this.timeout = timeout;
+ }
+
+ public final long getTimeout()
+ {
+ return timeout;
+ }
+
+ public boolean isClosed()
+ {
+ return !isActive();
+ }
+
+ public void close()
+ {
+ deactivate();
+ }
+
+ public CDOAdminRepository[] getRepositories()
+ {
+ return getElements();
+ }
+
+ public synchronized CDOAdminRepository getRepository(String name)
+ {
+ for (CDOAdminRepository repository : getSet())
+ {
+ if (ObjectUtil.equals(repository.getName(), name))
+ {
+ return repository;
+ }
+ }
+
+ return null;
+ }
+
+ public CDOAdminRepository createRepository(String name, String type, Map properties)
+ {
+ checkActive();
+
+ synchronized (this)
+ {
+ if (!doCreateRepository(name, type, properties))
+ {
+ return null;
+ }
+
+ long end = System.currentTimeMillis() + timeout;
+ while (System.currentTimeMillis() < end)
+ {
+ CDOAdminRepository repository = getRepository(name);
+ if (repository != null)
+ {
+ return repository;
+ }
+
+ try
+ {
+ wait(10);
+ }
+ catch (InterruptedException ex)
+ {
+ return null;
+ }
+ }
+
+ throw new TimeoutRuntimeException();
+ }
+ }
+
+ public boolean deleteRepository(CDOAdminRepository repository, String type)
+ {
+ checkActive();
+ String name = repository.getName();
+
+ synchronized (this)
+ {
+ if (!doDeleteRepository(name, type))
+ {
+ return false;
+ }
+
+ long end = System.currentTimeMillis() + timeout;
+ while (System.currentTimeMillis() < end)
+ {
+ if (getRepository(name) == null)
+ {
+ return true;
+ }
+
+ try
+ {
+ wait(10);
+ }
+ catch (InterruptedException ex)
+ {
+ return false;
+ }
+ }
+
+ throw new TimeoutRuntimeException();
+ }
+ }
+
+ protected abstract boolean doCreateRepository(String name, String type, Map properties);
+
+ protected abstract boolean doDeleteRepository(String name, String type);
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/CDOAdminProtocolConstants.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/CDOAdminProtocolConstants.java
new file mode 100644
index 0000000000..7bee818d0a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/CDOAdminProtocolConstants.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.spi.common.admin;
+
+/**
+ * Symbolic protocol constants commonly used in CDO administration.
+ *
+ * @author Eike Stepper
+ * @since 4.1
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface CDOAdminProtocolConstants
+{
+ public static final String PROTOCOL_NAME = "cdo-admin"; //$NON-NLS-1$
+
+ // //////////////////////////////////////////////////////////////////////
+ // Signal IDs
+
+ public static final short SIGNAL_QUERY_REPOSITORIES = 1;
+
+ public static final short SIGNAL_CREATE_REPOSITORY = 2;
+
+ public static final short SIGNAL_DELETE_REPOSITORY = 3;
+
+ public static final short SIGNAL_REPOSITORY_ADDED = 4;
+
+ public static final short SIGNAL_REPOSITORY_REMOVED = 5;
+
+ public static final short SIGNAL_REPOSITORY_TYPE_CHANGED = 6;
+
+ public static final short SIGNAL_REPOSITORY_STATE_CHANGED = 7;
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/package-info.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/package-info.java
new file mode 100644
index 0000000000..dfdb83650f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/admin/package-info.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+
+/**
+ * Common concepts for dealing with protocols and CDO administration-specific I/O.
+ */
+package org.eclipse.emf.cdo.spi.common.admin;
+
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.classpath b/plugins/org.eclipse.emf.cdo.server.admin/.classpath
new file mode 100644
index 0000000000..64c5e31b7a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.options b/plugins/org.eclipse.emf.cdo.server.admin/.options
new file mode 100644
index 0000000000..ecd4dd90e6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.options
@@ -0,0 +1,3 @@
+# Debugging and tracing options
+
+org.eclipse.emf.cdo.server.admin/debug = true
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.project b/plugins/org.eclipse.emf.cdo.server.admin/.project
new file mode 100644
index 0000000000..0d83a10589
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.project
@@ -0,0 +1,44 @@
+
+
+ org.eclipse.emf.cdo.server.admin
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ org.eclipse.pde.api.tools.apiAnalysisBuilder
+
+
+
+
+ org.eclipse.emf.cdo.releng.version.VersionBuilder
+
+
+ release.path
+ /org.eclipse.emf.cdo.releng/release.xml
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.api.tools.apiAnalysisNature
+ org.eclipse.emf.cdo.releng.version.VersionNature
+
+
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.server.admin/.settings/.api_filters
new file mode 100644
index 0000000000..b90832f234
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/.api_filters
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000..313329940e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Mon Jul 04 12:52:06 CEST 2011
+eclipse.preferences.version=1
+encoding//model/org.eclipse.emf.cdo.defs.ecorediag=UTF-8
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..805cd8fbdd
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,395 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
+org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW
+org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=2
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000000..556ed07a3c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,3 @@
+#Fri Sep 02 05:38:34 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000..4343e2f963
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,119 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=true
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_EMFT
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_EMFT
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=ex
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=/*\r\n * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */ /**\r\n * @author Eike Stepper\r\n */ ${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration} \r\n \r\n \r\n \r\n ${exception_var}.printStackTrace(); ${body_statement} ${body_statement} return ${field}; ${field} \= ${param};
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=false
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000000..864e30fe5d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs
new file mode 100644
index 0000000000..b050639a54
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.tasks.ui.prefs
@@ -0,0 +1,4 @@
+#Thu Feb 04 09:44:24 CET 2010
+eclipse.preferences.version=1
+project.repository.kind=bugzilla
+project.repository.url=https\://bugs.eclipse.org/bugs
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.team.ui.prefs
new file mode 100644
index 0000000000..2f50f36c0c
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.mylyn.team.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Feb 04 09:44:24 CET 2010
+commit.comment.template=[${task.id}] ${task.description} \r\n${task.url}
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000000..f8d0a0660e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,94 @@
+#Thu Feb 04 09:44:24 CET 2010
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Ignore
+automatically_removed_unused_problem_filters=Disabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000000..c6b96bb45e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,31 @@
+#Thu Feb 04 09:44:24 CET 2010
+compilers.f.unresolved-features=1
+compilers.f.unresolved-plugins=1
+compilers.incompatible-environment=1
+compilers.p.build=1
+compilers.p.build.bin.includes=1
+compilers.p.build.java.compliance=1
+compilers.p.build.missing.output=2
+compilers.p.build.output.library=1
+compilers.p.build.source.library=1
+compilers.p.build.src.includes=1
+compilers.p.deprecated=1
+compilers.p.discouraged-class=1
+compilers.p.internal=1
+compilers.p.missing-packages=1
+compilers.p.missing-version-export-package=1
+compilers.p.missing-version-import-package=1
+compilers.p.missing-version-require-bundle=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=2
+compilers.p.unknown-attribute=1
+compilers.p.unknown-class=1
+compilers.p.unknown-element=1
+compilers.p.unknown-identifier=1
+compilers.p.unknown-resource=1
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.s.create-docs=false
+compilers.s.doc-folder=doc
+compilers.s.open-tags=1
+eclipse.preferences.version=1
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.admin/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..f3342cd6ef
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.emf.cdo.server.admin;singleton:=true
+Bundle-Version: 4.1.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.emf.cdo.server.internal.admin.bundle.OM$Activator
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ClassPath: .
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
+ org.eclipse.emf.cdo.server;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport
+Export-Package: org.eclipse.emf.cdo.server.admin;version="4.1.0",
+ org.eclipse.emf.cdo.server.internal.admin;version="4.1.0";x-internal:=true,
+ org.eclipse.emf.cdo.server.internal.admin.bundle;version="4.1.0";x-internal:=true
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/about.html b/plugins/org.eclipse.emf.cdo.server.admin/about.html
new file mode 100644
index 0000000000..d35d5aed64
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/about.html
@@ -0,0 +1,28 @@
+
+
+
+
+About
+
+
+About This Content
+
+June 5, 2007
+License
+
+The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at http://www.eclipse.org/legal/epl-v10.html .
+For purposes of the EPL, "Program" will mean the Content.
+
+If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at http://www.eclipse.org .
+
+
+
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/build.properties b/plugins/org.eclipse.emf.cdo.server.admin/build.properties
new file mode 100644
index 0000000000..3c15e35b53
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/build.properties
@@ -0,0 +1,27 @@
+# Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Eike Stepper - initial API and implementation
+
+# NLS_MESSAGEFORMAT_VAR
+
+bin.includes = .,\
+ META-INF/,\
+ plugin.properties,\
+ .options,\
+ about.html,\
+ copyright.txt,\
+ plugin.xml
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = about.html,\
+ copyright.txt
+
+doc.project = org.eclipse.emf.cdo.doc
+
+generateSourceReferences = true
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/copyright.txt b/plugins/org.eclipse.emf.cdo.server.admin/copyright.txt
new file mode 100644
index 0000000000..0a0f67e6d7
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/copyright.txt
@@ -0,0 +1,8 @@
+Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Eike Stepper - initial API and implementation
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/plugin.properties b/plugins/org.eclipse.emf.cdo.server.admin/plugin.properties
new file mode 100644
index 0000000000..0288d7dffe
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/plugin.properties
@@ -0,0 +1,11 @@
+# Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Eike Stepper - initial API and implementation
+
+pluginName = CDO Model Repository Server Admin Support
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/plugin.xml b/plugins/org.eclipse.emf.cdo.server.admin/plugin.xml
new file mode 100644
index 0000000000..71c05fceee
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/plugin.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminHandler.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminHandler.java
new file mode 100644
index 0000000000..3e8be068dc
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminHandler.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.admin;
+
+import org.eclipse.emf.cdo.server.IRepository;
+
+import org.eclipse.net4j.util.factory.ProductCreationException;
+
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ * @since 4.1
+ */
+public interface CDOAdminHandler
+{
+ public String getType();
+
+ public IRepository createRepository(String name, Map properties);
+
+ public void deleteRepository(IRepository delegate);
+
+ /**
+ * @author Eike Stepper
+ */
+ public static abstract class Factory extends org.eclipse.net4j.util.factory.Factory
+ {
+ public static final String PRODUCT_GROUP = "org.eclipse.emf.cdo.server.admin.adminHandlers";
+
+ public Factory(String type)
+ {
+ super(PRODUCT_GROUP, type);
+ }
+
+ public abstract CDOAdminHandler create(String description) throws ProductCreationException;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminServerUtil.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminServerUtil.java
new file mode 100644
index 0000000000..a9d96a6802
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/CDOAdminServerUtil.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.admin;
+
+import org.eclipse.emf.cdo.server.internal.admin.CDOAdminServerProtocol;
+
+import org.eclipse.net4j.util.container.IManagedContainer;
+
+/**
+ * Various static methods that may help with CDO remote administration.
+ *
+ * @author Eike Stepper
+ */
+public final class CDOAdminServerUtil
+{
+ private CDOAdminServerUtil()
+ {
+ }
+
+ public static void prepareContainer(IManagedContainer container, IManagedContainer repositoriesContainer)
+ {
+ container.registerFactory(new CDOAdminServerProtocol.Factory(repositoriesContainer));
+ }
+
+ public static void prepareContainer(IManagedContainer container)
+ {
+ prepareContainer(container, container);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/package-info.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/package-info.java
new file mode 100644
index 0000000000..63a55bb836
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/admin/package-info.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+
+/**
+ * Server side of the protocol to administer CDO repositories remotely.
+ */
+package org.eclipse.emf.cdo.server.admin;
+
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java
new file mode 100644
index 0000000000..cae3e82cda
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServer.java
@@ -0,0 +1,289 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository.State;
+import org.eclipse.emf.cdo.common.CDOCommonRepository.Type;
+import org.eclipse.emf.cdo.server.CDOServerUtil;
+import org.eclipse.emf.cdo.server.IRepository;
+import org.eclipse.emf.cdo.server.admin.CDOAdminHandler;
+import org.eclipse.emf.cdo.server.internal.admin.bundle.OM;
+import org.eclipse.emf.cdo.spi.common.admin.AbstractCDOAdmin;
+import org.eclipse.emf.cdo.spi.server.RepositoryFactory;
+
+import org.eclipse.net4j.signal.ISignalProtocol;
+import org.eclipse.net4j.util.container.ContainerEventAdapter;
+import org.eclipse.net4j.util.container.IContainer;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.container.IPluginContainer;
+import org.eclipse.net4j.util.event.IListener;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOAdminServer extends AbstractCDOAdmin
+{
+ private final IManagedContainer container;
+
+ private final IListener containerListener = new ContainerEventAdapter()
+ {
+ @Override
+ protected void onAdded(IContainer container, Object element)
+ {
+ if (element instanceof IRepository)
+ {
+ IRepository repository = (IRepository)element;
+ repositoryAdded(repository);
+ }
+ }
+
+ @Override
+ protected void onRemoved(IContainer container, Object element)
+ {
+ if (element instanceof IRepository)
+ {
+ IRepository repository = (IRepository)element;
+ removeRepository(repository);
+ }
+ }
+ };
+
+ private final Set protocols = new HashSet();
+
+ public CDOAdminServer(IManagedContainer container, long timeout)
+ {
+ super(timeout);
+ this.container = container;
+ }
+
+ public final IManagedContainer getContainer()
+ {
+ return container;
+ }
+
+ public void registerProtocol(CDOAdminServerProtocol protocol)
+ {
+ synchronized (protocols)
+ {
+ protocols.add(protocol);
+ }
+ }
+
+ public void deregisterProtocol(CDOAdminServerProtocol protocol)
+ {
+ synchronized (protocols)
+ {
+ protocols.remove(protocol);
+ }
+ }
+
+ @Override
+ protected boolean doCreateRepository(String name, String type, Map properties)
+ {
+ CDOAdminHandler handler = getAdminHandler(type);
+ IRepository delegate = handler.createRepository(name, properties);
+ CDOServerUtil.addRepository(container, delegate);
+ return true;
+ }
+
+ @Override
+ protected boolean doDeleteRepository(String name, String type)
+ {
+ CDOAdminHandler handler = getAdminHandler(type);
+ CDOAdminServerRepository repository = (CDOAdminServerRepository)getRepository(name);
+ if (repository == null)
+ {
+ return false;
+ }
+
+ IRepository delegate = repository.getDelegate();
+ LifecycleUtil.deactivate(delegate);
+ handler.deleteRepository(delegate);
+ return true;
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+
+ for (Object element : container.getElements(RepositoryFactory.PRODUCT_GROUP))
+ {
+ if (element instanceof IRepository)
+ {
+ IRepository delegate = (IRepository)element;
+ CDOAdminServerRepository repository = new CDOAdminServerRepository(this, delegate);
+ addElement(repository);
+ }
+ }
+
+ container.addListener(containerListener);
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ container.removeListener(containerListener);
+ super.doDeactivate();
+ }
+
+ protected void repositoryAdded(IRepository delegate)
+ {
+ CDOAdminServerRepository repository = new CDOAdminServerRepository(this, delegate);
+ if (addElement(repository))
+ {
+ for (CDOAdminServerProtocol protocol : getProtocols())
+ {
+ try
+ {
+ protocol.sendRepositoryAdded(repository);
+ }
+ catch (Exception ex)
+ {
+ handleNotificationProblem(protocol, ex);
+ }
+ }
+ }
+ }
+
+ protected void removeRepository(IRepository delegate)
+ {
+ String name = delegate.getName();
+ CDOAdminServerRepository repository = (CDOAdminServerRepository)getRepository(name);
+
+ if (removeElement(repository))
+ {
+ repository.dispose();
+ for (CDOAdminServerProtocol protocol : getProtocols())
+ {
+ try
+ {
+ protocol.sendRepositoryRemoved(name);
+ }
+ catch (Exception ex)
+ {
+ handleNotificationProblem(protocol, ex);
+ }
+ }
+ }
+ }
+
+ protected void repositoryTypeChanged(String name, Type oldType, Type newType)
+ {
+ for (CDOAdminServerProtocol protocol : getProtocols())
+ {
+ try
+ {
+ protocol.sendRepositoryTypeChanged(name, oldType, newType);
+ }
+ catch (Exception ex)
+ {
+ handleNotificationProblem(protocol, ex);
+ }
+ }
+ }
+
+ protected void repositoryStateChanged(String name, State oldState, State newState)
+ {
+ for (CDOAdminServerProtocol protocol : getProtocols())
+ {
+ try
+ {
+ protocol.sendRepositoryStateChanged(name, oldState, newState);
+ }
+ catch (Exception ex)
+ {
+ handleNotificationProblem(protocol, ex);
+ }
+ }
+ }
+
+ protected void handleNotificationProblem(CDOAdminServerProtocol protocol, Exception ex)
+ {
+ OM.LOG.warn("A problem occured while notifying client " + protocol, ex);
+ }
+
+ protected CDOAdminHandler getAdminHandler(String type)
+ {
+ return (CDOAdminHandler)container.getElement(CDOAdminHandler.Factory.PRODUCT_GROUP, type, null);
+ }
+
+ private CDOAdminServerProtocol[] getProtocols()
+ {
+ synchronized (protocols)
+ {
+ return protocols.toArray(new CDOAdminServerProtocol[protocols.size()]);
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class Factory extends org.eclipse.net4j.util.factory.Factory
+ {
+ public static final String PRODUCT_GROUP = "org.eclipse.emf.cdo.server.admin.adminServers";
+
+ public static final String TYPE = "default";
+
+ private final IManagedContainer container;
+
+ private final long timeout;
+
+ public Factory(IManagedContainer container)
+ {
+ this(container, ISignalProtocol.DEFAULT_TIMEOUT);
+ }
+
+ public Factory(IManagedContainer container, long timeout)
+ {
+ super(PRODUCT_GROUP, TYPE);
+ this.container = container;
+ this.timeout = timeout;
+ }
+
+ public final IManagedContainer getContainer()
+ {
+ return container;
+ }
+
+ public final long getTimeout()
+ {
+ return timeout;
+ }
+
+ public CDOAdminServer create(String description)
+ {
+ return new CDOAdminServer(container, timeout);
+ }
+
+ public static CDOAdminServer get(IManagedContainer container, String description)
+ {
+ return (CDOAdminServer)container.getElement(PRODUCT_GROUP, TYPE, description);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class Plugin extends Factory
+ {
+ public Plugin()
+ {
+ super(IPluginContainer.INSTANCE);
+ }
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerProtocol.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerProtocol.java
new file mode 100644
index 0000000000..5fb7a3d2ff
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerProtocol.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository.State;
+import org.eclipse.emf.cdo.common.CDOCommonRepository.Type;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.SignalProtocol;
+import org.eclipse.net4j.signal.SignalReactor;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.container.IPluginContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+
+import org.eclipse.spi.net4j.ServerProtocolFactory;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOAdminServerProtocol extends SignalProtocol
+{
+ private final IManagedContainer container;
+
+ public CDOAdminServerProtocol(IManagedContainer container, CDOAdminServer admin)
+ {
+ super(CDOAdminProtocolConstants.PROTOCOL_NAME);
+ this.container = container;
+ setInfraStructure(admin);
+ admin.registerProtocol(this);
+ }
+
+ public final IManagedContainer getContainer()
+ {
+ return container;
+ }
+
+ public void sendRepositoryAdded(CDOAdminServerRepository repository) throws Exception
+ {
+ if (LifecycleUtil.isActive(getChannel()))
+ {
+ new RepositoryAddedRequest(this, repository).sendAsync();
+ }
+ }
+
+ public void sendRepositoryRemoved(String name) throws Exception
+ {
+ if (LifecycleUtil.isActive(getChannel()))
+ {
+ new RepositoryRemovedRequest(this, name).sendAsync();
+ }
+ }
+
+ public void sendRepositoryTypeChanged(String name, Type oldType, Type newType) throws Exception
+ {
+ if (LifecycleUtil.isActive(getChannel()))
+ {
+ new RepositoryTypeChangedRequest(this, name, oldType, newType).sendAsync();
+ }
+ }
+
+ public void sendRepositoryStateChanged(String name, State oldState, State newState) throws Exception
+ {
+ if (LifecycleUtil.isActive(getChannel()))
+ {
+ new RepositoryStateChangedRequest(this, name, oldState, newState).sendAsync();
+ }
+ }
+
+ @Override
+ protected SignalReactor createSignalReactor(short signalID)
+ {
+ switch (signalID)
+ {
+ case CDOAdminProtocolConstants.SIGNAL_QUERY_REPOSITORIES:
+ return new QueryRepositoriesIndication(this);
+
+ case CDOAdminProtocolConstants.SIGNAL_CREATE_REPOSITORY:
+ return new QueryRepositoriesIndication(this);
+
+ case CDOAdminProtocolConstants.SIGNAL_DELETE_REPOSITORY:
+ return new QueryRepositoriesIndication(this);
+
+ default:
+ return super.createSignalReactor(signalID);
+ }
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ getInfraStructure().deregisterProtocol(this);
+ super.doDeactivate();
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class Factory extends ServerProtocolFactory
+ {
+ public static final String TYPE = CDOAdminProtocolConstants.PROTOCOL_NAME;
+
+ private IManagedContainer container;
+
+ public Factory(IManagedContainer container)
+ {
+ super(TYPE);
+ this.container = container;
+ }
+
+ public IManagedContainer getContainer()
+ {
+ return container;
+ }
+
+ public CDOAdminServerProtocol create(String description)
+ {
+ CDOAdminServer admin = getAdmin();
+ return new CDOAdminServerProtocol(container, admin);
+ }
+
+ protected CDOAdminServer getAdmin()
+ {
+ String productGroup = CDOAdminServer.Factory.PRODUCT_GROUP;
+ String type = CDOAdminServer.Factory.TYPE;
+ return (CDOAdminServer)container.getElement(productGroup, type, null);
+ }
+
+ public static CDOAdminServerProtocol get(IManagedContainer container, String description)
+ {
+ return (CDOAdminServerProtocol)container.getElement(PRODUCT_GROUP, TYPE, description);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class Plugin extends Factory
+ {
+ public Plugin()
+ {
+ super(IPluginContainer.INSTANCE);
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerRepository.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerRepository.java
new file mode 100644
index 0000000000..2d9c26ab44
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CDOAdminServerRepository.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdmin;
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOID.ObjectType;
+import org.eclipse.emf.cdo.common.util.RepositoryStateChangedEvent;
+import org.eclipse.emf.cdo.common.util.RepositoryTypeChangedEvent;
+import org.eclipse.emf.cdo.server.IRepository;
+
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+import org.eclipse.net4j.util.event.Notifier;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+import java.io.IOException;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public class CDOAdminServerRepository extends Notifier implements CDOAdminRepository
+{
+ private final CDOAdminServer admin;
+
+ private final IRepository delegate;
+
+ private IListener delegateListener = new IListener()
+ {
+ public void notifyEvent(IEvent event)
+ {
+ if (event instanceof TypeChangedEvent)
+ {
+ TypeChangedEvent e = (TypeChangedEvent)event;
+ Type oldType = e.getOldType();
+ Type newType = e.getNewType();
+
+ fireEvent(new RepositoryTypeChangedEvent(CDOAdminServerRepository.this, oldType, newType));
+ admin.repositoryTypeChanged(getName(), oldType, newType);
+ }
+ else if (event instanceof StateChangedEvent)
+ {
+ StateChangedEvent e = (StateChangedEvent)event;
+ State oldState = e.getOldState();
+ State newState = e.getNewState();
+
+ fireEvent(new RepositoryStateChangedEvent(CDOAdminServerRepository.this, oldState, newState));
+ admin.repositoryStateChanged(getName(), oldState, newState);
+ }
+ }
+ };
+
+ public CDOAdminServerRepository(CDOAdminServer admin, IRepository delegate)
+ {
+ this.admin = admin;
+ this.delegate = delegate;
+ delegate.addListener(delegateListener);
+ }
+
+ public final CDOAdmin getAdmin()
+ {
+ return admin;
+ }
+
+ public final IRepository getDelegate()
+ {
+ return delegate;
+ }
+
+ public boolean delete(String type)
+ {
+ return admin.deleteRepository(this, type);
+ }
+
+ public String getName()
+ {
+ return delegate.getName();
+ }
+
+ public String getUUID()
+ {
+ return delegate.getUUID();
+ }
+
+ public Type getType()
+ {
+ return delegate.getType();
+ }
+
+ public State getState()
+ {
+ return delegate.getState();
+ }
+
+ public String getStoreType()
+ {
+ return delegate.getStoreType();
+ }
+
+ public Set getObjectIDTypes()
+ {
+ return delegate.getObjectIDTypes();
+ }
+
+ public long getCreationTime()
+ {
+ return delegate.getCreationTime();
+ }
+
+ public CDOID getRootResourceID()
+ {
+ return delegate.getRootResourceID();
+ }
+
+ public boolean isSupportingAudits()
+ {
+ return delegate.isSupportingAudits();
+ }
+
+ public boolean isSupportingBranches()
+ {
+ return delegate.isSupportingBranches();
+ }
+
+ public boolean isSupportingEcore()
+ {
+ return delegate.isSupportingEcore();
+ }
+
+ public boolean isEnsuringReferentialIntegrity()
+ {
+ return delegate.isEnsuringReferentialIntegrity();
+ }
+
+ public IDGenerationLocation getIDGenerationLocation()
+ {
+ return delegate.getIDGenerationLocation();
+ }
+
+ public long getTimeStamp() throws UnsupportedOperationException
+ {
+ return delegate.getTimeStamp();
+ }
+
+ @Override
+ public String toString()
+ {
+ return delegate.toString();
+ }
+
+ public void write(ExtendedDataOutputStream out) throws IOException
+ {
+ out.writeString(getName());
+ out.writeString(getUUID());
+ out.writeEnum(getType());
+ out.writeEnum(getState());
+ out.writeLong(getCreationTime());
+ out.writeString(getStoreType());
+
+ Set objectIDTypes = getObjectIDTypes();
+ int types = objectIDTypes.size();
+ out.writeInt(types);
+ for (CDOID.ObjectType objectIDType : objectIDTypes)
+ {
+ out.writeEnum(objectIDType);
+ }
+
+ out.writeBoolean(isSupportingAudits());
+ out.writeBoolean(isSupportingBranches());
+ out.writeBoolean(isSupportingEcore());
+ out.writeBoolean(isEnsuringReferentialIntegrity());
+ out.writeEnum(getIDGenerationLocation());
+ }
+
+ public void dispose()
+ {
+ delegate.removeListener(delegateListener);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CreateRepositoryIndication.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CreateRepositoryIndication.java
new file mode 100644
index 0000000000..e30edb22d8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/CreateRepositoryIndication.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.IndicationWithResponse;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public class CreateRepositoryIndication extends IndicationWithResponse
+{
+ private String name;
+
+ private String type;
+
+ private Map properties;
+
+ public CreateRepositoryIndication(CDOAdminServerProtocol protocol)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_CREATE_REPOSITORY);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected void indicating(ExtendedDataInputStream in) throws Exception
+ {
+ name = in.readString();
+ type = in.readString();
+ properties = (Map)in.readObject();
+ }
+
+ @Override
+ protected void responding(ExtendedDataOutputStream out) throws Exception
+ {
+ CDOAdminServerProtocol protocol = (CDOAdminServerProtocol)getProtocol();
+ CDOAdminServer admin = protocol.getInfraStructure();
+
+ CDOAdminRepository repository = admin.createRepository(name, type, properties);
+ out.writeBoolean(repository != null);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/DeleteRepositoryIndication.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/DeleteRepositoryIndication.java
new file mode 100644
index 0000000000..c5d82b3bc4
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/DeleteRepositoryIndication.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.IndicationWithResponse;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class DeleteRepositoryIndication extends IndicationWithResponse
+{
+ private String name;
+
+ private String type;
+
+ public DeleteRepositoryIndication(CDOAdminServerProtocol protocol)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_DELETE_REPOSITORY);
+ }
+
+ @Override
+ protected void indicating(ExtendedDataInputStream in) throws Exception
+ {
+ name = in.readString();
+ type = in.readString();
+ }
+
+ @Override
+ protected void responding(ExtendedDataOutputStream out) throws Exception
+ {
+ CDOAdminServerProtocol protocol = (CDOAdminServerProtocol)getProtocol();
+ CDOAdminServer admin = protocol.getInfraStructure();
+
+ CDOAdminServerRepository repository = (CDOAdminServerRepository)admin.getRepository(name);
+ if (repository != null)
+ {
+ if (admin.deleteRepository(repository, type))
+ {
+ out.writeBoolean(true);
+ return;
+ }
+ }
+
+ out.writeBoolean(false);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/QueryRepositoriesIndication.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/QueryRepositoriesIndication.java
new file mode 100644
index 0000000000..f6fdf31e64
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/QueryRepositoriesIndication.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.IndicationWithResponse;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class QueryRepositoriesIndication extends IndicationWithResponse
+{
+ public QueryRepositoriesIndication(CDOAdminServerProtocol protocol)
+ {
+ super(protocol, CDOAdminProtocolConstants.SIGNAL_QUERY_REPOSITORIES);
+ }
+
+ @Override
+ protected void indicating(ExtendedDataInputStream in) throws Exception
+ {
+ in.readBoolean();
+ }
+
+ @Override
+ protected void responding(ExtendedDataOutputStream out) throws Exception
+ {
+ CDOAdminServerProtocol protocol = (CDOAdminServerProtocol)getProtocol();
+ CDOAdminServer admin = protocol.getInfraStructure();
+
+ CDOAdminServerRepository[] repositories = (CDOAdminServerRepository[])admin.getRepositories();
+ out.writeInt(repositories.length);
+
+ for (int i = 0; i < repositories.length; i++)
+ {
+ CDOAdminServerRepository repository = repositories[i];
+ repository.write(out);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryAddedRequest.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryAddedRequest.java
new file mode 100644
index 0000000000..56c464af0d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryAddedRequest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Request;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryAddedRequest extends Request
+{
+ private CDOAdminServerRepository repository;
+
+ public RepositoryAddedRequest(CDOAdminServerProtocol serverProtocol, CDOAdminServerRepository repository)
+ {
+ super(serverProtocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_ADDED);
+ this.repository = repository;
+ }
+
+ @Override
+ protected void requesting(ExtendedDataOutputStream out) throws Exception
+ {
+ repository.write(out);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryRemovedRequest.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryRemovedRequest.java
new file mode 100644
index 0000000000..f1ed00311e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryRemovedRequest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Request;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryRemovedRequest extends Request
+{
+ private String name;
+
+ public RepositoryRemovedRequest(CDOAdminServerProtocol serverProtocol, String name)
+ {
+ super(serverProtocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_ADDED);
+ this.name = name;
+ }
+
+ @Override
+ protected void requesting(ExtendedDataOutputStream out) throws Exception
+ {
+ out.writeString(name);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryStateChangedRequest.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryStateChangedRequest.java
new file mode 100644
index 0000000000..ea81e0e0d7
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryStateChangedRequest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository.State;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Request;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryStateChangedRequest extends Request
+{
+ private String name;
+
+ private State oldState;
+
+ private State newState;
+
+ public RepositoryStateChangedRequest(CDOAdminServerProtocol serverProtocol, String name, State oldState,
+ State newState)
+ {
+ super(serverProtocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_STATE_CHANGED);
+ this.name = name;
+ this.oldState = oldState;
+ this.newState = newState;
+ }
+
+ @Override
+ protected void requesting(ExtendedDataOutputStream out) throws Exception
+ {
+ out.writeString(name);
+ out.writeEnum(oldState);
+ out.writeEnum(newState);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryTypeChangedRequest.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryTypeChangedRequest.java
new file mode 100644
index 0000000000..3577716722
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/RepositoryTypeChangedRequest.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin;
+
+import org.eclipse.emf.cdo.common.CDOCommonRepository.Type;
+import org.eclipse.emf.cdo.spi.common.admin.CDOAdminProtocolConstants;
+
+import org.eclipse.net4j.signal.Request;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+
+/**
+ * @author Eike Stepper
+ */
+public class RepositoryTypeChangedRequest extends Request
+{
+ private String name;
+
+ private Type oldType;
+
+ private Type newType;
+
+ public RepositoryTypeChangedRequest(CDOAdminServerProtocol serverProtocol, String name, Type oldType, Type newType)
+ {
+ super(serverProtocol, CDOAdminProtocolConstants.SIGNAL_REPOSITORY_TYPE_CHANGED);
+ this.name = name;
+ this.oldType = oldType;
+ this.newType = newType;
+ }
+
+ @Override
+ protected void requesting(ExtendedDataOutputStream out) throws Exception
+ {
+ out.writeString(name);
+ out.writeEnum(oldType);
+ out.writeEnum(newType);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/bundle/OM.java b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/bundle/OM.java
new file mode 100644
index 0000000000..2e964bfb17
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.admin/src/org/eclipse/emf/cdo/server/internal/admin/bundle/OM.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.admin.bundle;
+
+import org.eclipse.net4j.util.om.OMBundle;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.OSGiActivator;
+import org.eclipse.net4j.util.om.log.OMLogger;
+import org.eclipse.net4j.util.om.trace.OMTracer;
+
+/**
+ * The Operations & Maintenance class of this bundle.
+ *
+ * @author Eike Stepper
+ */
+public abstract class OM
+{
+ public static final String BUNDLE_ID = "org.eclipse.emf.cdo.server.admin"; //$NON-NLS-1$
+
+ public static final OMBundle BUNDLE = OMPlatform.INSTANCE.bundle(BUNDLE_ID, OM.class);
+
+ public static final OMTracer DEBUG = BUNDLE.tracer("debug"); //$NON-NLS-1$
+
+ public static final OMLogger LOG = BUNDLE.logger();
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class Activator extends OSGiActivator
+ {
+ public Activator()
+ {
+ super(BUNDLE);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
index c94d9103c0..8c8c7f948b 100644
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
@@ -33,6 +33,8 @@ Require-Bundle: org.eclipse.net4j.tests;bundle-version="[4.0.0,5.0.0)";visibilit
org.eclipse.emf.cdo.defs;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
org.eclipse.emf.cdo.server.ocl;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
org.eclipse.emf.cdo.workspace;bundle-version="[4.0.0,5.0.0)";visibility:=reexport,
+ org.eclipse.emf.cdo.admin;bundle-version="[4.1.0,5.0.0)";visibility:=reexport,
+ org.eclipse.emf.cdo.server.admin;bundle-version="[4.1.0,5.0.0)";visibility:=reexport,
org.eclipse.gmf.runtime.notation;bundle-version="[1.5.0,2.0.0)";visibility:=reexport,
org.eclipse.ocl.ecore;bundle-version="[3.0.0,4.0.0)"
Import-Package: org.apache.derby.jdbc;version="[10.0.0,11.0.0)",
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java
new file mode 100644
index 0000000000..dccb74ab0a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_381472_Test.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.tests.bugzilla;
+
+import org.eclipse.emf.cdo.admin.CDOAdminUtil;
+import org.eclipse.emf.cdo.common.admin.CDOAdmin;
+import org.eclipse.emf.cdo.common.admin.CDOAdminRepository;
+import org.eclipse.emf.cdo.server.IRepository;
+import org.eclipse.emf.cdo.server.admin.CDOAdminHandler;
+import org.eclipse.emf.cdo.tests.AbstractCDOTest;
+import org.eclipse.emf.cdo.tests.config.impl.SessionConfig;
+
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.util.factory.ProductCreationException;
+
+import java.util.Map;
+
+/**
+ * Design a repository administration API
+ *
+ * See bug 381472
+ *
+ * @author Eike Stepper
+ */
+public class Bugzilla_381472_Test extends AbstractCDOTest
+{
+ private static final String ADMIN_HANDLER_TYPE = "test";
+
+ private CDOAdmin admin;
+
+ @Override
+ protected void doSetUp() throws Exception
+ {
+ super.doSetUp();
+
+ getContainerConfig().getServerContainer().registerFactory(new CDOAdminHandler.Factory(ADMIN_HANDLER_TYPE)
+ {
+ @Override
+ public CDOAdminHandler create(String description) throws ProductCreationException
+ {
+ return new CDOAdminHandler()
+ {
+ public String getType()
+ {
+ return ADMIN_HANDLER_TYPE;
+ }
+
+ public IRepository createRepository(String name, Map properties)
+ {
+ return getRepository(name);
+ }
+
+ public void deleteRepository(IRepository delegate)
+ {
+ // Do nothing
+ }
+ };
+ }
+ });
+
+ SessionConfig.Net4j sessionConfig = (SessionConfig.Net4j)getSessionConfig();
+ IConnector connector = sessionConfig.getConnector();
+ admin = CDOAdminUtil.openAdmin(connector);
+ }
+
+ @Override
+ protected void doTearDown() throws Exception
+ {
+ admin.close();
+ super.doTearDown();
+ }
+
+ @Deprecated
+ public void testDummy() throws Exception
+ {
+ }
+
+ public void _testEmpty() throws Exception
+ {
+ CDOAdminRepository[] repositories = admin.getRepositories();
+ System.out.println(repositories);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/SetContainer.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/SetContainer.java
new file mode 100644
index 0000000000..496fccb6b2
--- /dev/null
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/container/SetContainer.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.util.container;
+
+import java.lang.reflect.Array;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ * @since 3.2
+ */
+public class SetContainer extends Container
+{
+ private final Class componentType;
+
+ private final Set set;
+
+ private E[] array;
+
+ public SetContainer(Class componentType)
+ {
+ this(componentType, new HashSet());
+ }
+
+ public SetContainer(Class componentType, Set set)
+ {
+ this.componentType = componentType;
+ this.set = set;
+ }
+
+ public final Class getComponentType()
+ {
+ return componentType;
+ }
+
+ @Override
+ public synchronized boolean isEmpty()
+ {
+ checkActive();
+ return set.isEmpty();
+ }
+
+ public synchronized E[] getElements()
+ {
+ checkActive();
+ if (array == null)
+ {
+ @SuppressWarnings("unchecked")
+ E[] a = (E[])Array.newInstance(componentType, set.size());
+ array = set.toArray(a);
+ }
+
+ return array;
+ }
+
+ public boolean addElement(E element)
+ {
+ checkActive();
+ boolean added;
+ synchronized (this)
+ {
+ added = set.add(element);
+ if (added)
+ {
+ array = null;
+ }
+
+ notifyAll();
+ }
+
+ if (added)
+ {
+ fireElementAddedEvent(element);
+ }
+
+ return added;
+ }
+
+ public boolean removeElement(E element)
+ {
+ checkActive();
+ boolean removed;
+ synchronized (this)
+ {
+ removed = set.remove(element);
+ if (removed)
+ {
+ array = null;
+ }
+
+ notifyAll();
+ }
+
+ if (removed)
+ {
+ fireElementRemovedEvent(element);
+ }
+
+ return removed;
+ }
+
+ protected Set getSet()
+ {
+ return set;
+ }
+}
--
cgit v1.2.3