blob: 80face183eed39fe7d065dc03644a5e1b71c5f45 [file] [log] [blame]
/*
* Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Mike Norman - July 13 2010
// fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=318207
package org.eclipse.persistence.tools.dbws;
//javase imports
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
//EclipseLink imports
import static org.eclipse.persistence.internal.xr.Util.DBWS_OR_XML;
import static org.eclipse.persistence.internal.xr.Util.DBWS_OX_XML;
import static org.eclipse.persistence.internal.xr.Util.DBWS_SCHEMA_XML;
import static org.eclipse.persistence.internal.xr.Util.DBWS_SERVICE_XML;
import static org.eclipse.persistence.internal.xr.Util.DBWS_WSDL;
import static org.eclipse.persistence.internal.xr.Util.WEB_INF_DIR;
import static org.eclipse.persistence.internal.xr.Util.WSDL_DIR;
import static org.eclipse.persistence.tools.dbws.Util.DBWS_PROVIDER_SOURCE_FILE;
import static org.eclipse.persistence.tools.dbws.Util.PROVIDER_LISTENER_SOURCE_FILE;
import static org.eclipse.persistence.tools.dbws.Util.SWAREF_FILENAME;
import static org.eclipse.persistence.tools.dbws.Util.UNDER_DBWS;
import static org.eclipse.persistence.tools.dbws.Util.WEB_XML_FILENAME;
public class IDEPackager extends JSR109WebServicePackager {
public static final String SRC_DIR = "src";
protected File srcDir;
protected String srcDirname;
protected File publicHTMLDir;
protected String publicHTMLDirname;
protected File webInfDir;
protected File wsdlDir;
protected File underDBWSDir;
public IDEPackager() {
super();
}
public IDEPackager(Archiver archiver, String packagerLabel, ArchiveUse useJavaArchive) {
super(archiver, packagerLabel, useJavaArchive);
}
@Override
public String getArchiverLabel() {
return "not supported";
}
@Override
public String getAdditionalUsage() {
return null;
}
@Override
public Archiver buildDefaultArchiver() {
return null;
}
// create streams for IDE project layout
@Override
public OutputStream getSchemaStream() throws FileNotFoundException {
buildWSDLDir();
return new FileOutputStream(new File(wsdlDir, DBWS_SCHEMA_XML));
}
@Override
public OutputStream getSessionsStream(String sessionsFileName) throws FileNotFoundException {
buildSrcDir();
return new FileOutputStream(new File(srcDir, sessionsFileName));
}
@Override
public OutputStream getServiceStream() throws FileNotFoundException {
buildSrcDir();
return new FileOutputStream(new File(srcDir, DBWS_SERVICE_XML));
}
@Override
public OutputStream getOrStream() throws FileNotFoundException {
buildSrcDir();
return new FileOutputStream(new File(srcDir, DBWS_OR_XML));
}
@Override
public OutputStream getOxStream() throws FileNotFoundException {
buildSrcDir();
return new FileOutputStream(new File(srcDir, DBWS_OX_XML));
}
@Override
public OutputStream getWSDLStream() throws FileNotFoundException {
buildWSDLDir();
return new FileOutputStream(new File(wsdlDir, DBWS_WSDL));
}
@Override
public OutputStream getSWARefStream() throws FileNotFoundException {
if (hasAttachments) {
buildWSDLDir();
return new FileOutputStream(new File(wsdlDir, SWAREF_FILENAME));
}
else {
return XRPackager.__nullStream;
}
}
@Override
public OutputStream getWebXmlStream() throws FileNotFoundException {
buildWebInfDir();
return new FileOutputStream(new File(webInfDir, WEB_XML_FILENAME));
}
// we doesn't need .class files (you're in an IDE, just compile the source!)
@Override
public OutputStream getProviderClassStream() throws FileNotFoundException {
return XRPackager.__nullStream;
}
@Override
public OutputStream getProviderSourceStream() throws FileNotFoundException {
buildUnderDBWS();
return new FileOutputStream(new File(underDBWSDir, DBWS_PROVIDER_SOURCE_FILE));
}
@Override
public OutputStream getProviderListenerClassStream() throws FileNotFoundException {
return XRPackager.__nullStream;
}
@Override
public OutputStream getProviderListenerSourceStream() throws FileNotFoundException {
return new FileOutputStream(new File(underDBWSDir, PROVIDER_LISTENER_SOURCE_FILE));
}
protected void buildSrcDir() throws FileNotFoundException {
srcDir = new File(stageDir, srcDirname);
if (!srcDir.exists()) {
boolean worked = srcDir.mkdir();
if (!worked) {
throw new FileNotFoundException("cannot create " +
srcDirname + " under " + stageDir);
}
}
}
protected void buildUnderDBWS() throws FileNotFoundException {
buildSrcDir();
underDBWSDir = new File(srcDir, UNDER_DBWS);
if (!underDBWSDir.exists()) {
boolean worked = underDBWSDir.mkdir();
if (!worked) {
throw new FileNotFoundException("cannot create " + srcDirname + "/" + UNDER_DBWS +
" dir under " + stageDir);
}
}
}
protected void buildPublicHTMLDir() throws FileNotFoundException {
publicHTMLDir = new File(stageDir, publicHTMLDirname);
if (!publicHTMLDir.exists()) {
boolean worked = publicHTMLDir.mkdir();
if (!worked) {
throw new FileNotFoundException("cannot create " +
publicHTMLDirname + " under " + stageDir);
}
}
}
protected void buildWebInfDir() throws FileNotFoundException {
buildPublicHTMLDir();
webInfDir = new File(publicHTMLDir, WEB_INF_DIR);
if (!webInfDir.exists()) {
boolean worked = webInfDir.mkdir();
if (!worked) {
throw new FileNotFoundException("cannot create " +
WEB_INF_DIR + " under " + publicHTMLDirname);
}
}
}
protected void buildWSDLDir() throws FileNotFoundException {
buildWebInfDir();
wsdlDir = new File(webInfDir, WSDL_DIR);
if (!wsdlDir.exists()) {
boolean worked = wsdlDir.mkdir();
if (!worked) {
throw new FileNotFoundException("cannot create " +
WSDL_DIR + " under " + WEB_INF_DIR);
}
}
}
}