Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfullbright2012-04-12 19:36:53 +0000
committerpfullbright2012-04-12 19:36:53 +0000
commitb7298b42a3bf04841b204cfa9309f8a41a1820c0 (patch)
tree8e7b3426d682042576f17f580cfe049b2ab24b77 /jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal
parent40b2be4b87da52fe70eb43d664c2305a1ed4216a (diff)
downloadwebtools.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/src/org/eclipse/jpt/jaxb/core/internal')
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageAdapterFactory.java50
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/JaxbPackageTester.java36
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/AbstractJaxbFileResourceModel.java10
3 files changed, 94 insertions, 2 deletions
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);
}
}

Back to the top