Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourcePackage.java')
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourcePackage.java116
1 files changed, 116 insertions, 0 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourcePackage.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourcePackage.java
new file mode 100644
index 0000000000..6fabc31343
--- /dev/null
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourcePackage.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.jaxb.core.internal.resource.java.source;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.IPackageBinding;
+import org.eclipse.jdt.core.dom.PackageDeclaration;
+import org.eclipse.jpt.core.internal.utility.jdt.JDTPackage;
+import org.eclipse.jpt.core.utility.jdt.AnnotatedPackage;
+import org.eclipse.jpt.jaxb.core.resource.java.Annotation;
+import org.eclipse.jpt.jaxb.core.resource.java.JavaResourceCompilationUnit;
+import org.eclipse.jpt.jaxb.core.resource.java.JavaResourcePackage;
+
+/**
+ * @author Dmitry Geraskov
+ * Source package-info.java
+ *
+ */
+public final class SourcePackage
+ extends SourceAnnotatedElement<AnnotatedPackage>
+ implements JavaResourcePackage {
+
+ private String name;
+
+ /**
+ * construct package info
+ */
+ public static JavaResourcePackage newInstance(
+ JavaResourceCompilationUnit parent,
+ PackageDeclaration declaringPackage,
+ CompilationUnit astRoot) {
+ AnnotatedPackage pack = new JDTPackage(
+ declaringPackage,
+ parent.getCompilationUnit(),
+ parent.getModifySharedDocumentCommandExecutor(),
+ parent.getAnnotationEditFormatter());
+ JavaResourcePackage jrpp = new SourcePackage(parent, pack);
+ jrpp.initialize(astRoot);
+ return jrpp;
+ }
+
+ private SourcePackage(
+ JavaResourceCompilationUnit parent,
+ AnnotatedPackage pack){
+ super(parent, pack);
+ }
+
+ @Override
+ public void initialize(CompilationUnit astRoot) {
+ super.initialize(astRoot);
+ this.name = this.buildName(astRoot);
+ }
+
+
+ // ********** JavaResourcePackageInfo implementation **********
+
+ // ***** name
+ public String getName() {
+ return this.name;
+ }
+
+ private void syncName(String astName) {
+ if (valuesAreDifferent(astName, this.name)){
+ String old = this.name;
+ this.name = astName;
+ this.firePropertyChanged(NAME_PROPERTY, old, astName);
+ }
+ }
+
+ private String buildName(CompilationUnit astRoot) {
+ IPackageBinding binding = this.annotatedElement.getBinding(astRoot);
+ return (binding == null) ? null : binding.getName();
+ }
+
+
+ // ********** Java changes **********
+
+ @Override
+ public void synchronizeWith(CompilationUnit astRoot) {
+ super.synchronizeWith(astRoot);
+ this.syncName(this.buildName(astRoot));
+ }
+
+ // ********** SourceAnnotatedElement implementation **********
+
+ @Override
+ Iterable<String> getValidAnnotationNames() {
+ return this.getAnnotationProvider().getPackageAnnotationNames();
+ }
+
+
+ @Override
+ Annotation buildAnnotation(String annotationName) {
+ return this.getAnnotationProvider().buildPackageAnnotation(this, this.annotatedElement, annotationName);
+ }
+
+ @Override
+ Annotation buildNullAnnotation(String annotationName) {
+ return this.getAnnotationProvider().buildNullPackageAnnotation(this, annotationName);
+ }
+
+
+ @Override
+ public void toString(StringBuilder sb) {
+ sb.append(this.name);
+ }
+
+}

Back to the top