From 7a025a8b2c7acb512cfe12010284d595db8e5b8b Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Mon, 6 Oct 2008 20:04:03 +0000 Subject: [PATCH] * initial commit git-svn-id: svn+ssh://svn.synyx.de/var/svn/synyx/opensource/synyx-plugin/trunk@2910 5a64d73e-33d6-4ccc-9058-23f8668ecac9 --- plugin-metadata/.classpath | 7 ++ plugin-metadata/.project | 23 +++++ .../.settings/org.eclipse.jdt.core.prefs | 12 +++ .../.settings/org.maven.ide.eclipse.prefs | 8 ++ plugin-metadata/pom.xml | 33 +++++++ .../metadata/AbstractMetadataBasedPlugin.java | 52 ++++++++++ .../plugin/metadata/MetadataProvider.java | 17 ++++ .../synyx/plugin/metadata/PluginMetadata.java | 26 +++++ .../plugin/metadata/SimplePluginMetadata.java | 97 +++++++++++++++++++ 9 files changed, 275 insertions(+) create mode 100644 plugin-metadata/.classpath create mode 100644 plugin-metadata/.project create mode 100644 plugin-metadata/.settings/org.eclipse.jdt.core.prefs create mode 100644 plugin-metadata/.settings/org.maven.ide.eclipse.prefs create mode 100644 plugin-metadata/pom.xml create mode 100644 plugin-metadata/src/main/java/org/synyx/plugin/metadata/AbstractMetadataBasedPlugin.java create mode 100644 plugin-metadata/src/main/java/org/synyx/plugin/metadata/MetadataProvider.java create mode 100644 plugin-metadata/src/main/java/org/synyx/plugin/metadata/PluginMetadata.java create mode 100644 plugin-metadata/src/main/java/org/synyx/plugin/metadata/SimplePluginMetadata.java diff --git a/plugin-metadata/.classpath b/plugin-metadata/.classpath new file mode 100644 index 0000000..24166ba --- /dev/null +++ b/plugin-metadata/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/plugin-metadata/.project b/plugin-metadata/.project new file mode 100644 index 0000000..1f34d1f --- /dev/null +++ b/plugin-metadata/.project @@ -0,0 +1,23 @@ + + + plugin-metadata + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + + org.maven.ide.eclipse.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/plugin-metadata/.settings/org.eclipse.jdt.core.prefs b/plugin-metadata/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..2abf446 --- /dev/null +++ b/plugin-metadata/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Mon Oct 06 19:06:04 CEST 2008 +eclipse.preferences.version=1 +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.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/plugin-metadata/.settings/org.maven.ide.eclipse.prefs b/plugin-metadata/.settings/org.maven.ide.eclipse.prefs new file mode 100644 index 0000000..db842c1 --- /dev/null +++ b/plugin-metadata/.settings/org.maven.ide.eclipse.prefs @@ -0,0 +1,8 @@ +#Mon Oct 06 19:02:01 CEST 2008 +activeProfiles= +eclipse.preferences.version=1 +fullBuildGoals=process-test-resources +includeModules=false +resolveWorkspaceProjects=true +resourceFilterGoals=process-resources resources\:testResources +version=1 diff --git a/plugin-metadata/pom.xml b/plugin-metadata/pom.xml new file mode 100644 index 0000000..46db411 --- /dev/null +++ b/plugin-metadata/pom.xml @@ -0,0 +1,33 @@ + + 4.0.0 + org.synyx.plugin + plugin-metadata + 0.1-SNAPSHOT + + + + org.synyx.plugin + plugin-core + 0.1-SNAPSHOT + + + + commons-lang + commons-lang + 2.4 + + + + + + + maven-compiler-plugin + + 1.5 + 1.5 + + + + + + \ No newline at end of file diff --git a/plugin-metadata/src/main/java/org/synyx/plugin/metadata/AbstractMetadataBasedPlugin.java b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/AbstractMetadataBasedPlugin.java new file mode 100644 index 0000000..78a5b8c --- /dev/null +++ b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/AbstractMetadataBasedPlugin.java @@ -0,0 +1,52 @@ +package org.synyx.plugin.metadata; + +import org.synyx.plugin.core.Plugin; + + +/** + * Abstract base class for plugins based on {@code PluginMetadata}. Plugins + * based on this class can be selected from the {@code PluginRegistry} via an + * instance of {@code PluginMetadata}. Therefore you can regard this as a role + * model implementation of a base class for certain delimiter implmentations. + * + * @author Oliver Gierke - gierke@synyx.de + */ +public abstract class AbstractMetadataBasedPlugin implements + Plugin, MetadataProvider { + + private PluginMetadata metadata; + + + /** + * Creates a new instance of {@code AbstractMetadataBasedPlugin}. + * + * @param name + * @param version + */ + public AbstractMetadataBasedPlugin(String name, String version) { + + this.metadata = new SimplePluginMetadata(name, version); + } + + + /* + * (non-Javadoc) + * + * @see com.synyx.minos.core.plugin.Plugin#supports(java.lang.Object) + */ + public boolean supports(PluginMetadata delimiter) { + + return getMetadata().equals(delimiter); + } + + + /* + * (non-Javadoc) + * + * @see com.synyx.minos.core.plugin.MetadataProvider#getMetadata() + */ + public PluginMetadata getMetadata() { + + return metadata; + } +} diff --git a/plugin-metadata/src/main/java/org/synyx/plugin/metadata/MetadataProvider.java b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/MetadataProvider.java new file mode 100644 index 0000000..23ec6d0 --- /dev/null +++ b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/MetadataProvider.java @@ -0,0 +1,17 @@ +package org.synyx.plugin.metadata; + +/** + * Interface for plugins providing metadata information. Usually the plugins + * will implement this interface themselves. + * + * @author Oliver Gierke - gierke@synyx.de + */ +public interface MetadataProvider { + + /** + * Returns the plugins metadata. + * + * @return the plugins metadata + */ + public PluginMetadata getMetadata(); +} diff --git a/plugin-metadata/src/main/java/org/synyx/plugin/metadata/PluginMetadata.java b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/PluginMetadata.java new file mode 100644 index 0000000..0126d55 --- /dev/null +++ b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/PluginMetadata.java @@ -0,0 +1,26 @@ +package org.synyx.plugin.metadata; + +/** + * Basic interface to define a set of metadata information for plugins. + * + * @author Oliver Gierke - gierke@synyx.de + */ +public interface PluginMetadata { + + /** + * Returns a unique plugin name. Plugins return a metadata implementation + * have to ensure uniqueness of this name. + * + * @return the name of the plugin + */ + String getName(); + + + /** + * Returns the plugin version. This allows rudimentary versioning + * possibilities. + * + * @return the version of the plugin + */ + String getVersion(); +} diff --git a/plugin-metadata/src/main/java/org/synyx/plugin/metadata/SimplePluginMetadata.java b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/SimplePluginMetadata.java new file mode 100644 index 0000000..4d1bfc9 --- /dev/null +++ b/plugin-metadata/src/main/java/org/synyx/plugin/metadata/SimplePluginMetadata.java @@ -0,0 +1,97 @@ +package org.synyx.plugin.metadata; + +import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.lang.StringUtils; + + +/** + * Value object style implementation of {@code PluginMetadata}. + * + * @author Oliver Gierke - gierke@synyx.de + */ +public class SimplePluginMetadata implements PluginMetadata { + + private String name; + private String version; + + + /** + * Creates a new instance of {@code SimplePluginMetadata}. + * + * @param name + * @param version + */ + public SimplePluginMetadata(String name, String version) { + + this.name = name; + this.version = version; + } + + + /* + * (non-Javadoc) + * + * @see com.synyx.minos.core.plugin.PluginMetadata#getName() + */ + public String getName() { + + return name; + } + + + /* + * (non-Javadoc) + * + * @see com.synyx.minos.core.plugin.PluginMetadata#getVersion() + */ + public String getVersion() { + + return version; + } + + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + + return String.format("%s:%s", getName(), getVersion()); + } + + + /* + * (non-Javadoc) + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + + if (!(obj instanceof PluginMetadata)) { + return false; + } + + PluginMetadata that = (PluginMetadata) obj; + + boolean sameName = StringUtils.equals(this.getName(), that.getName()); + boolean sameVersion = + StringUtils.equals(this.getName(), that.getName()); + + return sameName && sameVersion; + } + + + /* + * (non-Javadoc) + * + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + + return ObjectUtils.hashCode(name) + ObjectUtils.hashCode(version); + } +}