From 8fa1741b621644ef84a9395a4c395d4ff3a89207 Mon Sep 17 00:00:00 2001 From: jeff Date: Sat, 23 Aug 2014 23:43:31 -0400 Subject: moved all classes from the default package into a package called "default" so they can be properly imported by other classes --- src/cuchaz/enigma/mapping/ClassEntry.java | 25 ++++++++++++++++++++++ .../enigma/mapping/IllegalNameException.java | 22 ++++++++++++++++++- src/cuchaz/enigma/mapping/NameValidator.java | 8 +++++-- 3 files changed, 52 insertions(+), 3 deletions(-) (limited to 'src/cuchaz/enigma/mapping') diff --git a/src/cuchaz/enigma/mapping/ClassEntry.java b/src/cuchaz/enigma/mapping/ClassEntry.java index dad6da9..fdb7c2c 100644 --- a/src/cuchaz/enigma/mapping/ClassEntry.java +++ b/src/cuchaz/enigma/mapping/ClassEntry.java @@ -110,4 +110,29 @@ public class ClassEntry implements Entry, Serializable { return new ClassEntry( getOuterClassName() ); } + + public boolean isInDefaultPackage( ) + { + return m_name.indexOf( '/' ) < 0; + } + + public String getPackageName( ) + { + int pos = m_name.lastIndexOf( '/' ); + if( pos > 0 ) + { + return m_name.substring( 0, pos ); + } + return null; + } + + public String getSimpleName( ) + { + int pos = m_name.lastIndexOf( '/' ); + if( pos > 0 ) + { + return m_name.substring( pos + 1 ); + } + return m_name; + } } diff --git a/src/cuchaz/enigma/mapping/IllegalNameException.java b/src/cuchaz/enigma/mapping/IllegalNameException.java index 560e5d9..830f05c 100644 --- a/src/cuchaz/enigma/mapping/IllegalNameException.java +++ b/src/cuchaz/enigma/mapping/IllegalNameException.java @@ -15,15 +15,35 @@ public class IllegalNameException extends RuntimeException private static final long serialVersionUID = -2279910052561114323L; private String m_name; + private String m_reason; public IllegalNameException( String name ) + { + this( name, null ); + } + + public IllegalNameException( String name, String reason ) { m_name = name; + m_reason = reason; + } + + public String getReason( ) + { + return m_reason; } @Override public String getMessage( ) { - return "Illegal name: " + m_name; + StringBuilder buf = new StringBuilder(); + buf.append( "Illegal name: " ); + buf.append( m_name ); + if( m_reason != null ) + { + buf.append( " because " ); + buf.append( m_reason ); + } + return buf.toString(); } } diff --git a/src/cuchaz/enigma/mapping/NameValidator.java b/src/cuchaz/enigma/mapping/NameValidator.java index a8421fa..6df893f 100644 --- a/src/cuchaz/enigma/mapping/NameValidator.java +++ b/src/cuchaz/enigma/mapping/NameValidator.java @@ -59,7 +59,11 @@ public class NameValidator { if( name == null || !ClassPattern.matcher( name ).matches() || ReservedWords.contains( name ) ) { - throw new IllegalNameException( name ); + throw new IllegalNameException( name, "This doesn't look like a legal class name" ); + } + if( new ClassEntry( name ).getPackageName() == null ) + { + throw new IllegalNameException( name, "Classes must be in a package" ); } return Descriptor.toJvmName( name ); } @@ -68,7 +72,7 @@ public class NameValidator { if( name == null || !IdentifierPattern.matcher( name ).matches() || ReservedWords.contains( name ) ) { - throw new IllegalNameException( name ); + throw new IllegalNameException( name, "This doesn't look like a legal identifier" ); } return name; } -- cgit v1.2.3