[jbosstools-commits] JBoss Tools SVN: r30543 - in trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core: src/org/jboss/tools/cdi/seam/solder/core and 1 other directory.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Tue Apr 12 19:54:50 EDT 2011
Author: scabanovich
Date: 2011-04-12 19:54:50 -0400 (Tue, 12 Apr 2011)
New Revision: 30543
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java
Log:
JBIDE-8717
https://issues.jboss.org/browse/JBIDE-8717
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml 2011-04-12 23:53:00 UTC (rev 30542)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/plugin.xml 2011-04-12 23:54:50 UTC (rev 30543)
@@ -11,5 +11,10 @@
class="org.jboss.tools.cdi.seam.solder.core.CDISeamSolderLoggerExtension"
runtime="org.jboss.seam.solder.logging.TypedMessageLoggerExtension">
</cdiextension>
+
+ <cdiextension
+ class="org.jboss.tools.cdi.seam.solder.core.CDISeamSolderServiceHandlerExtension"
+ runtime="org.jboss.seam.solder.serviceHandler.ServiceHandlerExtension">
+ </cdiextension>
</extension>
</plugin>
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java 2011-04-12 23:53:00 UTC (rev 30542)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderConstants.java 2011-04-12 23:54:50 UTC (rev 30543)
@@ -11,4 +11,7 @@
public String MESSAGE_LOGGER_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.logging.MessageLogger";
public String MESSAGE_BUNDLE_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.messages.MessageBundle";
+ public String SERVICE_HANDLER_TYPE_ANNOTATION_TYPE_NAME = "org.jboss.seam.solder.serviceHandler.ServiceHandlerType";
+ public String SERVICE_ANNOTATION_KIND = "serviceAnnotation";
+
}
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java 2011-04-12 23:53:00 UTC (rev 30542)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderLoggerExtension.java 2011-04-12 23:54:50 UTC (rev 30543)
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
package org.jboss.tools.cdi.seam.solder.core;
import java.util.HashMap;
@@ -10,8 +20,7 @@
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.SourceRange;
import org.jboss.tools.cdi.core.CDICoreNature;
-import org.jboss.tools.cdi.core.IAnnotationDeclaration;
-import org.jboss.tools.cdi.core.IRootDefinitionContext;
+import org.jboss.tools.cdi.core.extension.AbstractDefinitionContextExtension;
import org.jboss.tools.cdi.core.extension.ICDIExtension;
import org.jboss.tools.cdi.core.extension.IDefinitionContextExtension;
import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
@@ -24,6 +33,11 @@
import org.jboss.tools.cdi.internal.core.scanner.FileSet;
import org.jboss.tools.common.model.XModelObject;
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
public class CDISeamSolderLoggerExtension implements ICDIExtension, IBuildParticipantFeature {
CDICoreNature project;
LoggerDefinitionContext context = new LoggerDefinitionContext();
@@ -53,7 +67,7 @@
}
public void buildDefinitions(FileSet fileSet) {
- LoggerDefinitionContext workingCopy = context.getWorkingCopy();
+ LoggerDefinitionContext workingCopy = (LoggerDefinitionContext)context.getWorkingCopy();
Map<IPath, Set<IType>> is = fileSet.getInterfaces();
for (IPath path: is.keySet()) {
@@ -86,7 +100,7 @@
public void buildBeans() {
CDIProject p = ((CDIProject)project.getDelegate());
- Map<IPath, TypeDefinition> loggers = context.getMessageLoggers();
+ Map<String, TypeDefinition> loggers = context.getMessageLoggers();
for (TypeDefinition d: loggers.values()) {
ClassBean b = new ClassBean();
b.setDefinition(d);
@@ -94,7 +108,7 @@
p.addBean(b);
}
- Map<IPath, TypeDefinition> bundles = context.getMessageBundles();
+ Map<String, TypeDefinition> bundles = context.getMessageBundles();
for (TypeDefinition d: bundles.values()) {
ClassBean b = new ClassBean();
b.setDefinition(d);
@@ -104,16 +118,12 @@
}
- class LoggerDefinitionContext implements IDefinitionContextExtension {
- IRootDefinitionContext root;
-
- Map<IPath, TypeDefinition> messageLoggers = new HashMap<IPath, TypeDefinition>();
- Map<IPath, TypeDefinition> messageBundles = new HashMap<IPath, TypeDefinition>();
+ class LoggerDefinitionContext extends AbstractDefinitionContextExtension {
+ Map<String, TypeDefinition> messageLoggers = new HashMap<String, TypeDefinition>();
+ Map<String, TypeDefinition> messageBundles = new HashMap<String, TypeDefinition>();
- LoggerDefinitionContext original;
- LoggerDefinitionContext workingCopy;
- private LoggerDefinitionContext copy(boolean clean) {
+ protected LoggerDefinitionContext copy(boolean clean) {
LoggerDefinitionContext copy = new LoggerDefinitionContext();
copy.root = root;
if(!clean) {
@@ -124,71 +134,41 @@
return copy;
}
- public void newWorkingCopy(boolean forFullBuild) {
- if(original != null) return;
- workingCopy = copy(forFullBuild);
- workingCopy.original = this;
+ protected void doApplyWorkingCopy() {
+ messageLoggers = ((LoggerDefinitionContext)workingCopy).messageLoggers;
+ messageBundles = ((LoggerDefinitionContext)workingCopy).messageBundles;
}
- public void applyWorkingCopy() {
- if(original != null) {
- original.applyWorkingCopy();
- return;
- }
- if(workingCopy == null) {
- return;
- }
- messageLoggers = workingCopy.messageLoggers;
- messageBundles = workingCopy.messageBundles;
-
- workingCopy = null;
- }
-
public void clean() {
messageLoggers.clear();
messageBundles.clear();
}
public void clean(IPath path) {
- messageLoggers.remove(path);
- messageBundles.remove(path);
}
- public void setRootContext(IRootDefinitionContext context) {
- root = context;
+ public void clean(String typeName) {
+ messageLoggers.remove(typeName);
+ messageBundles.remove(typeName);
}
- public IRootDefinitionContext getRootContext() {
- return root;
- }
-
- public LoggerDefinitionContext getWorkingCopy() {
- if(original != null) {
- return this;
- }
- if(workingCopy != null) {
- return workingCopy;
- }
- workingCopy = copy(false);
- workingCopy.original = this;
- return workingCopy;
- }
-
public void addMessageLogger(IPath path, TypeDefinition def) {
- messageLoggers.put(path, def);
- root.addToParents(path);
+ String typeName = def.getType().getFullyQualifiedName();
+ messageLoggers.put(typeName, def);
+ root.addType(path, typeName);
}
public void addMessageBundle(IPath path, TypeDefinition def) {
- messageBundles.put(path, def);
- root.addToParents(path);
+ String typeName = def.getType().getFullyQualifiedName();
+ messageBundles.put(typeName, def);
+ root.addType(path, typeName);
}
- public Map<IPath, TypeDefinition> getMessageLoggers() {
+ public Map<String, TypeDefinition> getMessageLoggers() {
return messageLoggers;
}
- public Map<IPath, TypeDefinition> getMessageBundles() {
+ public Map<String, TypeDefinition> getMessageBundles() {
return messageBundles;
}
Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java 2011-04-12 23:54:50 UTC (rev 30543)
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.cdi.seam.solder.core;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.extension.AbstractDefinitionContextExtension;
+import org.jboss.tools.cdi.core.extension.ICDIExtension;
+import org.jboss.tools.cdi.core.extension.IDefinitionContextExtension;
+import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
+import org.jboss.tools.cdi.internal.core.impl.CDIProject;
+import org.jboss.tools.cdi.internal.core.impl.ClassBean;
+import org.jboss.tools.cdi.internal.core.impl.definition.AbstractMemberDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.AnnotationDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.TypeDefinition;
+import org.jboss.tools.cdi.internal.core.scanner.FileSet;
+import org.jboss.tools.common.model.XModelObject;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class CDISeamSolderServiceHandlerExtension implements ICDIExtension, IBuildParticipantFeature {
+ CDICoreNature project;
+ ServiceHandlerDefinitionContext context = new ServiceHandlerDefinitionContext();
+
+ public Object getAdapter(Class adapter) {
+ return null;
+ }
+
+ public void setProject(CDICoreNature n) {
+ project = n;
+ }
+
+ public IDefinitionContextExtension getContext() {
+ return context;
+ }
+
+ public void beginVisiting() {
+ }
+
+ public void visitJar(IPath path, IPackageFragmentRoot root, XModelObject beansXML) {
+ }
+
+ public void visit(IFile file, IPath src, IPath webinf) {
+ }
+
+ public void buildDefinitions() {
+ }
+
+ public void buildDefinitions(FileSet fileSet) {
+ ServiceHandlerDefinitionContext workingCopy = (ServiceHandlerDefinitionContext)context.getWorkingCopy();
+
+ Map<IPath, Set<IType>> is = fileSet.getInterfaces();
+ for (IPath path: is.keySet()) {
+ Set<IType> ts = is.get(path);
+ for (IType t: ts) {
+ InterfaceDefinition i = new InterfaceDefinition(t);
+ List<IAnnotationDeclaration> as = i.getAnnotations();
+ for (IAnnotationDeclaration a: as) {
+ if(workingCopy.isServiceAnnotation(a.getType())) {
+ TypeDefinition d = new TypeDefinition();
+ d.setType(t, workingCopy.getRootContext());
+ workingCopy.addService(path, d);
+ }
+ }
+ }
+ }
+ }
+
+ public void buildBeans() {
+ CDIProject p = ((CDIProject)project.getDelegate());
+ Map<String, TypeDefinition> services = context.getServices();
+ for (TypeDefinition d: services.values()) {
+ ClassBean b = new ClassBean();
+ b.setDefinition(d);
+ b.setParent(p);
+ p.addBean(b);
+ }
+
+ }
+
+ class ServiceHandlerDefinitionContext extends AbstractDefinitionContextExtension {
+ Set<String> serviceAnnotations = new HashSet<String>();
+ Map<String, TypeDefinition> services = new HashMap<String, TypeDefinition>();
+
+
+ protected ServiceHandlerDefinitionContext copy(boolean clean) {
+ ServiceHandlerDefinitionContext copy = new ServiceHandlerDefinitionContext();
+ copy.root = root;
+ if(!clean) {
+ copy.services.putAll(services);
+ copy.serviceAnnotations.addAll(serviceAnnotations);
+ }
+
+ return copy;
+ }
+
+ protected void doApplyWorkingCopy() {
+ services = ((ServiceHandlerDefinitionContext)workingCopy).services;
+ serviceAnnotations = ((ServiceHandlerDefinitionContext)workingCopy).serviceAnnotations;
+ }
+
+
+ public void clean() {
+ services.clear();
+ serviceAnnotations.clear();
+ }
+
+ public void clean(String typeName) {
+ services.remove(typeName);
+ serviceAnnotations.remove(typeName);
+ }
+
+ public void addService(IPath path, TypeDefinition def) {
+ String typeName = def.getType().getFullyQualifiedName();
+ services.put(typeName, def);
+ root.addType(path, typeName);
+ }
+
+ public Map<String, TypeDefinition> getServices() {
+ return services;
+ }
+
+ public void computeAnnotationKind(AnnotationDefinition annotation) {
+ if(annotation.isAnnotationPresent(CDISeamSolderConstants.SERVICE_HANDLER_TYPE_ANNOTATION_TYPE_NAME)) {
+ annotation.setExtendedKind(CDISeamSolderConstants.SERVICE_ANNOTATION_KIND);
+ serviceAnnotations.add(annotation.getType().getFullyQualifiedName());
+ }
+ }
+
+ public boolean isServiceAnnotation(IType type) {
+ return (type != null && serviceAnnotations.contains(type.getFullyQualifiedName()));
+ }
+
+ }
+
+ class InterfaceDefinition extends AbstractMemberDefinition {
+ InterfaceDefinition(IType type) {
+ setAnnotatable(type, type, context.getRootContext());
+ }
+ }
+
+}
Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.solder.core/src/org/jboss/tools/cdi/seam/solder/core/CDISeamSolderServiceHandlerExtension.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
More information about the jbosstools-commits
mailing list