Author: scabanovich
Date: 2011-04-06 19:39:02 -0400 (Wed, 06 Apr 2011)
New Revision: 30404
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/ConfigFileSet.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigExtension.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java
Log:
JBIDE-3120
https://issues.jboss.org/browse/JBIDE-3120
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java 2011-04-06
23:38:44 UTC (rev 30403)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java 2011-04-06
23:39:02 UTC (rev 30404)
@@ -14,5 +14,6 @@
public interface CDISeamConfigConstants extends CDIConstants {
+ public static String SEAM_BEANS_XML = "seam-beans.xml";
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigExtension.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigExtension.java 2011-04-06
23:38:44 UTC (rev 30403)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigExtension.java 2011-04-06
23:39:02 UTC (rev 30404)
@@ -10,14 +10,29 @@
******************************************************************************/
package org.jboss.tools.cdi.seam.config.core;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.jboss.tools.cdi.core.CDICoreNature;
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.seam.config.core.scanner.ConfigFileSet;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
public class CDISeamConfigExtension implements ICDIExtension, IBuildParticipantFeature {
CDICoreNature project;
+ ConfigDefinitionContext context = new ConfigDefinitionContext();
+ ConfigFileSet fileSet = new ConfigFileSet();
+
public Object getAdapter(Class adapter) {
return null;
}
@@ -27,8 +42,61 @@
}
public IDefinitionContextExtension getContext() {
- // TODO Auto-generated method stub
- return null;
+ return context;
}
+ public void beginVisiting() {
+ fileSet = new ConfigFileSet();
+ }
+
+ public void visit(IFile file, IPath src, IPath webinf) {
+ IPath path = file.getFullPath();
+ if(src != null && path.segmentCount() == src.segmentCount() + 2
+ && "META-INF".equals(path.segments()[path.segmentCount() - 2])) {
+ addBeansXML(file, fileSet);
+ } else if(webinf != null && webinf.isPrefixOf(path) &&
webinf.segmentCount() == path.segmentCount() - 1) {
+ addBeansXML(file, fileSet);
+ }
+ }
+
+ public void visitJar(IPath path, IPackageFragmentRoot root, XModelObject beansXML) {
+ if(beansXML != null) {
+ fileSet.setBeanXML(path, beansXML);
+ XModelObject seamBeanXML =
beansXML.getParent().getChildByPath(CDISeamConfigConstants.SEAM_BEANS_XML);
+ if(seamBeanXML != null) {
+ fileSet.setSeamBeanXML(path, seamBeanXML);
+ }
+ }
+ }
+
+ public void buildDefinitions() {
+ //TODO
+ }
+
+ public void buildBeans() {
+ //TODO
+ }
+
+ private void addBeansXML(IFile f, ConfigFileSet fileSet) {
+ if(f.getName().equals("beans.xml")) {
+ XModelObject beansXML = getObject(f);
+ if(beansXML != null) {
+ fileSet.setBeanXML(f.getFullPath(), beansXML);
+ }
+ } else if(f.getName().equals(CDISeamConfigConstants.SEAM_BEANS_XML)) {
+ XModelObject beansXML = getObject(f);
+ if(beansXML != null) {
+ fileSet.setSeamBeanXML(f.getFullPath(), beansXML);
+ }
+ }
+ }
+
+ private XModelObject getObject(IFile f) {
+ XModelObject o = EclipseResourceUtil.getObjectByResource(f);
+ if(o == null) {
+ o = EclipseResourceUtil.createObjectForResource(f);
+ }
+ return o;
+ }
+
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java 2011-04-06
23:38:44 UTC (rev 30403)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java 2011-04-06
23:39:02 UTC (rev 30404)
@@ -1,20 +1,48 @@
+/*******************************************************************************
+ * 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.config.core;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
import org.eclipse.core.runtime.IPath;
import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.core.extension.IDefinitionContextExtension;
+import org.jboss.tools.cdi.seam.config.core.definition.SeamBeansDefinition;
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
public class ConfigDefinitionContext implements IDefinitionContextExtension {
IRootDefinitionContext root;
+ private Map<IPath, SeamBeansDefinition> beanXMLs = new HashMap<IPath,
SeamBeansDefinition>();
+ private Map<IPath, SeamBeansDefinition> seambeanXMLs = new HashMap<IPath,
SeamBeansDefinition>();
+
ConfigDefinitionContext workingCopy;
ConfigDefinitionContext original;
private ConfigDefinitionContext copy(boolean clean) {
ConfigDefinitionContext copy = new ConfigDefinitionContext();
copy.root = root;
- //TODO
-
+ if(!clean) {
+ copy.beanXMLs.putAll(beanXMLs);
+ copy.seambeanXMLs.putAll(seambeanXMLs);
+ //TODO
+ }
+
return copy;
}
@@ -33,16 +61,27 @@
return;
}
- // TODO
+ beanXMLs = workingCopy.beanXMLs;
+ seambeanXMLs = workingCopy.seambeanXMLs;
}
public void clean() {
- // TODO
+ synchronized (beanXMLs) {
+ beanXMLs.clear();
+ }
+ synchronized (seambeanXMLs) {
+ seambeanXMLs.clear();
+ }
}
public void clean(IPath path) {
- // TODO
+ synchronized (beanXMLs) {
+ beanXMLs.remove(path);
+ }
+ synchronized (seambeanXMLs) {
+ seambeanXMLs.remove(path);
+ }
}
public void setRootContext(IRootDefinitionContext context) {
@@ -65,4 +104,29 @@
return workingCopy;
}
+ public void addBeanXML(IPath path, SeamBeansDefinition def) {
+ synchronized (beanXMLs) {
+ beanXMLs.put(path, def);
+ }
+ root.addToParents(path);
+ }
+
+ public void addSeamBeanXML(IPath path, SeamBeansDefinition def) {
+ synchronized (seambeanXMLs) {
+ seambeanXMLs.put(path, def);
+ }
+ root.addToParents(path);
+ }
+
+ public Set<SeamBeansDefinition> getSeamBeansDefinitions() {
+ Set<SeamBeansDefinition> result = new HashSet<SeamBeansDefinition>();
+ synchronized (beanXMLs) {
+ result.addAll(beanXMLs.values());
+ }
+ synchronized (seambeanXMLs) {
+ result.addAll(seambeanXMLs.values());
+ }
+ return result;
+ }
+
}
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java 2011-04-06
23:39:02 UTC (rev 30404)
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * 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.config.core.definition;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SeamBeansDefinition {
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/ConfigFileSet.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/ConfigFileSet.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/ConfigFileSet.java 2011-04-06
23:39:02 UTC (rev 30404)
@@ -0,0 +1,44 @@
+package org.jboss.tools.cdi.seam.config.core.scanner;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IPackageDeclaration;
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.common.model.XModelObject;
+
+public class ConfigFileSet {
+ private Set<IPath> allpaths = new HashSet<IPath>();
+ private Map<IPath, XModelObject> beanXMLs = new HashMap<IPath,
XModelObject>();
+ private Map<IPath, XModelObject> seambeanXMLs = new HashMap<IPath,
XModelObject>();
+
+ public ConfigFileSet() {}
+
+ public Set<IPath> getAllPaths() {
+ return allpaths;
+ }
+
+ public XModelObject getBeanXML(IPath f) {
+ return beanXMLs.get(f);
+ }
+
+ public XModelObject getSeamBeanXML(IPath f) {
+ return seambeanXMLs.get(f);
+ }
+
+ public void setBeanXML(IPath f, XModelObject o) {
+ beanXMLs.put(f, o);
+ allpaths.add(f);
+ }
+
+ public void setSeamBeanXML(IPath f, XModelObject o) {
+ seambeanXMLs.put(f, o);
+ allpaths.add(f);
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/ConfigFileSet.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain