Author: scabanovich
Date: 2011-06-09 18:36:21 -0400 (Thu, 09 Jun 2011)
New Revision: 31992
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigFieldDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigMethodDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigTypeDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/IConfigDefinition.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java
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/SeamMemberDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/Location.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/SAXParser.java
Log:
JBIDE-9110
https://issues.jboss.org/browse/JBIDE-9110
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigFieldDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigFieldDefinition.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigFieldDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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;
+
+import org.jboss.tools.cdi.internal.core.impl.definition.FieldDefinition;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class ConfigFieldDefinition extends FieldDefinition implements IConfigDefinition
{
+ protected SeamFieldDefinition config;
+
+ public ConfigFieldDefinition() {}
+
+ public void setConfig(SeamFieldDefinition config) {
+ this.config = config;
+ setOriginalDefinition(new TextSourceReference(config.getResource(),
config.getNode()));
+ }
+
+ public SeamFieldDefinition getConfig() {
+ return config;
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigFieldDefinition.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/definition/ConfigMethodDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigMethodDefinition.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigMethodDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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;
+
+import org.jboss.tools.cdi.internal.core.impl.definition.MethodDefinition;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class ConfigMethodDefinition extends MethodDefinition implements IConfigDefinition
{
+ protected SeamMethodDefinition config;
+
+ public ConfigMethodDefinition() {}
+
+ public void setConfig(SeamMethodDefinition config) {
+ this.config = config;
+ setOriginalDefinition(new TextSourceReference(config.getResource(),
config.getNode()));
+ }
+
+ public SeamMethodDefinition getConfig() {
+ return config;
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigMethodDefinition.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/definition/ConfigTypeDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigTypeDefinition.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigTypeDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * 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;
+
+import org.jboss.tools.cdi.internal.core.impl.definition.FieldDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.MethodDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.TypeDefinition;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class ConfigTypeDefinition extends TypeDefinition implements IConfigDefinition {
+ protected SeamBeanDefinition config;
+
+ public ConfigTypeDefinition() {}
+
+ public void setConfig(SeamBeanDefinition config) {
+ this.config = config;
+ setOriginalDefinition(new TextSourceReference(config.getResource(),
config.getNode()));
+ }
+
+ public SeamBeanDefinition getConfig() {
+ return config;
+ }
+
+ protected FieldDefinition newFieldDefinition() {
+ return new ConfigFieldDefinition();
+ }
+
+ protected MethodDefinition newMethodDefinition() {
+ return new ConfigMethodDefinition();
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/ConfigTypeDefinition.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/definition/IConfigDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/IConfigDefinition.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/IConfigDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -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 interface IConfigDefinition {
+ public SeamMemberDefinition getConfig();
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/IConfigDefinition.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java 2011-06-09
22:35:00 UTC (rev 31991)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -23,10 +23,10 @@
*
*/
public class SeamBeanDefinition extends SeamMemberDefinition {
- boolean inline = false;
- IType type = null;
- List<SeamFieldDefinition> fields = new ArrayList<SeamFieldDefinition>();
- List<SeamMethodDefinition> methods = new ArrayList<SeamMethodDefinition>();
+ protected boolean inline = false;
+ protected IType type = null;
+ protected List<SeamFieldDefinition> fields = new
ArrayList<SeamFieldDefinition>();
+ protected List<SeamMethodDefinition> methods = new
ArrayList<SeamMethodDefinition>();
public SeamBeanDefinition() {}
Modified:
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 2011-06-09
22:35:00 UTC (rev 31991)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -89,7 +89,7 @@
for (SeamBeanDefinition def: beanDefinitions) {
IType type = def.getType();
- TypeDefinition typeDef = new TypeDefinition();
+ ConfigTypeDefinition typeDef = new ConfigTypeDefinition();
boolean replaces = def.getReplacesLocation() != null;
boolean modifies = def.getModifiesLocation() != null;
if(replaces || modifies) {
@@ -137,7 +137,8 @@
return null;
}
- private void mergeTypeDefinition(SeamBeanDefinition def, TypeDefinition typeDef,
ConfigDefinitionContext context) {
+ private void mergeTypeDefinition(SeamBeanDefinition def, ConfigTypeDefinition typeDef,
ConfigDefinitionContext context) {
+ typeDef.setConfig(def);
mergeAnnotations(def, typeDef, context);
List<FieldDefinition> fieldDefs = typeDef.getFields();
@@ -145,7 +146,7 @@
String n = fieldDef.getField().getElementName();
SeamFieldDefinition f = def.getField(n);
if(f != null) {
- fieldDef.setOriginalDefinition(new TextSourceReference(resource, f.getNode()));
+ ((ConfigFieldDefinition)fieldDef).setConfig(f);
mergeAnnotations(f, fieldDef, context);
}
}
@@ -156,6 +157,7 @@
if(method == null) continue;
SeamMethodDefinition m = def.getMethod(method);
if(m != null) {
+ ((ConfigMethodDefinition)methodDef).setConfig(m);
mergeAnnotations(m, methodDef, context);
List<ParameterDefinition> psDefs = methodDef.getParameters();
List<SeamParameterDefinition> ps = m.getParameters();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java 2011-06-09
22:35:00 UTC (rev 31991)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -13,6 +13,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.eclipse.core.resources.IResource;
import org.jboss.tools.cdi.core.IJavaAnnotation;
import org.jboss.tools.cdi.seam.config.core.xml.Location;
import org.jboss.tools.cdi.seam.config.core.xml.SAXElement;
@@ -24,6 +25,7 @@
*
*/
public abstract class SeamMemberDefinition {
+ protected IResource resource;
protected SAXNode node;
protected SAXElement replaces = null;
protected SAXElement modifies = null;
@@ -33,6 +35,14 @@
public SeamMemberDefinition() {}
+ public void setResource(IResource resource) {
+ this.resource = resource;
+ }
+
+ public IResource getResource() {
+ return resource;
+ }
+
public void setNode(SAXNode node) {
this.node = node;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java 2011-06-09
22:35:00 UTC (rev 31991)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -21,8 +21,8 @@
*
*/
public class SeamMethodDefinition extends SeamMemberDefinition {
- IMethod method;
- List<SeamParameterDefinition> parameters = new
ArrayList<SeamParameterDefinition>();
+ protected IMethod method;
+ protected List<SeamParameterDefinition> parameters = new
ArrayList<SeamParameterDefinition>();
public SeamMethodDefinition() {}
@@ -36,6 +36,7 @@
}
public void addParameter(SeamParameterDefinition p) {
+ p.setParent(this);
parameters.add(p);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java 2011-06-09
22:35:00 UTC (rev 31991)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -127,6 +127,7 @@
private SeamBeanDefinition scanBean(SAXElement element, IType type, boolean inline) {
addDependency(type);
SeamBeanDefinition def = new SeamBeanDefinition();
+ def.setResource(resource);
def.setInline(inline);
def.setNode(element);
def.setType(type);
@@ -185,6 +186,7 @@
private SeamVirtualFieldDefinition scanVirtualProducerField(SAXElement element) {
SeamVirtualFieldDefinition def = new SeamVirtualFieldDefinition();
+ def.setResource(resource);
def.setNode(element);
IType type = Util.resolveType(element, project);
if(type == null) {
@@ -198,6 +200,7 @@
private SeamFieldDefinition scanField(SAXElement element, IField field) {
SeamFieldDefinition def = new SeamFieldDefinition();
+ def.setResource(resource);
def.setNode(element);
def.setField(field);
scanFieldContent(def, element);
@@ -236,6 +239,7 @@
private SeamFieldDefinition scanField(SAXAttribute a, IField field) {
SeamFieldDefinition def = new SeamFieldDefinition();
+ def.setResource(resource);
def.setNode(a);
def.setField(field);
def.addValue(a);
@@ -296,6 +300,7 @@
private SeamMethodDefinition scanMethod(SAXElement element, IType type) {
SeamMethodDefinition def = new SeamMethodDefinition();
+ def.setResource(resource);
def.setNode(element);
List<SAXElement> es = element.getChildElements();
for (SAXElement c: es) {
@@ -339,6 +344,7 @@
private SeamMethodDefinition scanConstructor(SAXElement element, IType type) {
SeamMethodDefinition def = new SeamMethodDefinition();
+ def.setResource(resource);
def.setNode(element);
if(Util.isParameters(element)) {
List<SAXElement> ps = element.getChildElements();
@@ -371,6 +377,7 @@
private SeamParameterDefinition scanParameter(SAXElement element) {
if(!Util.isConfigRelevant(element)) return null;
SeamParameterDefinition def = new SeamParameterDefinition();
+ def.setResource(resource);
def.setNode(element);
if(Util.isArray(element)) {
if(element.hasAttribute(CDISeamConfigConstants.ATTR_DIMENSIONS)) {
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/Location.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/Location.java 2011-06-09
22:35:00 UTC (rev 31991)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/Location.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -10,22 +10,27 @@
******************************************************************************/
package org.jboss.tools.cdi.seam.config.core.xml;
-import org.eclipse.core.resources.IFile;
-
/**
*
* @author Viacheslav Kabanovich
*
*/
public class Location {
+ int line;
int start;
int length;
- public Location(int start, int length) {
+ public Location(int start, int length, int line) {
this.start = start;
this.length = length;
+ this.line = line;
}
+ /**
+ * Returns offset starting from the beginning of text.
+ *
+ * @return offset starting from the beginning of text
+ */
public int getStartPosition() {
return start;
}
@@ -34,6 +39,15 @@
return length;
}
+ /**
+ * Returns line number in text; first line has number 1.
+ *
+ * @return line number in text; first line has number 1
+ */
+ public int getLine() {
+ return line;
+ }
+
public boolean includes(int offset) {
return start <= offset && start + length >= offset;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/SAXParser.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/SAXParser.java 2011-06-09
22:35:00 UTC (rev 31991)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/xml/SAXParser.java 2011-06-09
22:36:21 UTC (rev 31992)
@@ -119,10 +119,10 @@
element.setName(qName);
element.setParent(current);
if(start >= 0) {
- element.setLocation(new Location(start, end - start));
+ element.setLocation(new Location(start, end - start, getLine(start)));
int ns = document.get().indexOf(qName, start);
if(ns >= start) {
- element.setNameLocation(new Location(ns, qName.length()));
+ element.setNameLocation(new Location(ns, qName.length(), getLine(ns)));
}
}
for (int i = 0; i < attributes.getLength(); i++) {
@@ -133,10 +133,10 @@
a.setValue(v);
int n_start = document.get().indexOf(n, start);
if(n_start >= 0) {
- a.setNameLocation(new Location(n_start, n.length()));
+ a.setNameLocation(new Location(n_start, n.length(), getLine(n_start)));
int v_start = document.get().indexOf('"', n_start);
if(v_start >= 0) {
- a.setValueLocation(new Location(v_start + 1, v.length()));
+ a.setValueLocation(new Location(v_start + 1, v.length(), getLine(v_start)));
}
}
//TODO
@@ -157,14 +157,14 @@
s = end - length;
}
currentText.append(append);
- currentTextLocation = new Location(s, length);
+ currentTextLocation = new Location(s, length, getLine(s));
}
public void endElement(String uri, String localName, String qName) throws SAXException
{
int end = getCurrentLocation();
if(end > 0) {
int start = document.get().lastIndexOf("<", end);
- Location endLocation = new Location(start, end - start);
+ Location endLocation = new Location(start, end - start, getLine(start));
//TODO
}
if(currentText.length() > 0) {
@@ -192,6 +192,15 @@
String message = e.getMessage();
errors.add(message);
}
+
+ private int getLine(int start) {
+ try {
+ return document.getLineOfOffset(start);
+ } catch (BadLocationException e) {
+ CommonPlugin.getPluginLog().logError(e);
+ return -1;
+ }
+ }
}