Author: rob.stryker(a)jboss.com
Date: 2008-03-11 15:41:22 -0400 (Tue, 11 Mar 2008)
New Revision: 6878
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelException.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java
Removed:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelListenerManager.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EarArchiveType.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EjbArchiveType.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/J2EEArchiveType.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/WarArchiveType.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesBuildListener.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/ModelChangeListenerWithRefresh.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/model/types/WorkspaceJARArchiveType.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedAntExecution.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelCore.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeDeltaImpl.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/dialogs/ArchiveNodeDestinationDialog.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/pages/ArchiveInfoWizardPage.java
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ModelUtilTest.java
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBMarshallTest.java
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBUnmarshallTest.java
Log:
Archives API Refactor.
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EarArchiveType.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EarArchiveType.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EarArchiveType.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -29,6 +29,7 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.jst.server.core.IEnterpriseApplication;
import org.eclipse.wst.server.core.IModule;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
import org.jboss.ide.eclipse.archives.core.model.IArchiveType;
@@ -84,6 +85,7 @@
}
public IArchive fillDefaultConfiguration(String projectName, IArchive topLevel,
IProgressMonitor monitor) {
+ try {
IModule mod = getModule(projectName);
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
@@ -110,7 +112,7 @@
}
}
+ } catch( ArchivesModelException ame) {}
return topLevel;
}
-
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EjbArchiveType.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EjbArchiveType.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/EjbArchiveType.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -28,6 +28,7 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.wst.server.core.IModule;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
/**
@@ -71,8 +72,7 @@
IPath outputLoc = proj.getOutputLocation();
addFileset(project, topLevel, outputLoc.toOSString(), null);
} catch( JavaModelException jmde) {
- // ignore. No reporting necessary here
- }
+ } catch( ArchivesModelException ame ) {}
}
}
return topLevel;
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/J2EEArchiveType.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/J2EEArchiveType.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/J2EEArchiveType.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -37,6 +37,7 @@
import org.eclipse.wst.server.core.IModuleArtifact;
import org.eclipse.wst.server.core.internal.ServerPlugin;
import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
@@ -118,13 +119,15 @@
}
- public static IArchiveFolder addFolder(IProject project, IArchiveNode parent, String
name) {
+ public static IArchiveFolder addFolder(IProject project,
+ IArchiveNode parent, String name) throws ArchivesModelException {
IArchiveFolder folder = ArchiveNodeFactory.createFolder();
folder.setName(name);
parent.addChild(folder);
return folder;
}
- public static IArchiveFileSet addFileset(IProject project, IArchiveNode parent, String
sourcePath, String includePattern) {
+ public static IArchiveFileSet addFileset(IProject project, IArchiveNode parent,
+ String sourcePath, String includePattern) throws ArchivesModelException {
IArchiveFileSet fs = ArchiveNodeFactory.createFileset();
Assert.isNotNull(project);
IJavaProject javaProject = JavaCore.create(project);
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/WarArchiveType.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/WarArchiveType.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/archives/WarArchiveType.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -41,6 +41,7 @@
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.server.core.IModule;
import org.jboss.ide.eclipse.archives.core.ArchivesCorePlugin;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.DirectoryScannerFactory;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
@@ -77,24 +78,26 @@
return fillDefaultConfiguration(getProject(projectName), topLevel, monitor);
}
public IArchive fillDefaultConfiguration(IProject project, IArchive topLevel,
IProgressMonitor monitor) {
- IModule mod = getModule(project.getName());
- IArchiveFolder webinf = addFolder(project, topLevel, WEBINF);
- IArchiveFolder lib = addFolder(project, webinf, LIB);
- IArchiveFolder classes = addFolder(project, webinf, CLASSES);
- addReferencedProjectsAsLibs(project, lib);
- addLibFileset(project, lib, true);
- addClassesFileset(project, classes);
-
- if( mod == null ) {
- addWebinfFileset(project, webinf);
- } else {
- addWebContentFileset(project, topLevel);
- }
+ try {
+ IModule mod = getModule(project.getName());
+ IArchiveFolder webinf = addFolder(project, topLevel, WEBINF);
+ IArchiveFolder lib = addFolder(project, webinf, LIB);
+ IArchiveFolder classes = addFolder(project, webinf, CLASSES);
+ addReferencedProjectsAsLibs(project, lib);
+ addLibFileset(project, lib, true);
+ addClassesFileset(project, classes);
+
+ if( mod == null ) {
+ addWebinfFileset(project, webinf);
+ } else {
+ addWebContentFileset(project, topLevel);
+ }
+ } catch( ArchivesModelException ame) {}
return topLevel;
}
// For modules only
- protected void addWebContentFileset(IProject project, IArchiveNode packageRoot) {
+ protected void addWebContentFileset(IProject project, IArchiveNode packageRoot) throws
ArchivesModelException {
try {
IPath projectPath = project.getLocation();
DirectoryScanner scanner =
@@ -115,7 +118,7 @@
}
}
- protected void addClassesFileset(IProject project, IArchiveFolder folder) {
+ protected void addClassesFileset(IProject project, IArchiveFolder folder) throws
ArchivesModelException {
IJavaProject jp = JavaCore.create(project);
if( jp != null ) {
try {
@@ -127,7 +130,7 @@
}
}
}
- protected void addWebinfFileset(IProject project, IArchiveFolder folder) {
+ protected void addWebinfFileset(IProject project, IArchiveFolder folder) throws
ArchivesModelException {
try {
IPath projectPath = project.getLocation();
DirectoryScanner scanner =
@@ -147,7 +150,7 @@
}
// Lib support
- protected void addLibFileset(IProject project, IArchiveFolder folder, boolean
includeTopLevelJars) {
+ protected void addLibFileset(IProject project, IArchiveFolder folder, boolean
includeTopLevelJars) throws ArchivesModelException {
// Let us find /WEB-INF/lib directory and set it as source for the file set.
String sourcePath = null;
@@ -178,7 +181,7 @@
}
}
}
- protected void addReferencedProjectsAsLibs(IProject project, IArchiveFolder folder) {
+ protected void addReferencedProjectsAsLibs(IProject project, IArchiveFolder folder)
throws ArchivesModelException {
IJavaProject jp = JavaCore.create(project);
if( jp != null && jp.exists()) {
try {
@@ -199,7 +202,7 @@
}
- protected void createLibFromProject(IProject project, IArchiveFolder folder) {
+ protected void createLibFromProject(IProject project, IArchiveFolder folder) throws
ArchivesModelException {
IArchive pack = createGenericIArchive(project, null, project.getName() +
".jar");
folder.addChild(pack);
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesBuildListener.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesBuildListener.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesBuildListener.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -63,7 +63,7 @@
public ArchivesBuildListener() {
ArchivesModel.instance().addBuildListener(this);
- ArchivesModel.instance().addModelListener(this, ArchivesModel.LIST_FRONT);
+ ArchivesModel.instance().addModelListener(this); // ? , ArchivesModel.LIST_FRONT);
}
public void cleanArchive(IArchive pkg) {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/modules/ArchivesModelModuleContributor.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -28,11 +28,15 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IModule;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModelCore;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
+import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.modules.PackageModuleFactory.IModuleContributor;
import
org.jboss.ide.eclipse.as.core.modules.PackageModuleFactory.PackagedModuleDelegate;
@@ -68,18 +72,26 @@
int size = projects2.length;
for (int i = 0; i < size; i++) {
if (projects2[i].isAccessible()) {
- createModules(projects2[i]);
+ try {
+ createModules(projects2[i]);
+ } catch(ArchivesModelException ame) {
+ IStatus status = new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
ame.getMessage(), ame);
+ JBossServerCorePlugin.getDefault().getLog().log(status);
+ }
}
}
}
return modules.toArray(new IModule[modules.size()]);
}
- protected void createModules(IProject project) {
- IArchive[] packs = ArchivesModelCore.getProjectPackages(project.getLocation(), null,
false);
+ protected void createModules(IProject project) throws ArchivesModelException {
+ IArchive[] packs = ModelUtil.getProjectArchives(project.getLocation());
if( packs != null && packs.length > 0 ) {
IModule module;
- IArchive[] packages = ArchivesModelCore.getProjectPackages(project.getLocation(), new
NullProgressMonitor(), true);
+ if( !ArchivesModel.instance().isProjectRegistered(project.getLocation())) {
+ ArchivesModel.instance().registerProject(project.getLocation(), new
NullProgressMonitor());
+ }
+ IArchive[] packages = ModelUtil.getProjectArchives(project.getLocation());
boolean requiresSave = ensureArchivesHaveIDs(project, packages);
ArrayList<IModule> mods = new ArrayList<IModule>();
for( int i = 0; i < packages.length; i++ ) {
@@ -92,8 +104,12 @@
}
projectToModules.put(project.getLocation(), mods);
if( requiresSave )
- ArchivesModel.instance().saveModel(project.getLocation(),
- new NullProgressMonitor());
+ try {
+ ArchivesModel.instance().save(project.getLocation(),
+ new NullProgressMonitor());
+ } catch( ArchivesModelException ame ) {
+
+ }
}
}
@@ -126,7 +142,12 @@
}
}
}
- createModules(findProject(projectLoc));
+ try {
+ createModules(findProject(projectLoc));
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
ame.getMessage(), ame);
+ JBossServerCorePlugin.getDefault().getLog().log(status);
+ }
}
protected IProject findProject(IPath projectLoc) {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/ArchivePublishWizard.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -24,6 +24,7 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.as.core.modules.ArchivesBuildListener;
import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
@@ -42,7 +43,11 @@
pack.setProperty(ArchivesBuildListener.DEPLOY_SERVERS, getServers());
pack.setProperty(ArchivesBuildListener.DEPLOY_AFTER_BUILD, getAutoDeploy());
IPath p = pack.getProjectPath();
- ArchivesModel.instance().saveModel(p, null);
+ try {
+ ArchivesModel.instance().save(p, null);
+ } catch( ArchivesModelException ame ) {
+ // TODO
+ }
}
return true;
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/WorkspaceChangeListener.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -39,6 +39,9 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
+import org.jboss.ide.eclipse.archives.core.model.IArchivesLogger;
/**
* Update the model if someone changes the packaging file by hand
@@ -56,7 +59,7 @@
delta.accept(new IResourceDeltaVisitor() {
public boolean visit(IResourceDelta delta) throws CoreException {
if( delta.getResource() != null && delta.getResource().getLocation() !=
null &&
- delta.getResource().getLocation().lastSegment().equals(ArchivesModel.PROJECT_PACKAGES_FILE))
{
+ delta.getResource().getLocation().lastSegment().equals(IArchiveModel.DEFAULT_PACKAGES_FILE))
{
projects.add(delta.getResource().getProject());
}
return true;
@@ -70,18 +73,22 @@
final IProject p = i.next();
try {
if( p.getSessionProperty(new QualifiedName(ArchivesCorePlugin.PLUGIN_ID,
"localname")) == null ) {
- ArchivesModel.instance().registerProject(p.getLocation(), new
NullProgressMonitor());
- new Job("Refresh Project: " + p.getName()) {
- protected IStatus run(IProgressMonitor monitor) {
- try {
- p.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
- } catch( CoreException e ) {
- IStatus status = new Status(IStatus.WARNING, ArchivesCorePlugin.PLUGIN_ID,
"Could not refresh project " + p.getName(), e);
- return status;
+ try {
+ ArchivesModel.instance().registerProject(p.getLocation(), new
NullProgressMonitor());
+ new Job("Refresh Project: " + p.getName()) {
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ p.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
+ } catch( CoreException e ) {
+ IStatus status = new Status(IStatus.WARNING, ArchivesCorePlugin.PLUGIN_ID,
"Could not refresh project " + p.getName(), e);
+ return status;
+ }
+ return Status.OK_STATUS;
}
- return Status.OK_STATUS;
- }
- }.schedule();
+ }.schedule();
+ } catch( ArchivesModelException ame ) {
+ ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
register project " + p.getName(), ame);
+ }
}
} catch( CoreException ce ) {
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/ModelChangeListenerWithRefresh.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/ModelChangeListenerWithRefresh.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/build/ModelChangeListenerWithRefresh.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -10,8 +10,8 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.QualifiedName;
import org.jboss.ide.eclipse.archives.core.ArchivesCorePlugin;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
/**
@@ -48,7 +48,7 @@
}
try {
- proj.getFile(new
Path(ArchivesModel.PROJECT_PACKAGES_FILE)).refreshLocal(IResource.DEPTH_ONE, new
NullProgressMonitor());
+ proj.getFile(new
Path(IArchiveModel.DEFAULT_PACKAGES_FILE)).refreshLocal(IResource.DEPTH_ONE, new
NullProgressMonitor());
} catch( CoreException ce ) {
}
} catch( CoreException ce ) {
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/model/types/WorkspaceJARArchiveType.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/model/types/WorkspaceJARArchiveType.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/model/types/WorkspaceJARArchiveType.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -12,6 +12,7 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.jboss.ide.eclipse.archives.core.ArchivesCore;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveFileSetImpl;
@@ -62,7 +63,10 @@
classes.setSourcePath(outputContainer.getFullPath());
classes.setInWorkspace(true);
- jar.addChild(classes);
+ try {
+ jar.addChild(classes);
+ } catch( ArchivesModelException ame ) {
+ }
monitor.worked(1);
monitor.done();
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/eclipse/org/jboss/ide/eclipse/archives/core/project/ArchivesBuilder.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -40,6 +40,7 @@
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
@@ -122,7 +123,7 @@
// ignore the packages project. that will it's own build call,
// or will handle the change in some other way
- if(
!delta.getResource().equals(proj.findMember(ArchivesModel.PROJECT_PACKAGES_FILE)))
+ if(
!delta.getResource().equals(proj.findMember(IArchiveModel.DEFAULT_PACKAGES_FILE)))
addedChanged.add(delta.getResource().getLocation());
} else if( (delta.getKind() & IResourceDelta.REMOVED ) > 0 ) {
removed.add(delta.getResource().getLocation());
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedAntExecution.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedAntExecution.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedAntExecution.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -15,7 +15,7 @@
import org.apache.tools.ant.taskdefs.War;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.ZipFileSet;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -33,7 +33,7 @@
/**
* Packages file defaults to ".packages"
*/
- private String jbossPackages = ArchivesModel.PROJECT_PACKAGES_FILE;
+ private String jbossPackages = IArchiveModel.DEFAULT_PACKAGES_FILE;
private JBossArchivesTask parentTask;
public IsolatedAntExecution(JBossArchivesTask parent) {
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/ant/IsolatedTruezipExecution.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -9,6 +9,7 @@
import org.jboss.ide.eclipse.archives.core.ArchivesCore;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModelCore;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveBuildListener;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
@@ -57,7 +58,11 @@
if( ArchivesModel.instance().getRoot(path) == null) {
task.log("Registering project: " + path + ". ",
Project.MSG_VERBOSE);
- ArchivesModel.instance().registerProject(path, null);
+ try {
+ ArchivesModel.instance().registerProject(path, null);
+ } catch( ArchivesModelException ame ) {
+ // log it
+ }
}
IArchiveModelNode node = ArchivesModel.instance().getRoot(path);
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ModelChangeListener.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -81,7 +81,7 @@
if( isTopLevelArchive(delta.getPostNode()))
EventManager.startedBuildingArchive((IArchive)delta.getPostNode());
- if( (delta.getKind() & IArchiveNodeDelta.UNKNOWN_CHANGE) != 0 ) {
+ if( (delta.getKind() & (IArchiveNodeDelta.NODE_REGISTERED |
IArchiveNodeDelta.UNKNOWN_CHANGE)) != 0 ) {
nodeRemoved(delta.getPreNode());
nodeAdded(delta.getPostNode());
} if( (delta.getKind() & IArchiveNodeDelta.REMOVED) != 0 ) {
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModel.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -21,18 +21,12 @@
*/
package org.jboss.ide.eclipse.archives.core.model;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.jboss.ide.eclipse.archives.core.ArchivesCore;
import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding;
@@ -46,18 +40,13 @@
*
* @author <a href="rob.stryker(a)redhat.com">Rob Stryker</a>
*/
-public class ArchivesModel implements IArchiveModelListenerManager {
+public class ArchivesModel implements IArchiveModel {
/**
- * The packages file name
- */
- public static final String PROJECT_PACKAGES_FILE = ".packages";
-
- /**
* Singleton instance
*/
- protected static ArchivesModel instance;
- public static ArchivesModel instance() {
+ protected static IArchiveModel instance;
+ public static IArchiveModel instance() {
if( instance == null )
instance = new ArchivesModel();
return instance;
@@ -74,199 +63,165 @@
modelListeners = new ArrayList<IArchiveModelListener>();
}
-
- public static final int LIST_FRONT = 0;
- public static final int LIST_BACK = -1;
-
/*
- * Listeners
+ * (non-Javadoc)
+ * @see
org.jboss.ide.eclipse.archives.core.model.IArchiveModel#addBuildListener(org.jboss.ide.eclipse.archives.core.model.IArchiveBuildListener)
*/
public void addBuildListener(IArchiveBuildListener listener) {
if( !buildListeners.contains(listener))
buildListeners.add(listener);
}
- public void addBuildListener(IArchiveBuildListener listener, int loc) {
- if( !buildListeners.contains(listener)) {
- if( loc == LIST_FRONT )
- buildListeners.add(0, listener);
- else
- buildListeners.add(listener);
- }
- }
+ /*
+ * (non-Javadoc)
+ * @see
org.jboss.ide.eclipse.archives.core.model.IArchiveModel#removeBuildListener(org.jboss.ide.eclipse.archives.core.model.IArchiveBuildListener)
+ */
public void removeBuildListener(IArchiveBuildListener listener) {
buildListeners.remove(listener);
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.ide.eclipse.archives.core.model.IArchiveModel#getBuildListeners()
+ */
public IArchiveBuildListener[] getBuildListeners() {
return buildListeners.toArray(new IArchiveBuildListener[buildListeners.size()]);
}
+ /*
+ * (non-Javadoc)
+ * @see
org.jboss.ide.eclipse.archives.core.model.IArchiveModel#addModelListener(org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener)
+ */
public void addModelListener(IArchiveModelListener listener) {
if( !modelListeners.contains(listener))
modelListeners.add(listener);
}
- public void addModelListener(IArchiveModelListener listener, int loc) {
- if( !modelListeners.contains(listener)) {
- if( loc == LIST_FRONT )
- modelListeners.add(0, listener);
- else
- modelListeners.add(listener);
- }
- }
-
+
+ /*
+ * (non-Javadoc)
+ * @see
org.jboss.ide.eclipse.archives.core.model.IArchiveModel#removeModelListener(org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener)
+ */
public void removeModelListener(IArchiveModelListener listener) {
if( modelListeners.contains(listener))
modelListeners.remove(listener);
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.ide.eclipse.archives.core.model.IArchiveModel#getModelListeners()
+ */
public IArchiveModelListener[] getModelListeners() {
return modelListeners.toArray(new IArchiveModelListener[modelListeners.size()]);
}
-
-
-
-
-
- public XbPackages getXbPackages(IPath project) {
- return (xbPackages.get(project));
- }
-
- /**
- * If the project hasn't been registered, register it
- * @param project
- * @param monitor
- * @return
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.ide.eclipse.archives.core.model.IArchiveModel#getModelNodes()
*/
- public XbPackages getXbPackages(IPath project, IProgressMonitor monitor) {
- if( !xbPackages.containsKey(project))
- registerProject(project, monitor);
- return (xbPackages.get(project));
+ public IArchiveModelNode[] getModelNodes() {
+ Collection<ArchiveModelNode> c = archivesRoot.values();
+ return (IArchiveModelNode[]) c.toArray(new IArchiveModelNode[c.size()]);
}
- /**
- * Accept a visitor
+ /*
+ * (non-Javadoc)
+ * @see
org.jboss.ide.eclipse.archives.core.model.IArchiveModel#accept(org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor)
*/
public boolean accept(IArchiveNodeVisitor visitor) {
- IArchiveNode children[] = getAllArchives();
+ IArchiveModelNode[] children = getModelNodes();
boolean keepGoing = true;
-
- if (keepGoing) {
- for (int i = 0; i < children.length; i++) {
- if (keepGoing) {
+ if (keepGoing)
+ for (int i = 0; i < children.length; i++)
+ if (keepGoing)
keepGoing = children[i].accept(visitor);
- }
- }
- }
-
return keepGoing;
}
-
- /**
- * Gets every single *registered* model
- * @return
- */
- protected ArchiveModelNode[] getAllArchives() {
- ArchiveModelNode[] ret = new ArchiveModelNode[archivesRoot.keySet().size()];
- Iterator<IPath> i = archivesRoot.keySet().iterator();
- int x = 0;
- while(i.hasNext()) {
- ret[x++] = archivesRoot.get(i.next());
- }
- return ret;
+
+
+ public IArchiveModelNode getRoot(IPath project) {
+ return (archivesRoot.get(project));
}
- /**
- * Get the root node for this object
- * @param project
- * @return
- */
- public IArchiveModelNode getRoot(IPath project) {
- return getRoot(project, false, new NullProgressMonitor());
+ @Deprecated
+ public void save(IPath projectPath, IProgressMonitor monitor) throws
ArchivesModelException {
+ save(getRoot(projectPath), monitor);
}
- public IArchiveModelNode getRoot(IPath project, boolean register, IProgressMonitor
monitor) {
- if( archivesRoot.get(project) == null && register ) {
- registerProject(project, monitor);
- }
- return (archivesRoot.get(project));
+ @Deprecated
+ public void save(IArchiveModelNode modelNode, IProgressMonitor monitor) throws
ArchivesModelException {
+ modelNode.save(monitor);
}
- public IArchive[] getProjectArchives(IPath project) {
- return getProjectArchives(project, false, new NullProgressMonitor());
+ public boolean isProjectRegistered(IPath projectPath) {
+ return archivesRoot.containsKey(projectPath);
}
- public IArchive[] getProjectArchives(IPath project, boolean register, IProgressMonitor
monitor) {
- IArchiveModelNode root = getRoot(project, register, monitor);
- if( root != null ) {
- List<IArchiveNode> list = Arrays.asList( getRoot(project, register,
monitor).getAllChildren());
- return list.toArray(new IArchive[list.size()]);
- } else if( register) {
- registerProject(project, monitor);
- List<IArchiveNode> list = Arrays.asList( getRoot(project, register,
monitor).getAllChildren());
- return list.toArray(new IArchive[list.size()]);
- } else {
- return new IArchive[] {};
- }
- }
- // to make sure the node root is actually in the model
- public boolean containsRoot(ArchiveModelNode node) {
- return archivesRoot.containsValue(node);
+ public IArchiveModelNode registerProject(IPath projectPath, IProgressMonitor monitor)
throws ArchivesModelException {
+ return registerProject(projectPath, DEFAULT_PACKAGES_FILE, monitor);
}
- public void registerProject(IPath project, IProgressMonitor monitor) {
- // if the file exists, read it in
- if( monitor == null ) monitor = new NullProgressMonitor();
- monitor.beginTask("Loading configuration...",
XMLBinding.NUM_UNMARSHAL_MONITOR_STEPS + 2);
-
- ArchivesCore.getInstance().preRegisterProject(project);
-
- ArchiveModelNode root;
- Exception e = null;
- IPath packagesFile = project.append(PROJECT_PACKAGES_FILE);
+ public IArchiveModelNode registerProject(IPath projectPath, String file,
IProgressMonitor monitor) throws ArchivesModelException {
+ XbPackages packages;
+ ArchiveModelNode modelNode;
+
+ IPath packagesFile = projectPath.append(file);
if (packagesFile.toFile().exists()) {
- XbPackages packages = null;
try {
- FileInputStream is = new FileInputStream(packagesFile.toFile());
- packages = XMLBinding.unmarshal(is, monitor);
- monitor.worked(1);
- } catch (FileNotFoundException f) {
- e = f;
- } catch( XbException xbe) {
- e = xbe;
- }
-
- if (packages == null) {
+ packages = XMLBinding.unmarshal(packagesFile.toFile(), monitor);
+ } catch( XbException xbe ) {
// Empty / non-working XML file loaded
- ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
unmarshall packages file", e);
- return;
+ ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Error
unmarshalling packages file " + packagesFile, xbe);
+ return null;
}
-
- root = new ArchiveModelNode(project, packages, this);
- ArchiveModelNode oldRoot = archivesRoot.get(project);
- xbPackages.put(project, packages);
- archivesRoot.put(project, root);
- ModelUtil.fillArchiveModel(packages, (ArchiveModelNode)getRoot(project));
- root.clearDeltas();
- fireRegisterProjectEvent(oldRoot, root);
- monitor.worked(1);
} else {
- // file not found, just create some default xbpackages and insert them
- XbPackages packages = new XbPackages();
- ArchiveModelNode root2 = new ArchiveModelNode(project, packages, this);
- xbPackages.put(project, packages);
- archivesRoot.put(project, root2);
- fireRegisterProjectEvent(null, root2);
+ packages = new XbPackages();
}
+
+ // Fill the model
+ modelNode = new ArchiveModelNode(projectPath, projectPath.append(file), packages,
this);
+ ModelUtil.fillArchiveModel(packages, modelNode);
+ modelNode.clearDelta();
+
+ registerProject(modelNode, monitor);
+ return modelNode;
}
- protected void fireRegisterProjectEvent(final ArchiveModelNode oldRoot, final
ArchiveModelNode newRoot) {
+ public void registerProject(IArchiveModelNode model, IProgressMonitor monitor) {
+ ArchivesCore.getInstance().preRegisterProject(model.getProjectPath());
+ xbPackages.put(model.getProjectPath(), ((ArchiveModelNode)model).getXbPackages());
+ archivesRoot.put(model.getProjectPath(), (ArchiveModelNode)model);
+ fireRegisterProjectEvent((ArchiveModelNode)model);
+ }
+
+ public void unregisterProject(IPath projectPath, IProgressMonitor monitor) {
+ IArchiveModelNode root = getRoot(projectPath);
+ xbPackages.remove(projectPath);
+ archivesRoot.remove(projectPath);
+ fireUnregisterProjectEvent(root);
+ }
+
+ public void unregisterProject(IArchiveModelNode model, IProgressMonitor monitor) {
+ xbPackages.remove(model.getProjectPath());
+ archivesRoot.remove(model.getProjectPath());
+ fireUnregisterProjectEvent((ArchiveModelNode)model);
+ }
+
+ protected void fireRegisterProjectEvent(final IArchiveModelNode newRoot) {
+ fireRegistrationEvent(null, newRoot, IArchiveNodeDelta.NODE_REGISTERED);
+ }
+
+ protected void fireUnregisterProjectEvent(final IArchiveModelNode oldRoot) {
+ fireRegistrationEvent(oldRoot, null, IArchiveNodeDelta.NODE_UNREGISTERED);
+ }
+
+ protected void fireRegistrationEvent(final IArchiveModelNode oldRoot, final
IArchiveModelNode newRoot, final int type) {
IArchiveNodeDelta delta = new IArchiveNodeDelta() {
public IArchiveNodeDelta[] getAddedChildrenDeltas() {return null;}
public IArchiveNodeDelta[] getAllAffectedChildren() {return null;}
public INodeDelta getAttributeDelta(String key) {return null;}
public String[] getAttributesWithDeltas() {return null;}
public IArchiveNodeDelta[] getChangedDescendentDeltas() {return null;}
- public int getKind() {return IArchiveNodeDelta.UNKNOWN_CHANGE;}
+ public int getKind() {return type;}
public IArchiveNode getPostNode() {return newRoot;}
public IArchiveNode getPreNode() { return oldRoot; }
public String[] getPropertiesWithDeltas() {return null;}
@@ -275,43 +230,4 @@
};
EventManager.fireDelta(delta);
}
-
-
- public void saveModel (IPath project, IProgressMonitor monitor) {
- // get a list of dirty nodes
-
- if (monitor == null)
- monitor = new NullProgressMonitor();
-
- IPath packagesFile = project.append(ArchivesModel.PROJECT_PACKAGES_FILE);
- XbPackages packs = getXbPackages(project);
- try {
- XMLBinding.marshallToFile(packs, packagesFile, monitor);
- } catch( IOException ioe ) {
- ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
marshall packages file", ioe);
- return;
- } catch( XbException xbe ) {
- ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_ERR, "Could not
marshall packages file", xbe);
- return;
- }
-
- // get deltas
- ArchiveModelNode root = (ArchiveModelNode)getRoot(project);
- IArchiveNodeDelta delta = root.getDelta();
-
- // clear deltas
- root.clearDeltas();
-
- // fire delta events
- EventManager.fireDelta(delta);
- }
-
- // TODO: This requires massive help and new API's as well.
- public void attach(IArchiveNode parent, IArchiveNode child, IProgressMonitor monitor) {
- parent.addChild(child);
- if( parent.connectedToModel() && parent.getProjectPath() != null) {
- // save
- saveModel(parent.getProjectPath(), monitor);
- }
- }
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelCore.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelCore.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelCore.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -37,7 +37,6 @@
*/
public class ArchivesModelCore {
-
/**
* Builds all of a project's packages. Note that this does not call any builders
before or after the package builder (i.e. the JDT builder).
* If you are looking to run all the builders on a project use project.build()
@@ -59,36 +58,14 @@
new ArchiveBuildDelegate().fullArchiveBuild(pkg);
}
- public static IArchive[] getProjectPackages (IPath project, IProgressMonitor monitor,
boolean forceInit) {
- return ArchivesModel.instance().getProjectArchives(project, forceInit, monitor);
- }
-
public static boolean packageFileExists (IPath project) {
- return project.append(ArchivesModel.PROJECT_PACKAGES_FILE).toFile().exists();
+ return project.append(IArchiveModel.DEFAULT_PACKAGES_FILE).toFile().exists();
}
public static boolean projectRegistered(IPath project) {
return ArchivesModel.instance().getRoot(project) == null ? false : true;
}
-
- /**
- * Visit all of the top-level packages in the passed in project with the passed in node
visitor
- * @param project The project whose packages to visit
- * @param visitor The visitor
- */
- public static void visitProjectArchives (IPath project, IArchiveNodeVisitor visitor) {
- if (packageFileExists(project)) {
- IArchive packages[] = getProjectPackages(project, null, false);
- if( packages == null ) return;
- for (int i = 0; i < packages.length; i++) {
- boolean keepGoing = packages[i].accept(visitor);
- if (!keepGoing) break;
- }
- }
- }
-
-
public static IPath[] findMatchingPaths(IPath root, String includes, String excludes) {
try {
if(root==null) return new IPath[0];
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelException.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelException.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/ArchivesModelException.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -0,0 +1,51 @@
+/**
+ * JBoss, a Division of Red Hat
+ * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+* This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.ide.eclipse.archives.core.model;
+
+/**
+ * @author rob.stryker <rob.stryker(a)redhat.com>
+ *
+ */
+public class ArchivesModelException extends Exception {
+ private Exception parent;
+
+ public ArchivesModelException(String message) {
+ super(message);
+ }
+
+ public ArchivesModelException(Exception e) {
+ super();
+ parent = e;
+ }
+ public Exception getException() {
+ return parent;
+ }
+ public String getMessage() {
+ return getMessage() != null ? getMessage() :
+ parent.getCause() == null ? parent.getMessage() :
+ parent.getCause().getMessage();
+ }
+ public Throwable getCause() {
+ return parent;
+ }
+
+}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/EventManager.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -176,9 +176,9 @@
private static IArchiveModelListener[] getModelListeners(IArchiveNode node) {
- IArchiveModelNode model = node.getModel();
- if( model != null && model.getManager() != null ) {
- return model.getManager().getModelListeners();
+ IArchiveModelNode model = node.getModelNode();
+ if( model != null && model.getModel() != null ) {
+ return model.getModel().getModelListeners();
}
return new IArchiveModelListener[]{};
}
@@ -188,9 +188,9 @@
return ArchivesModel.instance().getBuildListeners();
}
private static IArchiveBuildListener[] getBuildListeners(IArchiveNode node) {
- IArchiveModelNode model = node.getModel();
- if( model != null && model.getManager() != null ) {
- return model.getManager().getBuildListeners();
+ IArchiveModelNode model = node.getModelNode();
+ if( model != null && model.getModel() != null ) {
+ return model.getModel().getBuildListeners();
}
return new IArchiveBuildListener[]{};
}
Copied:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java
(from rev 6560,
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelListenerManager.java)
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModel.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -0,0 +1,56 @@
+/**
+ * JBoss, a Division of Red Hat
+ * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.ide.eclipse.archives.core.model;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding.XbException;
+
+
+/**
+ * Manages Archive Model Listeners, build and model changes, for changes
+ * in the model
+ * @author rstryker
+ *
+ */
+public interface IArchiveModel {
+ public static final String DEFAULT_PACKAGES_FILE = ".packages";
+
+ public boolean isProjectRegistered(IPath projectPath);
+ public void save(IPath projectPath, IProgressMonitor monitor) throws
ArchivesModelException;
+ public void save(IArchiveModelNode modelNode, IProgressMonitor monitor) throws
ArchivesModelException;
+ public IArchiveModelNode registerProject(IPath projectPath, IProgressMonitor monitor)
throws ArchivesModelException;
+ public IArchiveModelNode registerProject(IPath projectPath, String file,
IProgressMonitor monitor) throws ArchivesModelException;
+ public void registerProject(IArchiveModelNode modelNode, IProgressMonitor monitor);
+ public void unregisterProject(IPath projectPath, IProgressMonitor monitor);
+ public void unregisterProject(IArchiveModelNode modelNode, IProgressMonitor monitor);
+ public IArchiveModelNode getRoot(IPath project);
+ public IArchiveModelNode[] getModelNodes();
+ public boolean accept(IArchiveNodeVisitor visitor);
+
+ public void addBuildListener(IArchiveBuildListener listener);
+ public void removeBuildListener(IArchiveBuildListener listener);
+ public IArchiveBuildListener[] getBuildListeners();
+ public void addModelListener(IArchiveModelListener listener);
+ public void removeModelListener(IArchiveModelListener listener);
+ public IArchiveModelListener[] getModelListeners();
+}
Deleted:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelListenerManager.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelListenerManager.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelListenerManager.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -1,40 +0,0 @@
-/**
- * JBoss, a Division of Red Hat
- * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package org.jboss.ide.eclipse.archives.core.model;
-
-
-/**
- * Manages Archive Model Listeners, build and model changes, for changes
- * in the model
- * @author rstryker
- *
- */
-public interface IArchiveModelListenerManager {
-
- public void addBuildListener(IArchiveBuildListener listener);
- public void removeBuildListener(IArchiveBuildListener listener);
- public IArchiveBuildListener[] getBuildListeners();
- public void addModelListener(IArchiveModelListener listener);
- public void removeModelListener(IArchiveModelListener listener);
- public IArchiveModelListener[] getModelListeners();
-
-}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveModelNode.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -21,6 +21,10 @@
*/
package org.jboss.ide.eclipse.archives.core.model;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding.XbException;
+
+
/**
* An interface for methods relevent to a model's root node.
* Only a label interface thus far
@@ -28,5 +32,6 @@
*
*/
public interface IArchiveModelNode extends IArchiveNode {
- public IArchiveModelListenerManager getManager();
+ public IArchiveModel getModel();
+ public void save(IProgressMonitor monitor) throws ArchivesModelException;
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNode.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -132,7 +132,7 @@
* Add a child node to this node
* @param child The child to add
*/
- public void addChild(IArchiveNode child);
+ public void addChild(IArchiveNode child) throws ArchivesModelException;
/**
* Remove a child node from this node
@@ -150,15 +150,9 @@
* Get the model this node is attached to, or null if none
* @return
*/
- public IArchiveModelNode getModel();
-
+ public IArchiveModelNode getModelNode();
+
/**
- * Is the root of this node a PackageModelNode and registered in ArchivesModel?
- * @return
- */
- public boolean connectedToModel();
-
- /**
* Get the path relative to the root archive
* @return
*/
@@ -169,9 +163,16 @@
* @return
*/
public IArchive getRootArchive();
+
/**
* Get the current delta
* @return
*/
public IArchiveNodeDelta getDelta();
+
+ /**
+ * Clear the current delta
+ * @return
+ */
+ public void clearDelta();
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/IArchiveNodeDelta.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -86,11 +86,23 @@
public static final int DESCENDENT_CHANGED = 0x400;
/**
- * An unknown change has occurred. Best to reshow the entire module
+ * The node was registered with a model
*/
- public static final int UNKNOWN_CHANGE = 0x800;
+ public static final int NODE_REGISTERED = 0x800;
+
+ /**
+ * The node was unregistered with a model
+ */
+ public static final int NODE_UNREGISTERED = 0x1000;
/**
+ * An unknown change has occurred. This may include
+ * any (or multiple) events and may require an observer
+ * to re-scan the entire node / tree for changes.
+ */
+ public static final int UNKNOWN_CHANGE = 0x1000;
+
+ /**
* Return the delta kind
* @return
*/
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveDeltaPreNodeFactory.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -166,8 +166,8 @@
public IPath getProjectPath() {
return impl.getProjectPath();
}
- public IArchiveModelNode getModel() {
- return impl.getModel();
+ public IArchiveModelNode getModelNode() {
+ return impl.getModelNode();
}
}
@@ -188,8 +188,8 @@
public IPath getProjectPath() {
return impl.getProjectPath();
}
- public IArchiveModelNode getModel() {
- return impl.getModel();
+ public IArchiveModelNode getModelNode() {
+ return impl.getModelNode();
}
}
@@ -210,8 +210,8 @@
public IPath getProjectPath() {
return impl.getProjectPath();
}
- public IArchiveModelNode getModel() {
- return impl.getModel();
+ public IArchiveModelNode getModelNode() {
+ return impl.getModelNode();
}
}
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveModelNode.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -22,31 +22,44 @@
package org.jboss.ide.eclipse.archives.core.model.internal;
import org.eclipse.core.runtime.IPath;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
+import org.jboss.ide.eclipse.archives.core.model.EventManager;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListenerManager;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
-import
org.jboss.ide.eclipse.archives.core.model.internal.xb.XbPackageNodeWithProperties;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbPackages;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding.XbException;
public class ArchiveModelNode extends ArchiveNodeImpl implements IArchiveModelNode {
private IPath project;
- private IArchiveModelListenerManager manager;
+ private IPath descriptor;
+ private IArchiveModel model;
- public ArchiveModelNode(IPath project, XbPackages node,
- IArchiveModelListenerManager manager) {
+ public ArchiveModelNode(IPath project, XbPackages node, IArchiveModel model) {
+ this(project, project.append(IArchiveModel.DEFAULT_PACKAGES_FILE), node, model);
+ }
+
+ public ArchiveModelNode(IPath project, IPath descriptor,
+ XbPackages node, IArchiveModel model) {
super(node);
this.project = project;
- this.manager = manager;
+ this.descriptor = descriptor;
+ this.model = model;
}
+ public IPath getDescriptor() {
+ return descriptor;
+ }
/*
* (non-Javadoc)
* @see org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode#getManager()
*/
- public IArchiveModelListenerManager getManager() {
- return manager;
+ public IArchiveModel getModel() {
+ return model;
}
/*
@@ -65,10 +78,10 @@
* The model root can only accept IArchive's as children
* @see IArchiveNode#addChild(IArchiveNode)
*/
- public void addChild(IArchiveNode child) {
- if( child instanceof IArchive ) {
- super.addChild(child);
- }
+ protected boolean validateChild(IArchiveNode child) {
+ if( child.getNodeType() != IArchiveNode.TYPE_ARCHIVE)
+ return false;
+ return true;
}
/*
@@ -92,7 +105,7 @@
* @see
org.jboss.ide.eclipse.archives.core.model.internal.ArchiveNodeImpl#connectedToModel()
*/
public boolean connectedToModel() {
- return ArchivesModel.instance().containsRoot(this);
+ return getModel() != null;
}
/**
@@ -117,4 +130,19 @@
public IPath getRootArchiveRelativePath() {
return null;
}
+
+ /* (non-Javadoc)
+ * @see
org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode#save(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ public void save(IProgressMonitor monitor) throws ArchivesModelException {
+ XbPackages packs = (XbPackages)getNodeDelegate();
+ try {
+ XMLBinding.marshallToFile(packs, getDescriptor(), monitor);
+ } catch( XbException xbe ) {
+ throw new ArchivesModelException(xbe);
+ }
+ IArchiveNodeDelta delta = getDelta();
+ clearDelta();
+ EventManager.fireDelta(delta);
+ }
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeDeltaImpl.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeDeltaImpl.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeDeltaImpl.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -26,6 +26,7 @@
import java.util.HashMap;
import java.util.Iterator;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
@@ -183,10 +184,14 @@
if( preNode != null ) {
// now we've got our list of current children... set them.
for( Iterator i = priorChildren.iterator(); i.hasNext(); ) {
- preNode.addChild((IArchiveNode)i.next());
+ try {
+ preNode.addChild((IArchiveNode)i.next());
+ } catch( ArchivesModelException ame) {
+ // DO nothing
+ }
}
// now clear pre-node's deltas so it looks shiny
- preNode.clearDeltas();
+ preNode.clearDelta();
}
childrenDeltas = (IArchiveNodeDelta[]) deltas.toArray(new
IArchiveNodeDelta[deltas.size()]);
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveNodeImpl.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -28,7 +28,7 @@
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IPath;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
@@ -81,7 +81,7 @@
* (non-Javadoc)
* @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#getModel()
*/
- public IArchiveModelNode getModel() {
+ public IArchiveModelNode getModelNode() {
Object root = getRoot();
return root instanceof IArchiveModelNode ? (IArchiveModelNode)root : null;
}
@@ -243,7 +243,7 @@
* (non-Javadoc)
* @see
org.jboss.ide.eclipse.archives.core.model.IArchiveNode#addChild(org.jboss.ide.eclipse.archives.core.model.IArchiveNode)
*/
- public void addChild(IArchiveNode node) {
+ public void addChild(IArchiveNode node) throws ArchivesModelException {
addChild(node, true);
}
@@ -252,7 +252,9 @@
* @param child
* @param addInDelegate
*/
- public void addChild(IArchiveNode child, boolean addInDelegate) {
+ public void addChild(IArchiveNode child, boolean addInDelegate) throws
ArchivesModelException {
+ if( !validateChild(child) )
+ throw new ArchivesModelException("Unable to add child node");
Assert.isNotNull(child);
ArchiveNodeImpl childImpl = (ArchiveNodeImpl) child;
children.add(childImpl);
@@ -262,6 +264,10 @@
childChanges(child, IArchiveNodeDelta.CHILD_ADDED);
}
+ protected boolean validateChild(IArchiveNode child) {
+ return true;
+ }
+
/*
* (non-Javadoc)
* @see
org.jboss.ide.eclipse.archives.core.model.IArchiveNode#removeChild(org.jboss.ide.eclipse.archives.core.model.IArchiveNode)
@@ -283,16 +289,6 @@
childChanges(node, IArchiveNodeDelta.CHILD_REMOVED);
}
- /*
- * (non-Javadoc)
- * @see org.jboss.ide.eclipse.archives.core.model.IArchiveNode#connectedToModel()
- */
- public boolean connectedToModel() {
- IArchiveNode root = getRoot();
- return root != null && root.getNodeType() == TYPE_MODEL &&
ArchivesModel.instance().containsRoot((ArchiveModelNode)root);
- }
-
-
/**
* An attribute has changed. Save the change so it can be represented in a delta
*/
@@ -387,7 +383,7 @@
/**
* Forget all past state
*/
- public void clearDeltas() {
+ public void clearDelta() {
attributeChanges.clear();
propertyChanges.clear();
childChanges.clear();
@@ -395,6 +391,6 @@
// clear children recursively
IArchiveNode[] children = getAllChildren();
for( int i = 0; i < children.length; i++ )
- ((ArchiveNodeImpl)children[i]).clearDeltas();
+ ((ArchiveNodeImpl)children[i]).clearDelta();
}
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/xb/XMLBinding.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -22,6 +22,9 @@
package org.jboss.ide.eclipse.archives.core.model.internal.xb;
import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -97,7 +100,18 @@
return unmarshal(new ByteArrayInputStream(input.getBytes()), monitor);
}
- public static XbPackages unmarshal (final InputStream in,
+ public static XbPackages unmarshal(File file, IProgressMonitor monitor) throws
XbException {
+ try {
+ FileInputStream fis = new FileInputStream(file);
+ return unmarshal(fis, monitor);
+ } catch( FileNotFoundException fnfe ) {
+ throw new XbException(fnfe);
+ } catch( XbException xbe) {
+ throw xbe;
+ }
+ }
+
+ protected static XbPackages unmarshal (final InputStream in,
final IProgressMonitor monitor) throws XbException {
if( !initialized) init();
final XbPackages[] element = new XbPackages[1];
@@ -137,7 +151,7 @@
return null;
}
- public static void marshallToFile(XbPackages element, IPath filePath, IProgressMonitor
monitor) throws XbException, IOException {
+ public static void marshallToFile(XbPackages element, IPath filePath, IProgressMonitor
monitor) throws XbException {
OutputStreamWriter writer = null;
try {
writer = new OutputStreamWriter(new FileOutputStream(filePath.toFile()));
@@ -145,12 +159,12 @@
} catch( XbException xbe ) {
throw xbe;
} catch( IOException ioe ) {
- throw ioe;
+ throw new XbException(ioe);
}
finally {
try {
if( writer != null ) writer.close();
- } catch( IOException ioe) {throw ioe;}
+ } catch( IOException ioe) {}
}
}
@@ -208,6 +222,7 @@
public static class XbException extends Exception {
private Exception parent;
public XbException(Exception e) {
+ super();
parent = e;
}
public Exception getException() {
@@ -216,5 +231,8 @@
public String getMessage() {
return parent.getCause() == null ? parent.getMessage() :
parent.getCause().getMessage();
}
+ public Throwable getCause() {
+ return parent;
+ }
}
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -25,16 +25,20 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import org.eclipse.core.runtime.IPath;
import org.jboss.ide.eclipse.archives.core.ArchivesCore;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
+import org.jboss.ide.eclipse.archives.core.model.IArchivesLogger;
import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveFileSetImpl;
import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveFolderImpl;
import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveImpl;
@@ -222,20 +226,24 @@
return projectPath.append(workspacePath.removeFirstSegments(1));
}
- public static void fillArchiveModel( XbPackages node, IArchiveModelNode modelNode) {
+ public static void fillArchiveModel( XbPackages node, IArchiveModelNode modelNode)
throws ArchivesModelException {
for (Iterator iter = node.getAllChildren().iterator(); iter.hasNext(); ) {
XbPackageNode child = (XbPackageNode) iter.next();
ArchiveNodeImpl childImpl = (ArchiveNodeImpl)createPackageNodeImpl(child, modelNode);
if (modelNode != null && childImpl != null) {
- if( modelNode instanceof ArchiveNodeImpl )
- ((ArchiveNodeImpl)modelNode).addChild(childImpl, false);
- else
- modelNode.addChild(childImpl);
+ try {
+ if( modelNode instanceof ArchiveNodeImpl )
+ ((ArchiveNodeImpl)modelNode).addChild(childImpl, false);
+ else
+ modelNode.addChild(childImpl);
+ } catch( ArchivesModelException ame ) {
+ ArchivesCore.getInstance().getLogger().log(IArchivesLogger.MSG_WARN, "Error
Adding Child", ame);
+ }
}
}
}
- protected static IArchiveNode createPackageNodeImpl (XbPackageNode node, IArchiveNode
parent) {
+ protected static IArchiveNode createPackageNodeImpl (XbPackageNode node, IArchiveNode
parent) throws ArchivesModelException {
ArchiveNodeImpl nodeImpl = null;
if (node instanceof XbPackage) {
nodeImpl = new ArchiveImpl((XbPackage)node);
@@ -257,4 +265,16 @@
return nodeImpl;
}
+ public static IArchive[] getProjectArchives(IPath project) {
+ return getProjectArchives(project, ArchivesModel.instance());
+ }
+
+ public static IArchive[] getProjectArchives(IPath project, IArchiveModel model) {
+ if( model != null ) {
+ IArchiveNode[] archives = model.getRoot(project).getAllChildren();
+ List<IArchiveNode> list = Arrays.asList(archives);
+ return (IArchive[]) list.toArray(new IArchive[list.size()]);
+ }
+ return null;
+ }
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/dialogs/ArchiveNodeDestinationDialog.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/dialogs/ArchiveNodeDestinationDialog.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/dialogs/ArchiveNodeDestinationDialog.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -2,7 +2,6 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -12,6 +11,7 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.viewers.ILabelProvider;
@@ -25,7 +25,9 @@
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.ide.IDE;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
import org.jboss.ide.eclipse.archives.ui.providers.ArchivesLabelProvider;
@@ -76,10 +78,9 @@
}
}
if (showNodes && parentElement instanceof IProject) {
- result.addAll(Arrays.asList(ArchivesModel.instance()
- .getProjectArchives(
- ((IProject) parentElement).getLocation(),
- true, new NullProgressMonitor())));
+ IPath path = ((IProject)parentElement).getLocation();
+ IArchive[] archives = ModelUtil.getProjectArchives(path);
+ result.addAll(Arrays.asList(archives));
}
return result.toArray();
}
@@ -115,8 +116,8 @@
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
for( int i = 0; i < projects.length; i++ ) {
if( projects[i].isAccessible()) {
- List tmp = Arrays.asList(
- ArchivesModel.instance().getProjectArchives(projects[i].getLocation(), true,
monitor));
+ IArchive[] archives = ModelUtil.getProjectArchives(projects[i].getLocation());
+ List tmp = Arrays.asList(archives);
if( tmp.size() > 0 && !destinations.contains(projects[i]))
destinations.add(projects[i]);
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -7,6 +7,7 @@
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesView;
@@ -54,7 +55,7 @@
// return all that's there
}
if( parentElement instanceof WrappedProject ) {
- return
ArchivesModel.instance().getProjectArchives(((WrappedProject)parentElement).getProject().getLocation());
+ return
ModelUtil.getProjectArchives(((WrappedProject)parentElement).getProject().getLocation());
}
if( parentElement instanceof IArchiveNode ) {
return ((IArchiveNode)parentElement).getAllChildren();
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -29,14 +29,17 @@
import org.jboss.ide.eclipse.archives.core.build.ArchiveBuildDelegate;
import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.model.internal.xb.XMLBinding.XbException;
import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
import org.jboss.ide.eclipse.archives.ui.NodeContribution;
+import org.jboss.ide.eclipse.archives.ui.PackagesUIPlugin;
import org.jboss.ide.eclipse.archives.ui.actions.ActionWithDelegate;
import org.jboss.ide.eclipse.archives.ui.actions.NewArchiveAction;
import org.jboss.ide.eclipse.archives.ui.actions.NewJARAction;
@@ -299,23 +302,29 @@
int response = dialog.open();
if (response == Dialog.OK) {
- String[] folderPaths = dialog.getValue().split("[\\\\/]");
- IArchiveNode selected = getSelectedNode();
- IArchiveFolder current = null;
- IArchiveFolder temp = null;
-
- for(int i = folderPaths.length-1; i >= 0 ; i-- ) {
- temp = ArchiveNodeFactory.createFolder();
- temp.setName(folderPaths[i]);
- if( current == null )
- current = temp;
- else {
- temp.addChild(current);
- current = temp;
+ try {
+ String[] folderPaths = dialog.getValue().split("[\\\\/]");
+ IArchiveNode selected = getSelectedNode();
+ IArchiveFolder current = null;
+ IArchiveFolder temp = null;
+
+ for(int i = folderPaths.length-1; i >= 0 ; i-- ) {
+ temp = ArchiveNodeFactory.createFolder();
+ temp.setName(folderPaths[i]);
+ if( current == null )
+ current = temp;
+ else {
+ temp.addChild(current);
+ current = temp;
+ }
}
+
+ selected.addChild(current);
+ //ArchivesModel.
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID, "Error
Attaching Archives Node", ame);
+ PackagesUIPlugin.getDefault().getLog().log(status);
}
-
- ArchivesModel.instance().attach(selected, current, new NullProgressMonitor());
}
}
@@ -353,7 +362,12 @@
int response = dialog.open();
if (response == Dialog.OK) {
folder.setName(dialog.getValue());
- ArchivesModel.instance().saveModel(folder.getProjectPath(), new
NullProgressMonitor());
+ try {
+ ArchivesModel.instance().save(folder.getProjectPath(), new NullProgressMonitor());
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID,
"Problem saving archives model", ame);
+ PackagesUIPlugin.getDefault().getLog().log(status);
+ }
}
}
}
@@ -378,7 +392,13 @@
IArchiveNode parent = (IArchiveNode) node.getParent();
parent.removeChild(node);
if( parent.getProjectPath() != null ) {
- ArchivesModel.instance().saveModel(parent.getProjectPath(), new
NullProgressMonitor());
+ try {
+ ArchivesModel.instance().save(parent.getProjectPath(), new NullProgressMonitor());
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID, "Problem
saving archives model", ame);
+ PackagesUIPlugin.getDefault().getLog().log(status);
+ }
+
}
}
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -9,6 +9,8 @@
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
@@ -36,12 +38,14 @@
import org.eclipse.ui.part.ViewPart;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModelCore;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
+import org.jboss.ide.eclipse.archives.ui.PackagesUIPlugin;
import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
import org.jboss.ide.eclipse.archives.ui.actions.NewArchiveAction;
import org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProvider;
@@ -263,7 +267,12 @@
getSite().getShell().getDisplay().asyncExec(new Runnable () {
public void run () {
for( int i = 0; i < projects.length; i++ ) {
- ArchivesModel.instance().registerProject(projects[i].getLocation(),
loadingProgress);
+ try {
+ ArchivesModel.instance().registerProject(projects[i].getLocation(),
loadingProgress);
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID,
ame.getMessage(), ame);
+ PackagesUIPlugin.getDefault().getLog().log(status);
+ }
}
book.showPage(viewerComposite);
packageViewer.setInput(ArchivesModel.instance().getRoot(projectToShow.getLocation()));
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -7,6 +7,8 @@
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -15,8 +17,10 @@
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.ui.PackagesUIPlugin;
import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesView;
import org.jboss.ide.eclipse.archives.ui.wizards.pages.ArchiveInfoWizardPage;
@@ -82,28 +86,33 @@
public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException {
IArchiveNode parent = null;
- if (destination instanceof IArchiveNode) {
- // if we're modifying an existing package, remove old parentage
- if (!create && !destination.equals(pkg.getParent())) {
- if (pkg.getParent() != null) {
- pkg.getParent().removeChild(pkg);
+ try {
+ if (destination instanceof IArchiveNode) {
+ // if we're modifying an existing package, remove old parentage
+ if (!create && !destination.equals(pkg.getParent())) {
+ if (pkg.getParent() != null) {
+ pkg.getParent().removeChild(pkg);
+ }
}
+ parent = (IArchiveNode)destination;
+ } else {
+ parent = ArchivesModel.instance().getRoot(project.getLocation());
+ if( parent == null )
+ parent = ArchivesModel.instance().registerProject(project.getLocation(), null);
}
- parent = (IArchiveNode)destination;
- } else {
- parent = ArchivesModel.instance().getRoot(project.getLocation(), true, monitor);
+
+ if( create )
+ parent.addChild(pkg);
+ ArchivesModel.instance().save(project.getLocation(), monitor);
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID, "Error
Completing Wizard", ame);
+ PackagesUIPlugin.getDefault().getLog().log(status);
}
-
- if( create )
- ArchivesModel.instance().attach(parent, pkg, monitor);
- else
- ArchivesModel.instance().saveModel(project.getLocation(), monitor);
+
}
});
} catch (InvocationTargetException e) {
-//TODO Trace.trace(getClass(), e);
} catch (InterruptedException e) {
-//TODO Trace.trace(getClass(), e);
}
}
return performed;
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/FilesetWizard.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -3,13 +3,17 @@
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.wizard.Wizard;
import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.ui.PackagesUIPlugin;
import org.jboss.ide.eclipse.archives.ui.wizards.pages.FilesetInfoWizardPage;
public class FilesetWizard extends Wizard {
@@ -26,7 +30,6 @@
}
public boolean performFinish() {
- try {
final boolean createFileset = this.fileset == null;
if (createFileset)
@@ -36,19 +39,18 @@
try {
getContainer().run(false, false, new IRunnableWithProgress () {
public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException {
- if (createFileset) {
- ArchivesModel.instance().attach(parentNode, fileset, monitor);
- } else {
- ArchivesModel.instance().saveModel(fileset.getProjectPath(), monitor);
+ try {
+ if (createFileset)
+ parentNode.addChild(fileset);
+ ArchivesModel.instance().save(fileset.getProjectPath(), monitor);
+ } catch( ArchivesModelException ame ) {
+ IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID, "Error
Completing Wizard", ame);
+ PackagesUIPlugin.getDefault().getLog().log(status);
}
}
});
} catch (InvocationTargetException e) {
-//TODO Trace.trace(getClass(), e);
} catch (InterruptedException e) {
-//TODO Trace.trace(getClass(), e);
- }
-
} catch(Exception e) {e.printStackTrace();}
return true;
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/pages/ArchiveInfoWizardPage.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/pages/ArchiveInfoWizardPage.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/pages/ArchiveInfoWizardPage.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -20,6 +20,7 @@
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
import org.jboss.ide.eclipse.archives.ui.util.DestinationChangeListener;
@@ -193,7 +194,7 @@
}
} else if (destination instanceof IContainer) {
IContainer container = (IContainer) destination;
- IArchive[] packages =
ArchivesModel.instance().getProjectArchives(wizard.getProject().getLocation());
+ IArchive[] packages =
ModelUtil.getProjectArchives(wizard.getProject().getLocation());
if (packages != null) {
for( int i = 0; i < packages.length; i++ ) {
IArchive pkg = (IArchive) packages[i];
@@ -211,7 +212,7 @@
}
} else if (destination instanceof IPath) {
IPath path = (IPath) destination;
- IArchive[] packages =
ArchivesModel.instance().getProjectArchives(wizard.getProject().getLocation());
+ IArchive[] packages =
ModelUtil.getProjectArchives(wizard.getProject().getLocation());
if (packages != null) {
for( int i = 0; i < packages.length; i++ ) {
IArchive pkg = (IArchive) packages[i];
Modified:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ModelUtilTest.java
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ModelUtilTest.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/ModelUtilTest.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -9,6 +9,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
@@ -33,7 +34,11 @@
inputs = bundlePath.append("inputs");
} catch( IOException ioe) {}
}
- rootArchive = createArchive();
+ try {
+ rootArchive = createArchive();
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
}
public void tearDown() {
@@ -42,7 +47,7 @@
- protected IArchive createArchive() {
+ protected IArchive createArchive() throws ArchivesModelException {
IPath fileTrees = inputs.append("fileTrees");
IArchive root = ArchiveNodeFactory.createArchive();
@@ -77,7 +82,7 @@
imageFileset.setIncludesPattern("**/*.gif,**/*.png,**/*.xml");
images.addChild(imageFileset);
- ((ArchiveNodeImpl)root).clearDeltas();
+ ((ArchiveNodeImpl)root).clearDelta();
return root;
}
@@ -117,7 +122,7 @@
}
- public void testOtherFilesetMatchesPath() {
+ public void testOtherFilesetMatchesPath() throws ArchivesModelException {
IPath xml =
inputs.append("fileTrees").append("misc").append("rug.xml");
IArchiveFileSet[] xmlFS = ModelUtil.getMatchingFilesets(rootArchive, xml);
assertTrue(xmlFS.length == 2);
Modified:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/ModelCreationTest.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -24,10 +24,17 @@
import junit.framework.TestCase;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
import org.jboss.ide.eclipse.archives.core.model.IArchiveBuildListener;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListenerManager;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModel;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
import org.jboss.ide.eclipse.archives.core.model.internal.ArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbPackage;
import org.jboss.ide.eclipse.archives.core.model.internal.xb.XbPackages;
@@ -38,34 +45,78 @@
*
*/
public class ModelCreationTest extends TestCase {
- public void testModelCreation1() {
- XbPackages packs = new XbPackages();
- XbPackage pack = new XbPackage();
- packs.addChild(pack);
- ArchiveModelNode model = getModel(packs);
- ModelUtil.fillArchiveModel(packs, model);
- // passes for now.
+ protected IPath project = new Path("test").append("project");
+ TempArchiveModelListener modelListener = createListener();
+ protected void setUp() throws Exception {
+ modelListener.clearDelta();
}
+
+ public void testSimpleCreation() {
+ createModel();
+ }
+ public void testAddToModel() {
+ ArchiveModelNode model = createModel();
+ ArchivesModel.instance().registerProject(model, new NullProgressMonitor());
+ assertEquals(model, ArchivesModel.instance().getRoot(project));
+ assertNotSame(null, modelListener.getDelta());
+ assertEquals(IArchiveNodeDelta.NODE_REGISTERED, modelListener.getDelta().getKind());
+ ArchivesModel.instance().unregisterProject(model, new NullProgressMonitor());
+ }
+
+ protected ArchiveModelNode createModel() {
+ try {
+ XbPackages packs = new XbPackages();
+ XbPackage pack = new XbPackage();
+ packs.addChild(pack);
+ ArchiveModelNode model = getModel(packs);
+ ModelUtil.fillArchiveModel(packs, model);
+ assertEquals(project, model.getProjectPath());
+ assertEquals(IArchiveNode.TYPE_MODEL, model.getNodeType());
+ assertEquals(null, model.getParent());
+ assertEquals(packs, model.getNodeDelegate());
+ assertTrue(model.hasChildren());
+ assertEquals(1, model.getAllChildren().length);
+ assertEquals(null, ArchivesModel.instance().getRoot(project));
+ assertEquals(null, modelListener.getDelta());
+ return model;
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+ return null;
+ }
+
+ public void testDeltas() {
+ try {
+ ArchiveModelNode model = createModel();
+ model.clearDelta();
+ IArchiveFolder folder = ArchiveNodeFactory.createFolder();
+ folder.setName("testFolder");
+ model.addChild(folder);
+ IArchiveNodeDelta delta = model.getDelta();
+ assertEquals(IArchiveNodeDelta.CHILD_ADDED, delta.getKind());
+ } catch( ArchivesModelException ame ) {
+ fail(ame.getMessage());
+ }
+ }
+
protected ArchiveModelNode getModel(XbPackages packs) {
- IArchiveModelListenerManager manager = new IArchiveModelListenerManager() {
- public void addBuildListener(IArchiveBuildListener listener) {
- }
- public void addModelListener(IArchiveModelListener listener) {
- }
- public IArchiveBuildListener[] getBuildListeners() {
- return new IArchiveBuildListener[] {};
- }
- public IArchiveModelListener[] getModelListeners() {
- return new IArchiveModelListener[] {};
- }
- public void removeBuildListener(IArchiveBuildListener listener) {
- }
- public void removeModelListener(IArchiveModelListener listener) {
- }
- };
- IPath project = new Path("test").append("two");
- ArchiveModelNode node = new ArchiveModelNode(project, packs, manager);
+ IArchiveModel model = new ArchivesModel();
+ model.addModelListener(modelListener);
+ ArchiveModelNode node = new ArchiveModelNode(project, packs, model);
return node;
}
+
+ protected TempArchiveModelListener createListener() {
+ return new TempArchiveModelListener();
+ }
+
+ protected class TempArchiveModelListener implements IArchiveModelListener {
+ private IArchiveNodeDelta delta;
+ public void modelChanged(IArchiveNodeDelta delta) {
+ this.delta = delta;
+ }
+ public IArchiveNodeDelta getDelta() { return delta; }
+ public void clearDelta() { delta = null; }
+ }
}
Modified:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBMarshallTest.java
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBMarshallTest.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBMarshallTest.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -103,8 +103,6 @@
} catch( XbException xbe ) {
xbe.printStackTrace();
fail(xbe.getMessage());
- } catch( IOException ioe ) {
- fail(ioe.getMessage());
}
}
@@ -113,9 +111,7 @@
try {
IPath out = outputs.append("test.xml");
XMLBinding.marshallToFile(packs, out, new NullProgressMonitor());
- } catch( IOException ioe ) {
- fail("IOException during testWritePackage operation");
- }catch( XbException xbe ) {
+ } catch( XbException xbe ) {
e = xbe;
} finally {
if( e == null && !shouldPass) {
@@ -128,7 +124,6 @@
}
protected void writePackage(String name, String toDir, boolean shouldPass) {
- XbException e = null;
XbPackages packs = new XbPackages();
XbPackage pack = new XbPackage();
pack.setName(name);
Modified:
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBUnmarshallTest.java
===================================================================
---
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBUnmarshallTest.java 2008-03-11
19:38:40 UTC (rev 6877)
+++
trunk/core/tests/org.jboss.ide.eclipse.archives.test/src/org/jboss/ide/eclipse/archives/test/model/XBUnmarshallTest.java 2008-03-11
19:41:22 UTC (rev 6878)
@@ -196,13 +196,9 @@
*/
protected XbPackages parse(String file, boolean shouldSucceed, String failMsg) {
- FileInputStream fis = null;
XbPackages packs = null;
try {
- fis = new FileInputStream(archiveDescriptors.append(file).toFile());
- packs = XMLBinding.unmarshal(fis, new NullProgressMonitor());
- } catch( IOException ioe ) {
- fail(ioe.getMessage());
+ packs = XMLBinding.unmarshal(archiveDescriptors.append(file).toFile(), new
NullProgressMonitor());
} catch( XbException e ) {
if( shouldSucceed )
fail(failMsg + " - " + e.getMessage());