Author: ruwan Date: Tue Jan 4 10:09:35 2011 New Revision: 1054953 URL: http://svn.apache.org/viewvc?rev=1054953&view=rev Log: Fixing the issue AXIS2-4008, committing Harshana's patch
Modified: axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java Modified: axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java?rev=1054953&r1=1054952&r2=1054953&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java (original) +++ axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/JavaWSDLOutputLocationPage.java Tue Jan 4 10:09:35 2011 @@ -20,6 +20,7 @@ package org.apache.axis2.tool.codegen.eclipse.ui; import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin; +import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Path; @@ -42,6 +43,10 @@ import java.io.File; public class JavaWSDLOutputLocationPage extends AbstractWizardPage { + private static final String EMPTY_STRING = ""; + + private static final int ECLIPSE_PROJECT_NAME_SEGMENT_INDEX = 0; + private Text outputFolderTextBox; private Text outputFileNameTextBox; @@ -52,39 +57,46 @@ public class JavaWSDLOutputLocationPage private boolean workspaceSaveOption = false; - /** - * @param pageName - */ public JavaWSDLOutputLocationPage() { super("page6"); } - /* (non-Javadoc) - * @see org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage#initializeDefaultSettings() + /* + * (non-Javadoc) + * + * @see org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage# + * initializeDefaultSettings() */ protected void initializeDefaultSettings() { - settings.put(PREF_JAVA_OUTPUT_WSDL_LOCATION, ""); + settings.put(PREF_JAVA_OUTPUT_WSDL_LOCATION, EMPTY_STRING); settings.put(JAVA_OUTPUT_WSDL_NAME, "services.wsdl"); settings.put(PREF_JAVA_OUTPUT_FILESYATEM, true); settings.put(PREF_JAVA_OUTPUT_WORKSPACE, false); } - /* (non-Javadoc) - * @see org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage#getPageType() + /* + * (non-Javadoc) + * + * @see + * org.apache.axis2.tool.codegen.eclipse.ui.AbstractWizardPage#getPageType() */ public int getPageType() { return JAVA_2_WSDL_TYPE; } - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets + * .Composite) */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); layout.numColumns = 3; - //layout.verticalSpacing = 9; + // layout.verticalSpacing = 9; container.setLayout(layout); GridData gd = new GridData(GridData.FILL_HORIZONTAL); @@ -137,7 +149,7 @@ public class JavaWSDLOutputLocationPage gd = new GridData(GridData.FILL_HORIZONTAL); outputFolderTextBox = new Text(container, SWT.BORDER); outputFolderTextBox.setLayoutData(gd); - outputFolderTextBox.setText(""); + outputFolderTextBox.setText(EMPTY_STRING); outputFolderTextBox.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { handleFolderTextChange(); @@ -195,7 +207,7 @@ public class JavaWSDLOutputLocationPage private void handleFolderTextChange() { String outputFolder = outputFolderTextBox.getText(); settings.put(PREF_JAVA_OUTPUT_WSDL_LOCATION, outputFolder); - if ("".equals(outputFolder.trim())) { + if (EMPTY_STRING.equals(outputFolder.trim())) { updateStatus("Input a proper location for the output"); } else { updateStatus(null); @@ -205,11 +217,12 @@ public class JavaWSDLOutputLocationPage private void handleFileNameTextChange() { String outFileName = outputFileNameTextBox.getText(); settings.put(JAVA_OUTPUT_WSDL_NAME, outFileName); - if ("".equals(outFileName.trim())) { + if (EMPTY_STRING.equals(outFileName.trim())) { updateStatus("Input a file name"); } else if (outFileName.matches("\\W")) { updateStatus("Input a valid file name"); - } else if (!(outFileName.endsWith(".wsdl") || outFileName.endsWith(".xml")) ) { + } else if (!(outFileName.endsWith(".wsdl") || outFileName + .endsWith(".xml"))) { updateStatus("Input a valid file name , Example : services.wsdl or services.xml"); } else { updateStatus(null); @@ -218,11 +231,11 @@ public class JavaWSDLOutputLocationPage private void handleBrowse() { - // boolean location = locationSelectCheckBox.getSelection(); + // boolean location = locationSelectCheckBox.getSelection(); boolean location = false; - if(settings.getBoolean(PREF_JAVA_OUTPUT_FILESYATEM)){ + if (settings.getBoolean(PREF_JAVA_OUTPUT_FILESYATEM)) { location = false; - }else if(settings.getBoolean(PREF_JAVA_OUTPUT_WORKSPACE)){ + } else if (settings.getBoolean(PREF_JAVA_OUTPUT_WORKSPACE)) { location = true; } if (workspaceSaveOption) { @@ -238,16 +251,39 @@ public class JavaWSDLOutputLocationPage IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); ContainerSelectionDialog dialog = new ContainerSelectionDialog( - getShell(), root, false, CodegenWizardPlugin + getShell(), root, false, + CodegenWizardPlugin .getResourceString("page3.containerbox.title")); if (dialog.open() == ContainerSelectionDialog.OK) { Object[] result = dialog.getResult(); if (result.length == 1) { Path path = ((Path) result[0]); - // append to the workspace path if (root.exists(path)) { - outputFolderTextBox.setText(root.getLocation().append( - path).toFile().getAbsolutePath()); + // Fixing issue AXIS2-4008 by retrieving the project + // path instead of appending it to the workspace root. + IProject project = null; + String otherSegments = EMPTY_STRING; + + if (path.segmentCount() > 1) { + // User has selected a folder inside a project + project = root.getProject(path.segment(ECLIPSE_PROJECT_NAME_SEGMENT_INDEX)); + + for (int i = ECLIPSE_PROJECT_NAME_SEGMENT_INDEX + 1; i < path.segments().length; i++) { + otherSegments += File.separator + path.segment(i); + } + } else { + project = root.getProject(path.toOSString()); + } + + if (project != null) { + outputFolderTextBox.setText(project.getLocation() + .toOSString() + otherSegments); + } else { + // append to the workspace path if the project is + // null + outputFolderTextBox.setText(root.getLocation() + .append(path).toFile().getAbsolutePath()); + } } } } Modified: axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java?rev=1054953&r1=1054952&r2=1054953&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java (original) +++ axis/axis2/java/core/trunk/modules/tool/axis2-eclipse-codegen-plugin/src/main/java/org/apache/axis2/tool/codegen/eclipse/ui/OutputPage.java Tue Jan 4 10:09:35 2011 @@ -21,6 +21,7 @@ package org.apache.axis2.tool.codegen.ec import org.apache.axis2.tool.codegen.eclipse.plugin.CodegenWizardPlugin; import org.apache.axis2.tool.codegen.eclipse.util.UIConstants; +import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Path; @@ -42,6 +43,10 @@ import org.eclipse.ui.dialogs.ContainerS import java.io.File; public class OutputPage extends AbstractWizardPage { + + private static final String EMPTY_STRING = ""; + + private static final int ECLIPSE_PROJECT_NAME_SEGMENT_INDEX = 0; private Text outputLocation; @@ -621,10 +626,31 @@ public class OutputPage extends Abstract Object[] result = dialog.getResult(); if (result.length == 1) { Path path = ((Path) result[0]); - // append to the workspace path if (root.exists(path)) { - outputLocation.setText(root.getLocation().append(path) - .toFile().getAbsolutePath()); + //Fixing issue AXIS2-4008 by retrieving the project path instead of appending it to the workspace root. + IProject project = null; + String otherSegments = EMPTY_STRING; + + if (path.segmentCount() > 1) { + // User has selected a folder inside a project + project = root.getProject(path.segment(ECLIPSE_PROJECT_NAME_SEGMENT_INDEX)); + + for (int i = ECLIPSE_PROJECT_NAME_SEGMENT_INDEX + 1; i < path.segments().length; i++) { + otherSegments += File.separator + path.segment(i); + } + } else { + project = root.getProject(path.toOSString()); + } + + if (project != null) { + outputLocation.setText(project.getLocation() + .toOSString() + otherSegments); + } else { + // append to the workspace path if the project is + // null + outputLocation.setText(root.getLocation() + .append(path).toFile().getAbsolutePath()); + } } } }