diff options
author | pfullbright | 2012-04-12 19:36:53 +0000 |
---|---|---|
committer | pfullbright | 2012-04-12 19:36:53 +0000 |
commit | b7298b42a3bf04841b204cfa9309f8a41a1820c0 (patch) | |
tree | 8e7b3426d682042576f17f580cfe049b2ab24b77 /jaxb/plugins/org.eclipse.jpt.jaxb.core | |
parent | 40b2be4b87da52fe70eb43d664c2305a1ed4216a (diff) | |
download | webtools.dali-b7298b42a3bf04841b204cfa9309f8a41a1820c0.tar.gz webtools.dali-b7298b42a3bf04841b204cfa9309f8a41a1820c0.tar.xz webtools.dali-b7298b42a3bf04841b204cfa9309f8a41a1820c0.zip |
bugs 331362 and 376656 - added actions for adding package-info.java/jaxb.properties
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.core')
4 files changed, 109 insertions, 3 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/plugin.xml b/jaxb/plugins/org.eclipse.jpt.jaxb.core/plugin.xml index 50ef08a052..6be37f5087 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/plugin.xml +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/plugin.xml @@ -36,6 +36,13 @@ adaptableType="org.eclipse.jdt.core.IJavaElement"> <adapter type="org.eclipse.jpt.jaxb.core.platform.JaxbPlatformDescription"/> </factory> + + <!-- IPackageFragment -> JaxbPackage --> + <factory + class="org.eclipse.jpt.jaxb.core.internal.context.JaxbPackageAdapterFactory" + adaptableType="org.eclipse.jdt.core.IPackageFragment"> + <adapter type="org.eclipse.jpt.jaxb.core.context.JaxbPackage"/> + </factory> <factory class="org.eclipse.jpt.jaxb.core.internal.libprov.JaxbLibraryProviderInstallOperationConfigAdapterFactory" @@ -83,7 +90,14 @@ namespace="org.eclipse.jpt.jaxb.core" properties="jaxbPlatform, jaxbPlatformGroup" class="org.eclipse.jpt.jaxb.core.internal.platform.JaxbPlatformTester"/> - + + <propertyTester + id="org.eclipse.jpt.jaxb.core.propertyTester.jaxbPackage" + type="org.eclipse.jpt.jaxb.core.context.JaxbPackage" + namespace="org.eclipse.jpt.jaxb.core" + properties="hasPackageInfo" + class="org.eclipse.jpt.jaxb.core.internal.context.JaxbPackageTester"/> + </extension> diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageAdapterFactory.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageAdapterFactory.java new file mode 100644 index 0000000000..c918a9e0ad --- /dev/null +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageAdapterFactory.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright (c) 2012 Oracle. 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: + * Oracle - initial API and implementation + *******************************************************************************/ +package org.eclipse.jpt.jaxb.core.internal.context; + +import org.eclipse.core.runtime.IAdapterFactory; +import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jpt.jaxb.core.JaxbProject; +import org.eclipse.jpt.jaxb.core.JptJaxbCorePlugin; +import org.eclipse.jpt.jaxb.core.context.JaxbPackage; + + +public class JaxbPackageAdapterFactory + implements IAdapterFactory { + + private static final Class<?>[] ADAPTER_LIST = new Class[] { JaxbPackage.class }; + + + public Class<?>[] getAdapterList() { + return ADAPTER_LIST; + } + + public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) { + if (adaptableObject instanceof IPackageFragment) { + return getAdapter((IPackageFragment) adaptableObject, adapterType); + } + return null; + } + + private Object getAdapter(IPackageFragment packageFragment, Class<?> adapterType) { + if (adapterType == JaxbPackage.class) { + return getJaxbPackage(packageFragment); + } + return null; + } + + private JaxbPackage getJaxbPackage(IPackageFragment packageFragment) { + JaxbProject jaxbProject = JptJaxbCorePlugin.getJaxbProject(packageFragment.getJavaProject().getProject()); + if (jaxbProject == null) { + return null; + } + return jaxbProject.getContextRoot().getPackage(packageFragment.getElementName()); + } +} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageTester.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageTester.java new file mode 100644 index 0000000000..348517bbb1 --- /dev/null +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageTester.java @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2012 Oracle. 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: + * Oracle - initial API and implementation + *******************************************************************************/ +package org.eclipse.jpt.jaxb.core.internal.context; + +import org.eclipse.core.expressions.PropertyTester; +import org.eclipse.jpt.common.utility.internal.Tools; +import org.eclipse.jpt.jaxb.core.context.JaxbPackage; + + +public class JaxbPackageTester + extends PropertyTester { + + public static final String HAS_PACKAGE_INFO = "hasPackageInfo"; //$NON-NLS-1$ + + public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { + if (receiver instanceof JaxbPackage) { + return test((JaxbPackage) receiver, property, expectedValue); + } + return false; + } + + private boolean test(JaxbPackage jaxbPackage, String property, Object expectedValue) { + if (property.equals(HAS_PACKAGE_INFO)) { + boolean hasPackageInfo = jaxbPackage.getJaxbProject().getJavaResourcePackage(jaxbPackage.getName()) != null; + return Tools.valuesAreEqual(hasPackageInfo, expectedValue); + } + return false; + } +} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/AbstractJaxbFileResourceModel.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/AbstractJaxbFileResourceModel.java index f9873364c4..8df576788f 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/AbstractJaxbFileResourceModel.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/AbstractJaxbFileResourceModel.java @@ -14,6 +14,7 @@ import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.JavaCore; @@ -80,9 +81,14 @@ public abstract class AbstractJaxbFileResourceModel<S> if (stream != null) { this.load(new BufferedInputStream(stream)); } - } catch (Exception ex) { + } + catch (CoreException ce) { + // workspace out of sync - no underlying file - simply don't load + } + catch (Exception ex) { JptJaxbCorePlugin.log(ex); - } finally { + } + finally { this.closeStream(stream); } } |