Log Message
Add Assignment + test
Modified Paths
- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/DefaultAnnotationTransformer.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/EvaluatingVisitor.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/ExpressionVisitor.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/_expression_/TransformerDef.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java
Added Paths
Diff
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/DefaultAnnotationTransformer.java (1474 => 1475)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/DefaultAnnotationTransformer.java 2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/DefaultAnnotationTransformer.java 2011-12-30 21:30:20 UTC (rev 1475)
@@ -31,6 +31,7 @@
import com.thoughtworks.qdox.model._expression_.And;
import com.thoughtworks.qdox.model._expression_.AnnotationValue;
import com.thoughtworks.qdox.model._expression_.AnnotationValueList;
+import com.thoughtworks.qdox.model._expression_.Assignment;
import com.thoughtworks.qdox.model._expression_.Cast;
import com.thoughtworks.qdox.model._expression_.Constant;
import com.thoughtworks.qdox.model._expression_.Divide;
@@ -411,8 +412,10 @@
public AnnotationValue transform( AssignmentDef assignmentDef )
{
-
- return null;
+ _expression_ leftHandSide = assignmentDef.getLetfHandSide().transform( this );
+ String operator = assignmentDef.getOperator();
+ _expression_ assignmentExpression = assignmentDef.getAssignmentExpression().transform( this );
+ return new Assignment( leftHandSide, operator, assignmentExpression );
}
public AnnotationValue transform( PreIncrementDef preIncrementDef )
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/EvaluatingVisitor.java (1474 => 1475)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/EvaluatingVisitor.java 2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/builder/impl/EvaluatingVisitor.java 2011-12-30 21:30:20 UTC (rev 1475)
@@ -31,6 +31,7 @@
import com.thoughtworks.qdox.model._expression_.And;
import com.thoughtworks.qdox.model._expression_.AnnotationValue;
import com.thoughtworks.qdox.model._expression_.AnnotationValueList;
+import com.thoughtworks.qdox.model._expression_.Assignment;
import com.thoughtworks.qdox.model._expression_.Cast;
import com.thoughtworks.qdox.model._expression_.Constant;
import com.thoughtworks.qdox.model._expression_.Divide;
@@ -971,4 +972,9 @@
{
throw new IllegalArgumentException( "Cannot evaluate '" + postIncrement + "'." );
}
+
+ public Object visit( Assignment assignment )
+ {
+ throw new IllegalArgumentException( "Cannot evaluate '" + assignment + "'." );
+ }
}
\ No newline at end of file
Added: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/Assignment.java (0 => 1475)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/Assignment.java (rev 0)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/Assignment.java 2011-12-30 21:30:20 UTC (rev 1475)
@@ -0,0 +1,52 @@
+package com.thoughtworks.qdox.model._expression_;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public class Assignment implements AnnotationValue
+{
+ private _expression_ leftHandSide;
+ private String operator;
+ private _expression_ assignmentExpression;
+
+ public Assignment( _expression_ leftHandSide, String operator, _expression_ assignmentExpression )
+ {
+ this.leftHandSide = leftHandSide;
+ this.operator = operator;
+ this.assignmentExpression = assignmentExpression;
+ }
+
+ /** {@inheritDoc} */
+ public Object accept( ExpressionVisitor visitor )
+ {
+ return visitor.visit( this );
+ }
+
+ /** {@inheritDoc} */
+ public Object getParameterValue()
+ {
+ return leftHandSide.getParameterValue() + " " + operator + ' ' + assignmentExpression.getParameterValue();
+ }
+
+ @Override
+ public String toString()
+ {
+ return leftHandSide.toString() + ' ' + operator+ ' ' + assignmentExpression.toString();
+ }
+}
\ No newline at end of file
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/ExpressionVisitor.java (1474 => 1475)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/ExpressionVisitor.java 2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/_expression_/ExpressionVisitor.java 2011-12-30 21:30:20 UTC (rev 1475)
@@ -19,7 +19,6 @@
* under the License.
*/
-
import com.thoughtworks.qdox.model.JavaAnnotation;
/**
@@ -99,4 +98,6 @@
Object visit( PostIncrement postIncrement );
+ Object visit( Assignment assignment );
+
}
\ No newline at end of file
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/_expression_/TransformerDef.java (1474 => 1475)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/_expression_/TransformerDef.java 2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/main/java/com/thoughtworks/qdox/parser/_expression_/TransformerDef.java 2011-12-30 21:30:20 UTC (rev 1475)
@@ -1,10 +1,28 @@
package com.thoughtworks.qdox.parser._expression_;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
import com.thoughtworks.qdox.parser.structs.AnnoDef;
public interface TransformerDef<U>
{
-
U transform( AnnoDef annoDef );
U transform( AddDef annotationAdd );
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java (1474 => 1475)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java 2011-12-30 20:44:35 UTC (rev 1474)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/JavaProjectBuilderTest.java 2011-12-30 21:30:20 UTC (rev 1475)
@@ -1369,7 +1369,10 @@
" XOREQ ( a ^= b )," +
" OREQ ( a |= b )" +
" }";
- builder.addSource(new StringReader( source ));
+ JavaClass cls = builder.addSource(new StringReader( source )).getClassByName( "AssignmentOperators" );
+ JavaField xoreq = cls.getFieldByName( "XOREQ" );
+ assertEquals( 1, xoreq.getEnumConstantArguments().size() );
+ assertEquals( "a ^= b", xoreq.getEnumConstantArguments().get(0).getParameterValue() );
}
public void testIncrementAndDecrement() throws Exception
Added: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/_expression_/AssignmentTest.java (0 => 1475)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/_expression_/AssignmentTest.java (rev 0)
+++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/_expression_/AssignmentTest.java 2011-12-30 21:30:20 UTC (rev 1475)
@@ -0,0 +1,41 @@
+package com.thoughtworks.qdox.model._expression_;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.Test;
+
+public class AssignmentTest
+{
+ @Test
+ public void testParameterValue()
+ {
+ _expression_ lhs = mock( _expression_.class );
+ _expression_ rhs = mock( _expression_.class );
+ when( lhs.getParameterValue() ).thenReturn( "2" );
+ when( rhs.getParameterValue() ).thenReturn( "3" );
+ Assignment expr = new Assignment( lhs, ">>>=", rhs );
+ assertEquals( "2 >>>= 3", expr.getParameterValue() );
+ }
+
+ @Test
+ public void testToString()
+ {
+ _expression_ lhs = mock( _expression_.class );
+ _expression_ rhs = mock( _expression_.class );
+ Assignment expr = new Assignment( lhs, "+=",rhs );
+ assertEquals( lhs + " += " + rhs, expr.toString() );
+ }
+
+ @Test
+ public void testAccept()
+ {
+ ExpressionVisitor visitor = mock( ExpressionVisitor.class );
+ Assignment expr = new Assignment( null, null, null );
+ Object visitResult = new Object();
+ when( visitor.visit( expr ) ).thenReturn( visitResult );
+ assertSame( expr.accept( visitor ), visitResult );
+ }
+}
\ No newline at end of file
To unsubscribe from this list please visit:
