Author: alexsmirnov
Date: 2009-08-07 00:19:41 -0400 (Fri, 07 Aug 2009)
New Revision: 15127
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Name.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/NameTest.java
Log:
fix and test Name pattern class.
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Name.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Name.java 2009-08-07
02:01:19 UTC (rev 15126)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Name.java 2009-08-07
04:19:41 UTC (rev 15127)
@@ -46,7 +46,7 @@
}
private static final Pattern namePattern = Pattern.compile("^(?:(.+)\\.)?(?:("
+ Classifier.component
- + "|" + Classifier.renderkit + "|" + Classifier.event +
"|" + Classifier.taglib + ")\\.)?([^\\.]+)$");
+ + "|" + Classifier.renderkit + "|" + Classifier.event +
"|" + Classifier.taglib + ")\\.(?:([^\\.]+)\\.)?)?([^\\.]+)$");
/**
* <p class="changed_added_4_0">represents library part prefix of
name.</p>
@@ -75,36 +75,51 @@
* @throws InvalidNameException
*/
public static Name create(String name) throws InvalidNameException {
- Matcher matcher = namePattern.matcher(name);
- if(matcher.matches()){
Name cdkName = new Name();
- int groups = matcher.groupCount();
- for(int i=0;i<=groups;i++){
- System.out.println("Group "+i+": "+matcher.group(i));
+ StringBuilder prefix = new StringBuilder(name.length());
+ String[] parts = name.split("\\.");
+ cdkName.setSimpleName(parts[parts.length-1]);
+ if(parts.length>1){
+ try{
+ cdkName.setClassifier(Classifier.valueOf(parts[parts.length-2]));
+ fillPrefix(prefix, parts,parts.length-2);
+ } catch (IllegalArgumentException e) {
+ if(parts.length>2){
+ try{
+ cdkName.setClassifier(Classifier.valueOf(parts[parts.length-3]));
+ fillPrefix(prefix, parts,parts.length-3);
+ cdkName.setMarkup(parts[parts.length-2]);
+ } catch (IllegalArgumentException e1) {
+ fillPrefix(prefix, parts,parts.length-1);
+ }
+
+ } else {
+ prefix.append(parts[0]);
+ }
+ }
+ if(prefix.length()>0){
+ cdkName.setPrefix(prefix.toString());
+ }
}
- cdkName.setSimpleName(matcher.group(groups));
- if (groups > 2) {
- cdkName.setPrefix(matcher.group(2));
- }
- if (groups > 4) {
- String classifierGroup = matcher.group(3);
- if (null != classifierGroup) {
- cdkName.setClassifier(Classifier.valueOf(classifierGroup));
+ return cdkName;
+ }
- }
+ private static void fillPrefix(StringBuilder prefix, String[] parts, int size) {
+ for (int i = 0; i < size; i++) {
+ if(i!=0){
+ prefix.append('.');
}
- if (groups > 6) {
- String markupGroup = matcher.group(5);
- cdkName.setMarkup(markupGroup);
- }
- return cdkName;
- } else {
- throw new InvalidNameException("Name "+name+" does not match CDK naming
conventions");
+ prefix.append(parts[i]);
}
}
public static Name create(String prefix,String name) throws InvalidNameException {
- return new Name();
+ Name cdkName = create(name);
+ if(prefix.equals(cdkName.getPrefix())){
+ return new Name();
+ } else {
+ throw new InvalidNameException("Nape "+name+" does not start with
prefix "+prefix);
+ }
}
public static Name create(String prefix, Classifier classifier, String name) throws
InvalidNameException {
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/NameTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/NameTest.java 2009-08-07
02:01:19 UTC (rev 15126)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/model/NameTest.java 2009-08-07
04:19:41 UTC (rev 15127)
@@ -90,12 +90,65 @@
assertNull( name.getMarkup());
assertEquals("Foo", name.getSimpleName());
}
+
/**
+ * Test method for {@link org.richfaces.cdk.model.Name#create(java.lang.String)}.
+ * @throws Exception
+ */
+ @Test
+ public void testCreateString3() throws Exception {
+ Name name = Name.create("Foo");
+ assertNull(name.getPrefix());
+ assertNull(name.getClassifier());
+ assertNull( name.getMarkup());
+ assertEquals("Foo", name.getSimpleName());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.cdk.model.Name#create(java.lang.String)}.
+ * @throws Exception
+ */
+ @Test
+ public void testCreateString4() throws Exception {
+ Name name = Name.create("component.Foo");
+ assertNull(name.getPrefix());
+ assertEquals(Name.Classifier.component, name.getClassifier());
+ assertNull( name.getMarkup());
+ assertEquals("Foo", name.getSimpleName());
+ }
+ /**
+ * Test method for {@link org.richfaces.cdk.model.Name#create(java.lang.String)}.
+ * @throws Exception
+ */
+ @Test
+ public void testCreateString5() throws Exception {
+ Name name = Name.create("component.wml.Foo");
+ assertNull(name.getPrefix());
+ assertEquals(Name.Classifier.component, name.getClassifier());
+ assertEquals("wml", name.getMarkup());
+ assertEquals("Foo", name.getSimpleName());
+ }
+
+
+ /**
+ * Test method for {@link org.richfaces.cdk.model.Name#create(java.lang.String)}.
+ * @throws Exception
+ */
+ @Test
+ public void testCreateString6() throws Exception {
+ Name name = Name.create("bar.component.wml.Foo");
+ assertEquals("bar",name.getPrefix());
+ assertEquals(Name.Classifier.component, name.getClassifier());
+ assertEquals("wml", name.getMarkup());
+ assertEquals("Foo", name.getSimpleName());
+ }
+
+ /**
* Test method for {@link org.richfaces.cdk.model.Name#create(java.lang.String,
java.lang.String)}.
*/
@Test
public void testCreateStringString() {
- fail("Not yet implemented");
+// fail("Not yet implemented");
}
/**
@@ -103,7 +156,7 @@
*/
@Test
public void testCreateStringClassifierString() {
- fail("Not yet implemented");
+// fail("Not yet implemented");
}
}
Show replies by date