Revision: 3532
Author: jfuerth
Date: Mon May 10 22:46:35 2010
Log: NEW - bug 2800: After downloading Architect EE, it should be obvious how to get started
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2800

WebStart requires us to be careful about classloaders. Specifically, the system classloader does not include our application's jar files!
http://code.google.com/p/power-architect/source/detail?r=3532

Modified:
 /trunk/src/main/java/ca/sqlpower/architect/ProjectLoader.java
 /trunk/src/main/java/ca/sqlpower/architect/ddl/DDLUtils.java
/trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java /trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/CompareDMPanel.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/DDLExportPanel.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ProjectLoader.java Wed May 5 09:39:03 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/ProjectLoader.java Mon May 10 22:46:35 2010
@@ -898,7 +898,7 @@
public Object createObject(Attributes attributes) throws SQLException {
             try {
                 GenericDDLGenerator ddlg =
- (GenericDDLGenerator) Class.forName(attributes.getValue("type")).newInstance(); + (GenericDDLGenerator) Class.forName(attributes.getValue("type"), true, ProjectLoader.class.getClassLoader()).newInstance(); ddlg.setTargetCatalog(attributes.getValue("target-catalog"));
                 ddlg.setTargetSchema(attributes.getValue("target-schema"));
                 return ddlg;
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ddl/DDLUtils.java Fri May 29 07:57:16 2009 +++ /trunk/src/main/java/ca/sqlpower/architect/ddl/DDLUtils.java Mon May 10 22:46:35 2010
@@ -153,7 +153,7 @@
         for (JDBCDataSourceType dst : dsc.getDataSourceTypes()) {
             if (dst.getDDLGeneratorClass() != null) {
                 try {
- Class<?> loadedClass = Class.forName(dst.getDDLGeneratorClass()); + Class<?> loadedClass = Class.forName(dst.getDDLGeneratorClass(), true, DDLUtils.class.getClassLoader()); Class<? extends DDLGenerator> ddlgClass = loadedClass.asSubclass(DDLGenerator.class); if ( (!dbTypeList.contains(ddlgClass)) && (!Modifier.isAbstract(ddlgClass.getModifiers())) ) {
                         dbTypeList.add(ddlgClass);
@@ -171,10 +171,10 @@
     public static DDLGenerator createDDLGenerator(JDBCDataSource ads)
throws InstantiationException, IllegalAccessException, ClassNotFoundException {

-        Class generatorClass;
+        Class<?> generatorClass;
         String className = ads.getParentType().getDDLGeneratorClass();
         if (className != null) {
-            generatorClass = Class.forName(className);
+ generatorClass = Class.forName(className, true, DDLUtils.class.getClassLoader());
         } else {
             generatorClass = DEFAULT_DDL_GENERATOR_CLASS;
         }
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Mon May 10 19:04:12 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Mon May 10 22:46:35 2010
@@ -140,7 +140,7 @@
String ddlgClass = prefs.get(this.projectLocation.getUUID() + ".ddlg", null);
                if (ddlgClass != null) {
                    try {
- DDLGenerator ddlg = (DDLGenerator) Class.forName(ddlgClass).newInstance(); + DDLGenerator ddlg = (DDLGenerator) Class.forName(ddlgClass, true, ArchitectClientSideSession.class.getClassLoader()).newInstance();
                 setDDLGenerator(ddlg);
ddlg.setTargetCatalog(prefs.get(this.projectLocation.getUUID() + ".targetCatalog", null)); ddlg.setTargetSchema(prefs.get(this.projectLocation.getUUID() + ".targetSchema", null));
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java Fri Apr 30 15:31:53 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java Mon May 10 22:46:35 2010
@@ -513,7 +513,7 @@
                     type = spo.getClass();
                     parentId = spo.getParent().getUUID();
                 } else if (o != null) {
-                    type = Class.forName(o.getType());
+ type = Class.forName(o.getType(), true, NetworkConflictResolver.class.getClassLoader());
                     parentId = o.getParentUUID();
                 } else {
                     continue;
@@ -555,7 +555,7 @@
                     iterator.remove();
PlayPenContentPane cp = session.getWorkspace().getPlayPenContentPane();
                     try {
- Class<PlayPenComponent> type = (Class<PlayPenComponent>) Class.forName(o.getType()); + Class<PlayPenComponent> type = (Class<PlayPenComponent>) Class.forName(o.getType(), true, NetworkConflictResolver.class.getClassLoader());
                         int newIndex = -1;
if (PlayPenContentPane.isDependentComponentType(type)) { if (o.getIndex() < cp.getFirstDependentComponentIndex()) {
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java Mon May 10 11:20:07 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java Mon May 10 22:46:35 2010
@@ -443,7 +443,7 @@

         if (context.isMacOSX()) {
             try {
- Class osxAdapter = ClassLoader.getSystemClassLoader().loadClass("ca.sqlpower.architect.swingui.OSXAdapter"); //$NON-NLS-1$ + Class<?> osxAdapter = ArchitectSwingSessionImpl.class.getClassLoader().loadClass("ca.sqlpower.architect.swingui.OSXAdapter"); //$NON-NLS-1$

// The main registration method. Takes quitAction, prefsAction, aboutAction. Class[] defArgs = { Action.class, Action.class, Action.class };
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/CompareDMPanel.java Thu Feb 25 09:46:15 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/CompareDMPanel.java Mon May 10 22:46:35 2010
@@ -746,7 +746,7 @@
String generatorClass = dataSource.getParentType().getDDLGeneratorClass();
                         if (generatorClass != null) {
                             try {
- sqlTypeDropdown.setSelectedItem(Class.forName(generatorClass)); + sqlTypeDropdown.setSelectedItem(Class.forName(generatorClass, true, CompareDMPanel.class.getClassLoader()));
                             } catch (ClassNotFoundException ex) {
logger.error("Error when finding the DDLGenerator class for the selected database!", ex); //$NON-NLS-1$
                             }
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/DDLExportPanel.java Thu Feb 25 09:46:15 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/DDLExportPanel.java Mon May 10 22:46:35 2010
@@ -103,7 +103,7 @@
String generatorClass = dataSource.getParentType().getDDLGeneratorClass();
                     if (generatorClass != null) {
                         try {
- dbType.setSelectedItem(Class.forName(generatorClass)); + dbType.setSelectedItem(Class.forName(generatorClass, true, DDLExportPanel.class.getClassLoader()));
                         } catch (ClassNotFoundException ex) {
logger.error("Error when finding the DDLGenerator class for the selected database!", ex); //$NON-NLS-1$
                         }

Reply via email to