You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/06/06 12:30:51 UTC
svn commit: r412068 - in /incubator/cayenne/main/branches/PROTO-3.0:
modeler-plugin/ modeler/ modeler/modeler-launcher/
modeler/modeler-launcher/src/ modeler/modeler-launcher/src/main/
modeler/modeler-launcher/src/main/java/ modeler/modeler-launcher/sr...
Author: aadamchik
Date: Tue Jun 6 03:30:49 2006
New Revision: 412068
URL: http://svn.apache.org/viewvc?rev=412068&view=rev
Log:
organizing plungins to a modeler assembly
Added:
incubator/cayenne/main/branches/PROTO-3.0/modeler/
incubator/cayenne/main/branches/PROTO-3.0/modeler/assembly.xml
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.classpath
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.project
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/pom.xml
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/CayennePluginEngine.java
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/Launcher.java
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/
- copied from r412063, incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/.classpath
- copied unchanged from r412067, incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/.classpath
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/.project
- copied unchanged from r412067, incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/.project
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/.settings/
- copied from r412067, incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/.settings/
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/pom.xml
- copied, changed from r412067, incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/pom.xml
incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/src/
- copied from r412067, incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/src/
incubator/cayenne/main/branches/PROTO-3.0/modeler/pom.xml
incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/
- copied from r412063, incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/
incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/.classpath
- copied unchanged from r412067, incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/.classpath
incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/.project
- copied unchanged from r412067, incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/.project
incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/.settings/
- copied from r412067, incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/.settings/
incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/pom.xml
- copied, changed from r412067, incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/pom.xml
incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/src/
- copied from r412067, incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/src/
Removed:
incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/
incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/
Added: incubator/cayenne/main/branches/PROTO-3.0/modeler/assembly.xml
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/assembly.xml?rev=412068&view=auto
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler/assembly.xml (added)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/assembly.xml Tue Jun 6 03:30:49 2006
@@ -0,0 +1,5 @@
+<assembly>
<id>modeler-minimal</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
+ <fileSet>
<directory>modeler-launcher/target/classes</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>swing-plugin/target</directory>
<outputDirectory>/</outputDirectory>
+ <includes>
<include>*.jar</include>
</includes>
</fileSet>
+ <fileSet>
<directory>modeler-plugin/target</directory>
<outputDirectory>/</outputDirectory>
+ <includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<unpack>true</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
\ No newline at end of file
Added: incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.classpath
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.classpath?rev=412068&view=auto
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.classpath (added)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.classpath Tue Jun 6 03:30:49 2006
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.project
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.project?rev=412068&view=auto
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.project (added)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/.project Tue Jun 6 03:30:49 2006
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>modeler-launcher</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
Added: incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/pom.xml?rev=412068&view=auto
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/pom.xml (added)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/pom.xml Tue Jun 6 03:30:49 2006
@@ -0,0 +1,25 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.cayenne</groupId>
+ <artifactId>modeler-launcher</artifactId>
+ <packaging>jar</packaging>
+ <version>3.0-SNAPSHOT</version>
+ <name>CayenneModeler Plugin Launcher</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>org.platonos</groupId>
+ <artifactId>plugin-engine</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <id>objectstyle</id>
+ <name>ObjectStyle Public Maven2 repo</name>
+ <url>http://objectstyle.org/maven2</url>
+ </repository>
+ </repositories>
+</project>
Added: incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/CayennePluginEngine.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/CayennePluginEngine.java?rev=412068&view=auto
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/CayennePluginEngine.java (added)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/CayennePluginEngine.java Tue Jun 6 03:30:49 2006
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cayenne.modeler.launcher;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.platonos.pluginengine.PluginEngine;
+import org.platonos.pluginengine.PluginEngineException;
+import org.platonos.pluginengine.logging.ILogger;
+import org.platonos.pluginengine.logging.LoggerLevel;
+
+/**
+ * An extension of PluginEngine that allows to store arbitrary attributes in the engine
+ * and also load plugins from CLASSPATH.
+ *
+ * @author andrus
+ */
+public class CayennePluginEngine extends PluginEngine {
+
+ public static final String PLUGIN_LOCATION = "plugin.xml";
+
+ protected Map attributes = new HashMap();
+
+ public CayennePluginEngine(String uid, ILogger logger) {
+ super(uid, logger);
+ }
+
+ public CayennePluginEngine(String uid) {
+ super(uid);
+ }
+
+ /**
+ * Loads all plugin descriptors that are available to the current ClassLoader.
+ */
+ public void loadBundledPlugins() {
+ Enumeration urls;
+
+ try {
+ urls = Thread.currentThread().getContextClassLoader().getResources(
+ PLUGIN_LOCATION);
+
+ }
+ catch (IOException e) {
+ throw new RuntimeException("Error reading plugins infor from ClassLoader", e);
+ }
+
+ while (urls.hasMoreElements()) {
+ URL pluginURL = (URL) urls.nextElement();
+ try {
+ // TODO, andrus, 6/5/2006 - plugins loaded in this fashion will
+ // only be able to resolve classes from the same filesystem
+ // folder as plugin.xml. Will need a specialized ClassLoader for
+ // this case.
+ loadPluginXML(pluginURL);
+ }
+ catch (PluginEngineException ex) {
+ getLogger().log(
+ LoggerLevel.SEVERE,
+ "Error loading Plugin archive from URL: " + pluginURL,
+ ex);
+ }
+ }
+ }
+
+ /**
+ * Returns a previously stored attribute for a given key or null if no attribute
+ * matches the key.
+ */
+ public Object getAttribute(String key) {
+ if (key == null) {
+ throw new NullPointerException("Invalid argument: key");
+ }
+
+ return (String) attributes.get(key);
+ }
+
+ public void setAttribute(String key, Object value) {
+ if (key == null) {
+ throw new NullPointerException("Invalid argument: key");
+ }
+
+ attributes.put(key, value);
+ }
+
+ public void removeAttribute(String key) {
+ if (key == null) {
+ throw new NullPointerException("Invalid argument: key");
+ }
+
+ attributes.remove(key);
+ }
+}
Added: incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/Launcher.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/Launcher.java?rev=412068&view=auto
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/Launcher.java (added)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-launcher/src/main/java/org/apache/cayenne/modeler/launcher/Launcher.java Tue Jun 6 03:30:49 2006
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cayenne.modeler.launcher;
+
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.StringTokenizer;
+
+import org.platonos.pluginengine.Plugin;
+import org.platonos.pluginengine.logging.LoggerLevel;
+
+/**
+ * Starts a plugin shell for a Swing application.
+ */
+public class Launcher {
+
+ public static final String COMMAND_LINE_ATTRIBUTE = "command.line";
+
+ static final String ENGINE_NAME = "Cayenne Plugin Engine";
+
+ /**
+ * A property specifying a location of the plugins directory. It can be a comma
+ * separated list of directories. If not set, current directory is used.
+ */
+ public static final String PLUGINS_DIR_PROPERTY = "cayenne.plugins.dirs";
+
+ public static final String LOCALE_PROPERTY = "cayenne.ui.locale";
+
+ public static void main(String[] args) {
+
+ CayennePluginEngine pluginEngine = new CayennePluginEngine(ENGINE_NAME);
+ pluginEngine.setAttribute(COMMAND_LINE_ATTRIBUTE, args);
+
+ // set default locale
+ String locale = System.getProperty(LOCALE_PROPERTY);
+ if (locale != null) {
+
+ StringTokenizer toks = new StringTokenizer(locale, "_");
+
+ if (toks.hasMoreTokens()) {
+ // note that default local parts must be empty strings, not nulls...
+ String language = "";
+ String country = "";
+ String variant = "";
+
+ language = toks.nextToken();
+
+ if (toks.hasMoreTokens()) {
+ country = toks.nextToken();
+
+ if (toks.hasMoreTokens()) {
+ variant = toks.nextToken();
+ }
+ }
+
+ Locale.setDefault(new Locale(language, country, variant));
+ }
+
+ }
+
+ // load plugins from ClassPath
+ pluginEngine.loadBundledPlugins();
+
+ // load plugins from extra directories
+ String pluginDirectories = System.getProperty(PLUGINS_DIR_PROPERTY);
+ if (pluginDirectories != null) {
+ StringTokenizer toks = new StringTokenizer(pluginDirectories, ",");
+ while (toks.hasMoreTokens()) {
+ pluginEngine.loadPlugins(toks.nextToken());
+ }
+ }
+
+ pluginEngine.start();
+
+ boolean hasStartedPlugins = false;
+ Iterator it = pluginEngine.getPlugins().iterator();
+ while (it.hasNext()) {
+ Plugin p = (Plugin) it.next();
+ if (p.isStarted()) {
+ hasStartedPlugins = true;
+ break;
+ }
+ }
+
+ // either no plugins configured, all all of them failed to start.
+ if (!hasStartedPlugins) {
+ pluginEngine.getLogger().log(
+ LoggerLevel.INFO,
+ "No plugins started, exiting",
+ null);
+
+ // must explicitly kill all UI threads
+ System.exit(0);
+ }
+ }
+}
Copied: incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/pom.xml (from r412067, incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/pom.xml)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/pom.xml?p2=incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/pom.xml&p1=incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/pom.xml&r1=412067&r2=412068&rev=412068&view=diff
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler-plugin/pom.xml (original)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/modeler-plugin/pom.xml Tue Jun 6 03:30:49 2006
@@ -5,7 +5,7 @@
<artifactId>modeler-plugin</artifactId>
<packaging>jar</packaging>
<version>3.0-SNAPSHOT</version>
- <name>Maven Quick Start Archetype</name>
+ <name>CayenneModeler Plugin</name>
<url>http://maven.apache.org</url>
<dependencies>
@@ -30,4 +30,12 @@
<scope>provided</scope>
</dependency>
</dependencies>
+
+ <repositories>
+ <repository>
+ <id>objectstyle</id>
+ <name>ObjectStyle Public Maven2 repo</name>
+ <url>http://objectstyle.org/maven2</url>
+ </repository>
+ </repositories>
</project>
Added: incubator/cayenne/main/branches/PROTO-3.0/modeler/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/pom.xml?rev=412068&view=auto
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/modeler/pom.xml (added)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/pom.xml Tue Jun 6 03:30:49 2006
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.cayenne</groupId>
+ <artifactId>modeler</artifactId>
+ <packaging>pom</packaging>
+ <version>3.0-SNAPSHOT</version>
+ <name>CayenneModeler Assembly</name>
+ <url>http://incubator.apache.org/cayenne/</url>
+
+ <modules>
+ <module>modeler-launcher</module>
+ <module>swing-plugin</module>
+ <module>modeler-plugin</module>
+ </modules>
+
+ <build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>assembly.xml</descriptor>
<finalName>modeler</finalName>
<outputDirectory>target</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
</configuration>
</plugin>
</plugins>
</build>
+</project>
Copied: incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/pom.xml (from r412067, incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/pom.xml)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/pom.xml?p2=incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/pom.xml&p1=incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/pom.xml&r1=412067&r2=412068&rev=412068&view=diff
==============================================================================
--- incubator/cayenne/main/branches/PROTO-3.0/swing-plugin/pom.xml (original)
+++ incubator/cayenne/main/branches/PROTO-3.0/modeler/swing-plugin/pom.xml Tue Jun 6 03:30:49 2006
@@ -5,15 +5,9 @@
<artifactId>swing-plugin</artifactId>
<packaging>jar</packaging>
<version>3.0-SNAPSHOT</version>
- <name>Maven Quick Start Archetype</name>
+ <name>Generic Swing Plugin</name>
<url>http://maven.apache.org</url>
<dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
<!-- provided dependencies -->
<dependency>