blob: a0a79b5d7ea928664ee717c39cba1ebbc7e08fe1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 by SAP AG, Walldorf.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.ws.jaxws.testutils.project;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jst.ws.jaxws.utils.ContractChecker;
import org.eclipse.jst.ws.jaxws.utils.exception.MissingResourceException;
public class TestEjb3Project
{
private IProject ejbProject;
public TestEjb3Project(final String name) throws Exception
{
ejbProject = createEjbModule(name + "_" + Long.toString(System.currentTimeMillis()));
}
public TestEjb3Project(final String name, final boolean appendUid, final boolean reuseExisting) throws Exception
{
final StringBuilder projectName = new StringBuilder(name);
if (appendUid)
{
projectName.append("_");
projectName.append(Long.toString(System.currentTimeMillis()));
}
IProject existingProject = null;
if (reuseExisting)
{
existingProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName.toString());
}
if (existingProject == null)
{
this.ejbProject = createEjbModule(projectName.toString());
} else
{
this.ejbProject = existingProject;
}
}
private IProject createEjbModule(final String name) throws Exception {
return TestProjectsUtils.createEjb3Project(name);
}
public IProject getProject()
{
return ejbProject.getProject();
}
public IFolder getMetaInfFolder() throws MissingResourceException
{
return ejbProject.getProject().getFolder("ejbModule").getFolder("META-INF");
}
public IPackageFragment createPackage(String sourceFolder, String packageName) throws JavaModelException
{
final IJavaProject javaProject = JavaCore.create(getProject());
final IFolder folder = getProject().getFolder(sourceFolder);
final IPackageFragmentRoot srcFolder = javaProject.getPackageFragmentRoot(folder);
return srcFolder.createPackageFragment(packageName, false, new NullProgressMonitor());
}
public IFile createFile(final IFolder folder, final String fileName, final URL inputUrl) throws IOException, CoreException
{
ContractChecker.nullCheckParam(folder, "folder");
ContractChecker.nullCheckParam(fileName, "fileName");
ContractChecker.nullCheckParam(inputUrl, "inputUrl");
final IFile file = folder.getFile(fileName);
final InputStream inputStream = inputUrl.openStream();
try
{
file.create(inputStream, false, new NullProgressMonitor());
return file;
}
finally
{
inputStream.close();
}
}
/** To get a handle to a file located in this project specified by the relative file path.
* @param filePath file path relative inside of the project, i.e. the project name must NOT
* be part of the path
* @return the file handle */
public final IFile getFile(final String filePath)
{
ContractChecker.nullCheckParam(filePath, "filePath");
return this.ejbProject.getProject().getFile(filePath);
}
public final void deleteFile(final IFolder folder, final String fileName) throws CoreException, IOException
{
ContractChecker.nullCheckParam(folder, "folder");
ContractChecker.nullCheckParam(fileName, "fileName");
final IFile file = folder.getFile(fileName);
if (file.exists())
{
file.delete(true, new NullProgressMonitor());
}
}
/** To create a project folder specified by the relative folder path. All folder segments
* have already to exist apart from the last one, i.e. parent folders are not created automatically.
* @param folderPath folder path relative inside of the project, i.e. the project name must NOT
* be part of the path
* @return the created folder
* @throws CoreException */
public final IFolder createFolder(final String folderPath) throws CoreException
{
ContractChecker.nullCheckParam(folderPath, "folderPath");
final IFolder folder = this.ejbProject.getProject().getFolder(folderPath);
folder.create(true, true, null);
return folder;
}
/** To get a handle to a project folder specified by the relative folder path.
* @param folderPath folder path relative inside of the project, i.e. the project name must NOT
* be part of the path
* @return the folder handle */
public final IFolder getFolder(final String folderPath)
{
ContractChecker.nullCheckParam(folderPath, "folderPath");
return this.ejbProject.getProject().getFolder(folderPath);
}
}