[jbosstools-dev] Re: Deploying a .ds (or any resource)
Max Rydahl Andersen
max.andersen at redhat.com
Wed Aug 8 21:48:15 EDT 2007
ok - It works now...it's a hack in its current shape, but it works ;)
/max
>
>>> Here is some example code I've thrown together. The code below should
>>> work, except that the publisher is *not* yet ready to handle it.
>>> However, the APIs will work.
>
>
> I tried to do this code and on the way found a couple of NPE's (i've
> committed fixes to that)
>
>>> // get a path somehow. you can also use resource. Look at
>>> SingleDeployableFactory's static methods
>>> IPath p = new Path("/abc/1.txt");
>>>
>>> // mark this path or resource deployable.
>>> SingleDeployableFactory.makeDeployable(p);
>>>
>>> // get the actual module object from the factory
>>> IModule module =
>>> SingleDeployableFactory.findModule(p);
>
> until this point works..(had to use a job to make sure the resource
> actually exists when running)
>
>>> IServer s = someServer //
>>> wherever you get your server from
>
> How do I get the Server/Runtime associated with a given project/wizard ?
>
> without this i'm stumped ;(
>
> here is an eclipse patch that just misses the server finding.
>
> Index:
> /home/max/work/os/jbosstools/trunk/seam/plugins/org.jboss.tools.seam.core/META-INF/MANIFEST.MF
>
> ===================================================================
> ---
> /home/max/work/os/jbosstools/trunk/seam/plugins/org.jboss.tools.seam.core/META-INF/MANIFEST.MF
> (revision 2988)
> +++
> /home/max/work/os/jbosstools/trunk/seam/plugins/org.jboss.tools.seam.core/META-INF/MANIFEST.MF
> (working copy)
> @@ -33,7 +33,9 @@
> org.eclipse.datatools.connectivity.db.generic.ui,
> org.eclipse.datatools.connectivity.ui,
> org.eclipse.datatools.connectivity.ui.dse,
> - org.eclipse.jst.common.project.facet.core
> + org.eclipse.jst.common.project.facet.core,
> + org.jboss.ide.eclipse.as.core,
> + org.eclipse.wst.server.core
> Provide-Package: org.jboss.tools.seam.core,
> org.jboss.tools.seam.internal.core,
> org.jboss.tools.seam.internal.core.scanner,
> Index:
> /home/max/work/os/jbosstools/trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegete.java
>
> ===================================================================
> ---
> /home/max/work/os/jbosstools/trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegete.java
> (revision 2988)
> +++
> /home/max/work/os/jbosstools/trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetInstallDelegete.java
> (working copy)
> @@ -20,6 +20,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.IStatus;
>
> import org.eclipse.core.runtime.Path;
>
> @@ -33,6 +34,11 @@
> import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
>
> import org.eclipse.wst.common.project.facet.core.IDelegate;
>
> import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
>
> +import org.eclipse.wst.server.core.IModule;
>
> +import org.eclipse.wst.server.core.IServer;
>
> +import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
>
> +import
> org.jboss.ide.eclipse.as.core.server.stripped.DeployableServerBehavior;
>
> +import
> org.jboss.ide.eclipse.as.core.singledeployable.SingleDeployableFactory;
>
> import org.jboss.tools.common.model.util.EclipseResourceUtil;
>
> import org.jboss.tools.seam.core.ISeamProject;
>
> import org.jboss.tools.seam.core.SeamCorePlugin;
>
> @@ -172,7 +178,7 @@
> WebArtifactEdit edit =
> WebArtifactEdit.getWebArtifactEditForRead(project);
>
> IVirtualComponent com = ComponentCore.createComponent(project);
>
> IVirtualFolder webRootFolder =
> com.getRootFolder().getFolder(new Path("/"));
>
> - IVirtualFolder srcRootFolder =
> com.getRootFolder().getFolder(new Path("/WEB-INF/classes"));
>
> + final IVirtualFolder srcRootFolder =
> com.getRootFolder().getFolder(new Path("/WEB-INF/classes"));
>
> IContainer folder = webRootFolder.getUnderlyingFolder();
>
> edit.dispose();
>
>
> model.setProperty(ISeamFacetDataModelProperties.SEAM_PROJECT_NAME,
> project.getName());
>
> @@ -296,6 +302,44 @@
>
> if(model.getProperty(ISeamFacetDataModelProperties.JDBC_DRIVER_JAR_PATH)!=null)
>
>
>
> AntCopyUtils.copyFiles((String[])model.getProperty(ISeamFacetDataModelProperties.JDBC_DRIVER_JAR_PATH),
> webLibFolder);
>
>
>
> + Job create = new Job("Deploying datasource to server") {
>
> + @Override
>
> + protected IStatus run(IProgressMonitor monitor) {
>
> +
>
> + IServer s = (IServer)
> project.getAdapter(IServer.class);
>
> +
>
> + if(s==null) {
>
> + return new Status(Status.WARNING,
> SeamCorePlugin.PLUGIN_ID, "No server selected to deploy datasource
> to");
>
> + }
>
> +
>
> + // convert it to a DeployableServer instance
>
> + DeployableServerBehavior deployer =
> (DeployableServerBehavior) s.loadAdapter(DeployableServerBehavior.class,
> null);
>
> +
>
> + // if its not null, the adaptation worked.
>
> + if( deployer == null ) {
>
> + return new Status(Status.WARNING,
> SeamCorePlugin.PLUGIN_ID, "Server did not support deploy of datasource.");
>
> + }
>
> +
>
> + IContainer underlyingFolder =
> srcRootFolder.getUnderlyingFolder();
>
> +
>
> + IPath projectPath = new
> Path("/"+underlyingFolder.getProject().getName());
>
> + IPath projectRelativePath =
> underlyingFolder.getProjectRelativePath();
>
> +
>
> + IPath append =
> projectPath.append(projectRelativePath).append(project.getName()+"-ds.xml");
>
>
> +
>
> + if(SingleDeployableFactory.makeDeployable(append)) {
>
> +
>
> + IModule module =
> SingleDeployableFactory.findModule(append);
>
> +
>
> + // custom API to deploy / publish only one
> module.
>
> + return
> deployer.publishOneModule(IServer.PUBLISH_FULL, new IModule[] { module},
> ServerBehaviourDelegate.ADDED, monitor);
>
> + } else {
>
> + return new Status(Status.WARNING,
> SeamCorePlugin.PLUGIN_ID, "Could not deploy datasource " + append);
>
> + }
>
> + }
>
> + };
>
> + create.setRule(ResourcesPlugin.getWorkspace().getRoot());
>
> + create.schedule();
>
>
>
> } else {
>
>
>
>
>
>
> _______________________________________________
> jbosstools-dev mailing list
> jbosstools-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jbosstools-dev
More information about the jbosstools-dev
mailing list